Skip to content

Watcher: SQLite session-store reader (unblocks goose, Cline, Crush, Droid, Kiro, MiMo) #18

Description

@deehw

Priority: P1 (platform — unblocks most of the P2/P3 queue) · Method: CLI (watcher infrastructure)

The transcript format is moving. Newer agents store sessions in SQLite, not JSONL: goose (#6, sessions.db since v1.10), Cline (#4), Crush (#10, per-project ./.crush/crush.db), Factory Droid (#8), Kiro (#14), MiMo Code (#13). The watcher tails files today; those six engines all need to read live SQLite instead.

What this is: a first-class SQLite session-store path in cli/src/watcher/ — open read-only, poll or WAL-watch for new rows, surface them to engines as the same event stream file tailing produces. One investment, six engines unblocked.

Design constraints to settle in the PR:

  • Read-only, and safe against the agent writing concurrently (WAL mode, busy timeouts) — the agent's own database must never be perturbed.
  • Per-home (~/.factory/sessions.db) and per-project (./.crush/crush.db) discovery both exist.
  • Schema is per-engine; the reader provides the transport, the engine owns the mapping — same division of labor as JSONL tailing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1Build next, first-partyenhancementNew feature or requestmethod:cliEngine path — transcript normalizer in cli/src/engines/

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions