feat: aggregate task progress updates

This commit is contained in:
2026-08-03 16:17:15 +08:00
parent 9312b09e76
commit 10d95c4a5e
11 changed files with 273 additions and 13 deletions
@@ -1,5 +1,6 @@
import { describe, expect, it } from "vitest";
import type { ToolCallRecord } from "./tool-call-state";
import type { TaskRecord } from "./task-state";
import { ConversationStore } from "./conversation-store";
class MemoryStorage implements Storage {
@@ -97,4 +98,16 @@ describe("ConversationStore", () => {
expect(reopened.tool_calls).toEqual([expect.objectContaining({ call_id: "call_form_001", status: "pending" })]);
expect(reopened.tool_drafts).toEqual({ call_form_001: { version: "1.2.3" } });
});
it("persists the latest aggregated task record per conversation", () => {
const storage = new MemoryStorage();
const task: TaskRecord = {
operation_id: "task_store_001", conversation_id: conversationID, title: "Render preview", percent: 70, status: "running", cancellable: true, updated_at: createdAt,
};
const first = new ConversationStore(storage);
first.open(conversationID);
first.replaceTasks([task]);
expect(new ConversationStore(storage).open(conversationID).tasks).toEqual([expect.objectContaining({ operation_id: "task_store_001", percent: 70 })]);
});
});