@osolmaz/pi-workflows 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +36 -21
  2. package/dist/extension/executor.d.ts +14 -1
  3. package/dist/extension/executor.js +11 -1
  4. package/dist/extension/executor.js.map +1 -1
  5. package/dist/extension/index.js +79 -7
  6. package/dist/extension/index.js.map +1 -1
  7. package/dist/extension/recorder.d.ts +85 -0
  8. package/dist/extension/recorder.js +525 -0
  9. package/dist/extension/recorder.js.map +1 -0
  10. package/dist/extension/session-events.d.ts +134 -0
  11. package/dist/extension/session-events.js +60 -0
  12. package/dist/extension/session-events.js.map +1 -0
  13. package/dist/extension/widget.js +25 -24
  14. package/dist/extension/widget.js.map +1 -1
  15. package/dist/render/canvas.d.ts +1 -1
  16. package/dist/render/canvas.js +5 -0
  17. package/dist/render/canvas.js.map +1 -1
  18. package/dist/render/graph-render.d.ts +5 -0
  19. package/dist/render/graph-render.js +211 -48
  20. package/dist/render/graph-render.js.map +1 -1
  21. package/dist/viewer/render.js +19 -3
  22. package/dist/viewer/render.js.map +1 -1
  23. package/dist/viewer/session-reducer.d.ts +45 -0
  24. package/dist/viewer/session-reducer.js +266 -0
  25. package/dist/viewer/session-reducer.js.map +1 -0
  26. package/dist/workflows/artifacts.d.ts +40 -0
  27. package/dist/workflows/artifacts.js +155 -0
  28. package/dist/workflows/artifacts.js.map +1 -0
  29. package/dist/workflows/engine.d.ts +2 -0
  30. package/dist/workflows/engine.js +38 -7
  31. package/dist/workflows/engine.js.map +1 -1
  32. package/dist/workflows/index.d.ts +3 -2
  33. package/dist/workflows/index.js +2 -1
  34. package/dist/workflows/index.js.map +1 -1
  35. package/dist/workflows/store.d.ts +53 -9
  36. package/dist/workflows/store.js +523 -43
  37. package/dist/workflows/store.js.map +1 -1
  38. package/dist/workflows/types.d.ts +126 -3
  39. package/docs/development.md +43 -19
  40. package/docs/live-replay-protocol.md +155 -0
  41. package/docs/plans/piw-viewer-experience-implementation-plan.md +674 -0
  42. package/docs/plans/replayable-run-bundles-implementation-plan.md +65 -0
  43. package/docs/plans/session-event-replay-implementation-plan.md +494 -0
  44. package/docs/plans/tui-viewer-implementation-plan.md +64 -0
  45. package/docs/run-bundles.md +320 -55
  46. package/docs/session-event-journal.md +470 -0
  47. package/docs/tui-viewer.md +218 -0
  48. package/package.json +2 -1
  49. package/src/extension/executor.ts +28 -1
  50. package/src/extension/index.ts +87 -7
  51. package/src/extension/recorder.ts +633 -0
  52. package/src/extension/session-events.ts +119 -0
  53. package/src/extension/widget.ts +26 -24
  54. package/src/render/canvas.ts +19 -1
  55. package/src/render/graph-render.ts +277 -44
  56. package/src/viewer/render.ts +21 -3
  57. package/src/viewer/session-reducer.ts +347 -0
  58. package/src/workflows/artifacts.ts +188 -0
  59. package/src/workflows/engine.ts +39 -7
  60. package/src/workflows/index.ts +15 -0
  61. package/src/workflows/store.ts +649 -49
  62. package/src/workflows/types.ts +141 -3
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/workflows/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/workflows/store.ts"],"names":[],"mappings":"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"}
@@ -130,6 +130,33 @@ export type WorkflowDefinition = {
130
130
  maxSteps?: number;
131
131
  };
132
132
  export type WorkflowNodeOutcome = "ok" | "timed_out" | "failed" | "cancelled";
133
+ /**
134
+ * Reference to a content-addressed file under the bundle's `artifacts/`
135
+ * directory. Large string leaves inside persisted values are replaced by
136
+ * `{ "$artifact": ArtifactRef }` at write time (see `docs/run-bundles.md`).
137
+ */
138
+ export type ArtifactRef = {
139
+ /** Bundle-relative path, `artifacts/sha256-<64 hex>.txt`. */
140
+ path: string;
141
+ mediaType: string;
142
+ bytes: number;
143
+ /** Hex digest of the artifact bytes. */
144
+ sha256: string;
145
+ };
146
+ /** The sentinel wrapper that replaces an externalized value. */
147
+ export type ArtifactValue = {
148
+ $artifact: ArtifactRef;
149
+ };
150
+ /**
151
+ * Explicit linkage from a workflow attempt to the Pi conversation slice it
152
+ * produced. Ids address entries in `session/entries.ndjson` by Pi entry id.
153
+ */
154
+ export type ConversationRange = {
155
+ /** First Pi session entry id of the attempt. */
156
+ firstEntryId: string;
157
+ /** Last Pi session entry id of the attempt, inclusive. */
158
+ lastEntryId: string;
159
+ };
133
160
  export type WorkflowNodeResult = {
134
161
  attemptId: string;
135
162
  nodeId: string;
@@ -157,13 +184,26 @@ export type WorkflowStepRecord = {
157
184
  outcome: WorkflowNodeOutcome;
158
185
  startedAt: string;
159
186
  finishedAt: string;
160
- promptText: string | null;
187
+ /**
188
+ * Full prompt text for agent steps, `null` for other node types. In a
189
+ * persisted bundle a large prompt may be an `ArtifactValue`.
190
+ */
191
+ prompt: string | ArtifactValue | null;
161
192
  output: unknown;
162
193
  error?: string;
163
194
  action?: WorkflowActionReceipt;
195
+ /** For agent steps recorded inside a Pi conversation. */
196
+ conversation?: ConversationRange;
164
197
  };
165
198
  export type WorkflowRunStatus = "running" | "waiting" | "completed" | "failed" | "timed_out" | "cancelled";
166
199
  export type WorkflowRunState = {
200
+ schema: "pi-workflows.run-state.v1";
201
+ /**
202
+ * `seq` of the trace event this projection reflects. `trace.ndjson` is the
203
+ * source of truth; a state whose `traceSeq` is older than the trace tail is
204
+ * a stale projection.
205
+ */
206
+ traceSeq: number;
167
207
  runId: string;
168
208
  workflowName: string;
169
209
  runTitle?: string;
@@ -178,7 +218,6 @@ export type WorkflowRunState = {
178
218
  steps: WorkflowStepRecord[];
179
219
  currentNode?: string;
180
220
  currentAttemptId?: string;
181
- currentNodeType?: WorkflowNodeDefinition["nodeType"];
182
221
  currentNodeStartedAt?: string;
183
222
  statusDetail?: string;
184
223
  /** True while the run is held at a step boundary by a pause request. */
@@ -205,13 +244,70 @@ export type WorkflowDefinitionSnapshot = {
205
244
  export type WorkflowTraceEvent = {
206
245
  seq: number;
207
246
  at: string;
208
- scope: "run" | "node" | "agent" | "action";
247
+ scope: "run" | "node" | "agent" | "action" | "session";
209
248
  type: string;
210
249
  runId: string;
211
250
  nodeId?: string;
212
251
  attemptId?: string;
213
252
  payload: Record<string, unknown>;
214
253
  };
254
+ /** `session/binding.json`: written once when a run binds to a conversation. */
255
+ export type WorkflowSessionBinding = {
256
+ schema: "pi-workflows.session-binding.v1";
257
+ runId: string;
258
+ /** Pi session UUID. */
259
+ piSessionId: string;
260
+ /**
261
+ * Absolute path of the Pi session file; provenance only, never read back.
262
+ * Absent for in-memory sessions.
263
+ */
264
+ piSessionFile?: string;
265
+ /** Working directory of the conversation. */
266
+ cwd: string;
267
+ boundAt: string;
268
+ };
269
+ /**
270
+ * One line of `session/entries.ndjson`: a verbatim Pi session entry recorded
271
+ * while the run was active. The inner entry shape is owned by Pi.
272
+ */
273
+ export type WorkflowSessionEntryRecord = {
274
+ /** Starts at 1, increases by exactly 1 within the file. */
275
+ seq: number;
276
+ /** When the entry was recorded into the bundle. */
277
+ at: string;
278
+ /** Verbatim Pi session entry (has its own id/parentId/timestamp). */
279
+ entry: Record<string, unknown>;
280
+ };
281
+ export type WorkflowSessionEventType = "turn_started" | "turn_finished" | "message_started" | "assistant_event" | "message_finished" | "tool_execution_started" | "tool_execution_updated" | "tool_execution_finished";
282
+ /** One normalized temporal Pi event in `session/events.ndjson`. */
283
+ export type WorkflowSessionEventRecord = {
284
+ /** Starts at 1 and increases by exactly 1 within the file. */
285
+ seq: number;
286
+ /** Time when the extension received the public Pi event. */
287
+ at: string;
288
+ nodeId: string;
289
+ attemptId: string;
290
+ turnId?: string;
291
+ messageId?: string;
292
+ toolCallId?: string;
293
+ type: WorkflowSessionEventType;
294
+ payload: Record<string, unknown>;
295
+ };
296
+ export type WorkflowSessionCaptureFailure = {
297
+ failedAt: string;
298
+ code: string;
299
+ message: string;
300
+ };
301
+ /** Atomic integrity projection for the temporal session journal. */
302
+ export type WorkflowSessionCapture = {
303
+ schema: "pi-workflows.session-capture.v1";
304
+ eventSchema: "pi-workflows.session-event.v1";
305
+ status: "recording" | "complete" | "failed";
306
+ eventCount: number;
307
+ entryCount: number;
308
+ lastEventSeq: number;
309
+ failure?: WorkflowSessionCaptureFailure;
310
+ };
215
311
  export type WorkflowTraceEventDraft = Omit<WorkflowTraceEvent, "seq" | "at" | "runId">;
216
312
  export type WorkflowRunManifest = {
217
313
  schema: "pi-workflows.run-bundle.v1";
@@ -227,6 +323,10 @@ export type WorkflowRunManifest = {
227
323
  workflow: string;
228
324
  state: string;
229
325
  trace: string;
326
+ /** Bundle-relative session directory, present once a session is bound. */
327
+ session?: string;
328
+ /** Bundle-relative artifacts directory, present once a value was externalized. */
329
+ artifacts?: string;
230
330
  };
231
331
  };
232
332
  export type WorkflowRunResult = {
@@ -258,6 +358,11 @@ export type AgentStepRequest = {
258
358
  };
259
359
  export type AgentStepSubmission = {
260
360
  output: unknown;
361
+ /**
362
+ * The Pi conversation slice this step produced, when the executor records
363
+ * one. Persisted verbatim into the step record and terminal node event.
364
+ */
365
+ conversation?: ConversationRange;
261
366
  };
262
367
  /**
263
368
  * Runs one agent step to completion. Implementations deliver the prompt to
@@ -271,6 +376,24 @@ export type WorkflowEngineOptions = {
271
376
  executor: AgentStepExecutor;
272
377
  /** Root directory for run bundles. Defaults to `~/.pi/agent/workflows/runs`. */
273
378
  outputRoot?: string;
379
+ /**
380
+ * Shared run store. Pass the same instance used by a session recorder so
381
+ * trace sequence numbers stay single-writer. Defaults to a new store on
382
+ * `outputRoot`.
383
+ */
384
+ store?: import("./store.js").WorkflowRunStore;
385
+ /**
386
+ * Awaited after `run_started` is persisted, before any node executes. This
387
+ * is where a session recorder binds, so `session_bound` lands at the start
388
+ * of the trace and can never trail the terminal event.
389
+ */
390
+ onRunStarted?: (runDir: string, state: WorkflowRunState) => MaybePromise<void>;
391
+ /**
392
+ * Awaited before the terminal snapshot is persisted. This is where a
393
+ * session recorder stops and drains, so the bundle is immutable the moment
394
+ * the terminal event exists. Errors are swallowed: finishing the run wins.
395
+ */
396
+ onRunFinishing?: (runDir: string, state: WorkflowRunState) => MaybePromise<void>;
274
397
  /** Default per-node timeout. Defaults to 15 minutes. */
275
398
  defaultNodeTimeoutMs?: number;
276
399
  /** Guard against unbounded graph loops. Defaults to 100 executed steps. */
@@ -8,7 +8,8 @@ authoring workflows, see [workflows.md](workflows.md).
8
8
  ```
9
9
  src/workflows/ engine core: definitions, graph, engine, store, loader
10
10
  src/extension/ pi integration: /workflow command, workflow tool, widget
11
- src/viewer/ standalone TUI viewer over run bundles
11
+ src/viewer/ standalone TypeScript TUI viewer over run bundles
12
+ tui/ Rust piw viewer and live replay server
12
13
  ```
13
14
 
14
15
  The dependency direction is enforced by `slophammer.yml`. `src/workflows`
@@ -31,6 +32,14 @@ in `src/viewer`
31
32
  composes the full detail view (header, graph, step timeline, step inspector)
32
33
  and stays pure so tests can assert on rendered lines.
33
34
 
35
+ The Rust viewer keeps graph layout and plain rendering in parity with
36
+ `src/render`, then applies ratatui-only presentation through semantic canvas
37
+ roles and `tui/src/theme`. Catppuccin is the default. Theme colors must be
38
+ chosen in the theme layer rather than directly in UI components. Graph node
39
+ surfaces are intentional styled spaces, so changing the sparse canvas must
40
+ preserve those spaces as well as box connectivity. Text or geometry changes
41
+ still belong in both renderers and require regenerated fixtures.
42
+
34
43
  The renderer is built so that overlaps cannot corrupt the drawing: every
35
44
  back edge owns exclusive lane rows and an exclusive gutter column, multiple
36
45
  edges leaving one node fan out over separate exit columns, and labels are
@@ -50,6 +59,19 @@ The extension implements it on top of the live conversation
50
59
  (`test/helpers.ts`). Anything that would couple the engine to pi belongs on
51
60
  the extension side of that seam.
52
61
 
62
+ Temporal session capture follows the same boundary. `src/extension` listens to
63
+ Pi's documented `turn_*`, `message_*`, and `tool_execution_*` hooks and
64
+ normalizes them before passing records to `WorkflowRunStore`. The workflows
65
+ layer owns persisted shapes, ordered append chains, schemas, and validation but
66
+ never imports Pi types. High-rate hooks only stamp and enqueue bounded records;
67
+ disk writes run on a separate chain. Capture failures are explicit in
68
+ `session/capture.json` and never fail workflow execution.
69
+
70
+ `src/viewer/session-reducer.ts` and `tui/src/session.rs` implement the same
71
+ sequence-ordered fold. Shared fixtures in `fixtures/session-events/` pin their
72
+ output. Seeking uses viewer-only checkpoints every 256 events and an in-memory
73
+ timestamp index. Neither cache is persisted.
74
+
53
75
  ## Toolchain
54
76
 
55
77
  Node 22+, ESM, TypeScript strict (including `exactOptionalPropertyTypes`).
@@ -90,34 +112,36 @@ the real pi CLI from `devDependencies` in RPC mode with:
90
112
  - the extension loaded from source with `-e src/extension/index.ts`.
91
113
 
92
114
  It drives `/workflow` over the RPC protocol and asserts on the resulting run
93
- bundle, then renders the finished run through the viewer CLI. Nothing outside
94
- the temp directories is touched, and no real model is called.
115
+ bundle, including temporal events, final entry linkage, capture integrity, and
116
+ terminal immutability, then renders the finished run through the viewer CLI.
117
+ Nothing outside the temp directories is touched, and no real model is called.
95
118
 
96
119
  ## Publishing
97
120
 
98
- The npm package is `@osolmaz/pi-workflows`. The first version must be published
99
- locally because npm cannot configure a trusted publisher until the package
100
- exists:
121
+ The npm package is `@osolmaz/pi-workflows`. The crates.io package is
122
+ `pi-workflows`, and it installs the `piw` executable. Keep both package versions
123
+ in sync so one GitHub Release can publish both artifacts.
101
124
 
102
- ```bash
103
- npm publish --access public
104
- ```
125
+ Trusted publishing uses separate GitHub environments and workflows. Neither
126
+ workflow stores a long-lived registry token:
105
127
 
106
- After that first publish, configure npm trusted publishing for the
107
- `osolmaz/pi-workflows` repository, `.github/workflows/publish.yml`, and the
108
- `npm` GitHub environment. The workflow does not use a stored npm token.
128
+ - npm: repository `osolmaz/pi-workflows`, workflow
129
+ `.github/workflows/publish.yml`, environment `npm`;
130
+ - crates.io: repository owner `osolmaz`, repository `pi-workflows`, workflow
131
+ `publish-crate.yml`, environment `crates-io`.
109
132
 
110
133
  For later versions:
111
134
 
112
- 1. Update `version` in `package.json` and `package-lock.json`, then merge that
113
- change into the default branch.
135
+ 1. Update `version` in `package.json`, `package-lock.json`, `tui/Cargo.toml`,
136
+ and `tui/Cargo.lock`, then merge that change into the default branch.
114
137
  2. Publish a GitHub Release whose tag is `v<version>`, such as `v0.2.0`.
115
- 3. Wait for the **Publish npm package** workflow to finish and verify the new
116
- version on npm.
138
+ 3. Wait for the **Publish npm package** and **Publish crates.io package**
139
+ workflows to finish.
140
+ 4. Verify the version on both npm and crates.io.
117
141
 
118
- The workflow rejects mismatched tags, commits outside the default branch, and
119
- versions already present on npm. It runs the full checks and end-to-end tests
120
- before `npm publish --provenance`.
142
+ Both workflows reject mismatched tags, commits outside the default branch, and
143
+ versions already present in their registry. They run their package checks
144
+ before publishing.
121
145
 
122
146
  ## Conventions
123
147
 
@@ -0,0 +1,155 @@
1
+ # Live replay protocol
2
+
3
+ The Rust viewer (`tui/`) can watch runs in two ways: by reading run bundles
4
+ directly from the filesystem (the default, in-process) or by connecting to a
5
+ `piw serve` WebSocket server. Both paths produce the same semantic state; the
6
+ protocol below is the network form of that state. Protocol id:
7
+ `pi-workflows.replay.v1`.
8
+
9
+ The server is a reader like any other: it only consumes run bundles (see
10
+ [run-bundles.md](run-bundles.md)) and never writes them. The protocol has no
11
+ authentication, so the server only accepts loopback bind addresses and refuses
12
+ to start on anything else; bundles contain private data, and remote viewing
13
+ goes through an SSH tunnel. Handshakes that
14
+ carry an `Origin` header are rejected: browsers always send one, and a web
15
+ page must not be able to read bundles by opening a WebSocket to localhost.
16
+
17
+ ## Transport and framing
18
+
19
+ A single WebSocket endpoint (`/ws`). Every message is one JSON object with a
20
+ `type` field. Unknown message types and unknown fields must be ignored by both
21
+ sides. The server sends `hello` on connect; a client that does not recognize
22
+ the protocol id must disconnect.
23
+
24
+ ```json
25
+ { "type": "hello", "protocol": "pi-workflows.replay.v1" }
26
+ ```
27
+
28
+ ## Run views
29
+
30
+ The unit of synchronization is the **run view**, the semantic state of one
31
+ run:
32
+
33
+ ```json
34
+ {
35
+ "manifest": { … },
36
+ "workflow": { … },
37
+ "state": { … },
38
+ "events": [ … ],
39
+ "session": {
40
+ "binding": { … },
41
+ "entries": [ … ],
42
+ "events": [ … ],
43
+ "eventsMalformed": false,
44
+ "eventsTornTail": false,
45
+ "capture": { … }
46
+ },
47
+ "live": true,
48
+ "possiblyInterrupted": false
49
+ }
50
+ ```
51
+
52
+ - `manifest`, `workflow`, `state`, `events`, and every `session` field are the
53
+ bundle documents verbatim. `workflow` is the definition snapshot,
54
+ top-level `events` are parsed workflow trace lines, `session.entries` are
55
+ settled Pi entries, `session.events` are normalized temporal events, and
56
+ `session.capture` is capture integrity. `session.eventsMalformed` and
57
+ `session.eventsTornTail` are derived transport diagnostics from the live
58
+ tailer, not bundle documents. `session` is `null` until a binding exists.
59
+ - `live` is true while the run status is non-terminal and the bundle is still
60
+ growing. `possiblyInterrupted` is true when the status is `running` but the
61
+ bundle has not changed for 60 seconds.
62
+ - Artifact references inside the view stay references; contents are fetched
63
+ on demand.
64
+
65
+ Because the full trace and session history are part of the view, replay
66
+ scrubbing is a pure client-side operation; rewinding never requires the
67
+ server. Clients order session events by `seq` and use `at` only for playback
68
+ timing.
69
+
70
+ ## Snapshot, then patches
71
+
72
+ State synchronization follows a snapshot-then-patch model. After a client
73
+ subscribes to a run, the server sends one `run_snapshot`, then a stream of
74
+ `run_patch` messages:
75
+
76
+ ```json
77
+ { "type": "run_snapshot", "runId": "…", "revision": 3, "view": { … } }
78
+ { "type": "run_patch", "runId": "…", "revision": 4, "patch": [
79
+ { "op": "append", "path": "/events", "value": [ { "seq": 18, … } ] },
80
+ { "op": "replace", "path": "/state", "value": { … } }
81
+ ] }
82
+ ```
83
+
84
+ - `revision` increases by exactly 1 per patch. A client that observes a gap
85
+ must resubscribe and take a fresh snapshot.
86
+ - `patch` is JSON Patch (RFC 6902) plus one extension op: `append`, whose
87
+ `value` is an array of items appended to the array at `path`. Semantically
88
+ `append` equals a sequence of `add` ops at `/-`; it exists so that the
89
+ common case (trace and session growth) stays compact and readable.
90
+ - Session growth uses `append` at `/session/entries` and `/session/events`.
91
+ Capture changes use `replace` at `/session/capture`. Changes to the derived
92
+ tail diagnostics use `replace` at `/session/eventsMalformed` and
93
+ `/session/eventsTornTail`.
94
+ - The server waits 50 ms after a filesystem notification before refreshing,
95
+ so one token burst normally becomes one revision. Batch boundaries never
96
+ merge or alter event records.
97
+ - Patches are computed against the previous view revision; applying them in
98
+ order reproduces the server's view exactly.
99
+
100
+ ## Messages
101
+
102
+ Client to server:
103
+
104
+ | type | fields | meaning |
105
+ | ---------------- | --------------- | ---------------------------- |
106
+ | `watch_runs` | — | subscribe to the run listing |
107
+ | `watch_run` | `runId` | subscribe to one run's view |
108
+ | `unwatch_run` | `runId` | end a run subscription |
109
+ | `fetch_artifact` | `runId`, `path` | request artifact contents |
110
+
111
+ Server to client:
112
+
113
+ | type | fields | meaning |
114
+ | -------------- | ---------------------------- | ----------------------------------------------- |
115
+ | `hello` | `protocol` | sent once on connect |
116
+ | `runs` | `runs` | full run listing (summaries), re-sent on change |
117
+ | `run_snapshot` | `runId`, `revision`, `view` | full view after subscribe |
118
+ | `run_patch` | `runId`, `revision`, `patch` | incremental view update |
119
+ | `artifact` | `runId`, `path`, `content` | artifact contents (UTF-8) |
120
+ | `error` | `message`, `runId?` | request failed |
121
+
122
+ Artifact requests are answered only from files below the artifact directory
123
+ declared by `manifest.paths.artifacts`. Paths outside that directory and
124
+ symlinks whose canonical targets leave it are refused. Responses are capped at
125
+ 4 MiB of actual file size; anything else produces an `error`.
126
+
127
+ Run listing summaries are the manifest plus `live` and
128
+ `possiblyInterrupted`:
129
+
130
+ ```json
131
+ { "type": "runs", "runs": [ { "manifest": { … }, "live": true, "possiblyInterrupted": false } ] }
132
+ ```
133
+
134
+ The run listing is small and changes rarely, so it is always sent whole; only
135
+ run views use patches.
136
+
137
+ ## Reconnection
138
+
139
+ The native client treats the run listing, selected run, and pending artifact
140
+ reads as desired state rather than one-shot commands. After a connection closes,
141
+ it keeps the cached run visible with a stale/reconnecting label, retries with
142
+ bounded backoff, sends `watch_runs` after the next valid `hello`, and restores
143
+ the current `watch_run`. A reconnect receives a fresh snapshot before later
144
+ patches. Pending artifact reads are resubmitted once per connection.
145
+
146
+ ## Filesystem semantics behind the protocol
147
+
148
+ The server watches the runs directory (inotify with polling fallback) and
149
+ tails `trace.ndjson`, `session/entries.ndjson`, and `session/events.ndjson`
150
+ incrementally. Torn final NDJSON lines are buffered until complete. The server
151
+ also re-reads atomic `session/capture.json` changes. `state.json` and
152
+ `manifest.json` are
153
+ re-read on change; a `state.json` whose `traceSeq` is older than the last
154
+ tailed trace event is stale and is replaced when the writer catches up. After
155
+ a terminal status, watching stops.