core: allow starting new sessions after errors by fixing stuck session status

This commit is contained in:
Dax Raad
2026-02-01 20:39:58 -05:00
parent 3ab41d548f
commit 6c9b2c37a5
2 changed files with 8 additions and 4 deletions

View File

@@ -368,6 +368,7 @@ export namespace SessionProcessor {
sessionID: input.assistantMessage.sessionID, sessionID: input.assistantMessage.sessionID,
error: input.assistantMessage.error, error: input.assistantMessage.error,
}) })
SessionStatus.set(input.sessionID, { type: "idle" })
} }
if (snapshot) { if (snapshot) {
const patch = await Snapshot.patch(snapshot) const patch = await Snapshot.patch(snapshot)

View File

@@ -62,7 +62,7 @@ export namespace SessionPrompt {
abort: AbortController abort: AbortController
callbacks: { callbacks: {
resolve(input: MessageV2.WithParts): void resolve(input: MessageV2.WithParts): void
reject(): void reject(reason?: any): void
}[] }[]
} }
> = {} > = {}
@@ -72,7 +72,7 @@ export namespace SessionPrompt {
for (const item of Object.values(current)) { for (const item of Object.values(current)) {
item.abort.abort() item.abort.abort()
for (const callback of item.callbacks) { for (const callback of item.callbacks) {
callback.reject() callback.reject(new DOMException("Aborted", "AbortError"))
} }
} }
}, },
@@ -251,10 +251,13 @@ export namespace SessionPrompt {
log.info("cancel", { sessionID }) log.info("cancel", { sessionID })
const s = state() const s = state()
const match = s[sessionID] const match = s[sessionID]
if (!match) return if (!match) {
SessionStatus.set(sessionID, { type: "idle" })
return
}
match.abort.abort() match.abort.abort()
for (const item of match.callbacks) { for (const item of match.callbacks) {
item.reject() item.reject(new DOMException("Aborted", "AbortError"))
} }
delete s[sessionID] delete s[sessionID]
SessionStatus.set(sessionID, { type: "idle" }) SessionStatus.set(sessionID, { type: "idle" })