Description
Live Coding Agent Conversation Sync keeps Dots Conversations current while supported local coding agents continue writing session histories. It arms a filesystem watcher for each consented source, listens for relevant session-file additions and changes, waits for writes to settle, then rereads and normalizes the whole session through the same route used by historical backfill.
The whole-session reread is intentional. Coding-agent logs grow over time and may be rewritten in bursts, so the content signature and idempotent destination writer update the existing Conversation safely. Watchers are scoped to approved folders, and a fault in one event is contained and reported through the telemetry seam rather than crashing every active source.
Selling Points
- Keeps conversation knowledge current without repeated manual imports.
- Reuses the proven backfill parser and writer, preventing live/history format drift.
- Debounces active file writes before normalization.
- Updates a session’s existing Conversation instead of creating a row per file event.
- Contains source-level faults so one damaged log does not stop other live histories.
User Story
As a developer working with a coding agent throughout the day, I want the resulting conversation to appear and grow in Dots automatically. Once I consent to the folder, I do not need to rerun a backfill whenever the session file receives another turn.
Extension Surface
The rating is configurable because the caller chooses consented source roots and can start or cancel tail jobs through packages/ingestion/src/coding-agent/watch.ts. The watcher factory and telemetry collaborators are injected in packages/ingestion/src/coding-agent/tail/watch-tail.ts, enabling desktop and daemon composition. File classification and normalization remain governed rather than accepting arbitrary watcher plug-ins.
Capabilities & Limits
Capabilities include per-source watchers, add/change handling, write-finish debounce, whole-session normalization, idempotent Conversation updates, cancellation, and contained telemetry. The live path also preserves plan extraction and usage derivation because it shares the transcript route. Limits are clear: only consented supported provider locations are watched, deletion of a local log does not automatically erase the durable Conversation, and conversation-to-commit matching happens downstream rather than inside the watcher.
Implementation Map
packages/ingestion/src/coding-agent/tail/watch-tail.tspackages/ingestion/src/coding-agent/watch.tspackages/ingestion/src/coding-agent/backfill/transcript-session.tspackages/ingestion/src/coding-agent/sync-orchestrator.ts