summaryrefslogtreecommitdiffhomepage
path: root/src/features/chat
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-22 14:07:30 +0900
committerAdam Malczewski <[email protected]>2026-06-22 14:07:30 +0900
commitd35462646f9f7ecbbdb0df8af564e668c7bcfe7c (patch)
tree84fffaa3e75259e48e46f26a25d89ea8031a063c /src/features/chat
parented12e30ad53ce53a928d891ba5a7b951d505eebc (diff)
downloaddispatch-web-d35462646f9f7ecbbdb0df8af564e668c7bcfe7c.tar.gz
dispatch-web-d35462646f9f7ecbbdb0df8af564e668c7bcfe7c.zip
feat: trim chunks during generation via step-complete syncTail (CR-6)
The backend now persists chunks at step boundaries during generation (CR-6). The FE calls syncTail on each step-complete event to fetch the newly committed chunks. applyHistory clears the provisional array when new committed chunks arrive mid-generation (they're duplicates of what was folded from live events). The accumulating chunk (current in-progress step) is kept. This means trimTranscript can now drop oldest committed chunks uniformly during a long turn — no unbounded provisional growth. The browser never holds more than chatLimit chunks, even mid-generation. 3 new tests: clears provisional on new committed during generation, keeps provisional when no new chunks, keeps accumulating when clearing. 689 tests green.
Diffstat (limited to 'src/features/chat')
-rw-r--r--src/features/chat/store.svelte.ts5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/features/chat/store.svelte.ts b/src/features/chat/store.svelte.ts
index 9beabfc..f6c23fc 100644
--- a/src/features/chat/store.svelte.ts
+++ b/src/features/chat/store.svelte.ts
@@ -284,6 +284,11 @@ export function createChatStore(deps: ChatStoreDependencies): ChatStore {
if (transcript.sealedTurnId !== null) {
void syncTail();
void syncMetrics();
+ } else if (msg.event.type === "step-complete") {
+ // CR-6: backend persists chunks at step boundaries. Fetch them
+ // as committed so trimTranscript can unload oldest chunks
+ // uniformly — no unbounded provisional growth during long turns.
+ void syncTail();
}
},