clawwork-ai/ClawWork

[Enhancement] Expand MessageStore test coverage for streaming lifecycle

Open

#232 opened on 2026年4月1日

GitHub で見る
 (1 comment) (0 reactions) (0 assignees)TypeScript (63 forks)github user discovery
area/corearea/dxenhancementhelp wanted

Repository metrics

Stars
 (519 stars)
PR merge metrics
 (PR metrics pending)

説明

What problem are you trying to solve?

MessageStore has only 1 direct unit test (for upsertToolCall). The streaming message lifecycle — appendStreamDelta, finalizeStream, promoteActiveTurn — has no isolated tests. These functions are covered indirectly through session-sync.test.ts integration tests, but edge cases in the streaming lifecycle deserve dedicated coverage.

Where

  • Source: packages/core/src/stores/message-store.ts
  • Existing test: packages/desktop/test/message-store.test.ts (1 test case)

What needs to be done

  1. Open packages/desktop/test/message-store.test.ts
  2. Add test cases for:
    • appendStreamDelta: appending text to an active turn, creating a new active turn if none exists, handling empty deltas
    • finalizeStream: finalizing an active turn marks it as complete, calling finalize with no active turn is a no-op
    • promoteActiveTurn: promoting moves the turn into the message array with correct metadata, promoting when no active turn exists is safe
    • upsertToolCall fallback chain: test all 3 branches — active turn exists, fallback to last assistant message, fallback to creating a new active turn
  3. Run pnpm check to verify

Why does this matter?

Message streaming is the core user-facing data flow. The appendStreamDelta → finalizeStream → promoteActiveTurn lifecycle is subtle and has caused production regressions before (message duplication). Dedicated tests prevent re-introducing these bugs.

Primary area

Task execution

コントリビューターガイド