Skip to content

[Cleanup] Extract duplicated message-merge logic in syncFromGateway #228

@samzong

Description

@samzong

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/coreTask & Session Core WGgood first issueGood for newcomerskind/cleanupCategorizes issue or PR as related to code cleanup

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions