Workflow-Totalverlust beheben: inkrementelle Persistenz + Token-Fix + Resume

Bisher wurden Workflow-Subagent-Outputs nur beim sauberen FinalizeChain in
die DB gerettet - bei Abbruch (529/Timeout/Stop/Hard-Kill) war alles weg,
Tokens standen auf 0.

- A) Inkrementelle Persistenz: MaybeFlushWorkflowProgress() (throttled 6s)
  schreibt workflow_info + Token + runId waehrend des Laufs -> ueberlebt
  Hard-Kill (OOM/Redeploy), wo kein catch/finally laeuft.
- B) Output-Rettung: ReadLive liest jetzt vollstaendige Subagent-Outputs aus
  journal.jsonl (nicht nur Counts), inkl. State.
- C) Token-Fix: neuer assistant-Branch -> CliEventType.Usage; EffectiveUsage()
  rettet Orchestrator-Token bei Abbruch statt 0.
- D) Resume: Feld/Migration workflow_run_id; FinalizeChain persistiert die
  runId; naechster Chat injiziert einen resumeFromRunId-Hinweis.
- UI: Workflow-Status-Modal zeigt geretteten Output + runId/"fortsetzbar"-Banner.

Build 0/0, ReadLive gegen echtes journal.jsonl verifiziert, adversarial 2x geprueft.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
MelekiandClaude Opus 4.8 committed 2026-07-02 16:14:47 +02:00
1 parent 5f7dec6448
commit 3ae94fb697
9 files changed
+217 -19

No files matched your search

+21
View File
@@ -1114,12 +1114,33 @@
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: var(--badge-spacing);
padding: .4em var(--badge-spacing);
background: var(--f3-bg);
border-radius: var(--border-radius);
}
/* Geretteter Subagent-Output (aus journal.jsonl) – volle Breite, unter Label/Metriken. */
.wf-agent-output {
flex-basis: 100%;
margin-top: .35em;
padding: .4em .55em;
background: var(--f2-bg);
border-radius: var(--border-radius);
font-family: var(--mono);
font-size: .8em;
white-space: pre-wrap;
word-break: break-word;
max-height: 12em;
overflow-y: auto;
opacity: var(--semi-transparent);
}
.wf-resume-hint {
color: var(--info);
}
.wf-agent-main {
display: flex;
align-items: center;