@namzu/sdk 20.3.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 (111) hide show
  1. package/CHANGELOG.md +321 -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 +5 -0
  12. package/dist/public-runtime.d.ts.map +1 -1
  13. package/dist/public-runtime.js +21 -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/checkpoint.d.ts +27 -1
  24. package/dist/runtime/query/checkpoint.d.ts.map +1 -1
  25. package/dist/runtime/query/checkpoint.js +34 -4
  26. package/dist/runtime/query/checkpoint.js.map +1 -1
  27. package/dist/runtime/query/events.d.ts +12 -0
  28. package/dist/runtime/query/events.d.ts.map +1 -1
  29. package/dist/runtime/query/events.js +61 -3
  30. package/dist/runtime/query/events.js.map +1 -1
  31. package/dist/runtime/query/index.d.ts +57 -1
  32. package/dist/runtime/query/index.d.ts.map +1 -1
  33. package/dist/runtime/query/index.js +36 -0
  34. package/dist/runtime/query/index.js.map +1 -1
  35. package/dist/runtime/query/resume-run.d.ts +34 -1
  36. package/dist/runtime/query/resume-run.d.ts.map +1 -1
  37. package/dist/runtime/query/resume-run.js +16 -3
  38. package/dist/runtime/query/resume-run.js.map +1 -1
  39. package/dist/store/index.d.ts +2 -2
  40. package/dist/store/index.d.ts.map +1 -1
  41. package/dist/store/index.js +2 -2
  42. package/dist/store/index.js.map +1 -1
  43. package/dist/store/run/checkpoint-disk.d.ts +18 -2
  44. package/dist/store/run/checkpoint-disk.d.ts.map +1 -1
  45. package/dist/store/run/checkpoint-disk.js +50 -5
  46. package/dist/store/run/checkpoint-disk.js.map +1 -1
  47. package/dist/store/run/checkpoint-memory.d.ts +22 -2
  48. package/dist/store/run/checkpoint-memory.d.ts.map +1 -1
  49. package/dist/store/run/checkpoint-memory.js +99 -4
  50. package/dist/store/run/checkpoint-memory.js.map +1 -1
  51. package/dist/store/run/claim-disk.d.ts +130 -0
  52. package/dist/store/run/claim-disk.d.ts.map +1 -0
  53. package/dist/store/run/claim-disk.js +550 -0
  54. package/dist/store/run/claim-disk.js.map +1 -0
  55. package/dist/store/run/conformance.d.ts +159 -0
  56. package/dist/store/run/conformance.d.ts.map +1 -0
  57. package/dist/store/run/conformance.js +451 -0
  58. package/dist/store/run/conformance.js.map +1 -0
  59. package/dist/store/run/disk.d.ts +30 -2
  60. package/dist/store/run/disk.d.ts.map +1 -1
  61. package/dist/store/run/disk.js +101 -0
  62. package/dist/store/run/disk.js.map +1 -1
  63. package/dist/store/run/listing.d.ts +44 -1
  64. package/dist/store/run/listing.d.ts.map +1 -1
  65. package/dist/store/run/listing.js +92 -1
  66. package/dist/store/run/listing.js.map +1 -1
  67. package/dist/store/run/memory.d.ts +5 -4
  68. package/dist/store/run/memory.d.ts.map +1 -1
  69. package/dist/store/run/memory.js +30 -1
  70. package/dist/store/run/memory.js.map +1 -1
  71. package/dist/types/doctor/check.d.ts +28 -2
  72. package/dist/types/doctor/check.d.ts.map +1 -1
  73. package/dist/types/run/checkpoint-store.d.ts +178 -2
  74. package/dist/types/run/checkpoint-store.d.ts.map +1 -1
  75. package/dist/types/run/event-cursor.d.ts +90 -0
  76. package/dist/types/run/event-cursor.d.ts.map +1 -0
  77. package/dist/types/run/event-cursor.js +47 -0
  78. package/dist/types/run/event-cursor.js.map +1 -0
  79. package/dist/types/run/events.d.ts +71 -1
  80. package/dist/types/run/events.d.ts.map +1 -1
  81. package/dist/types/run/events.js.map +1 -1
  82. package/dist/types/run/index.d.ts +1 -0
  83. package/dist/types/run/index.d.ts.map +1 -1
  84. package/dist/types/run/index.js +1 -0
  85. package/dist/types/run/index.js.map +1 -1
  86. package/dist/types/run/store.d.ts +41 -1
  87. package/dist/types/run/store.d.ts.map +1 -1
  88. package/package.json +6 -1
  89. package/src/bridge/sse/mapper.ts +28 -1
  90. package/src/manager/run/persistence.ts +43 -0
  91. package/src/public-runtime.ts +27 -0
  92. package/src/run/drain.ts +393 -0
  93. package/src/run/index.ts +3 -0
  94. package/src/runtime/query/checkpoint.ts +42 -5
  95. package/src/runtime/query/events.ts +68 -4
  96. package/src/runtime/query/index.ts +113 -1
  97. package/src/runtime/query/resume-run.ts +77 -12
  98. package/src/store/index.ts +5 -1
  99. package/src/store/run/checkpoint-disk.ts +70 -5
  100. package/src/store/run/checkpoint-memory.ts +118 -3
  101. package/src/store/run/claim-disk.ts +593 -0
  102. package/src/store/run/conformance.ts +705 -0
  103. package/src/store/run/disk.ts +106 -2
  104. package/src/store/run/listing.ts +116 -1
  105. package/src/store/run/memory.ts +35 -5
  106. package/src/types/doctor/check.ts +28 -2
  107. package/src/types/run/checkpoint-store.ts +189 -2
  108. package/src/types/run/event-cursor.ts +118 -0
  109. package/src/types/run/events.ts +80 -3
  110. package/src/types/run/index.ts +1 -0
  111. package/src/types/run/store.ts +43 -1
@@ -2,6 +2,8 @@ export { RunPersistence } from '../manager/run/persistence.js';
2
2
  export { RunDiskStore } from '../store/run/disk.js';
3
3
  export { createRunReporter } from './reporter.js';
4
4
  export type { RunReporter } from './reporter.js';
5
+ export { DEFAULT_DRAIN_PAGE_SIZE, drainRuns } from './drain.js';
6
+ export type { DrainFailure, DrainRun, DrainRunsParams, DrainRunsResult } from './drain.js';
5
7
  export { checkLimitsDetailed, buildLimitConfig } from './LimitChecker.js';
6
8
  export type { LimitCheckerState, LimitCheckResult } from './LimitChecker.js';
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/run/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/run/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACjD,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC/D,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE1F,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzE,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA"}
package/dist/run/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { RunPersistence } from '../manager/run/persistence.js';
2
2
  export { RunDiskStore } from '../store/run/disk.js';
3
3
  export { createRunReporter } from './reporter.js';
4
+ export { DEFAULT_DRAIN_PAGE_SIZE, drainRuns } from './drain.js';
4
5
  export { checkLimitsDetailed, buildLimitConfig } from './LimitChecker.js';
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/run/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAGjD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/run/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAGjD,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAG/D,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA"}
@@ -2,7 +2,7 @@ import type { WorkingStateSnapshot } from '../../compaction/wire.js';
2
2
  import type { RunPersistence } from '../../manager/run/persistence.js';
3
3
  import type { SerializedSpanContext } from '../../telemetry/attributes.js';
4
4
  import type { CheckpointId, CheckpointSummary, HITLDecisionRequest, HITLResumeDecision, IterationCheckpoint, PendingDecision } from '../../types/hitl/index.js';
5
- import type { CheckpointRunScope, CheckpointStore } from '../../types/run/checkpoint-store.js';
5
+ import type { CheckpointRunScope, CheckpointStore, ClaimFence } from '../../types/run/checkpoint-store.js';
6
6
  import type { EmergencySaveData } from '../../types/run/emergency.js';
7
7
  import type { CheckpointListEntry } from '../../types/run/replay.js';
8
8
  /**
@@ -75,6 +75,21 @@ export declare class CheckpointManager {
75
75
  private traceSource?;
76
76
  /** See {@link setParkTtl}. */
77
77
  private parkTtlMs?;
78
+ /**
79
+ * The claim this run holds, presented on every checkpoint write.
80
+ *
81
+ * Unset means unfenced, which is correct for a single-writer deployment
82
+ * and is what every run did before claims existed. Set it and a write from
83
+ * a superseded holding is refused by the store.
84
+ *
85
+ * This existed nowhere for one release, and the omission was invisible in
86
+ * the worst way: the claim, the fence and the refusal were all built and
87
+ * tested, and no code path between a run and its store carried the number,
88
+ * so every checkpoint a RUN wrote went out unfenced. A capability that is
89
+ * complete except for the wire between its halves reads exactly like a
90
+ * working one.
91
+ */
92
+ private claimFence?;
78
93
  /**
79
94
  * The run's attribution instant, stamped onto every checkpoint this
80
95
  * manager writes.
@@ -153,6 +168,17 @@ export declare class CheckpointManager {
153
168
  park(checkpoint: IterationCheckpoint, request: HITLDecisionRequest, options?: {
154
169
  readonly ttlMs?: number;
155
170
  }): Promise<IterationCheckpoint>;
171
+ /**
172
+ * Present this claim on every subsequent write. See {@link claimFence}.
173
+ *
174
+ * A setter rather than a constructor argument because a run is claimed at
175
+ * a different moment than it is constructed — a worker draining a queue
176
+ * takes the run, then builds the pipeline around it — and because a
177
+ * renewal mints a NEW fence mid-run that has to replace the old one.
178
+ */
179
+ setClaimFence(fence: ClaimFence | undefined): void;
180
+ /** The claim currently presented on writes, if any. */
181
+ get presentedFence(): ClaimFence | undefined;
156
182
  /** Default time-to-live applied to every park this manager records. */
157
183
  setParkTtl(ttlMs: number | undefined): void;
158
184
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/checkpoint.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAE1E,OAAO,KAAK,EACX,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AAC9F,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AAKpE;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,mBAAmB,GAAG,mBAAmB,CAQlF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,iBAAiB,GAAG,mBAAmB,CAqBzF;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAC1C,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,kBAAkB,EACzB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAgBrC;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,SAAa,GAAG,OAAO,CAEjF;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACrC,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,kBAAkB,EACzB,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAMhC;AAED,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,KAAK,CAAoB;IACjC;;;;;;;OAOG;IACH,OAAO,CAAC,kBAAkB,CAAC,CAAwC;IAEnE;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa,CAAC,CAAc;IAEpC,kCAAkC;IAClC,OAAO,CAAC,WAAW,CAAC,CAAyC;IAE7D,8BAA8B;IAC9B,OAAO,CAAC,SAAS,CAAC,CAAQ;IAE1B;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,YAAY,CAAC,CAAQ;IAE7B;;;;;;OAMG;gBACS,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,kBAAkB;IAK7D,0EAA0E;IAC1E,qBAAqB,CAAC,MAAM,EAAE,MAAM,oBAAoB,GAAG,SAAS,GAAG,IAAI;IAI3E;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,qBAAqB,GAAG,SAAS,GAAG,IAAI;IAI/D,MAAM,CACX,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE;QACP,WAAW,CAAC,EAAE,KAAK,CAAC;YAAE,UAAU,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QAC7F,YAAY,CAAC,EAAE,oBAAoB,CAAA;KACnC,GACC,OAAO,CAAC,mBAAmB,CAAC;IA+B/B,iCAAiC;IACjC,IAAI,gBAAgB,IAAI,YAAY,GAAG,SAAS,CAE/C;IAED;;;;;;;;;;;OAWG;IACG,gBAAgB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAS9F;;;;;;;;;;;;;;OAcG;IACG,IAAI,CACT,UAAU,EAAE,mBAAmB,EAC/B,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACnC,OAAO,CAAC,mBAAmB,CAAC;IAkB/B,uEAAuE;IACvE,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAI3C;;;;;;;OAOG;IACG,MAAM,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAkB7E;;;;;;;OAOG;IACG,MAAM,CACX,YAAY,EAAE,YAAY,EAC1B,QAAQ,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAYtC;;;;;;;OAOG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAIlD,OAAO,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA4BjE,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAI5C;;;;;OAKG;IACG,WAAW,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAK7C,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5C,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,iBAAiB;CAajF"}
1
+ {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/checkpoint.ts"],"names":[],"mappings":"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"}
@@ -121,6 +121,21 @@ export class CheckpointManager {
121
121
  traceSource;
122
122
  /** See {@link setParkTtl}. */
123
123
  parkTtlMs;
124
+ /**
125
+ * The claim this run holds, presented on every checkpoint write.
126
+ *
127
+ * Unset means unfenced, which is correct for a single-writer deployment
128
+ * and is what every run did before claims existed. Set it and a write from
129
+ * a superseded holding is refused by the store.
130
+ *
131
+ * This existed nowhere for one release, and the omission was invisible in
132
+ * the worst way: the claim, the fence and the refusal were all built and
133
+ * tested, and no code path between a run and its store carried the number,
134
+ * so every checkpoint a RUN wrote went out unfenced. A capability that is
135
+ * complete except for the wire between its halves reads exactly like a
136
+ * working one.
137
+ */
138
+ claimFence;
124
139
  /**
125
140
  * The run's attribution instant, stamped onto every checkpoint this
126
141
  * manager writes.
@@ -188,7 +203,7 @@ export class CheckpointManager {
188
203
  workingState: extra?.workingState ?? this.workingStateSource?.(),
189
204
  traceContext: this.traceSource?.(),
190
205
  };
191
- await this.store.writeCheckpoint(this.scope, checkpoint);
206
+ await this.store.writeCheckpoint(this.scope, checkpoint, this.claimFence);
192
207
  this.lastCreatedId = checkpoint.id;
193
208
  return checkpoint;
194
209
  }
@@ -246,9 +261,24 @@ export class CheckpointManager {
246
261
  ...(ttl !== undefined && ttl > 0 ? { deadlineAt: parkedAt + ttl } : {}),
247
262
  },
248
263
  };
249
- await this.store.writeCheckpoint(this.scope, parked);
264
+ await this.store.writeCheckpoint(this.scope, parked, this.claimFence);
250
265
  return parked;
251
266
  }
267
+ /**
268
+ * Present this claim on every subsequent write. See {@link claimFence}.
269
+ *
270
+ * A setter rather than a constructor argument because a run is claimed at
271
+ * a different moment than it is constructed — a worker draining a queue
272
+ * takes the run, then builds the pipeline around it — and because a
273
+ * renewal mints a NEW fence mid-run that has to replace the old one.
274
+ */
275
+ setClaimFence(fence) {
276
+ this.claimFence = fence;
277
+ }
278
+ /** The claim currently presented on writes, if any. */
279
+ get presentedFence() {
280
+ return this.claimFence;
281
+ }
252
282
  /** Default time-to-live applied to every park this manager records. */
253
283
  setParkTtl(ttlMs) {
254
284
  this.parkTtlMs = ttlMs;
@@ -275,7 +305,7 @@ export class CheckpointManager {
275
305
  decision: { action: 'pause', reason: 'The approval request expired without an answer.' },
276
306
  },
277
307
  };
278
- await this.store.writeCheckpoint(this.scope, expired);
308
+ await this.store.writeCheckpoint(this.scope, expired, this.claimFence);
279
309
  return expired;
280
310
  }
281
311
  /**
@@ -294,7 +324,7 @@ export class CheckpointManager {
294
324
  ...checkpoint,
295
325
  pending: { ...checkpoint.pending, resolvedAt: Date.now(), decision },
296
326
  };
297
- await this.store.writeCheckpoint(this.scope, resolved);
327
+ await this.store.writeCheckpoint(this.scope, resolved, this.claimFence);
298
328
  return resolved;
299
329
  }
300
330
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../../src/runtime/query/checkpoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../../src/runtime/query/checkpoint.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import type { RunPersistence } from '../../manager/run/persistence.js';
3
3
  import { type ProbeRegistry } from '../../probe/registry.js';
4
4
  import type { ActivityStore } from '../../store/activity/memory.js';
5
5
  import type { RunId } from '../../types/ids/index.js';
6
+ import type { ClaimFence } from '../../types/run/checkpoint-store.js';
6
7
  import type { RunEvent } from '../../types/run/index.js';
7
8
  import type { TaskStore } from '../../types/task/index.js';
8
9
  export type EmitEvent = (event: RunEvent) => Promise<void>;
@@ -13,6 +14,17 @@ export declare class EventTranslator {
13
14
  private droppedDeltaCount;
14
15
  private readonly log;
15
16
  constructor(runMgr: RunPersistence, probeRegistry?: ProbeRegistry);
17
+ /**
18
+ * The claim this run is being written under, when it holds one.
19
+ *
20
+ * Stamped on every durable event as its `generation`, so a consumer whose
21
+ * cursor predates a takeover is told its sequence space changed instead of
22
+ * being handed a splice from a different writer's log.
23
+ */
24
+ private generation;
25
+ /** Serializes sequence assignment against the append. See {@link emitEvent}. */
26
+ private appendChain;
27
+ setGeneration(fence: ClaimFence | undefined): void;
16
28
  readonly emitEvent: EmitEvent;
17
29
  drainPending(): Generator<RunEvent>;
18
30
  wireActivityStore(activityStore: ActivityStore, runId: RunId): void;
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,KAAK,aAAa,EAAiC,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAClF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAErD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAGrE,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAgB1D,qBAAa,eAAe;IAC3B,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0D;gBAElE,MAAM,EAAE,cAAc,EAAE,aAAa,GAAE,aAAoC;IAKvF,QAAQ,CAAC,SAAS,EAAE,SAAS,CAqC3B;IAED,YAAY,IAAI,SAAS,CAAC,QAAQ,CAAC;IAQpC,iBAAiB,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAwBnE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,IAAI;IA6C7D,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA0E7D"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEtE,OAAO,EAAE,KAAK,aAAa,EAAiC,MAAM,yBAAyB,CAAA;AAC3F,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAClF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAA;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAGrE,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAgB1D,qBAAa,eAAe;IAC3B,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,iBAAiB,CAAI;IAC7B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA0D;gBAElE,MAAM,EAAE,cAAc,EAAE,aAAa,GAAE,aAAoC;IAKvF;;;;;;OAMG;IACH,OAAO,CAAC,UAAU,CAAwB;IAE1C,gFAAgF;IAChF,OAAO,CAAC,WAAW,CAAmC;IAEtD,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,IAAI;IAIlD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAoF3B;IAED,YAAY,IAAI,SAAS,CAAC,QAAQ,CAAC;IAQpC,iBAAiB,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAwBnE,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,IAAI;IA6C7D,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;CA0E7D"}
@@ -25,6 +25,19 @@ export class EventTranslator {
25
25
  this.runMgr = runMgr;
26
26
  this.probes = probeRegistry;
27
27
  }
28
+ /**
29
+ * The claim this run is being written under, when it holds one.
30
+ *
31
+ * Stamped on every durable event as its `generation`, so a consumer whose
32
+ * cursor predates a takeover is told its sequence space changed instead of
33
+ * being handed a splice from a different writer's log.
34
+ */
35
+ generation;
36
+ /** Serializes sequence assignment against the append. See {@link emitEvent}. */
37
+ appendChain = Promise.resolve();
38
+ setGeneration(fence) {
39
+ this.generation = fence;
40
+ }
28
41
  emitEvent = async (event) => {
29
42
  this.probes.dispatch(event, buildProbeContext({ runId: event.runId }));
30
43
  // D2: bound the queue. Drop oldest ephemeral events under
@@ -50,14 +63,59 @@ export class EventTranslator {
50
63
  // and rely on consumer drain catching up. Better to grow
51
64
  // briefly than to drop a state transition.
52
65
  }
53
- this.pendingEvents.push(event);
54
66
  // D1 middle path: ephemeral events never enter `transcript.jsonl`.
55
67
  // They live only on the in-memory bus for live UI rendering.
56
68
  // Replay (`runtime/query/replay/prepare.ts`) reads checkpoints
57
69
  // not transcripts, so this preserves replay fidelity while
58
70
  // eliminating the durable bloat review flagged.
59
- if (!isEphemeralEvent(event)) {
60
- await this.runMgr.getRunStore().appendEvent(event);
71
+ if (isEphemeralEvent(event)) {
72
+ // No number, and that is the honest statement: nothing will
73
+ // persist this, so a consumer must never advance a cursor to it.
74
+ this.pendingEvents.push(event);
75
+ return;
76
+ }
77
+ // One appender at a time, and this is not a precaution — it is the fix
78
+ // for a measured defect. Taking the number, awaiting the write and then
79
+ // committing is a read-modify-write, and emits genuinely interleave:
80
+ // the task store, the plan manager and a batch of parallel tools all
81
+ // emit into this one funnel. Measured on a two-tool run, three events
82
+ // took the number 15 and two took 12. A duplicated sequence is worse
83
+ // than a missing one — a consumer asking for everything above 15 is
84
+ // handed part of the run it already had, spliced in as if it were new.
85
+ const previous = this.appendChain;
86
+ let release;
87
+ this.appendChain = new Promise((resolve) => {
88
+ release = resolve;
89
+ });
90
+ try {
91
+ await previous;
92
+ // The number is a claim that the event is IN the log, so it is taken
93
+ // against the append and not before it. The candidate goes to the
94
+ // store first; only a write that landed advances the counter and
95
+ // reaches the live stream carrying it.
96
+ //
97
+ // The failure path still delivers the event — unstamped. A store
98
+ // that cannot record a `run_failed` must not also swallow it, and an
99
+ // unstamped event says exactly what is true of it: it happened, and
100
+ // it is not recoverable.
101
+ const seq = this.runMgr.nextEventSeq();
102
+ const stamped = {
103
+ ...event,
104
+ seq,
105
+ ...(this.generation !== undefined ? { generation: this.generation } : {}),
106
+ };
107
+ try {
108
+ await this.runMgr.getRunStore().appendEvent(stamped);
109
+ }
110
+ catch (err) {
111
+ this.pendingEvents.push(event);
112
+ throw err;
113
+ }
114
+ this.runMgr.commitEventSeq(seq);
115
+ this.pendingEvents.push(stamped);
116
+ }
117
+ finally {
118
+ release();
61
119
  }
62
120
  };
63
121
  *drainPending() {
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/runtime/query/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/runtime/query/events.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC1D,OAAO,EAAsB,KAAK,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAI3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAG5D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAIrD;;;;;;;;;;;GAWG;AACH,MAAM,sBAAsB,GAAG,IAAI,CAAA;AAEnC,MAAM,OAAO,eAAe;IACnB,aAAa,GAAe,EAAE,CAAA;IAC9B,MAAM,CAAgB;IACtB,MAAM,CAAe;IACrB,iBAAiB,GAAG,CAAC,CAAA;IACZ,GAAG,GAAG,aAAa,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAA;IAE9E,YAAY,MAAsB,EAAE,gBAA+B,oBAAoB;QACtF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,MAAM,GAAG,aAAa,CAAA;IAC5B,CAAC;IAED;;;;;;OAMG;IACK,UAAU,CAAwB;IAE1C,gFAAgF;IACxE,WAAW,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAA;IAEtD,aAAa,CAAC,KAA6B;QAC1C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;IACxB,CAAC;IAEQ,SAAS,GAAc,KAAK,EAAE,KAAe,EAAiB,EAAE;QACxE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;QAEtE,0DAA0D;QAC1D,6DAA6D;QAC7D,6DAA6D;QAC7D,+DAA+D;QAC/D,wDAAwD;QACxD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,sBAAsB,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;YAC9D,IAAI,OAAO,KAAK,CAAC,CAAC,EAAE,CAAC;gBACpB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;gBACrC,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAA;gBAC3B,IAAI,IAAI,CAAC,iBAAiB,KAAK,CAAC,IAAI,IAAI,CAAC,iBAAiB,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC;oBACxE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+CAA+C,EAAE;wBAC9D,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,YAAY,EAAE,IAAI,CAAC,iBAAiB;wBACpC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;qBACpC,CAAC,CAAA;gBACH,CAAC;YACF,CAAC;YACD,2DAA2D;YAC3D,4DAA4D;YAC5D,yDAAyD;YACzD,2CAA2C;QAC5C,CAAC;QAED,mEAAmE;QACnE,6DAA6D;QAC7D,+DAA+D;QAC/D,2DAA2D;QAC3D,gDAAgD;QAChD,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,4DAA4D;YAC5D,iEAAiE;YACjE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC9B,OAAM;QACP,CAAC;QAED,uEAAuE;QACvE,wEAAwE;QACxE,qEAAqE;QACrE,qEAAqE;QACrE,sEAAsE;QACtE,qEAAqE;QACrE,oEAAoE;QACpE,uEAAuE;QACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAA;QACjC,IAAI,OAAoB,CAAA;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAChD,OAAO,GAAG,OAAO,CAAA;QAClB,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC;YACJ,MAAM,QAAQ,CAAA;YAEd,qEAAqE;YACrE,kEAAkE;YAClE,iEAAiE;YACjE,uCAAuC;YACvC,EAAE;YACF,iEAAiE;YACjE,qEAAqE;YACrE,oEAAoE;YACpE,yBAAyB;YACzB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;YACtC,MAAM,OAAO,GAAG;gBACf,GAAG,KAAK;gBACR,GAAG;gBACH,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC7D,CAAA;YAEb,IAAI,CAAC;gBACJ,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;YACrD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAC9B,MAAM,GAAG,CAAA;YACV,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;YAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjC,CAAC;gBAAS,CAAC;YACV,OAAO,EAAE,CAAA;QACV,CAAC;IACF,CAAC,CAAC;IAEF,CAAC,YAAY;QACZ,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QACtC,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,KAAK,CAAA;YACX,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAA;QACnC,CAAC;IACF,CAAC;IAED,iBAAiB,CAAC,aAA4B,EAAE,KAAY;QAC3D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,KAAoB,EAAE,EAAE;YAC/C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;YAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACvC,MAAM,IAAI,CAAC,SAAS,CAAC;oBACpB,IAAI,EAAE,kBAAkB;oBACxB,KAAK;oBACL,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACvB,YAAY,EAAE,QAAQ,CAAC,IAAI;oBAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW;iBACjC,CAAC,CAAA;YACH,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,CAAC,SAAS,CAAC;oBACpB,IAAI,EAAE,kBAAkB;oBACxB,KAAK;oBACL,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;iBACrB,CAAC,CAAA;YACH,CAAC;QACF,CAAC,CAAC,CAAA;IACH,CAAC;IAED,aAAa,CAAC,SAAoB,EAAE,KAAY;QAC/C,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAgB,EAAE,EAAE;YAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;YAEvB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;gBAAE,OAAM;YAChC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,cAAc;oBAClB,MAAM,IAAI,CAAC,SAAS,CAAC;wBACpB,IAAI,EAAE,cAAc;wBACpB,KAAK;wBACL,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,0DAA0D;wBAC1D,4DAA4D;wBAC5D,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACnE,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC1D,CAAC,CAAA;oBACF,MAAK;gBACN,KAAK,cAAc,CAAC;gBACpB,KAAK,cAAc,CAAC;gBACpB,KAAK,cAAc;oBAClB,MAAM,IAAI,CAAC,SAAS,CAAC;wBACpB,IAAI,EAAE,cAAc;wBACpB,KAAK;wBACL,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,OAAO,EAAE,IAAI,CAAC,OAAO;wBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACnE,CAAC,CAAA;oBACF,MAAK;gBACN,OAAO,CAAC,CAAC,CAAC;oBACT,+DAA+D;oBAC/D,iEAAiE;oBACjE,+DAA+D;oBAC/D,4DAA4D;oBAC5D,MAAM,WAAW,GAAU,KAAK,CAAC,IAAI,CAAA;oBACrC,MAAM,IAAI,KAAK,CAAC,8BAA8B,WAAW,EAAE,CAAC,CAAA;gBAC7D,CAAC;YACF,CAAC;QACF,CAAC,CAAC,CAAA;QACF,OAAO,WAAW,CAAA;IACnB,CAAC;IAED,eAAe,CAAC,WAAwB,EAAE,KAAY;QACrD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAgB,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;YACvB,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACpB,KAAK,YAAY;oBAChB,MAAM,IAAI,CAAC,SAAS,CAAC;wBACpB,IAAI,EAAE,YAAY;wBAClB,KAAK;wBACL,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;qBACrB,CAAC,CAAA;oBACF,MAAK;gBACN,KAAK,eAAe;oBACnB,MAAM,IAAI,CAAC,SAAS,CAAC;wBACpB,IAAI,EAAE,eAAe;wBACrB,KAAK;wBACL,MAAM,EAAE,IAAI,CAAC,EAAE;qBACf,CAAC,CAAA;oBACF,MAAK;gBACN,KAAK,eAAe;oBACnB,MAAM,IAAI,CAAC,SAAS,CAAC;wBACpB,IAAI,EAAE,eAAe;wBACrB,KAAK;wBACL,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,MAAM,EAAE,IAAI,CAAC,eAAe;qBAC5B,CAAC,CAAA;oBACF,MAAK;gBACN,KAAK,mBAAmB;oBACvB,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;wBAChB,MAAM,IAAI,CAAC,SAAS,CAAC;4BACpB,IAAI,EAAE,mBAAmB;4BACzB,KAAK;4BACL,MAAM,EAAE,IAAI,CAAC,EAAE;4BACf,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;4BACrB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM;yBACzB,CAAC,CAAA;oBACH,CAAC;oBACD,MAAK;gBACN,KAAK,gBAAgB;oBACpB,MAAM,IAAI,CAAC,SAAS,CAAC;wBACpB,IAAI,EAAE,gBAAgB;wBACtB,KAAK;wBACL,MAAM,EAAE,IAAI,CAAC,EAAE;qBACf,CAAC,CAAA;oBACF,MAAK;gBACN,KAAK,aAAa;oBACjB,MAAM,IAAI,CAAC,SAAS,CAAC;wBACpB,IAAI,EAAE,aAAa;wBACnB,KAAK;wBACL,MAAM,EAAE,IAAI,CAAC,EAAE;wBACf,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC7D,CAAC,CAAA;oBACF,MAAK;gBACN,gEAAgE;gBAChE,8DAA8D;gBAC9D,4DAA4D;gBAC5D,gEAAgE;gBAChE,wDAAwD;gBACxD,KAAK,iBAAiB,CAAC;gBACvB,KAAK,gBAAgB;oBACpB,MAAK;gBACN,OAAO,CAAC,CAAC,CAAC;oBACT,iEAAiE;oBACjE,kEAAkE;oBAClE,mEAAmE;oBACnE,QAAQ;oBACR,MAAM,WAAW,GAAU,KAAK,CAAC,IAAI,CAAA;oBACrC,MAAM,IAAI,KAAK,CAAC,8BAA8B,WAAW,EAAE,CAAC,CAAA;gBAC7D,CAAC;YACF,CAAC;QACF,CAAC,CAAC,CAAA;IACH,CAAC;CACD"}
@@ -16,7 +16,8 @@ import type { AgentPersona } from '../../types/persona/index.js';
16
16
  import type { LLMProvider } from '../../types/provider/index.js';
17
17
  import type { TaskRouterConfig } from '../../types/router/index.js';
18
18
  import type { ReviewAnswer } from '../../types/run/answer-review.js';
19
- import type { CheckpointStore } from '../../types/run/checkpoint-store.js';
19
+ import type { CheckpointStore, ClaimFence } from '../../types/run/checkpoint-store.js';
20
+ import type { RunEventCursor, RunEventReplay } from '../../types/run/event-cursor.js';
20
21
  import type { AgentRunConfig, PrepareStepChain, Run, RunEvent, RunEventListener, StepResult, StopCondition } from '../../types/run/index.js';
21
22
  import type { PromoteMemory } from '../../types/run/memory-promotion.js';
22
23
  import type { RunStore } from '../../types/run/store.js';
@@ -307,6 +308,26 @@ export interface QueryParams {
307
308
  * survives machines that lose their local disk.
308
309
  */
309
310
  checkpointStore?: CheckpointStore;
311
+ /**
312
+ * The fence of the claim this worker holds on the run, from `claimRun`.
313
+ *
314
+ * Presented on every checkpoint the run writes, so a worker that stalled
315
+ * past its lease is refused rather than writing into a run somebody else
316
+ * has taken over. Omit it for single-writer deployments, which is what
317
+ * every run did before claims existed.
318
+ *
319
+ * This hop did not exist for a release. The claim, the fence and the
320
+ * store-side refusal were all built and tested, and no path between a run
321
+ * and its store carried the number — so every checkpoint a RUN wrote went
322
+ * out unfenced while the tests, which called the store directly, all
323
+ * passed. A capability complete except for the wire between its halves
324
+ * reads exactly like a working one.
325
+ *
326
+ * It fences checkpoints and nothing else. {@link QueryParams.runStore}
327
+ * takes no fence, so two workers that both took one run still overwrite
328
+ * each other's run record, transcript and report — see the changeset.
329
+ */
330
+ claimFence?: ClaimFence;
310
331
  /**
311
332
  * Where this run records its own evidence — the run record, its messages,
312
333
  * its transcript and its report. Defaults to the disk layout under the
@@ -317,6 +338,41 @@ export interface QueryParams {
317
338
  * evidence could not.
318
339
  */
319
340
  runStore?: RunStore;
341
+ /**
342
+ * Where a reconnecting consumer left off, so this run's stream can start by
343
+ * handing back what it missed.
344
+ *
345
+ * The case this serves is the one that exists without a network hop: the
346
+ * process holding the run died, and the consumer watching it is coming back
347
+ * to a run that has to be resumed. Pair it with `resumeFromCheckpoint` — or
348
+ * reach it through {@link import('./resume-run.js').resumeRun}, which is the
349
+ * surface that does both — and the missed durable events are yielded, in
350
+ * order, before the resumed run emits anything of its own.
351
+ *
352
+ * On a run with no log to catch up on the cursor is answered honestly rather
353
+ * than ignored: a `sinceSeq` above what exists is `cursor_ahead`, not
354
+ * silence.
355
+ *
356
+ * What comes back is message-granular. Streaming deltas are never persisted
357
+ * — see {@link import('../../types/run/store.js').RunStore.appendEvent} —
358
+ * so a late subscriber recovers the assistant text, the tool results and the
359
+ * lifecycle, not the keystroke cadence that produced them.
360
+ */
361
+ eventCursor?: RunEventCursor;
362
+ /**
363
+ * What became of {@link QueryParams.eventCursor}.
364
+ *
365
+ * A callback rather than an event on the stream, because the answer is about
366
+ * the SUBSCRIPTION and not about the run — and rather than a throw, because
367
+ * a stale cursor is a client's problem and must not be able to stop a run
368
+ * from continuing. A host that receives `unavailable` re-derives from the
369
+ * transcript; one that receives nothing at all would splice a hole into its
370
+ * state and never know.
371
+ *
372
+ * Called once, before the run's first event, and only when a cursor was
373
+ * supplied.
374
+ */
375
+ onEventReplay?: (replay: RunEventReplay) => void;
320
376
  runId?: RunId;
321
377
  parentRunId?: RunId;
322
378
  depth?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/index.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ import { buildTaskTools } from '../../tools/task/index.js';
20
20
  import { NamzuError } from '../../types/errors/index.js';
21
21
  import { autoApproveHandler, } from '../../types/hitl/index.js';
22
22
  import { createSystemMessage } from '../../types/message/index.js';
23
+ import { resolveRunEventReplay } from '../../types/run/event-cursor.js';
23
24
  import { memoryCandidateFor } from '../../types/run/memory-promotion.js';
24
25
  import { getRootLogger } from '../../utils/logger.js';
25
26
  import { VerificationGate } from '../../verification/gate.js';
@@ -481,6 +482,14 @@ export async function* query(params) {
481
482
  // And every park it records carries an absolute deadline, so an
482
483
  // unanswered approval cannot outlive the worker that asked for it.
483
484
  checkpointMgr.setParkTtl(params.runConfig.hitlParkTtlMs);
485
+ // The claim this worker holds, if it took one. Without this hop the
486
+ // fence exists, the refusal exists, and no checkpoint a RUN writes ever
487
+ // carries a number — so a stalled worker is refused nowhere.
488
+ checkpointMgr.setClaimFence(params.claimFence);
489
+ // And every EVENT it records carries the same fence as its generation,
490
+ // so a consumer whose cursor was minted under an older holding is told
491
+ // the sequence space changed rather than handed a splice from it.
492
+ eventTranslator.setGeneration(params.claimFence);
484
493
  // A question raised from inside a tool becomes a real checkpoint
485
494
  // here. It used to park under a synthetic id nothing ever wrote, so
486
495
  // the checkpoint did not exist: nothing on disk said a human owed
@@ -555,6 +564,14 @@ export async function* query(params) {
555
564
  let emergencyManager;
556
565
  try {
557
566
  await ctx.runMgr.init();
567
+ // A consumer coming back gets what it missed BEFORE the run says
568
+ // anything new, which is the only order that lets it fold one
569
+ // stream into one state. It has to follow `init()` — that is what
570
+ // binds the store and reads the log's head — and precede every
571
+ // emit below.
572
+ if (params.eventCursor) {
573
+ yield* catchUpFromCursor(ctx.runMgr, params.eventCursor, params.onEventReplay, params.claimFence);
574
+ }
558
575
  // Handed over here, and the position is load-bearing in BOTH
559
576
  // directions. It has to follow `wirePlanManager`, or a host that
560
577
  // builds its plan in this callback — which is what the callback is
@@ -976,6 +993,25 @@ export async function* query(params) {
976
993
  return await resultAssembler.finalize();
977
994
  })();
978
995
  }
996
+ /**
997
+ * Hand a returning consumer what it missed, or tell it why it cannot have it.
998
+ *
999
+ * Yields NOTHING on a refusal. A partial catch-up is the failure this exists to
1000
+ * prevent: a consumer that receives some of the gap folds it into its state and
1001
+ * cannot tell the state is wrong, where one that receives an explicit
1002
+ * `unavailable` re-derives from the transcript and is right. The run continues
1003
+ * either way — a stale cursor belongs to the client, and must not be able to
1004
+ * stop the work.
1005
+ */
1006
+ async function* catchUpFromCursor(runMgr, cursor, onEventReplay, generation) {
1007
+ const missed = await runMgr.getRunStore().readEvents({ sinceSeq: cursor.sinceSeq });
1008
+ const replay = resolveRunEventReplay(cursor, { lastSeq: runMgr.lastEventSeq, ...(generation !== undefined ? { generation } : {}) }, missed);
1009
+ onEventReplay?.(replay);
1010
+ if (replay.status !== 'replayed')
1011
+ return;
1012
+ for (const event of replay.events)
1013
+ yield event;
1014
+ }
979
1015
  export async function drainQuery(params, listener) {
980
1016
  const fullParams = {
981
1017
  ...params,