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.
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.dbsince 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:
~/.factory/sessions.db) and per-project (./.crush/crush.db) discovery both exist.