@kernloop/workflows 0.1.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 (66) hide show
  1. package/LICENSE +21 -0
  2. package/dist/budget.d.ts +111 -0
  3. package/dist/budget.d.ts.map +1 -0
  4. package/dist/budget.js +146 -0
  5. package/dist/budget.js.map +1 -0
  6. package/dist/checkpoints.d.ts +40 -0
  7. package/dist/checkpoints.d.ts.map +1 -0
  8. package/dist/checkpoints.js +92 -0
  9. package/dist/checkpoints.js.map +1 -0
  10. package/dist/child-iterate-fixtures.d.ts +36 -0
  11. package/dist/child-iterate-fixtures.d.ts.map +1 -0
  12. package/dist/child-iterate-fixtures.js +86 -0
  13. package/dist/child-iterate-fixtures.js.map +1 -0
  14. package/dist/child-iterate.d.ts +71 -0
  15. package/dist/child-iterate.d.ts.map +1 -0
  16. package/dist/child-iterate.js +61 -0
  17. package/dist/child-iterate.js.map +1 -0
  18. package/dist/child-spend.d.ts +41 -0
  19. package/dist/child-spend.d.ts.map +1 -0
  20. package/dist/child-spend.js +76 -0
  21. package/dist/child-spend.js.map +1 -0
  22. package/dist/config.d.ts +43 -0
  23. package/dist/config.d.ts.map +1 -0
  24. package/dist/config.js +90 -0
  25. package/dist/config.js.map +1 -0
  26. package/dist/engine-errors.d.ts +11 -0
  27. package/dist/engine-errors.d.ts.map +1 -0
  28. package/dist/engine-errors.js +23 -0
  29. package/dist/engine-errors.js.map +1 -0
  30. package/dist/engine-testkit.d.ts +44 -0
  31. package/dist/engine-testkit.d.ts.map +1 -0
  32. package/dist/engine-testkit.js +93 -0
  33. package/dist/engine-testkit.js.map +1 -0
  34. package/dist/engine-types.d.ts +78 -0
  35. package/dist/engine-types.d.ts.map +1 -0
  36. package/dist/engine-types.js +2 -0
  37. package/dist/engine-types.js.map +1 -0
  38. package/dist/engine.d.ts +12 -0
  39. package/dist/engine.d.ts.map +1 -0
  40. package/dist/engine.js +262 -0
  41. package/dist/engine.js.map +1 -0
  42. package/dist/graph.d.ts +87 -0
  43. package/dist/graph.d.ts.map +1 -0
  44. package/dist/graph.js +72 -0
  45. package/dist/graph.js.map +1 -0
  46. package/dist/index.d.ts +14 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +14 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/manifest.d.ts +19 -0
  51. package/dist/manifest.d.ts.map +1 -0
  52. package/dist/manifest.js +41 -0
  53. package/dist/manifest.js.map +1 -0
  54. package/dist/state.d.ts +1078 -0
  55. package/dist/state.d.ts.map +1 -0
  56. package/dist/state.js +151 -0
  57. package/dist/state.js.map +1 -0
  58. package/dist/steps.d.ts +77 -0
  59. package/dist/steps.d.ts.map +1 -0
  60. package/dist/steps.js +270 -0
  61. package/dist/steps.js.map +1 -0
  62. package/dist/verdict-disposition.d.ts +23 -0
  63. package/dist/verdict-disposition.d.ts.map +1 -0
  64. package/dist/verdict-disposition.js +28 -0
  65. package/dist/verdict-disposition.js.map +1 -0
  66. package/package.json +38 -0
@@ -0,0 +1,1078 @@
1
+ /**
2
+ * Run state, checkpoint record shape, and typed engine errors. The state is
3
+ * deliberately a plain JSON-serializable object validated by zod: a resume
4
+ * trusts nothing it reads back from storage [CLM-0044] — a checkpoint that
5
+ * does not parse is a typed failure, never a silent partial resume.
6
+ */
7
+ import { z } from 'zod';
8
+ import { type Finding, type Outcome } from '@kernloop/contracts';
9
+ /**
10
+ * Where the run is. `main` points at the NEXT main-chain node to execute;
11
+ * `fanout` points at the next (child, sub-node) pair; `done` is terminal.
12
+ * The cursor always names work not yet performed, so resuming from a
13
+ * checkpoint never re-runs a completed node [CLM-0044].
14
+ */
15
+ export declare const CursorSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
16
+ phase: z.ZodLiteral<"main">;
17
+ node: z.ZodString;
18
+ }, z.core.$strict>, z.ZodObject<{
19
+ phase: z.ZodLiteral<"fanout">;
20
+ childIndex: z.ZodNumber;
21
+ sub: z.ZodNumber;
22
+ }, z.core.$strict>, z.ZodObject<{
23
+ phase: z.ZodLiteral<"done">;
24
+ }, z.core.$strict>], "phase">;
25
+ export type Cursor = z.infer<typeof CursorSchema>;
26
+ /** Metered spend attributed to one fan-out child (tokens + usd), #56. */
27
+ export declare const ChildSpendSchema: z.ZodObject<{
28
+ tokens: z.ZodNumber;
29
+ usd: z.ZodNumber;
30
+ }, z.core.$strict>;
31
+ export type ChildSpend = z.infer<typeof ChildSpendSchema>;
32
+ /**
33
+ * One fan-out child's honest result. A child that fails mid-implement gets
34
+ * `error` and no verdict; a child whose quality gate ran gets its Verdict
35
+ * (pass or fail — a failing verdict is a result, not an engine error). The
36
+ * `reviewVerdict` is the advisory review gate's verdict (recorded, never
37
+ * blocking). All shapes aggregate into integrate's input unfiltered.
38
+ *
39
+ * `iteration` and `findings` carry the per-child actor-critic loop [CLM-0043]:
40
+ * a quality reject re-runs implement, folding the gate's findings into the
41
+ * coder's next attempt, bounded by Kc (and the run budget). They mirror the
42
+ * run-level `iteration`/`findings` but scope to one child, and are
43
+ * checkpointed so a resume mid-child-iteration re-runs nothing finished.
44
+ * `escalated` marks a child that hit the Kc/budget bound still failing — it is
45
+ * recorded, never re-attempted, and does NOT sink its siblings or the run.
46
+ */
47
+ export declare const ChildResultSchema: z.ZodObject<{
48
+ child: z.ZodObject<{
49
+ id: z.ZodString;
50
+ parent: z.ZodOptional<z.ZodString>;
51
+ goal: z.ZodString;
52
+ constraints: z.ZodArray<z.ZodString>;
53
+ budget: z.ZodObject<{
54
+ tokens: z.ZodNumber;
55
+ usd: z.ZodNumber;
56
+ wallClockMin: z.ZodNumber;
57
+ }, z.core.$strict>;
58
+ evidence: z.ZodArray<z.ZodObject<{
59
+ kind: z.ZodEnum<{
60
+ test: "test";
61
+ ci: "ci";
62
+ doc: "doc";
63
+ eval: "eval";
64
+ }>;
65
+ ref: z.ZodString;
66
+ }, z.core.$strict>>;
67
+ definitionOfDone: z.ZodArray<z.ZodObject<{
68
+ name: z.ZodString;
69
+ command: z.ZodString;
70
+ }, z.core.$strict>>;
71
+ authorityCeiling: z.ZodEnum<{
72
+ observe: "observe";
73
+ suggest: "suggest";
74
+ advisory: "advisory";
75
+ enforce: "enforce";
76
+ }>;
77
+ overlay: z.ZodString;
78
+ }, z.core.$strict>;
79
+ output: z.ZodOptional<z.ZodUnknown>;
80
+ verdict: z.ZodOptional<z.ZodObject<{
81
+ taskId: z.ZodString;
82
+ gate: z.ZodString;
83
+ result: z.ZodEnum<{
84
+ approve: "approve";
85
+ reject: "reject";
86
+ abstain: "abstain";
87
+ pass: "pass";
88
+ fail: "fail";
89
+ escalate: "escalate";
90
+ }>;
91
+ confidence: z.ZodNumber;
92
+ findings: z.ZodArray<z.ZodObject<{
93
+ severity: z.ZodEnum<{
94
+ error: "error";
95
+ info: "info";
96
+ warn: "warn";
97
+ blocker: "blocker";
98
+ }>;
99
+ message: z.ZodString;
100
+ path: z.ZodOptional<z.ZodString>;
101
+ }, z.core.$strict>>;
102
+ voters: z.ZodOptional<z.ZodArray<z.ZodObject<{
103
+ voter: z.ZodString;
104
+ vote: z.ZodEnum<{
105
+ approve: "approve";
106
+ reject: "reject";
107
+ abstain: "abstain";
108
+ pass: "pass";
109
+ fail: "fail";
110
+ escalate: "escalate";
111
+ }>;
112
+ reasoning: z.ZodString;
113
+ served: z.ZodOptional<z.ZodObject<{
114
+ provider: z.ZodString;
115
+ family: z.ZodString;
116
+ generation: z.ZodString;
117
+ variant: z.ZodNullable<z.ZodString>;
118
+ tier: z.ZodEnum<{
119
+ frontier: "frontier";
120
+ large: "large";
121
+ medium: "medium";
122
+ small: "small";
123
+ }>;
124
+ raw: z.ZodString;
125
+ resolvedBy: z.ZodEnum<{
126
+ unknown: "unknown";
127
+ table: "table";
128
+ rule: "rule";
129
+ }>;
130
+ contextWindow: z.ZodNullable<z.ZodNumber>;
131
+ inputCostPerMTok: z.ZodNullable<z.ZodNumber>;
132
+ outputCostPerMTok: z.ZodNullable<z.ZodNumber>;
133
+ }, z.core.$strict>>;
134
+ }, z.core.$strict>>>;
135
+ cost: z.ZodObject<{
136
+ tokens: z.ZodNumber;
137
+ usd: z.ZodNumber;
138
+ wallClockMs: z.ZodOptional<z.ZodNumber>;
139
+ byAdapter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
140
+ tokens: z.ZodNumber;
141
+ usd: z.ZodNumber;
142
+ }, z.core.$strict>>>;
143
+ }, z.core.$strict>;
144
+ }, z.core.$strict>>;
145
+ reviewVerdict: z.ZodOptional<z.ZodObject<{
146
+ taskId: z.ZodString;
147
+ gate: z.ZodString;
148
+ result: z.ZodEnum<{
149
+ approve: "approve";
150
+ reject: "reject";
151
+ abstain: "abstain";
152
+ pass: "pass";
153
+ fail: "fail";
154
+ escalate: "escalate";
155
+ }>;
156
+ confidence: z.ZodNumber;
157
+ findings: z.ZodArray<z.ZodObject<{
158
+ severity: z.ZodEnum<{
159
+ error: "error";
160
+ info: "info";
161
+ warn: "warn";
162
+ blocker: "blocker";
163
+ }>;
164
+ message: z.ZodString;
165
+ path: z.ZodOptional<z.ZodString>;
166
+ }, z.core.$strict>>;
167
+ voters: z.ZodOptional<z.ZodArray<z.ZodObject<{
168
+ voter: z.ZodString;
169
+ vote: z.ZodEnum<{
170
+ approve: "approve";
171
+ reject: "reject";
172
+ abstain: "abstain";
173
+ pass: "pass";
174
+ fail: "fail";
175
+ escalate: "escalate";
176
+ }>;
177
+ reasoning: z.ZodString;
178
+ served: z.ZodOptional<z.ZodObject<{
179
+ provider: z.ZodString;
180
+ family: z.ZodString;
181
+ generation: z.ZodString;
182
+ variant: z.ZodNullable<z.ZodString>;
183
+ tier: z.ZodEnum<{
184
+ frontier: "frontier";
185
+ large: "large";
186
+ medium: "medium";
187
+ small: "small";
188
+ }>;
189
+ raw: z.ZodString;
190
+ resolvedBy: z.ZodEnum<{
191
+ unknown: "unknown";
192
+ table: "table";
193
+ rule: "rule";
194
+ }>;
195
+ contextWindow: z.ZodNullable<z.ZodNumber>;
196
+ inputCostPerMTok: z.ZodNullable<z.ZodNumber>;
197
+ outputCostPerMTok: z.ZodNullable<z.ZodNumber>;
198
+ }, z.core.$strict>>;
199
+ }, z.core.$strict>>>;
200
+ cost: z.ZodObject<{
201
+ tokens: z.ZodNumber;
202
+ usd: z.ZodNumber;
203
+ wallClockMs: z.ZodOptional<z.ZodNumber>;
204
+ byAdapter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
205
+ tokens: z.ZodNumber;
206
+ usd: z.ZodNumber;
207
+ }, z.core.$strict>>>;
208
+ }, z.core.$strict>;
209
+ }, z.core.$strict>>;
210
+ parsimonyVerdict: z.ZodOptional<z.ZodObject<{
211
+ taskId: z.ZodString;
212
+ gate: z.ZodString;
213
+ result: z.ZodEnum<{
214
+ approve: "approve";
215
+ reject: "reject";
216
+ abstain: "abstain";
217
+ pass: "pass";
218
+ fail: "fail";
219
+ escalate: "escalate";
220
+ }>;
221
+ confidence: z.ZodNumber;
222
+ findings: z.ZodArray<z.ZodObject<{
223
+ severity: z.ZodEnum<{
224
+ error: "error";
225
+ info: "info";
226
+ warn: "warn";
227
+ blocker: "blocker";
228
+ }>;
229
+ message: z.ZodString;
230
+ path: z.ZodOptional<z.ZodString>;
231
+ }, z.core.$strict>>;
232
+ voters: z.ZodOptional<z.ZodArray<z.ZodObject<{
233
+ voter: z.ZodString;
234
+ vote: z.ZodEnum<{
235
+ approve: "approve";
236
+ reject: "reject";
237
+ abstain: "abstain";
238
+ pass: "pass";
239
+ fail: "fail";
240
+ escalate: "escalate";
241
+ }>;
242
+ reasoning: z.ZodString;
243
+ served: z.ZodOptional<z.ZodObject<{
244
+ provider: z.ZodString;
245
+ family: z.ZodString;
246
+ generation: z.ZodString;
247
+ variant: z.ZodNullable<z.ZodString>;
248
+ tier: z.ZodEnum<{
249
+ frontier: "frontier";
250
+ large: "large";
251
+ medium: "medium";
252
+ small: "small";
253
+ }>;
254
+ raw: z.ZodString;
255
+ resolvedBy: z.ZodEnum<{
256
+ unknown: "unknown";
257
+ table: "table";
258
+ rule: "rule";
259
+ }>;
260
+ contextWindow: z.ZodNullable<z.ZodNumber>;
261
+ inputCostPerMTok: z.ZodNullable<z.ZodNumber>;
262
+ outputCostPerMTok: z.ZodNullable<z.ZodNumber>;
263
+ }, z.core.$strict>>;
264
+ }, z.core.$strict>>>;
265
+ cost: z.ZodObject<{
266
+ tokens: z.ZodNumber;
267
+ usd: z.ZodNumber;
268
+ wallClockMs: z.ZodOptional<z.ZodNumber>;
269
+ byAdapter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
270
+ tokens: z.ZodNumber;
271
+ usd: z.ZodNumber;
272
+ }, z.core.$strict>>>;
273
+ }, z.core.$strict>;
274
+ }, z.core.$strict>>;
275
+ error: z.ZodOptional<z.ZodString>;
276
+ iteration: z.ZodDefault<z.ZodNumber>;
277
+ findings: z.ZodDefault<z.ZodArray<z.ZodObject<{
278
+ severity: z.ZodEnum<{
279
+ error: "error";
280
+ info: "info";
281
+ warn: "warn";
282
+ blocker: "blocker";
283
+ }>;
284
+ message: z.ZodString;
285
+ path: z.ZodOptional<z.ZodString>;
286
+ }, z.core.$strict>>>;
287
+ escalated: z.ZodOptional<z.ZodBoolean>;
288
+ spend: z.ZodOptional<z.ZodObject<{
289
+ tokens: z.ZodNumber;
290
+ usd: z.ZodNumber;
291
+ }, z.core.$strict>>;
292
+ }, z.core.$strict>;
293
+ export type ChildResult = z.infer<typeof ChildResultSchema>;
294
+ /** One executed node in the run's trace (deterministic order, child-tagged). */
295
+ export declare const TraceEntrySchema: z.ZodObject<{
296
+ seq: z.ZodNumber;
297
+ node: z.ZodString;
298
+ iteration: z.ZodNumber;
299
+ childId: z.ZodOptional<z.ZodString>;
300
+ }, z.core.$strict>;
301
+ export type TraceEntry = z.infer<typeof TraceEntrySchema>;
302
+ /**
303
+ * The complete serializable state of one run. Self-contained: a checkpoint's
304
+ * state plus the injected executors is everything a resume needs.
305
+ */
306
+ export declare const RunStateSchema: z.ZodObject<{
307
+ task: z.ZodObject<{
308
+ id: z.ZodString;
309
+ parent: z.ZodOptional<z.ZodString>;
310
+ goal: z.ZodString;
311
+ constraints: z.ZodArray<z.ZodString>;
312
+ budget: z.ZodObject<{
313
+ tokens: z.ZodNumber;
314
+ usd: z.ZodNumber;
315
+ wallClockMin: z.ZodNumber;
316
+ }, z.core.$strict>;
317
+ evidence: z.ZodArray<z.ZodObject<{
318
+ kind: z.ZodEnum<{
319
+ test: "test";
320
+ ci: "ci";
321
+ doc: "doc";
322
+ eval: "eval";
323
+ }>;
324
+ ref: z.ZodString;
325
+ }, z.core.$strict>>;
326
+ definitionOfDone: z.ZodArray<z.ZodObject<{
327
+ name: z.ZodString;
328
+ command: z.ZodString;
329
+ }, z.core.$strict>>;
330
+ authorityCeiling: z.ZodEnum<{
331
+ observe: "observe";
332
+ suggest: "suggest";
333
+ advisory: "advisory";
334
+ enforce: "enforce";
335
+ }>;
336
+ overlay: z.ZodString;
337
+ }, z.core.$strict>;
338
+ status: z.ZodEnum<{
339
+ escalated: "escalated";
340
+ running: "running";
341
+ completed: "completed";
342
+ }>;
343
+ cursor: z.ZodDiscriminatedUnion<[z.ZodObject<{
344
+ phase: z.ZodLiteral<"main">;
345
+ node: z.ZodString;
346
+ }, z.core.$strict>, z.ZodObject<{
347
+ phase: z.ZodLiteral<"fanout">;
348
+ childIndex: z.ZodNumber;
349
+ sub: z.ZodNumber;
350
+ }, z.core.$strict>, z.ZodObject<{
351
+ phase: z.ZodLiteral<"done">;
352
+ }, z.core.$strict>], "phase">;
353
+ haltReason: z.ZodOptional<z.ZodEnum<{
354
+ vote: "vote";
355
+ "vote-escalation": "vote-escalation";
356
+ budget: "budget";
357
+ }>>;
358
+ iteration: z.ZodNumber;
359
+ values: z.ZodRecord<z.ZodString, z.ZodUnknown>;
360
+ findings: z.ZodArray<z.ZodObject<{
361
+ severity: z.ZodEnum<{
362
+ error: "error";
363
+ info: "info";
364
+ warn: "warn";
365
+ blocker: "blocker";
366
+ }>;
367
+ message: z.ZodString;
368
+ path: z.ZodOptional<z.ZodString>;
369
+ }, z.core.$strict>>;
370
+ children: z.ZodArray<z.ZodObject<{
371
+ id: z.ZodString;
372
+ parent: z.ZodOptional<z.ZodString>;
373
+ goal: z.ZodString;
374
+ constraints: z.ZodArray<z.ZodString>;
375
+ budget: z.ZodObject<{
376
+ tokens: z.ZodNumber;
377
+ usd: z.ZodNumber;
378
+ wallClockMin: z.ZodNumber;
379
+ }, z.core.$strict>;
380
+ evidence: z.ZodArray<z.ZodObject<{
381
+ kind: z.ZodEnum<{
382
+ test: "test";
383
+ ci: "ci";
384
+ doc: "doc";
385
+ eval: "eval";
386
+ }>;
387
+ ref: z.ZodString;
388
+ }, z.core.$strict>>;
389
+ definitionOfDone: z.ZodArray<z.ZodObject<{
390
+ name: z.ZodString;
391
+ command: z.ZodString;
392
+ }, z.core.$strict>>;
393
+ authorityCeiling: z.ZodEnum<{
394
+ observe: "observe";
395
+ suggest: "suggest";
396
+ advisory: "advisory";
397
+ enforce: "enforce";
398
+ }>;
399
+ overlay: z.ZodString;
400
+ }, z.core.$strict>>;
401
+ childResults: z.ZodArray<z.ZodObject<{
402
+ child: z.ZodObject<{
403
+ id: z.ZodString;
404
+ parent: z.ZodOptional<z.ZodString>;
405
+ goal: z.ZodString;
406
+ constraints: z.ZodArray<z.ZodString>;
407
+ budget: z.ZodObject<{
408
+ tokens: z.ZodNumber;
409
+ usd: z.ZodNumber;
410
+ wallClockMin: z.ZodNumber;
411
+ }, z.core.$strict>;
412
+ evidence: z.ZodArray<z.ZodObject<{
413
+ kind: z.ZodEnum<{
414
+ test: "test";
415
+ ci: "ci";
416
+ doc: "doc";
417
+ eval: "eval";
418
+ }>;
419
+ ref: z.ZodString;
420
+ }, z.core.$strict>>;
421
+ definitionOfDone: z.ZodArray<z.ZodObject<{
422
+ name: z.ZodString;
423
+ command: z.ZodString;
424
+ }, z.core.$strict>>;
425
+ authorityCeiling: z.ZodEnum<{
426
+ observe: "observe";
427
+ suggest: "suggest";
428
+ advisory: "advisory";
429
+ enforce: "enforce";
430
+ }>;
431
+ overlay: z.ZodString;
432
+ }, z.core.$strict>;
433
+ output: z.ZodOptional<z.ZodUnknown>;
434
+ verdict: z.ZodOptional<z.ZodObject<{
435
+ taskId: z.ZodString;
436
+ gate: z.ZodString;
437
+ result: z.ZodEnum<{
438
+ approve: "approve";
439
+ reject: "reject";
440
+ abstain: "abstain";
441
+ pass: "pass";
442
+ fail: "fail";
443
+ escalate: "escalate";
444
+ }>;
445
+ confidence: z.ZodNumber;
446
+ findings: z.ZodArray<z.ZodObject<{
447
+ severity: z.ZodEnum<{
448
+ error: "error";
449
+ info: "info";
450
+ warn: "warn";
451
+ blocker: "blocker";
452
+ }>;
453
+ message: z.ZodString;
454
+ path: z.ZodOptional<z.ZodString>;
455
+ }, z.core.$strict>>;
456
+ voters: z.ZodOptional<z.ZodArray<z.ZodObject<{
457
+ voter: z.ZodString;
458
+ vote: z.ZodEnum<{
459
+ approve: "approve";
460
+ reject: "reject";
461
+ abstain: "abstain";
462
+ pass: "pass";
463
+ fail: "fail";
464
+ escalate: "escalate";
465
+ }>;
466
+ reasoning: z.ZodString;
467
+ served: z.ZodOptional<z.ZodObject<{
468
+ provider: z.ZodString;
469
+ family: z.ZodString;
470
+ generation: z.ZodString;
471
+ variant: z.ZodNullable<z.ZodString>;
472
+ tier: z.ZodEnum<{
473
+ frontier: "frontier";
474
+ large: "large";
475
+ medium: "medium";
476
+ small: "small";
477
+ }>;
478
+ raw: z.ZodString;
479
+ resolvedBy: z.ZodEnum<{
480
+ unknown: "unknown";
481
+ table: "table";
482
+ rule: "rule";
483
+ }>;
484
+ contextWindow: z.ZodNullable<z.ZodNumber>;
485
+ inputCostPerMTok: z.ZodNullable<z.ZodNumber>;
486
+ outputCostPerMTok: z.ZodNullable<z.ZodNumber>;
487
+ }, z.core.$strict>>;
488
+ }, z.core.$strict>>>;
489
+ cost: z.ZodObject<{
490
+ tokens: z.ZodNumber;
491
+ usd: z.ZodNumber;
492
+ wallClockMs: z.ZodOptional<z.ZodNumber>;
493
+ byAdapter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
494
+ tokens: z.ZodNumber;
495
+ usd: z.ZodNumber;
496
+ }, z.core.$strict>>>;
497
+ }, z.core.$strict>;
498
+ }, z.core.$strict>>;
499
+ reviewVerdict: z.ZodOptional<z.ZodObject<{
500
+ taskId: z.ZodString;
501
+ gate: z.ZodString;
502
+ result: z.ZodEnum<{
503
+ approve: "approve";
504
+ reject: "reject";
505
+ abstain: "abstain";
506
+ pass: "pass";
507
+ fail: "fail";
508
+ escalate: "escalate";
509
+ }>;
510
+ confidence: z.ZodNumber;
511
+ findings: z.ZodArray<z.ZodObject<{
512
+ severity: z.ZodEnum<{
513
+ error: "error";
514
+ info: "info";
515
+ warn: "warn";
516
+ blocker: "blocker";
517
+ }>;
518
+ message: z.ZodString;
519
+ path: z.ZodOptional<z.ZodString>;
520
+ }, z.core.$strict>>;
521
+ voters: z.ZodOptional<z.ZodArray<z.ZodObject<{
522
+ voter: z.ZodString;
523
+ vote: z.ZodEnum<{
524
+ approve: "approve";
525
+ reject: "reject";
526
+ abstain: "abstain";
527
+ pass: "pass";
528
+ fail: "fail";
529
+ escalate: "escalate";
530
+ }>;
531
+ reasoning: z.ZodString;
532
+ served: z.ZodOptional<z.ZodObject<{
533
+ provider: z.ZodString;
534
+ family: z.ZodString;
535
+ generation: z.ZodString;
536
+ variant: z.ZodNullable<z.ZodString>;
537
+ tier: z.ZodEnum<{
538
+ frontier: "frontier";
539
+ large: "large";
540
+ medium: "medium";
541
+ small: "small";
542
+ }>;
543
+ raw: z.ZodString;
544
+ resolvedBy: z.ZodEnum<{
545
+ unknown: "unknown";
546
+ table: "table";
547
+ rule: "rule";
548
+ }>;
549
+ contextWindow: z.ZodNullable<z.ZodNumber>;
550
+ inputCostPerMTok: z.ZodNullable<z.ZodNumber>;
551
+ outputCostPerMTok: z.ZodNullable<z.ZodNumber>;
552
+ }, z.core.$strict>>;
553
+ }, z.core.$strict>>>;
554
+ cost: z.ZodObject<{
555
+ tokens: z.ZodNumber;
556
+ usd: z.ZodNumber;
557
+ wallClockMs: z.ZodOptional<z.ZodNumber>;
558
+ byAdapter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
559
+ tokens: z.ZodNumber;
560
+ usd: z.ZodNumber;
561
+ }, z.core.$strict>>>;
562
+ }, z.core.$strict>;
563
+ }, z.core.$strict>>;
564
+ parsimonyVerdict: z.ZodOptional<z.ZodObject<{
565
+ taskId: z.ZodString;
566
+ gate: z.ZodString;
567
+ result: z.ZodEnum<{
568
+ approve: "approve";
569
+ reject: "reject";
570
+ abstain: "abstain";
571
+ pass: "pass";
572
+ fail: "fail";
573
+ escalate: "escalate";
574
+ }>;
575
+ confidence: z.ZodNumber;
576
+ findings: z.ZodArray<z.ZodObject<{
577
+ severity: z.ZodEnum<{
578
+ error: "error";
579
+ info: "info";
580
+ warn: "warn";
581
+ blocker: "blocker";
582
+ }>;
583
+ message: z.ZodString;
584
+ path: z.ZodOptional<z.ZodString>;
585
+ }, z.core.$strict>>;
586
+ voters: z.ZodOptional<z.ZodArray<z.ZodObject<{
587
+ voter: z.ZodString;
588
+ vote: z.ZodEnum<{
589
+ approve: "approve";
590
+ reject: "reject";
591
+ abstain: "abstain";
592
+ pass: "pass";
593
+ fail: "fail";
594
+ escalate: "escalate";
595
+ }>;
596
+ reasoning: z.ZodString;
597
+ served: z.ZodOptional<z.ZodObject<{
598
+ provider: z.ZodString;
599
+ family: z.ZodString;
600
+ generation: z.ZodString;
601
+ variant: z.ZodNullable<z.ZodString>;
602
+ tier: z.ZodEnum<{
603
+ frontier: "frontier";
604
+ large: "large";
605
+ medium: "medium";
606
+ small: "small";
607
+ }>;
608
+ raw: z.ZodString;
609
+ resolvedBy: z.ZodEnum<{
610
+ unknown: "unknown";
611
+ table: "table";
612
+ rule: "rule";
613
+ }>;
614
+ contextWindow: z.ZodNullable<z.ZodNumber>;
615
+ inputCostPerMTok: z.ZodNullable<z.ZodNumber>;
616
+ outputCostPerMTok: z.ZodNullable<z.ZodNumber>;
617
+ }, z.core.$strict>>;
618
+ }, z.core.$strict>>>;
619
+ cost: z.ZodObject<{
620
+ tokens: z.ZodNumber;
621
+ usd: z.ZodNumber;
622
+ wallClockMs: z.ZodOptional<z.ZodNumber>;
623
+ byAdapter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
624
+ tokens: z.ZodNumber;
625
+ usd: z.ZodNumber;
626
+ }, z.core.$strict>>>;
627
+ }, z.core.$strict>;
628
+ }, z.core.$strict>>;
629
+ error: z.ZodOptional<z.ZodString>;
630
+ iteration: z.ZodDefault<z.ZodNumber>;
631
+ findings: z.ZodDefault<z.ZodArray<z.ZodObject<{
632
+ severity: z.ZodEnum<{
633
+ error: "error";
634
+ info: "info";
635
+ warn: "warn";
636
+ blocker: "blocker";
637
+ }>;
638
+ message: z.ZodString;
639
+ path: z.ZodOptional<z.ZodString>;
640
+ }, z.core.$strict>>>;
641
+ escalated: z.ZodOptional<z.ZodBoolean>;
642
+ spend: z.ZodOptional<z.ZodObject<{
643
+ tokens: z.ZodNumber;
644
+ usd: z.ZodNumber;
645
+ }, z.core.$strict>>;
646
+ }, z.core.$strict>>;
647
+ trace: z.ZodArray<z.ZodObject<{
648
+ seq: z.ZodNumber;
649
+ node: z.ZodString;
650
+ iteration: z.ZodNumber;
651
+ childId: z.ZodOptional<z.ZodString>;
652
+ }, z.core.$strict>>;
653
+ observedMaxNodeSpend: z.ZodDefault<z.ZodObject<{
654
+ tokens: z.ZodNumber;
655
+ usd: z.ZodNumber;
656
+ }, z.core.$strict>>;
657
+ }, z.core.$strict>;
658
+ export type RunState = z.infer<typeof RunStateSchema>;
659
+ /**
660
+ * One checkpoint row, persisted through the injected store after EVERY node
661
+ * completion [CLM-0044]: `{runId, seq, node, iteration, state}` where `node`
662
+ * is the node that just completed and `state` already points past it.
663
+ */
664
+ export declare const CheckpointRecordSchema: z.ZodObject<{
665
+ runId: z.ZodString;
666
+ seq: z.ZodNumber;
667
+ node: z.ZodString;
668
+ iteration: z.ZodNumber;
669
+ state: z.ZodObject<{
670
+ task: z.ZodObject<{
671
+ id: z.ZodString;
672
+ parent: z.ZodOptional<z.ZodString>;
673
+ goal: z.ZodString;
674
+ constraints: z.ZodArray<z.ZodString>;
675
+ budget: z.ZodObject<{
676
+ tokens: z.ZodNumber;
677
+ usd: z.ZodNumber;
678
+ wallClockMin: z.ZodNumber;
679
+ }, z.core.$strict>;
680
+ evidence: z.ZodArray<z.ZodObject<{
681
+ kind: z.ZodEnum<{
682
+ test: "test";
683
+ ci: "ci";
684
+ doc: "doc";
685
+ eval: "eval";
686
+ }>;
687
+ ref: z.ZodString;
688
+ }, z.core.$strict>>;
689
+ definitionOfDone: z.ZodArray<z.ZodObject<{
690
+ name: z.ZodString;
691
+ command: z.ZodString;
692
+ }, z.core.$strict>>;
693
+ authorityCeiling: z.ZodEnum<{
694
+ observe: "observe";
695
+ suggest: "suggest";
696
+ advisory: "advisory";
697
+ enforce: "enforce";
698
+ }>;
699
+ overlay: z.ZodString;
700
+ }, z.core.$strict>;
701
+ status: z.ZodEnum<{
702
+ escalated: "escalated";
703
+ running: "running";
704
+ completed: "completed";
705
+ }>;
706
+ cursor: z.ZodDiscriminatedUnion<[z.ZodObject<{
707
+ phase: z.ZodLiteral<"main">;
708
+ node: z.ZodString;
709
+ }, z.core.$strict>, z.ZodObject<{
710
+ phase: z.ZodLiteral<"fanout">;
711
+ childIndex: z.ZodNumber;
712
+ sub: z.ZodNumber;
713
+ }, z.core.$strict>, z.ZodObject<{
714
+ phase: z.ZodLiteral<"done">;
715
+ }, z.core.$strict>], "phase">;
716
+ haltReason: z.ZodOptional<z.ZodEnum<{
717
+ vote: "vote";
718
+ "vote-escalation": "vote-escalation";
719
+ budget: "budget";
720
+ }>>;
721
+ iteration: z.ZodNumber;
722
+ values: z.ZodRecord<z.ZodString, z.ZodUnknown>;
723
+ findings: z.ZodArray<z.ZodObject<{
724
+ severity: z.ZodEnum<{
725
+ error: "error";
726
+ info: "info";
727
+ warn: "warn";
728
+ blocker: "blocker";
729
+ }>;
730
+ message: z.ZodString;
731
+ path: z.ZodOptional<z.ZodString>;
732
+ }, z.core.$strict>>;
733
+ children: z.ZodArray<z.ZodObject<{
734
+ id: z.ZodString;
735
+ parent: z.ZodOptional<z.ZodString>;
736
+ goal: z.ZodString;
737
+ constraints: z.ZodArray<z.ZodString>;
738
+ budget: z.ZodObject<{
739
+ tokens: z.ZodNumber;
740
+ usd: z.ZodNumber;
741
+ wallClockMin: z.ZodNumber;
742
+ }, z.core.$strict>;
743
+ evidence: z.ZodArray<z.ZodObject<{
744
+ kind: z.ZodEnum<{
745
+ test: "test";
746
+ ci: "ci";
747
+ doc: "doc";
748
+ eval: "eval";
749
+ }>;
750
+ ref: z.ZodString;
751
+ }, z.core.$strict>>;
752
+ definitionOfDone: z.ZodArray<z.ZodObject<{
753
+ name: z.ZodString;
754
+ command: z.ZodString;
755
+ }, z.core.$strict>>;
756
+ authorityCeiling: z.ZodEnum<{
757
+ observe: "observe";
758
+ suggest: "suggest";
759
+ advisory: "advisory";
760
+ enforce: "enforce";
761
+ }>;
762
+ overlay: z.ZodString;
763
+ }, z.core.$strict>>;
764
+ childResults: z.ZodArray<z.ZodObject<{
765
+ child: z.ZodObject<{
766
+ id: z.ZodString;
767
+ parent: z.ZodOptional<z.ZodString>;
768
+ goal: z.ZodString;
769
+ constraints: z.ZodArray<z.ZodString>;
770
+ budget: z.ZodObject<{
771
+ tokens: z.ZodNumber;
772
+ usd: z.ZodNumber;
773
+ wallClockMin: z.ZodNumber;
774
+ }, z.core.$strict>;
775
+ evidence: z.ZodArray<z.ZodObject<{
776
+ kind: z.ZodEnum<{
777
+ test: "test";
778
+ ci: "ci";
779
+ doc: "doc";
780
+ eval: "eval";
781
+ }>;
782
+ ref: z.ZodString;
783
+ }, z.core.$strict>>;
784
+ definitionOfDone: z.ZodArray<z.ZodObject<{
785
+ name: z.ZodString;
786
+ command: z.ZodString;
787
+ }, z.core.$strict>>;
788
+ authorityCeiling: z.ZodEnum<{
789
+ observe: "observe";
790
+ suggest: "suggest";
791
+ advisory: "advisory";
792
+ enforce: "enforce";
793
+ }>;
794
+ overlay: z.ZodString;
795
+ }, z.core.$strict>;
796
+ output: z.ZodOptional<z.ZodUnknown>;
797
+ verdict: z.ZodOptional<z.ZodObject<{
798
+ taskId: z.ZodString;
799
+ gate: z.ZodString;
800
+ result: z.ZodEnum<{
801
+ approve: "approve";
802
+ reject: "reject";
803
+ abstain: "abstain";
804
+ pass: "pass";
805
+ fail: "fail";
806
+ escalate: "escalate";
807
+ }>;
808
+ confidence: z.ZodNumber;
809
+ findings: z.ZodArray<z.ZodObject<{
810
+ severity: z.ZodEnum<{
811
+ error: "error";
812
+ info: "info";
813
+ warn: "warn";
814
+ blocker: "blocker";
815
+ }>;
816
+ message: z.ZodString;
817
+ path: z.ZodOptional<z.ZodString>;
818
+ }, z.core.$strict>>;
819
+ voters: z.ZodOptional<z.ZodArray<z.ZodObject<{
820
+ voter: z.ZodString;
821
+ vote: z.ZodEnum<{
822
+ approve: "approve";
823
+ reject: "reject";
824
+ abstain: "abstain";
825
+ pass: "pass";
826
+ fail: "fail";
827
+ escalate: "escalate";
828
+ }>;
829
+ reasoning: z.ZodString;
830
+ served: z.ZodOptional<z.ZodObject<{
831
+ provider: z.ZodString;
832
+ family: z.ZodString;
833
+ generation: z.ZodString;
834
+ variant: z.ZodNullable<z.ZodString>;
835
+ tier: z.ZodEnum<{
836
+ frontier: "frontier";
837
+ large: "large";
838
+ medium: "medium";
839
+ small: "small";
840
+ }>;
841
+ raw: z.ZodString;
842
+ resolvedBy: z.ZodEnum<{
843
+ unknown: "unknown";
844
+ table: "table";
845
+ rule: "rule";
846
+ }>;
847
+ contextWindow: z.ZodNullable<z.ZodNumber>;
848
+ inputCostPerMTok: z.ZodNullable<z.ZodNumber>;
849
+ outputCostPerMTok: z.ZodNullable<z.ZodNumber>;
850
+ }, z.core.$strict>>;
851
+ }, z.core.$strict>>>;
852
+ cost: z.ZodObject<{
853
+ tokens: z.ZodNumber;
854
+ usd: z.ZodNumber;
855
+ wallClockMs: z.ZodOptional<z.ZodNumber>;
856
+ byAdapter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
857
+ tokens: z.ZodNumber;
858
+ usd: z.ZodNumber;
859
+ }, z.core.$strict>>>;
860
+ }, z.core.$strict>;
861
+ }, z.core.$strict>>;
862
+ reviewVerdict: z.ZodOptional<z.ZodObject<{
863
+ taskId: z.ZodString;
864
+ gate: z.ZodString;
865
+ result: z.ZodEnum<{
866
+ approve: "approve";
867
+ reject: "reject";
868
+ abstain: "abstain";
869
+ pass: "pass";
870
+ fail: "fail";
871
+ escalate: "escalate";
872
+ }>;
873
+ confidence: z.ZodNumber;
874
+ findings: z.ZodArray<z.ZodObject<{
875
+ severity: z.ZodEnum<{
876
+ error: "error";
877
+ info: "info";
878
+ warn: "warn";
879
+ blocker: "blocker";
880
+ }>;
881
+ message: z.ZodString;
882
+ path: z.ZodOptional<z.ZodString>;
883
+ }, z.core.$strict>>;
884
+ voters: z.ZodOptional<z.ZodArray<z.ZodObject<{
885
+ voter: z.ZodString;
886
+ vote: z.ZodEnum<{
887
+ approve: "approve";
888
+ reject: "reject";
889
+ abstain: "abstain";
890
+ pass: "pass";
891
+ fail: "fail";
892
+ escalate: "escalate";
893
+ }>;
894
+ reasoning: z.ZodString;
895
+ served: z.ZodOptional<z.ZodObject<{
896
+ provider: z.ZodString;
897
+ family: z.ZodString;
898
+ generation: z.ZodString;
899
+ variant: z.ZodNullable<z.ZodString>;
900
+ tier: z.ZodEnum<{
901
+ frontier: "frontier";
902
+ large: "large";
903
+ medium: "medium";
904
+ small: "small";
905
+ }>;
906
+ raw: z.ZodString;
907
+ resolvedBy: z.ZodEnum<{
908
+ unknown: "unknown";
909
+ table: "table";
910
+ rule: "rule";
911
+ }>;
912
+ contextWindow: z.ZodNullable<z.ZodNumber>;
913
+ inputCostPerMTok: z.ZodNullable<z.ZodNumber>;
914
+ outputCostPerMTok: z.ZodNullable<z.ZodNumber>;
915
+ }, z.core.$strict>>;
916
+ }, z.core.$strict>>>;
917
+ cost: z.ZodObject<{
918
+ tokens: z.ZodNumber;
919
+ usd: z.ZodNumber;
920
+ wallClockMs: z.ZodOptional<z.ZodNumber>;
921
+ byAdapter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
922
+ tokens: z.ZodNumber;
923
+ usd: z.ZodNumber;
924
+ }, z.core.$strict>>>;
925
+ }, z.core.$strict>;
926
+ }, z.core.$strict>>;
927
+ parsimonyVerdict: z.ZodOptional<z.ZodObject<{
928
+ taskId: z.ZodString;
929
+ gate: z.ZodString;
930
+ result: z.ZodEnum<{
931
+ approve: "approve";
932
+ reject: "reject";
933
+ abstain: "abstain";
934
+ pass: "pass";
935
+ fail: "fail";
936
+ escalate: "escalate";
937
+ }>;
938
+ confidence: z.ZodNumber;
939
+ findings: z.ZodArray<z.ZodObject<{
940
+ severity: z.ZodEnum<{
941
+ error: "error";
942
+ info: "info";
943
+ warn: "warn";
944
+ blocker: "blocker";
945
+ }>;
946
+ message: z.ZodString;
947
+ path: z.ZodOptional<z.ZodString>;
948
+ }, z.core.$strict>>;
949
+ voters: z.ZodOptional<z.ZodArray<z.ZodObject<{
950
+ voter: z.ZodString;
951
+ vote: z.ZodEnum<{
952
+ approve: "approve";
953
+ reject: "reject";
954
+ abstain: "abstain";
955
+ pass: "pass";
956
+ fail: "fail";
957
+ escalate: "escalate";
958
+ }>;
959
+ reasoning: z.ZodString;
960
+ served: z.ZodOptional<z.ZodObject<{
961
+ provider: z.ZodString;
962
+ family: z.ZodString;
963
+ generation: z.ZodString;
964
+ variant: z.ZodNullable<z.ZodString>;
965
+ tier: z.ZodEnum<{
966
+ frontier: "frontier";
967
+ large: "large";
968
+ medium: "medium";
969
+ small: "small";
970
+ }>;
971
+ raw: z.ZodString;
972
+ resolvedBy: z.ZodEnum<{
973
+ unknown: "unknown";
974
+ table: "table";
975
+ rule: "rule";
976
+ }>;
977
+ contextWindow: z.ZodNullable<z.ZodNumber>;
978
+ inputCostPerMTok: z.ZodNullable<z.ZodNumber>;
979
+ outputCostPerMTok: z.ZodNullable<z.ZodNumber>;
980
+ }, z.core.$strict>>;
981
+ }, z.core.$strict>>>;
982
+ cost: z.ZodObject<{
983
+ tokens: z.ZodNumber;
984
+ usd: z.ZodNumber;
985
+ wallClockMs: z.ZodOptional<z.ZodNumber>;
986
+ byAdapter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
987
+ tokens: z.ZodNumber;
988
+ usd: z.ZodNumber;
989
+ }, z.core.$strict>>>;
990
+ }, z.core.$strict>;
991
+ }, z.core.$strict>>;
992
+ error: z.ZodOptional<z.ZodString>;
993
+ iteration: z.ZodDefault<z.ZodNumber>;
994
+ findings: z.ZodDefault<z.ZodArray<z.ZodObject<{
995
+ severity: z.ZodEnum<{
996
+ error: "error";
997
+ info: "info";
998
+ warn: "warn";
999
+ blocker: "blocker";
1000
+ }>;
1001
+ message: z.ZodString;
1002
+ path: z.ZodOptional<z.ZodString>;
1003
+ }, z.core.$strict>>>;
1004
+ escalated: z.ZodOptional<z.ZodBoolean>;
1005
+ spend: z.ZodOptional<z.ZodObject<{
1006
+ tokens: z.ZodNumber;
1007
+ usd: z.ZodNumber;
1008
+ }, z.core.$strict>>;
1009
+ }, z.core.$strict>>;
1010
+ trace: z.ZodArray<z.ZodObject<{
1011
+ seq: z.ZodNumber;
1012
+ node: z.ZodString;
1013
+ iteration: z.ZodNumber;
1014
+ childId: z.ZodOptional<z.ZodString>;
1015
+ }, z.core.$strict>>;
1016
+ observedMaxNodeSpend: z.ZodDefault<z.ZodObject<{
1017
+ tokens: z.ZodNumber;
1018
+ usd: z.ZodNumber;
1019
+ }, z.core.$strict>>;
1020
+ }, z.core.$strict>;
1021
+ createdAt: z.ZodString;
1022
+ }, z.core.$strict>;
1023
+ export type CheckpointRecord = z.infer<typeof CheckpointRecordSchema>;
1024
+ /** Why a run stopped without completing (or could not start/resume). */
1025
+ export type WorkflowErrorCode = 'unwired_node' | 'invalid_task' | 'edge_contract' | 'executor_failed' | 'aborted' | 'checkpoint_failed' | 'no_checkpoint' | 'corrupt_checkpoint';
1026
+ /**
1027
+ * Typed engine failure. Edge-contract failures name the node and the
1028
+ * contract the emission violated [CLM-0042].
1029
+ */
1030
+ export declare class WorkflowError extends Error {
1031
+ readonly code: WorkflowErrorCode;
1032
+ /** Node involved, when one is. */
1033
+ readonly node?: string;
1034
+ /** Contract violated, for `edge_contract`. */
1035
+ readonly contract?: string;
1036
+ constructor(code: WorkflowErrorCode, message: string, details?: {
1037
+ node?: string;
1038
+ contract?: string;
1039
+ cause?: unknown;
1040
+ });
1041
+ }
1042
+ /** Terminal report of a run (or of a resumed continuation of one). */
1043
+ export interface RunResult {
1044
+ readonly runId: string;
1045
+ /**
1046
+ * `completed` — retrospect emitted the final Outcome;
1047
+ * `escalated` — the vote-iterate bound K was exhausted; the run HALTED
1048
+ * with its findings and resumes from plan after the human edits
1049
+ * [CLM-0043];
1050
+ * `failed` — a typed error stopped the run; the last checkpoint is
1051
+ * intact and `resume(runId)` re-attempts from it [CLM-0044].
1052
+ */
1053
+ readonly status: 'completed' | 'escalated' | 'failed';
1054
+ readonly nodeTrace: readonly TraceEntry[];
1055
+ /** The final Outcome, on completion. */
1056
+ readonly outcome?: Outcome;
1057
+ /**
1058
+ * Why an escalated run halted, surfaced so an operator can triage: `vote` (the
1059
+ * K vote-iterate bound), `vote-escalation` (a vote gate ruled `escalate` — a
1060
+ * deadlocked panel asking a human, #192), or `budget`. Present only on
1061
+ * `escalated`; the cli maps a cooperative-abort cancel to its own `'aborted'`.
1062
+ */
1063
+ readonly haltReason?: 'vote' | 'vote-escalation' | 'budget';
1064
+ /** Accumulated rejecting-vote findings, on escalation. */
1065
+ readonly findings?: readonly Finding[];
1066
+ /** The typed error, on failure. */
1067
+ readonly error?: WorkflowError;
1068
+ /**
1069
+ * Per-child metered spend attribution (#56), present when the run was metered
1070
+ * (a `meteredSpend` seam was injected) and produced fan-out children. One
1071
+ * entry per child whose sub-chain incurred spend.
1072
+ */
1073
+ readonly childSpend?: readonly {
1074
+ readonly childId: string;
1075
+ readonly spend: ChildSpend;
1076
+ }[];
1077
+ }
1078
+ //# sourceMappingURL=state.d.ts.map