fix: resume incomplete SCADA presentations

This commit is contained in:
2026-11-12 10:38:55 +08:00
parent db87323b69
commit 0be30b80bb
12 changed files with 420 additions and 5 deletions
+4 -1
View File
@@ -45,6 +45,7 @@ import {
clearOperationalTaskLease,
operationalTaskClient,
releaseOperationalTaskCredential,
scadaPresentationContinuation,
} from "../product/operational-task-client.js";
import { type SessionTranscriptStore } from "../sessions/transcriptStore.js";
import { type SessionUiStateStore } from "../sessions/uiStateStore.js";
@@ -798,7 +799,7 @@ export const registerChatStreamRoute = (
if (messaging && (messaging.hasInputThisTurn(binding.sessionId) || !await messaging.closeInteractive(activeSessionRecord))) return false;
return inputTracker.canClose();
},
beforeIdle: messaging || (sessionPurpose === "task_execution" && waitTaskCalculations) ? async () => {
beforeIdle: messaging || sessionPurpose === "task_execution" ? async () => {
if (sessionPurpose !== "task_execution") return messaging ? messaging.closeInteractive(activeSessionRecord) : true;
if (await messaging?.flush(binding.sessionId)) return false;
const calculationResume = await waitTaskCalculations?.(binding.sessionId, abortController.signal);
@@ -818,6 +819,8 @@ export const registerChatStreamRoute = (
if (task.lifecycle_status === "failed") throw new Error("Server rejected incomplete investigation artifacts");
return true;
} catch (error) {
const continuation = scadaPresentationContinuation(error);
if (continuation) return continuation;
if (error && typeof error === "object" && "code" in error && error.code === "PENDING_AGENT_MESSAGES") {
await messaging?.flush(binding.sessionId);
return false;