@namzu/sdk 20.4.0 → 21.0.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 (83) hide show
  1. package/CHANGELOG.md +179 -0
  2. package/dist/bridge/sse/mapper.d.ts +19 -0
  3. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  4. package/dist/bridge/sse/mapper.js +9 -1
  5. package/dist/bridge/sse/mapper.js.map +1 -1
  6. package/dist/contracts/schemas.d.ts +10 -10
  7. package/dist/manager/run/persistence.d.ts +26 -0
  8. package/dist/manager/run/persistence.d.ts.map +1 -1
  9. package/dist/manager/run/persistence.js +40 -0
  10. package/dist/manager/run/persistence.js.map +1 -1
  11. package/dist/public-runtime.d.ts +4 -0
  12. package/dist/public-runtime.d.ts.map +1 -1
  13. package/dist/public-runtime.js +16 -0
  14. package/dist/public-runtime.js.map +1 -1
  15. package/dist/run/drain.d.ts +194 -0
  16. package/dist/run/drain.d.ts.map +1 -0
  17. package/dist/run/drain.js +228 -0
  18. package/dist/run/drain.js.map +1 -0
  19. package/dist/run/index.d.ts +2 -0
  20. package/dist/run/index.d.ts.map +1 -1
  21. package/dist/run/index.js +1 -0
  22. package/dist/run/index.js.map +1 -1
  23. package/dist/runtime/query/events.d.ts +12 -0
  24. package/dist/runtime/query/events.d.ts.map +1 -1
  25. package/dist/runtime/query/events.js +61 -3
  26. package/dist/runtime/query/events.js.map +1 -1
  27. package/dist/runtime/query/index.d.ts +36 -0
  28. package/dist/runtime/query/index.d.ts.map +1 -1
  29. package/dist/runtime/query/index.js +32 -0
  30. package/dist/runtime/query/index.js.map +1 -1
  31. package/dist/runtime/query/resume-run.d.ts +25 -0
  32. package/dist/runtime/query/resume-run.d.ts.map +1 -1
  33. package/dist/runtime/query/resume-run.js +15 -3
  34. package/dist/runtime/query/resume-run.js.map +1 -1
  35. package/dist/store/index.d.ts +1 -1
  36. package/dist/store/index.d.ts.map +1 -1
  37. package/dist/store/index.js +1 -1
  38. package/dist/store/index.js.map +1 -1
  39. package/dist/store/run/conformance.d.ts +159 -0
  40. package/dist/store/run/conformance.d.ts.map +1 -0
  41. package/dist/store/run/conformance.js +451 -0
  42. package/dist/store/run/conformance.js.map +1 -0
  43. package/dist/store/run/disk.d.ts +30 -2
  44. package/dist/store/run/disk.d.ts.map +1 -1
  45. package/dist/store/run/disk.js +101 -0
  46. package/dist/store/run/disk.js.map +1 -1
  47. package/dist/store/run/memory.d.ts +5 -4
  48. package/dist/store/run/memory.d.ts.map +1 -1
  49. package/dist/store/run/memory.js +30 -1
  50. package/dist/store/run/memory.js.map +1 -1
  51. package/dist/types/doctor/check.d.ts +28 -2
  52. package/dist/types/doctor/check.d.ts.map +1 -1
  53. package/dist/types/run/event-cursor.d.ts +90 -0
  54. package/dist/types/run/event-cursor.d.ts.map +1 -0
  55. package/dist/types/run/event-cursor.js +47 -0
  56. package/dist/types/run/event-cursor.js.map +1 -0
  57. package/dist/types/run/events.d.ts +71 -1
  58. package/dist/types/run/events.d.ts.map +1 -1
  59. package/dist/types/run/events.js.map +1 -1
  60. package/dist/types/run/index.d.ts +1 -0
  61. package/dist/types/run/index.d.ts.map +1 -1
  62. package/dist/types/run/index.js +1 -0
  63. package/dist/types/run/index.js.map +1 -1
  64. package/dist/types/run/store.d.ts +41 -1
  65. package/dist/types/run/store.d.ts.map +1 -1
  66. package/package.json +6 -1
  67. package/src/bridge/sse/mapper.ts +28 -1
  68. package/src/manager/run/persistence.ts +43 -0
  69. package/src/public-runtime.ts +22 -0
  70. package/src/run/drain.ts +393 -0
  71. package/src/run/index.ts +3 -0
  72. package/src/runtime/query/events.ts +68 -4
  73. package/src/runtime/query/index.ts +87 -0
  74. package/src/runtime/query/resume-run.ts +67 -12
  75. package/src/store/index.ts +1 -1
  76. package/src/store/run/conformance.ts +705 -0
  77. package/src/store/run/disk.ts +106 -2
  78. package/src/store/run/memory.ts +35 -5
  79. package/src/types/doctor/check.ts +28 -2
  80. package/src/types/run/event-cursor.ts +118 -0
  81. package/src/types/run/events.ts +80 -3
  82. package/src/types/run/index.ts +1 -0
  83. package/src/types/run/store.ts +43 -1
@@ -1,6 +1,6 @@
1
1
  import type { CheckpointId, IterationCheckpoint } from '../../types/hitl/index.js';
2
- import type { Run, RunEvent, RunStoreConfig } from '../../types/run/index.js';
3
- import type { CompletedToolRecord, RunStore } from '../../types/run/store.js';
2
+ import type { PersistedRunEvent, Run, RunEvent, RunStoreConfig } from '../../types/run/index.js';
3
+ import type { CompletedToolRecord, ReadRunEventsOptions, RunStore } from '../../types/run/store.js';
4
4
  /**
5
5
  * One finished tool call, recovered from the transcript.
6
6
  *
@@ -18,6 +18,7 @@ export declare class RunDiskStore implements RunStore {
18
18
  private requireInit;
19
19
  initRun(runId: string, parentRunId?: string): Promise<string>;
20
20
  appendEvent(event: RunEvent): Promise<void>;
21
+ readEvents(options?: ReadRunEventsOptions): Promise<readonly PersistedRunEvent[]>;
21
22
  /**
22
23
  * Every tool call this run has already finished, keyed by `toolUseId`.
23
24
  *
@@ -74,6 +75,33 @@ export declare class RunDiskStore implements RunStore {
74
75
  }>>;
75
76
  addToIndex(run: Run): Promise<void>;
76
77
  }
78
+ /**
79
+ * Every durable event under one run directory, oldest first.
80
+ *
81
+ * A free function for the same reason {@link readCheckpointsIn} is one: a
82
+ * caller catching up on a run this process never started would otherwise have
83
+ * to bind a {@link RunDiskStore} to read it, and binding one CREATES the
84
+ * directory. A read that mints an empty run directory then answers "no events"
85
+ * is indistinguishable from a run that genuinely has none.
86
+ *
87
+ * ## Unsequenced lines take their position
88
+ *
89
+ * A transcript written before events were numbered carries no `seq` at all.
90
+ * Numbering those lines by their 1-based position is what keeps their evidence
91
+ * reachable: a legacy run of five lines reads back as 1..5, seeds the emitter
92
+ * at 5, and its next event is 6 — continuous, and stable on every later read.
93
+ * Skipping them instead would erase a run's whole history from a catch-up, and
94
+ * synthesising nothing at all would put the emitter back at 1 on top of a log
95
+ * that already has five entries.
96
+ *
97
+ * A damaged line is skipped rather than refused, which is the one place this
98
+ * differs from the checkpoint reader next door, and deliberately: a checkpoint
99
+ * is read to RESUME from, so a damaged one must stop the resume, while the
100
+ * transcript is read to REPORT from, and dropping every event after a torn line
101
+ * would be a larger loss than the torn line itself. The position count still
102
+ * advances over it, so the numbering of the events after it is unchanged.
103
+ */
104
+ export declare function readRunEventsIn(runDir: string, options?: ReadRunEventsOptions): Promise<readonly PersistedRunEvent[]>;
77
105
  /**
78
106
  * Every checkpoint stored under one run directory, ascending by `createdAt`.
79
107
  *
@@ -1 +1 @@
1
- {"version":3,"file":"disk.d.ts","sourceRoot":"","sources":["../../../src/store/run/disk.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAe7E;;;;;;GAMG;AACH,YAAY,EAAE,mBAAmB,EAAE,CAAA;AAEnC,qBAAa,YAAa,YAAW,QAAQ;IAC5C,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,SAAS,CAAmC;gBAExC,MAAM,EAAE,cAAc;IAKlC,OAAO,CAAC,WAAW;IAOb,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW7D,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjD;;;;;;;;;;;;;;OAcG;IACG,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IA0C/D,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BrC,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASnD,SAAS,IAAI,MAAM,GAAG,IAAI;IAIpB,eAAe,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAc/D,cAAc,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAW/E,eAAe,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAIjD,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IASjE;;;;;;;;;;;;;;;;;;;;;;OAsBG;WACU,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAC9C,KAAK,CAAC;QACL,EAAE,EAAE,MAAM,CAAA;QACV,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;QACjB,OAAO,CAAC,EAAE,MAAM,CAAA;KAChB,CAAC,CACF;IAWK,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CA8CzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAiBtF"}
1
+ {"version":3,"file":"disk.d.ts","sourceRoot":"","sources":["../../../src/store/run/disk.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAChG,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAenG;;;;;;GAMG;AACH,YAAY,EAAE,mBAAmB,EAAE,CAAA;AAEnC,qBAAa,YAAa,YAAW,QAAQ;IAC5C,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,SAAS,CAAmC;gBAExC,MAAM,EAAE,cAAc;IAKlC,OAAO,CAAC,WAAW;IAOb,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY7D,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3C,UAAU,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC;IAIvF;;;;;;;;;;;;;;OAcG;IACG,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IA0C/D,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BrC,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASnD,SAAS,IAAI,MAAM,GAAG,IAAI;IAIpB,eAAe,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAc/D,cAAc,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAW/E,eAAe,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAIjD,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IASjE;;;;;;;;;;;;;;;;;;;;;;OAsBG;WACU,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAC9C,KAAK,CAAC;QACL,EAAE,EAAE,MAAM,CAAA;QACV,SAAS,EAAE,MAAM,CAAA;QACjB,MAAM,EAAE,MAAM,CAAA;QACd,SAAS,EAAE,MAAM,CAAA;QACjB,OAAO,CAAC,EAAE,MAAM,CAAA;KAChB,CAAC,CACF;IAWK,UAAU,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;CA8CzC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,eAAe,CACpC,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAwCvC;AA8BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAiBtF"}
@@ -35,6 +35,7 @@ export class RunDiskStore {
35
35
  this.runDir = join(this.baseDir, runId);
36
36
  }
37
37
  await mkdir(this.runDir, { recursive: true });
38
+ await healTornTranscript(this.runDir);
38
39
  this.log.info(`Run directory created: ${this.runDir}`);
39
40
  return this.runDir;
40
41
  }
@@ -46,6 +47,9 @@ export class RunDiskStore {
46
47
  })}\n`;
47
48
  await appendFile(join(dir, 'transcript.jsonl'), line, 'utf-8');
48
49
  }
50
+ async readEvents(options) {
51
+ return readRunEventsIn(this.requireInit(), options);
52
+ }
49
53
  /**
50
54
  * Every tool call this run has already finished, keyed by `toolUseId`.
51
55
  *
@@ -261,6 +265,103 @@ export class RunDiskStore {
261
265
  }
262
266
  }
263
267
  }
268
+ /**
269
+ * Every durable event under one run directory, oldest first.
270
+ *
271
+ * A free function for the same reason {@link readCheckpointsIn} is one: a
272
+ * caller catching up on a run this process never started would otherwise have
273
+ * to bind a {@link RunDiskStore} to read it, and binding one CREATES the
274
+ * directory. A read that mints an empty run directory then answers "no events"
275
+ * is indistinguishable from a run that genuinely has none.
276
+ *
277
+ * ## Unsequenced lines take their position
278
+ *
279
+ * A transcript written before events were numbered carries no `seq` at all.
280
+ * Numbering those lines by their 1-based position is what keeps their evidence
281
+ * reachable: a legacy run of five lines reads back as 1..5, seeds the emitter
282
+ * at 5, and its next event is 6 — continuous, and stable on every later read.
283
+ * Skipping them instead would erase a run's whole history from a catch-up, and
284
+ * synthesising nothing at all would put the emitter back at 1 on top of a log
285
+ * that already has five entries.
286
+ *
287
+ * A damaged line is skipped rather than refused, which is the one place this
288
+ * differs from the checkpoint reader next door, and deliberately: a checkpoint
289
+ * is read to RESUME from, so a damaged one must stop the resume, while the
290
+ * transcript is read to REPORT from, and dropping every event after a torn line
291
+ * would be a larger loss than the torn line itself. The position count still
292
+ * advances over it, so the numbering of the events after it is unchanged.
293
+ */
294
+ export async function readRunEventsIn(runDir, options) {
295
+ let raw;
296
+ try {
297
+ raw = await readFile(join(runDir, 'transcript.jsonl'), 'utf-8');
298
+ }
299
+ catch (err) {
300
+ if (isFileNotFound(err))
301
+ return [];
302
+ throw err;
303
+ }
304
+ const sinceSeq = options?.sinceSeq ?? 0;
305
+ const events = [];
306
+ let position = 0;
307
+ for (const line of raw.split('\n')) {
308
+ if (line.length === 0)
309
+ continue;
310
+ position += 1;
311
+ let parsed;
312
+ try {
313
+ parsed = JSON.parse(line);
314
+ }
315
+ catch {
316
+ continue;
317
+ }
318
+ if (parsed === null || typeof parsed !== 'object' || typeof parsed.type !== 'string')
319
+ continue;
320
+ const seq = typeof parsed.seq === 'number' ? parsed.seq : position;
321
+ if (seq <= sinceSeq)
322
+ continue;
323
+ events.push({
324
+ ...parsed,
325
+ seq,
326
+ // Stamped by `appendEvent` since long before it was declared. A line
327
+ // that predates even that gets the only honest answer available:
328
+ // zero, which sorts before every real moment and cannot be mistaken
329
+ // for one.
330
+ timestamp: typeof parsed.timestamp === 'number' ? parsed.timestamp : 0,
331
+ });
332
+ }
333
+ return events;
334
+ }
335
+ /**
336
+ * Terminate a transcript whose last line was cut off mid-write.
337
+ *
338
+ * A process killed during `appendFile` leaves a fragment with no newline. The
339
+ * next append lands on the same line, so the fragment and a WHOLE, correct
340
+ * event merge into one unparsable line — and the reader skips it. The event was
341
+ * written, the emitter counted it as durable, and it is gone.
342
+ *
343
+ * Ending the fragment is enough. It stays unreadable and is skipped as it
344
+ * always was; everything appended after it survives, which is the difference
345
+ * between losing one event and losing one event plus the next.
346
+ *
347
+ * Called from `initRun`, which is the only moment the store knows nothing is
348
+ * mid-write.
349
+ */
350
+ async function healTornTranscript(runDir) {
351
+ const path = join(runDir, 'transcript.jsonl');
352
+ let raw;
353
+ try {
354
+ raw = await readFile(path, 'utf-8');
355
+ }
356
+ catch (err) {
357
+ if (isFileNotFound(err))
358
+ return;
359
+ throw err;
360
+ }
361
+ if (raw.length === 0 || raw.endsWith('\n'))
362
+ return;
363
+ await appendFile(path, '\n', 'utf-8');
364
+ }
264
365
  /**
265
366
  * Every checkpoint stored under one run directory, ascending by `createdAt`.
266
367
  *
@@ -1 +1 @@
1
- {"version":3,"file":"disk.js","sourceRoot":"","sources":["../../../src/store/run/disk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"disk.js","sourceRoot":"","sources":["../../../src/store/run/disk.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Run } from '../../types/run/entity.js';
2
- import type { RunEvent } from '../../types/run/events.js';
3
- import type { CompletedToolRecord, RunStore } from '../../types/run/store.js';
2
+ import type { PersistedRunEvent, RunEvent } from '../../types/run/events.js';
3
+ import type { CompletedToolRecord, ReadRunEventsOptions, RunStore } from '../../types/run/store.js';
4
4
  /**
5
5
  * Process-local {@link RunStore}: a run's evidence with no filesystem.
6
6
  *
@@ -21,7 +21,7 @@ export declare class InMemoryRunStore implements RunStore {
21
21
  private meta;
22
22
  private messages;
23
23
  private report;
24
- private readonly events;
24
+ private events;
25
25
  initRun(runId: string, parentRunId?: string): Promise<string | null>;
26
26
  private requireInit;
27
27
  /** The run this store is bound to, and its parent when it has one. */
@@ -32,6 +32,7 @@ export declare class InMemoryRunStore implements RunStore {
32
32
  writeRunMeta(run: Run): Promise<void>;
33
33
  writeMessages(run: Run): Promise<void>;
34
34
  appendEvent(event: RunEvent): Promise<void>;
35
+ readEvents(options?: ReadRunEventsOptions): Promise<readonly PersistedRunEvent[]>;
35
36
  writeReport(content: string): Promise<string | null>;
36
37
  readCompletedTools(): Promise<Map<string, CompletedToolRecord>>;
37
38
  getRunDir(): string | null;
@@ -40,7 +41,7 @@ export declare class InMemoryRunStore implements RunStore {
40
41
  meta: Run | null;
41
42
  messages: Run['messages'];
42
43
  report: string | null;
43
- events: readonly RunEvent[];
44
+ events: readonly PersistedRunEvent[];
44
45
  };
45
46
  }
46
47
  //# sourceMappingURL=memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/store/run/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAA;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAE7E;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAiB,YAAW,QAAQ;IAChD,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAElC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAU1E,OAAO,CAAC,WAAW;IAOnB,sEAAsE;IACtE,IAAI,OAAO,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAI5D;IAEK,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IASrC,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMpD,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAuBrE,SAAS,IAAI,MAAM,GAAG,IAAI;IAS1B,0EAA0E;IAC1E,QAAQ,IAAI;QACX,IAAI,EAAE,GAAG,GAAG,IAAI,CAAA;QAChB,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAA;KAC3B;CAGD"}
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/store/run/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAA;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnG;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAiB,YAAW,QAAQ;IAChD,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,QAAQ,CAAsB;IACtC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAA0B;IAElC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAsB1E,OAAO,CAAC,WAAW;IAOnB,sEAAsE;IACtE,IAAI,OAAO,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAI5D;IAEK,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IASrC,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtC,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB3C,UAAU,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC;IASjF,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAMpD,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAuBrE,SAAS,IAAI,MAAM,GAAG,IAAI;IAS1B,0EAA0E;IAC1E,QAAQ,IAAI;QACX,IAAI,EAAE,GAAG,GAAG,IAAI,CAAA;QAChB,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;QACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAA;KACpC;CAGD"}
@@ -20,6 +20,18 @@ export class InMemoryRunStore {
20
20
  report = null;
21
21
  events = [];
22
22
  async initRun(runId, parentRunId) {
23
+ // Rebinding to a DIFFERENT run starts that run's evidence empty. The disk
24
+ // store gets this for free — a different id is a different directory —
25
+ // and this one has to say it, because one instance reused for a replay
26
+ // fork otherwise reports the origin run's events, its messages and its
27
+ // report as the new run's own. Evidence attributed to the wrong run is
28
+ // worse than none: it is wrong and it looks right.
29
+ if (this.runId !== null && this.runId !== runId) {
30
+ this.meta = null;
31
+ this.messages = [];
32
+ this.report = null;
33
+ this.events = [];
34
+ }
23
35
  this.runId = runId;
24
36
  this.parentRunId = parentRunId;
25
37
  // No location, and that is the honest answer rather than a defect.
@@ -58,7 +70,24 @@ export class InMemoryRunStore {
58
70
  // line — a parity test compares the two read-backs, and a timestamp
59
71
  // present in one medium and absent in the other would make identical
60
72
  // runs look different depending on where they were recorded.
61
- this.events.push({ ...event, timestamp: Date.now() });
73
+ //
74
+ // An unsequenced event takes its position in the log, which is the same
75
+ // rule the disk reader applies to a line written before events were
76
+ // numbered. Nothing in the kernel appends unsequenced today; the rule is
77
+ // here so the two backends cannot answer differently if something does.
78
+ this.events.push({
79
+ ...event,
80
+ seq: event.seq ?? this.events.length + 1,
81
+ timestamp: Date.now(),
82
+ });
83
+ }
84
+ async readEvents(options) {
85
+ this.requireInit();
86
+ const sinceSeq = options?.sinceSeq ?? 0;
87
+ // Copied, not sliced by reference, for the same reason `writeRunMeta`
88
+ // clones: a caller holding the array must not be able to reach into the
89
+ // log through it.
90
+ return this.events.filter((event) => event.seq > sinceSeq).map((event) => ({ ...event }));
62
91
  }
63
92
  async writeReport(content) {
64
93
  this.requireInit();
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/store/run/memory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/store/run/memory.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,21 @@
1
- export type DoctorStatus = 'pass' | 'fail' | 'inconclusive' | 'warn';
1
+ /**
2
+ * What a check concluded.
3
+ *
4
+ * `skipped` and `inconclusive` are the two ways a check produces no verdict,
5
+ * and they are separate because a caller acts on them differently.
6
+ *
7
+ * - `skipped` — the check LOOKED and there was nothing here to check: an
8
+ * optional package is not installed, a registry the check reads has no
9
+ * auto-discovery to read, nothing is configured yet. A permanent or
10
+ * by-design absence, and an ordinary state of a healthy machine.
11
+ * - `inconclusive` — the check DID NOT ANSWER: it timed out, it was aborted,
12
+ * the thing it reads threw. Nothing is known either way, and that is itself
13
+ * a gap in the report worth acting on.
14
+ *
15
+ * The word used to cover both, so `namzu doctor` could not tell "healthy" from
16
+ * "did not manage to look", and neither could anything reading its exit code.
17
+ */
18
+ export type DoctorStatus = 'pass' | 'fail' | 'inconclusive' | 'warn' | 'skipped';
2
19
  export type DoctorCategory = 'sandbox' | 'providers' | 'vault' | 'telemetry' | 'runtime' | 'plugins' | 'custom';
3
20
  export interface DoctorCheckContext {
4
21
  readonly cwd: string;
@@ -34,8 +51,17 @@ export interface DoctorReport {
34
51
  readonly fail: number;
35
52
  readonly inconclusive: number;
36
53
  readonly warn: number;
54
+ readonly skipped: number;
55
+ /** Every other count sums to this. A reader may rely on that. */
37
56
  readonly total: number;
38
57
  };
39
- readonly exit: 0 | 1 | 2 | 70;
58
+ /**
59
+ * `69` is sysexits `EX_UNAVAILABLE`, whose own definition ends "a catchall
60
+ * when something you wanted to do doesn't work, but you don't know why".
61
+ * That is `inconclusive`. It is not `2`, which this report already spends on
62
+ * "nothing was registered", and not `70`, which says the CLI is broken and
63
+ * is worth a bug report.
64
+ */
65
+ readonly exit: 0 | 1 | 2 | 69 | 70;
40
66
  }
41
67
  //# sourceMappingURL=check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/types/doctor/check.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM,CAAA;AAEpE,MAAM,MAAM,cAAc,GACvB,SAAS,GACT,WAAW,GACX,OAAO,GACP,WAAW,GACX,SAAS,GACT,SAAS,GACT,QAAQ,CAAA;AAEX,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;IAC1D,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACrE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;CACtE;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC7C,QAAQ,CAAC,OAAO,EAAE;QACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;QAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KACtB,CAAA;IACD,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;CAC7B"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/types/doctor/check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM,GAAG,SAAS,CAAA;AAEhF,MAAM,MAAM,cAAc,GACvB,SAAS,GACT,WAAW,GACX,OAAO,GACP,WAAW,GACX,SAAS,GACT,SAAS,GACT,QAAQ,CAAA;AAEX,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;IAC1D,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CACnC;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACrE,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;CACtE;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAA;IAC7C,QAAQ,CAAC,OAAO,EAAE;QACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;QAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;QACxB,iEAAiE;QACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KACtB,CAAA;IACD;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,CAAA;CAClC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Where a reconnecting consumer left off, and whether the kernel can honour it.
3
+ *
4
+ * The shortfall is a VALUE here, not a sentence in a document. A consumer that
5
+ * asks for everything after sequence 400 and silently receives a splice from a
6
+ * different generation of the run is wrong and has no way to find out; a
7
+ * consumer handed `{ status: 'unavailable', reason: 'cursor_ahead' }` re-derives
8
+ * from the transcript and is right. That is refuse-do-not-degrade applied to a
9
+ * subscription rather than to a capability.
10
+ */
11
+ import type { ClaimFence } from './checkpoint-store.js';
12
+ import type { PersistedRunEvent } from './events.js';
13
+ /** What a consumer holds when it comes back. */
14
+ export interface RunEventCursor {
15
+ /**
16
+ * The last `seq` the consumer actually received, from the envelope. Zero —
17
+ * or the field absent — means "from the beginning".
18
+ */
19
+ readonly sinceSeq: number;
20
+ /**
21
+ * The `generation` carried on the events the consumer received, when they
22
+ * carried one.
23
+ *
24
+ * Compared for equality only. Absent on both sides is not a match and not a
25
+ * mismatch: it is an unfenced run, where the sequence is the only evidence
26
+ * available and the log persisting is the assumption.
27
+ */
28
+ readonly generation?: ClaimFence;
29
+ }
30
+ /** Why a cursor could not be honoured. */
31
+ export type RunEventReplayRefusal =
32
+ /**
33
+ * The consumer claims to have seen more than the log holds.
34
+ *
35
+ * The ordinary cause is not a lying client: it is a log that did not
36
+ * survive. An in-memory run store on a restarted process seeds at zero
37
+ * while the consumer still holds 400, and this is the verdict that says so
38
+ * instead of reporting a serene "you are up to date".
39
+ */
40
+ 'cursor_ahead'
41
+ /**
42
+ * The run has been taken over since. The consumer's sequence numbers were
43
+ * minted under an older claim and address a different sequence space, so
44
+ * they are not comparable — not merely stale.
45
+ */
46
+ | 'generation_changed'
47
+ /**
48
+ * The store answered, and its oldest available event is above the one after
49
+ * the cursor. A pruning or windowed backend, caught at the boundary rather
50
+ * than delivered as a continuous stream with a hole in it.
51
+ */
52
+ | 'gap';
53
+ /** What came of a cursor. */
54
+ export type RunEventReplay =
55
+ /** The cursor is already at the log's head. Nothing was missed. */
56
+ {
57
+ readonly status: 'complete';
58
+ }
59
+ /** Contiguous from `sinceSeq + 1`, oldest first. */
60
+ | {
61
+ readonly status: 'replayed';
62
+ readonly events: readonly PersistedRunEvent[];
63
+ }
64
+ /** Nothing is delivered. The consumer re-derives from the transcript. */
65
+ | {
66
+ readonly status: 'unavailable';
67
+ readonly reason: RunEventReplayRefusal;
68
+ };
69
+ /** The log's present state, as the store reports it. */
70
+ export interface RunEventLogHead {
71
+ /** Highest sequence in the log; zero when it is empty. */
72
+ readonly lastSeq: number;
73
+ /** The fence the run is being written under, when it holds a claim. */
74
+ readonly generation?: ClaimFence;
75
+ }
76
+ /**
77
+ * Decide what a cursor is owed, given what the log holds.
78
+ *
79
+ * Pure, and ordered deliberately: a takeover invalidates the sequence space, so
80
+ * comparing sequences across generations would be arithmetic on two different
81
+ * scales. The generation check therefore runs FIRST, before the numbers are
82
+ * allowed to mean anything.
83
+ *
84
+ * `events` is what the store returned for `{ sinceSeq: cursor.sinceSeq }`. It is
85
+ * passed in rather than fetched here so this stays a function of its arguments
86
+ * — the property "no gap, no duplicate" is decidable from the three inputs, and
87
+ * a test can drive every branch without a store.
88
+ */
89
+ export declare function resolveRunEventReplay(cursor: RunEventCursor, head: RunEventLogHead, events: readonly PersistedRunEvent[]): RunEventReplay;
90
+ //# sourceMappingURL=event-cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-cursor.d.ts","sourceRoot":"","sources":["../../../src/types/run/event-cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC9B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB;;;;;;;OAOG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CAChC;AAED,0CAA0C;AAC1C,MAAM,MAAM,qBAAqB;AAChC;;;;;;;GAOG;AACD,cAAc;AAChB;;;;GAIG;GACD,oBAAoB;AACtB;;;;GAIG;GACD,KAAK,CAAA;AAER,6BAA6B;AAC7B,MAAM,MAAM,cAAc;AACzB,mEAAmE;AACjE;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE;AACjC,oDAAoD;GAClD;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAA;CAAE;AAChF,yEAAyE;GACvE;IAAE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAA;CAAE,CAAA;AAE7E,wDAAwD;AACxD,MAAM,WAAW,eAAe;IAC/B,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,uEAAuE;IACvE,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;CAChC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,SAAS,iBAAiB,EAAE,GAClC,cAAc,CA2BhB"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Where a reconnecting consumer left off, and whether the kernel can honour it.
3
+ *
4
+ * The shortfall is a VALUE here, not a sentence in a document. A consumer that
5
+ * asks for everything after sequence 400 and silently receives a splice from a
6
+ * different generation of the run is wrong and has no way to find out; a
7
+ * consumer handed `{ status: 'unavailable', reason: 'cursor_ahead' }` re-derives
8
+ * from the transcript and is right. That is refuse-do-not-degrade applied to a
9
+ * subscription rather than to a capability.
10
+ */
11
+ /**
12
+ * Decide what a cursor is owed, given what the log holds.
13
+ *
14
+ * Pure, and ordered deliberately: a takeover invalidates the sequence space, so
15
+ * comparing sequences across generations would be arithmetic on two different
16
+ * scales. The generation check therefore runs FIRST, before the numbers are
17
+ * allowed to mean anything.
18
+ *
19
+ * `events` is what the store returned for `{ sinceSeq: cursor.sinceSeq }`. It is
20
+ * passed in rather than fetched here so this stays a function of its arguments
21
+ * — the property "no gap, no duplicate" is decidable from the three inputs, and
22
+ * a test can drive every branch without a store.
23
+ */
24
+ export function resolveRunEventReplay(cursor, head, events) {
25
+ // Both sides must carry one for a mismatch to mean anything. An unfenced run
26
+ // has no generation to disagree with, and treating "absent" as a distinct
27
+ // value would refuse every run that never took a claim — which is most of
28
+ // them.
29
+ if (cursor.generation !== undefined &&
30
+ head.generation !== undefined &&
31
+ cursor.generation !== head.generation) {
32
+ return { status: 'unavailable', reason: 'generation_changed' };
33
+ }
34
+ if (cursor.sinceSeq > head.lastSeq) {
35
+ return { status: 'unavailable', reason: 'cursor_ahead' };
36
+ }
37
+ if (cursor.sinceSeq === head.lastSeq)
38
+ return { status: 'complete' };
39
+ // The log says there is something above the cursor, so an empty answer is
40
+ // the store contradicting its own head rather than "nothing to send".
41
+ const first = events[0];
42
+ if (!first || first.seq !== cursor.sinceSeq + 1) {
43
+ return { status: 'unavailable', reason: 'gap' };
44
+ }
45
+ return { status: 'replayed', events };
46
+ }
47
+ //# sourceMappingURL=event-cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-cursor.js","sourceRoot":"","sources":["../../../src/types/run/event-cursor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAgEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CACpC,MAAsB,EACtB,IAAqB,EACrB,MAAoC;IAEpC,6EAA6E;IAC7E,0EAA0E;IAC1E,0EAA0E;IAC1E,QAAQ;IACR,IACC,MAAM,CAAC,UAAU,KAAK,SAAS;QAC/B,IAAI,CAAC,UAAU,KAAK,SAAS;QAC7B,MAAM,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EACpC,CAAC;QACF,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;IAC/D,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;IACzD,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;IAEnE,0EAA0E;IAC1E,sEAAsE;IACtE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACvB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;IAChD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;AACtC,CAAC"}
@@ -6,6 +6,7 @@ import type { ActivityId, MessageId, PlanId, PluginId, RunId, SandboxId, TaskId,
6
6
  import type { PlanStep } from '../plan/index.js';
7
7
  import type { PluginHookEvent, PluginHookResult } from '../plugin/index.js';
8
8
  import type { TaskStatus } from '../task/index.js';
9
+ import type { ClaimFence } from './checkpoint-store.js';
9
10
  import type { Lineage } from './lineage.js';
10
11
  import type { MessageStopReason, StopReason } from './stop-reason.js';
11
12
  import type { SubsessionIdledEvent, SubsessionMessagedEvent, SubsessionSpawnedEvent } from './subsession-events.js';
@@ -28,6 +29,57 @@ interface RunEventEnvelope {
28
29
  */
29
30
  schemaVersion?: 3;
30
31
  lineage?: Lineage;
32
+ /**
33
+ * This event's position in its OWN run's durable event log, from 1.
34
+ *
35
+ * **Present means recorded.** The emitter takes a candidate number, appends
36
+ * the event stamped with it, and only then advances the counter and hands
37
+ * the event to the live stream — so a `seq` a consumer can see is a `seq`
38
+ * the log contains. That is what makes it usable as a cursor: reconnect,
39
+ * ask for everything above it, and nothing is missed and nothing arrives
40
+ * twice.
41
+ *
42
+ * **Absent means not recoverable**, and three different things arrive that
43
+ * way:
44
+ *
45
+ * - the high-frequency events {@link isEphemeralEvent} names, which are
46
+ * deliberately never persisted;
47
+ * - an event whose durable write FAILED — it still reaches the live
48
+ * stream, unstamped, because losing the news of a failure is worse than
49
+ * delivering it without a cursor;
50
+ * - the delegation lifecycle events (`agent_pending`, `agent_completed`,
51
+ * `agent_failed`, `agent_canceled` and the three sub-session variants),
52
+ * which the agent manager hands straight to a host's listener without
53
+ * passing through the run's event translator at all. They are not in any
54
+ * run's log, and the missing `seq` is how a consumer learns that rather
55
+ * than discovering it after a reconnect.
56
+ *
57
+ * **Per run, not per stream.** A parent's listener also receives its
58
+ * children's events, each numbered in its own run's log, so a consumer
59
+ * keeps one cursor per `runId`. The SSE mapper carries the pair as
60
+ * `<runId>:<seq>` for exactly this reason.
61
+ *
62
+ * Monotonic under a single writer. The run store takes no claim fence
63
+ * today (see `QueryParams.claimFence`), so two workers that both took one
64
+ * run can both append — `generation` is what makes that detectable.
65
+ */
66
+ seq?: number;
67
+ /**
68
+ * The claim fence the run was being written under, when it holds a claim.
69
+ *
70
+ * A sequence alone lies across a takeover: a client at seq 400 reconnects
71
+ * to a run whose store lost its log, the new writer starts at 1, and the
72
+ * client's cursor silently addresses a different sequence space. The fence
73
+ * is already the arbiter of who may write and it only increases, so
74
+ * carrying it here makes a takeover ORDERED rather than merely
75
+ * distinguishable.
76
+ *
77
+ * Absent when the run was written unfenced, which is every run that took no
78
+ * claim. A cursor then relies on the log persisting — the disk store's
79
+ * does, an in-memory store's does not, and `cursor_ahead` is the verdict
80
+ * that catches the difference.
81
+ */
82
+ generation?: ClaimFence;
31
83
  }
32
84
  type CoreRunEvent = {
33
85
  type: 'run_started';
@@ -648,7 +700,25 @@ type CoreRunEvent = {
648
700
  * (`subsession_spawned`, `subsession_messaged`, `subsession_idled`) carry a
649
701
  * required `lineage` — see session-hierarchy.md §10.4.
650
702
  */
651
- export type RunEvent = (CoreRunEvent & RunEventEnvelope) | SubsessionSpawnedEvent | SubsessionMessagedEvent | SubsessionIdledEvent;
703
+ export type RunEvent = (CoreRunEvent & RunEventEnvelope) | (SubsessionSpawnedEvent & RunEventEnvelope) | (SubsessionMessagedEvent & RunEventEnvelope) | (SubsessionIdledEvent & RunEventEnvelope);
652
704
  export type RunEventListener = (event: RunEvent) => void | Promise<void>;
705
+ /**
706
+ * A run event as the durable log gives it back.
707
+ *
708
+ * `seq` and `timestamp` are REQUIRED here and optional on the live envelope,
709
+ * which is the whole difference between the two types: a recorded event has a
710
+ * position and a moment, and a live one may be neither recorded nor
711
+ * recoverable.
712
+ *
713
+ * `timestamp` is not new — both store implementations have always stamped it
714
+ * on write. It was simply never declared anywhere, so the field was persisted
715
+ * by two writers, typed by neither, and read by nobody. Declaring it is what
716
+ * lets the read-back stop casting.
717
+ */
718
+ export type PersistedRunEvent = RunEvent & {
719
+ readonly seq: number;
720
+ /** Epoch ms at which the store recorded the event. */
721
+ readonly timestamp: number;
722
+ };
653
723
  export declare function isEphemeralEvent(event: RunEvent): boolean;
654
724
  //# sourceMappingURL=events.d.ts.map