clawwork-ai/ClawWork

[Cleanup] Extract duplicated message-merge logic in syncFromGateway

Open

#228 aberto em 1 de abr. de 2026

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

Métricas do repositório

Stars
 (519 stars)
Métricas de merge de PR
 (Métricas PR pendentes)

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

Guia do colaborador