ea38601564
When a generator exits with wasAborted=true, the AbortController remains in aborted state but generatorPromise is set to null. When a new observation arrives, ensureGeneratorRunning() sees generatorPromise=null and tries to start a new generator, but the new generator immediately sees signal.aborted=true and exits, causing an infinite "Generator aborted" loop. This fix resets the AbortController if it's already aborted before starting a new generator, allowing the session to recover from the stuck state. Bug reproduction: 1. Session receives observations 2. Something causes the generator to be aborted 3. generatorPromise = null, but abortController.signal.aborted = true 4. New observation arrives → starts generator → immediately aborted → loop Fix: Check if abortController.signal.aborted before starting generator, and create a new AbortController if needed.