fix(workbench): skip terminal turn polling (#1809)
Stop realtime gap hydration from polling completed/terminal Workbench turns. This avoids repeated /v1/workbench/turns requests for old traces while preserving active turn refresh.\n\nRefs #1791.
This commit is contained in:
@@ -455,7 +455,18 @@ export const useWorkbenchStore = defineStore("workbench", () => {
|
||||
}
|
||||
|
||||
async function hydrateTurnStatusAuthority(source: ChatMessage[] = messages.value): Promise<void> {
|
||||
await Promise.all(uniqueTraceIds(source).slice(-12).map((traceId) => refreshTurnStatusByTraceId(traceId)));
|
||||
await Promise.all(uniqueTraceIds(source).slice(-12).filter((traceId) => traceNeedsTurnStatusRefresh(traceId, source)).map((traceId) => refreshTurnStatusByTraceId(traceId)));
|
||||
}
|
||||
|
||||
function traceNeedsTurnStatusRefresh(traceId: string | null | undefined, source: ChatMessage[] = messages.value): boolean {
|
||||
const id = firstNonEmptyString(traceId);
|
||||
if (!id) return false;
|
||||
const turn = turnStatusAuthority.value[id];
|
||||
if (turn?.terminal === true || isTerminalMessageStatus(turn?.status)) return false;
|
||||
const message = [...source].reverse().find((item) => firstNonEmptyString(item.traceId, item.runnerTrace?.traceId) === id) ?? null;
|
||||
if (isTerminalMessageStatus(message?.status) || isTerminalMessageStatus(message?.runnerTrace?.status)) return false;
|
||||
if (message?.runnerTrace && traceSnapshotHasTerminalEvidence(message.runnerTrace)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
async function refreshTurnStatusByTraceId(traceId: string | null | undefined): Promise<void> {
|
||||
|
||||
Reference in New Issue
Block a user