clawwork-ai/ClawWork

[Cleanup] Extract duplicated message-merge logic in syncFromGateway

Open

#228 创建于 2026年4月1日

在 GitHub 查看
 (2 评论) (0 反应) (0 负责人)TypeScript (63 fork)github user discovery
area/coregood first issuekind/cleanup

仓库指标

Star
 (519 star)
PR 合并指标
 (PR 指标待抓取)

描述

What problem are you trying to solve?

syncFromGateway in session-sync has two branches (hasLocalData / !hasLocalData) that contain nearly identical message mapping and persistence logic (~50 lines of copy-paste). This makes the function harder to maintain — a fix applied to one branch can easily be missed in the other.

Where

packages/core/src/services/session-sync.ts — the syncFromGateway function, around lines 280-330.

What needs to be done

  1. Open packages/core/src/services/session-sync.ts
  2. Find the syncFromGateway function
  3. Identify the duplicated pattern between the hasLocalData and !hasLocalData branches — both do:
    • Map collapsedMessages into Message[] with sessionKey/agentId assignment
    • Call messageStore.bulkLoad(taskId, mapped)
    • Persist each message via deps.persistence.persistMessage()
  4. Extract the common logic into a local helper function (e.g. loadAndPersistMessages)
  5. Call the helper from both branches, passing only the differing parameters
  6. Run pnpm check to verify nothing breaks

Why does this matter?

Duplicated logic is a maintenance hazard — when one branch gets updated, the other often gets forgotten. This is a straightforward extract-function refactor.

Primary area

Task execution

贡献者指南