clawwork-ai/ClawWork

[Cleanup] Extract duplicated message-merge logic in syncFromGateway

Open

#228 aperta il 1 apr 2026

Vedi su GitHub
 (2 commenti) (0 reazioni) (0 assegnatari)TypeScript (63 fork)github user discovery
area/coregood first issuekind/cleanup

Metriche repository

Star
 (519 star)
Metriche merge PR
 (Metriche PR in attesa)

Descrizione

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

Guida contributor