clawwork-ai/ClawWork

[Cleanup] Extract duplicated message-merge logic in syncFromGateway

Open

#228 opened on Apr 1, 2026

View on GitHub
 (2 comments) (0 reactions) (0 assignees)TypeScript (63 forks)github user discovery
area/coregood first issuekind/cleanup

Repository metrics

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

Description

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

Contributor guide