Preserve completion gating and handle explicit idle stream status safely

This commit is contained in:
pewdiepie-archdaemon
2026-10-26 16:34:56 +00:00
parent ae28501e7f
commit 5c6bb9798b
2 changed files with 6 additions and 6 deletions
-5
View File
@@ -309,11 +309,6 @@ def with_completion_gate(func):
has_final = False
answer += str(data.get('delta') or '')
answer_events.append(data)
if data.get('thinking') is True and 'delta' in data:
# Stream reasoning deltas live; only the answer
# prose is held for the terminal evidence review.
streamed_answer_events.add(id(data))
yield _event(data)
continue
yield chunk
if provider_error and not answer_events and not metrics_events:
+6 -1
View File
@@ -6149,7 +6149,12 @@ import { invalidateSettings } from './appConfig.js';
cache: 'no-store',
});
if (!_getForegroundStreamState() || _backgroundStreams.has(sid)) return;
if (res.status !== 404) return;
if (res.status !== 404 && !res.ok) return;
let _probe = null;
try { _probe = await res.json(); } catch (_) { /* An invalid response is not an idle stream. */ }
const _noActiveStream = res.status === 404 || (res.ok && _probe &&
typeof _probe.status === 'string' && _probe.status !== 'streaming');
if (!_noActiveStream) return;
console.warn('[stream-watchdog] Local stream was stale and server has no active stream. Unlocking composer.');
if (active.abortCtrl && !active.abortCtrl.signal.aborted) {