specrails-core 6.4.0 → 6.6.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 (131) hide show
  1. package/dist/agent-runtime/capabilities.d.ts +2 -2
  2. package/dist/agent-runtime/capabilities.js +22 -5
  3. package/dist/agent-runtime/cli-executor.js +8 -3
  4. package/dist/agent-runtime/cli.d.ts +4 -4
  5. package/dist/agent-runtime/cli.js +50 -3
  6. package/dist/agent-runtime/compact/environment.d.ts +50 -4
  7. package/dist/agent-runtime/compact/environment.js +183 -6
  8. package/dist/agent-runtime/compact/step.d.ts +1 -1
  9. package/dist/agent-runtime/efficiency-summary.d.ts +1 -1
  10. package/dist/agent-runtime/efficiency-types.d.ts +1 -1
  11. package/dist/agent-runtime/engine/checkpoint/database.d.ts +15 -15
  12. package/dist/agent-runtime/engine/contracts.d.ts +2 -1
  13. package/dist/agent-runtime/engine/definition-types.d.ts +1 -1
  14. package/dist/agent-runtime/engine/efficiency-summary.d.ts +8 -8
  15. package/dist/agent-runtime/engine/fork.d.ts +1 -1
  16. package/dist/agent-runtime/engine/graph-description.d.ts +16 -16
  17. package/dist/agent-runtime/engine/implementation-compiler.d.ts +68 -68
  18. package/dist/agent-runtime/engine/piece-dependencies.js +4 -4
  19. package/dist/agent-runtime/engine/pieces/implementation-step.d.ts +1 -1
  20. package/dist/agent-runtime/engine/pieces/role-turn.d.ts +5 -0
  21. package/dist/agent-runtime/engine/pieces/role-turn.js +64 -22
  22. package/dist/agent-runtime/engine/pieces/shared.d.ts +2 -2
  23. package/dist/agent-runtime/engine/pieces/verify.js +46 -13
  24. package/dist/agent-runtime/engine/run-status.d.ts +165 -165
  25. package/dist/agent-runtime/engine/runs.d.ts +168 -168
  26. package/dist/agent-runtime/engine/state.d.ts +16 -16
  27. package/dist/agent-runtime/evaluation.d.ts +3 -3
  28. package/dist/agent-runtime/executor-types.d.ts +10 -10
  29. package/dist/agent-runtime/graph/convergence.d.ts +2 -2
  30. package/dist/agent-runtime/graph/convergence.js +11 -0
  31. package/dist/agent-runtime/graph/nodes.js +35 -4
  32. package/dist/agent-runtime/graph/review-policy.d.ts +1 -1
  33. package/dist/agent-runtime/graph/state.d.ts +6 -2
  34. package/dist/agent-runtime/guardrails.d.ts +1 -1
  35. package/dist/agent-runtime/guardrails.js +4 -1
  36. package/dist/agent-runtime/index.d.ts +3 -2
  37. package/dist/agent-runtime/index.js +1 -0
  38. package/dist/agent-runtime/openai-executor.d.ts +9 -9
  39. package/dist/agent-runtime/openspec.d.ts +4 -4
  40. package/dist/agent-runtime/prompts.d.ts +6 -0
  41. package/dist/agent-runtime/prompts.js +32 -8
  42. package/dist/agent-runtime/recovery.d.ts +12 -12
  43. package/dist/agent-runtime/session/application/active-session.d.ts +176 -0
  44. package/dist/agent-runtime/session/application/active-session.js +701 -0
  45. package/dist/agent-runtime/session/application/delegation.d.ts +73 -0
  46. package/dist/agent-runtime/session/application/delegation.js +171 -0
  47. package/dist/agent-runtime/session/application/output-buffer.d.ts +43 -0
  48. package/dist/agent-runtime/session/application/output-buffer.js +65 -0
  49. package/dist/agent-runtime/session/application/session-service.d.ts +121 -0
  50. package/dist/agent-runtime/session/application/session-service.js +256 -0
  51. package/dist/agent-runtime/session/application/timers.d.ts +15 -0
  52. package/dist/agent-runtime/session/application/timers.js +35 -0
  53. package/dist/agent-runtime/session/domain/descriptor.d.ts +6 -0
  54. package/dist/agent-runtime/session/domain/descriptor.js +32 -0
  55. package/dist/agent-runtime/session/domain/errors.d.ts +9 -0
  56. package/dist/agent-runtime/session/domain/errors.js +16 -0
  57. package/dist/agent-runtime/session/domain/events.d.ts +147 -0
  58. package/dist/agent-runtime/session/domain/events.js +24 -0
  59. package/dist/agent-runtime/session/domain/fingerprint.d.ts +2 -0
  60. package/dist/agent-runtime/session/domain/fingerprint.js +10 -0
  61. package/dist/agent-runtime/session/domain/interruption.d.ts +13 -0
  62. package/dist/agent-runtime/session/domain/interruption.js +39 -0
  63. package/dist/agent-runtime/session/domain/policy.d.ts +42 -0
  64. package/dist/agent-runtime/session/domain/policy.js +104 -0
  65. package/dist/agent-runtime/session/domain/snapshot.d.ts +100 -0
  66. package/dist/agent-runtime/session/domain/snapshot.js +234 -0
  67. package/dist/agent-runtime/session/domain/state-machines.d.ts +21 -0
  68. package/dist/agent-runtime/session/domain/state-machines.js +41 -0
  69. package/dist/agent-runtime/session/domain/types.d.ts +130 -0
  70. package/dist/agent-runtime/session/domain/types.js +15 -0
  71. package/dist/agent-runtime/session/domain/usage.d.ts +54 -0
  72. package/dist/agent-runtime/session/domain/usage.js +86 -0
  73. package/dist/agent-runtime/session/drivers/claude/argv.d.ts +19 -0
  74. package/dist/agent-runtime/session/drivers/claude/argv.js +67 -0
  75. package/dist/agent-runtime/session/drivers/claude/driver.d.ts +19 -0
  76. package/dist/agent-runtime/session/drivers/claude/driver.js +134 -0
  77. package/dist/agent-runtime/session/drivers/claude/translator.d.ts +40 -0
  78. package/dist/agent-runtime/session/drivers/claude/translator.js +247 -0
  79. package/dist/agent-runtime/session/drivers/codex/argv.d.ts +12 -0
  80. package/dist/agent-runtime/session/drivers/codex/argv.js +76 -0
  81. package/dist/agent-runtime/session/drivers/codex/driver.d.ts +19 -0
  82. package/dist/agent-runtime/session/drivers/codex/driver.js +193 -0
  83. package/dist/agent-runtime/session/drivers/codex/rpc.d.ts +28 -0
  84. package/dist/agent-runtime/session/drivers/codex/rpc.js +81 -0
  85. package/dist/agent-runtime/session/drivers/codex/translator.d.ts +53 -0
  86. package/dist/agent-runtime/session/drivers/codex/translator.js +267 -0
  87. package/dist/agent-runtime/session/drivers/common/process.d.ts +37 -0
  88. package/dist/agent-runtime/session/drivers/common/process.js +116 -0
  89. package/dist/agent-runtime/session/drivers/executor/driver.d.ts +22 -0
  90. package/dist/agent-runtime/session/drivers/executor/driver.js +163 -0
  91. package/dist/agent-runtime/session/drivers/registry.d.ts +32 -0
  92. package/dist/agent-runtime/session/drivers/registry.js +38 -0
  93. package/dist/agent-runtime/session/host/protocol.d.ts +18 -0
  94. package/dist/agent-runtime/session/host/protocol.js +88 -0
  95. package/dist/agent-runtime/session/host/server.d.ts +57 -0
  96. package/dist/agent-runtime/session/host/server.js +229 -0
  97. package/dist/agent-runtime/session/index.d.ts +45 -0
  98. package/dist/agent-runtime/session/index.js +74 -0
  99. package/dist/agent-runtime/session/journal/schema.d.ts +7 -0
  100. package/dist/agent-runtime/session/journal/schema.js +44 -0
  101. package/dist/agent-runtime/session/journal/sqlite-journal.d.ts +70 -0
  102. package/dist/agent-runtime/session/journal/sqlite-journal.js +279 -0
  103. package/dist/agent-runtime/session/ports.d.ts +192 -0
  104. package/dist/agent-runtime/session/ports.js +1 -0
  105. package/dist/agent-runtime/session/testing/driver-conformance.d.ts +21 -0
  106. package/dist/agent-runtime/session/testing/driver-conformance.js +97 -0
  107. package/dist/agent-runtime/session/testing/fake-clock.d.ts +20 -0
  108. package/dist/agent-runtime/session/testing/fake-clock.js +34 -0
  109. package/dist/agent-runtime/session/testing/fixture-replayer.d.ts +41 -0
  110. package/dist/agent-runtime/session/testing/fixture-replayer.js +172 -0
  111. package/dist/agent-runtime/session/testing/index.d.ts +9 -0
  112. package/dist/agent-runtime/session/testing/index.js +9 -0
  113. package/dist/agent-runtime/session/testing/memory-journal.d.ts +27 -0
  114. package/dist/agent-runtime/session/testing/memory-journal.js +70 -0
  115. package/dist/agent-runtime/session/testing/scripted-driver.d.ts +30 -0
  116. package/dist/agent-runtime/session/testing/scripted-driver.js +77 -0
  117. package/dist/agent-runtime/verification-proposals.d.ts +9 -0
  118. package/dist/agent-runtime/verification-proposals.js +69 -0
  119. package/dist/agent-runtime/verification-repair.d.ts +31 -2
  120. package/dist/agent-runtime/verification-repair.js +58 -3
  121. package/dist/installer/commands/init.d.ts +1 -1
  122. package/dist/installer/phases/install-config.js +10 -3
  123. package/dist/installer/util/paths.d.ts +25 -1
  124. package/dist/installer/util/registry.js +3 -3
  125. package/dist/pipeline/pipeline-state.d.ts +42 -11
  126. package/dist/pipeline/pipeline-state.js +47 -8
  127. package/dist/shared/specrails-home.d.ts +21 -0
  128. package/dist/shared/specrails-home.js +36 -0
  129. package/integration-contract.json +42 -1
  130. package/package.json +23 -11
  131. package/schemas/agent-runtime.schema.json +1 -1
@@ -37,76 +37,47 @@ export interface ResumeDefinitionOptions extends RunObservers {
37
37
  context?: PipelineContext;
38
38
  }
39
39
  export declare function createRun(input: DefinitionRunInput & RunObservers): Promise<{
40
- error?: {
41
- code: string;
42
- message: string;
43
- } | undefined;
44
- metrics: import("../efficiency-types.js").RuntimeEfficiency;
45
- efficiencySummary: {
46
- reservations: {
47
- pendingInvocations: number;
48
- knownTokens: number;
49
- knownCostUsd: number;
50
- tokensUnknown: boolean;
51
- costUnknown: boolean;
52
- };
53
- schemaVersion: 1;
54
- currentEvidenceIds: string[];
55
- planHash: string | null;
56
- candidateHash: string | null;
40
+ type: 'runtime-status';
41
+ engineVersion: number;
42
+ state: {
43
+ schemaVersion: 2;
57
44
  runId: string;
45
+ traceId: string;
46
+ workflowId: string;
58
47
  workflowVersion: string;
59
- technicalAcceptance: string;
60
- archive: import("../../pipeline/pipeline-state.js").PhaseStatus;
61
- delivery: "pending" | "complete" | "pending-host";
62
- roles: {
63
- role: string;
64
- provider: string | null;
65
- model: string | null;
66
- effort: string | null;
67
- observedModel: null;
68
- observedEffort: null;
69
- origin: string;
70
- tier: "base" | "escalation";
71
- }[];
72
- invocations: {
73
- byKind: {
74
- [k: string]: number;
75
- };
76
- total: number;
77
- complete: boolean;
78
- promptBytes: number | null;
79
- contextBytes: number | null;
80
- handoffBytes: number | null;
81
- fullContexts: number;
82
- incrementalContexts: number;
48
+ workflowFingerprint: string;
49
+ inputFingerprint: string;
50
+ status: import("../workflow-types.js").WorkflowStatus;
51
+ createdAt: string;
52
+ updatedAt: string;
53
+ nextAttempt: number;
54
+ transitions: number;
55
+ executionCount: number;
56
+ history: import("../workflow-types.js").StepAttemptRecord[];
57
+ events: import("../workflow-types.js").WorkflowEvent[];
58
+ budget: import("./contracts.js").WorkflowBudget;
59
+ usage: {
60
+ costUsd: number | null;
61
+ inputTokens: number | null;
62
+ outputTokens: number | null;
63
+ knownCostUsd: number;
64
+ knownTokens: number;
65
+ durationMs: number;
83
66
  };
84
- escalations: {
85
- role: string;
86
- attemptId: string;
87
- provider: string;
88
- model: string | null;
89
- effort: string | null;
90
- reason: string | null;
91
- }[];
92
- escalationsTruncated: boolean;
93
- checks: {
94
- invalidated: number | null;
95
- available: boolean;
96
- complete: boolean;
97
- executed: number | null;
98
- reused: number | null;
99
- notRun: number | null;
100
- durationMs: number | null;
67
+ pendingApproval?: {
68
+ stepId: string;
69
+ requestedAt: string;
70
+ grantedAt?: string;
71
+ reason?: string;
101
72
  };
102
- metrics: import("../efficiency-types.js").RuntimeEfficiency;
103
- };
104
- revision: number;
105
- eventCursor: number;
106
- forkOf?: string | undefined;
107
- type: "runtime-status";
108
- engineVersion: number;
109
- state: {
73
+ pendingQuestion?: {
74
+ stepId: string;
75
+ requestedAt: string;
76
+ question: string;
77
+ answeredAt?: string;
78
+ answer?: string;
79
+ };
80
+ error?: string;
110
81
  nextNodePath: string;
111
82
  nextStep: string;
112
83
  steps: {
@@ -117,7 +88,6 @@ export declare function createRun(input: DefinitionRunInput & RunObservers): Pro
117
88
  };
118
89
  };
119
90
  scopes: {
120
- output?: unknown;
121
91
  nodePath: string;
122
92
  scopeId: string;
123
93
  branch: import("node:sqlite").SQLOutputValue;
@@ -125,6 +95,7 @@ export declare function createRun(input: DefinitionRunInput & RunObservers): Pro
125
95
  status: string;
126
96
  visits: number;
127
97
  attemptId: string | null;
98
+ output?: unknown;
128
99
  }[];
129
100
  lease: {
130
101
  owner: string;
@@ -137,7 +108,7 @@ export declare function createRun(input: DefinitionRunInput & RunObservers): Pro
137
108
  scopeId: string;
138
109
  attemptId: string;
139
110
  status: string;
140
- effect: "write";
111
+ effect: 'write';
141
112
  }[];
142
113
  steering: {
143
114
  receipts: import("./steering/inbox.js").SteeringReceipt[];
@@ -177,22 +148,11 @@ export declare function createRun(input: DefinitionRunInput & RunObservers): Pro
177
148
  message: string;
178
149
  };
179
150
  }[];
180
- schemaVersion: 2;
151
+ } | {
181
152
  runId: string;
182
153
  traceId: string;
183
- workflowId: string;
184
- workflowVersion: string;
185
- workflowFingerprint: string;
186
- inputFingerprint: string;
187
154
  status: import("../workflow-types.js").WorkflowStatus;
188
- createdAt: string;
189
155
  updatedAt: string;
190
- nextAttempt: number;
191
- transitions: number;
192
- executionCount: number;
193
- history: import("../workflow-types.js").StepAttemptRecord[];
194
- events: import("../workflow-types.js").WorkflowEvent[];
195
- budget: import("./contracts.js").WorkflowBudget;
196
156
  usage: {
197
157
  costUsd: number | null;
198
158
  inputTokens: number | null;
@@ -206,16 +166,14 @@ export declare function createRun(input: DefinitionRunInput & RunObservers): Pro
206
166
  requestedAt: string;
207
167
  grantedAt?: string;
208
168
  reason?: string;
209
- };
169
+ } | undefined;
210
170
  pendingQuestion?: {
211
171
  stepId: string;
212
172
  requestedAt: string;
213
173
  question: string;
214
174
  answeredAt?: string;
215
175
  answer?: string;
216
- };
217
- error?: string;
218
- } | {
176
+ } | undefined;
219
177
  nextNodePath: string;
220
178
  nextStep: string;
221
179
  steps: {
@@ -226,7 +184,6 @@ export declare function createRun(input: DefinitionRunInput & RunObservers): Pro
226
184
  };
227
185
  };
228
186
  scopes: {
229
- output?: unknown;
230
187
  nodePath: string;
231
188
  scopeId: string;
232
189
  branch: import("node:sqlite").SQLOutputValue;
@@ -234,6 +191,7 @@ export declare function createRun(input: DefinitionRunInput & RunObservers): Pro
234
191
  status: string;
235
192
  visits: number;
236
193
  attemptId: string | null;
194
+ output?: unknown;
237
195
  }[];
238
196
  lease: {
239
197
  owner: string;
@@ -246,7 +204,7 @@ export declare function createRun(input: DefinitionRunInput & RunObservers): Pro
246
204
  scopeId: string;
247
205
  attemptId: string;
248
206
  status: string;
249
- effect: "write";
207
+ effect: 'write';
250
208
  }[];
251
209
  steering: {
252
210
  receipts: import("./steering/inbox.js").SteeringReceipt[];
@@ -286,31 +244,6 @@ export declare function createRun(input: DefinitionRunInput & RunObservers): Pro
286
244
  message: string;
287
245
  };
288
246
  }[];
289
- pendingQuestion?: {
290
- stepId: string;
291
- requestedAt: string;
292
- question: string;
293
- answeredAt?: string;
294
- answer?: string;
295
- } | undefined;
296
- pendingApproval?: {
297
- stepId: string;
298
- requestedAt: string;
299
- grantedAt?: string;
300
- reason?: string;
301
- } | undefined;
302
- runId: string;
303
- traceId: string;
304
- status: import("../workflow-types.js").WorkflowStatus;
305
- updatedAt: string;
306
- usage: {
307
- costUsd: number | null;
308
- inputTokens: number | null;
309
- outputTokens: number | null;
310
- knownCostUsd: number;
311
- knownTokens: number;
312
- durationMs: number;
313
- };
314
247
  };
315
248
  workflow: {
316
249
  id: string;
@@ -318,17 +251,9 @@ export declare function createRun(input: DefinitionRunInput & RunObservers): Pro
318
251
  source: string;
319
252
  };
320
253
  completion: any;
321
- }>;
322
- export declare function resumeRun(directory: string, options?: ResumeDefinitionOptions): Promise<{
254
+ forkOf?: string | undefined;
323
255
  metrics: import("../efficiency-types.js").RuntimeEfficiency;
324
256
  efficiencySummary: {
325
- reservations: {
326
- pendingInvocations: number;
327
- knownTokens: number;
328
- knownCostUsd: number;
329
- tokensUnknown: boolean;
330
- costUnknown: boolean;
331
- };
332
257
  schemaVersion: 1;
333
258
  currentEvidenceIds: string[];
334
259
  planHash: string | null;
@@ -337,7 +262,7 @@ export declare function resumeRun(directory: string, options?: ResumeDefinitionO
337
262
  workflowVersion: string;
338
263
  technicalAcceptance: string;
339
264
  archive: import("../../pipeline/pipeline-state.js").PhaseStatus;
340
- delivery: "pending" | "complete" | "pending-host";
265
+ delivery: "complete" | "pending" | "pending-host";
341
266
  roles: {
342
267
  role: string;
343
268
  provider: string | null;
@@ -379,13 +304,63 @@ export declare function resumeRun(directory: string, options?: ResumeDefinitionO
379
304
  durationMs: number | null;
380
305
  };
381
306
  metrics: import("../efficiency-types.js").RuntimeEfficiency;
307
+ reservations: {
308
+ pendingInvocations: number;
309
+ knownTokens: number;
310
+ knownCostUsd: number;
311
+ tokensUnknown: boolean;
312
+ costUnknown: boolean;
313
+ };
382
314
  };
383
315
  revision: number;
384
316
  eventCursor: number;
385
- forkOf?: string | undefined;
386
- type: "runtime-status";
317
+ error?: {
318
+ code: string;
319
+ message: string;
320
+ } | undefined;
321
+ }>;
322
+ export declare function resumeRun(directory: string, options?: ResumeDefinitionOptions): Promise<{
323
+ type: 'runtime-status';
387
324
  engineVersion: number;
388
325
  state: {
326
+ schemaVersion: 2;
327
+ runId: string;
328
+ traceId: string;
329
+ workflowId: string;
330
+ workflowVersion: string;
331
+ workflowFingerprint: string;
332
+ inputFingerprint: string;
333
+ status: import("../workflow-types.js").WorkflowStatus;
334
+ createdAt: string;
335
+ updatedAt: string;
336
+ nextAttempt: number;
337
+ transitions: number;
338
+ executionCount: number;
339
+ history: import("../workflow-types.js").StepAttemptRecord[];
340
+ events: import("../workflow-types.js").WorkflowEvent[];
341
+ budget: import("./contracts.js").WorkflowBudget;
342
+ usage: {
343
+ costUsd: number | null;
344
+ inputTokens: number | null;
345
+ outputTokens: number | null;
346
+ knownCostUsd: number;
347
+ knownTokens: number;
348
+ durationMs: number;
349
+ };
350
+ pendingApproval?: {
351
+ stepId: string;
352
+ requestedAt: string;
353
+ grantedAt?: string;
354
+ reason?: string;
355
+ };
356
+ pendingQuestion?: {
357
+ stepId: string;
358
+ requestedAt: string;
359
+ question: string;
360
+ answeredAt?: string;
361
+ answer?: string;
362
+ };
363
+ error?: string;
389
364
  nextNodePath: string;
390
365
  nextStep: string;
391
366
  steps: {
@@ -396,7 +371,6 @@ export declare function resumeRun(directory: string, options?: ResumeDefinitionO
396
371
  };
397
372
  };
398
373
  scopes: {
399
- output?: unknown;
400
374
  nodePath: string;
401
375
  scopeId: string;
402
376
  branch: import("node:sqlite").SQLOutputValue;
@@ -404,6 +378,7 @@ export declare function resumeRun(directory: string, options?: ResumeDefinitionO
404
378
  status: string;
405
379
  visits: number;
406
380
  attemptId: string | null;
381
+ output?: unknown;
407
382
  }[];
408
383
  lease: {
409
384
  owner: string;
@@ -416,7 +391,7 @@ export declare function resumeRun(directory: string, options?: ResumeDefinitionO
416
391
  scopeId: string;
417
392
  attemptId: string;
418
393
  status: string;
419
- effect: "write";
394
+ effect: 'write';
420
395
  }[];
421
396
  steering: {
422
397
  receipts: import("./steering/inbox.js").SteeringReceipt[];
@@ -456,22 +431,11 @@ export declare function resumeRun(directory: string, options?: ResumeDefinitionO
456
431
  message: string;
457
432
  };
458
433
  }[];
459
- schemaVersion: 2;
434
+ } | {
460
435
  runId: string;
461
436
  traceId: string;
462
- workflowId: string;
463
- workflowVersion: string;
464
- workflowFingerprint: string;
465
- inputFingerprint: string;
466
437
  status: import("../workflow-types.js").WorkflowStatus;
467
- createdAt: string;
468
438
  updatedAt: string;
469
- nextAttempt: number;
470
- transitions: number;
471
- executionCount: number;
472
- history: import("../workflow-types.js").StepAttemptRecord[];
473
- events: import("../workflow-types.js").WorkflowEvent[];
474
- budget: import("./contracts.js").WorkflowBudget;
475
439
  usage: {
476
440
  costUsd: number | null;
477
441
  inputTokens: number | null;
@@ -485,16 +449,14 @@ export declare function resumeRun(directory: string, options?: ResumeDefinitionO
485
449
  requestedAt: string;
486
450
  grantedAt?: string;
487
451
  reason?: string;
488
- };
452
+ } | undefined;
489
453
  pendingQuestion?: {
490
454
  stepId: string;
491
455
  requestedAt: string;
492
456
  question: string;
493
457
  answeredAt?: string;
494
458
  answer?: string;
495
- };
496
- error?: string;
497
- } | {
459
+ } | undefined;
498
460
  nextNodePath: string;
499
461
  nextStep: string;
500
462
  steps: {
@@ -505,7 +467,6 @@ export declare function resumeRun(directory: string, options?: ResumeDefinitionO
505
467
  };
506
468
  };
507
469
  scopes: {
508
- output?: unknown;
509
470
  nodePath: string;
510
471
  scopeId: string;
511
472
  branch: import("node:sqlite").SQLOutputValue;
@@ -513,6 +474,7 @@ export declare function resumeRun(directory: string, options?: ResumeDefinitionO
513
474
  status: string;
514
475
  visits: number;
515
476
  attemptId: string | null;
477
+ output?: unknown;
516
478
  }[];
517
479
  lease: {
518
480
  owner: string;
@@ -525,7 +487,7 @@ export declare function resumeRun(directory: string, options?: ResumeDefinitionO
525
487
  scopeId: string;
526
488
  attemptId: string;
527
489
  status: string;
528
- effect: "write";
490
+ effect: 'write';
529
491
  }[];
530
492
  steering: {
531
493
  receipts: import("./steering/inbox.js").SteeringReceipt[];
@@ -565,31 +527,6 @@ export declare function resumeRun(directory: string, options?: ResumeDefinitionO
565
527
  message: string;
566
528
  };
567
529
  }[];
568
- pendingQuestion?: {
569
- stepId: string;
570
- requestedAt: string;
571
- question: string;
572
- answeredAt?: string;
573
- answer?: string;
574
- } | undefined;
575
- pendingApproval?: {
576
- stepId: string;
577
- requestedAt: string;
578
- grantedAt?: string;
579
- reason?: string;
580
- } | undefined;
581
- runId: string;
582
- traceId: string;
583
- status: import("../workflow-types.js").WorkflowStatus;
584
- updatedAt: string;
585
- usage: {
586
- costUsd: number | null;
587
- inputTokens: number | null;
588
- outputTokens: number | null;
589
- knownCostUsd: number;
590
- knownTokens: number;
591
- durationMs: number;
592
- };
593
530
  };
594
531
  workflow: {
595
532
  id: string;
@@ -597,6 +534,69 @@ export declare function resumeRun(directory: string, options?: ResumeDefinitionO
597
534
  source: string;
598
535
  };
599
536
  completion: any;
537
+ forkOf?: string | undefined;
538
+ metrics: import("../efficiency-types.js").RuntimeEfficiency;
539
+ efficiencySummary: {
540
+ schemaVersion: 1;
541
+ currentEvidenceIds: string[];
542
+ planHash: string | null;
543
+ candidateHash: string | null;
544
+ runId: string;
545
+ workflowVersion: string;
546
+ technicalAcceptance: string;
547
+ archive: import("../../pipeline/pipeline-state.js").PhaseStatus;
548
+ delivery: "complete" | "pending" | "pending-host";
549
+ roles: {
550
+ role: string;
551
+ provider: string | null;
552
+ model: string | null;
553
+ effort: string | null;
554
+ observedModel: null;
555
+ observedEffort: null;
556
+ origin: string;
557
+ tier: "base" | "escalation";
558
+ }[];
559
+ invocations: {
560
+ byKind: {
561
+ [k: string]: number;
562
+ };
563
+ total: number;
564
+ complete: boolean;
565
+ promptBytes: number | null;
566
+ contextBytes: number | null;
567
+ handoffBytes: number | null;
568
+ fullContexts: number;
569
+ incrementalContexts: number;
570
+ };
571
+ escalations: {
572
+ role: string;
573
+ attemptId: string;
574
+ provider: string;
575
+ model: string | null;
576
+ effort: string | null;
577
+ reason: string | null;
578
+ }[];
579
+ escalationsTruncated: boolean;
580
+ checks: {
581
+ invalidated: number | null;
582
+ available: boolean;
583
+ complete: boolean;
584
+ executed: number | null;
585
+ reused: number | null;
586
+ notRun: number | null;
587
+ durationMs: number | null;
588
+ };
589
+ metrics: import("../efficiency-types.js").RuntimeEfficiency;
590
+ reservations: {
591
+ pendingInvocations: number;
592
+ knownTokens: number;
593
+ knownCostUsd: number;
594
+ tokensUnknown: boolean;
595
+ costUnknown: boolean;
596
+ };
597
+ };
598
+ revision: number;
599
+ eventCursor: number;
600
600
  }>;
601
601
  export declare function signalRun(directory: string, text: string, requestId?: string): Promise<import("./steering/inbox.js").SteeringMessage>;
602
602
  export declare function cancelRun(directory: string, requestId?: string): Promise<{
@@ -14,48 +14,48 @@ export declare function mergeOrdered<T extends OrderedRecord>(previous: T[], upd
14
14
  export declare function mergeHistory(previous: HistoryEntry[], update: HistoryEntry[], maxChars: number): HistoryEntry[];
15
15
  /** Private commit markers reach each task's saver writes and expire after a superstep. */
16
16
  export declare function definitionStateSchema(historyMaxChars?: number, scope?: ExecutionScope | null): import("@langchain/langgraph").AnnotationRoot<{
17
- $outputs: import("@langchain/langgraph").BaseChannel<Record<string, JsonValue>, Record<string, JsonValue> | import("@langchain/langgraph").OverwriteValue<Record<string, JsonValue>>, unknown>;
18
- $vars: import("@langchain/langgraph").BaseChannel<Record<string, JsonValue>, Record<string, JsonValue> | import("@langchain/langgraph").OverwriteValue<Record<string, JsonValue>>, unknown>;
17
+ $outputs: import("@langchain/langgraph").BaseChannel<Record<string, JsonValue>, import("@langchain/langgraph").OverwriteValue<Record<string, JsonValue>> | Record<string, JsonValue>, unknown>;
18
+ $vars: import("@langchain/langgraph").BaseChannel<Record<string, JsonValue>, import("@langchain/langgraph").OverwriteValue<Record<string, JsonValue>> | Record<string, JsonValue>, unknown>;
19
19
  $history: import("@langchain/langgraph").BaseChannel<HistoryEntry[], HistoryEntry[] | import("@langchain/langgraph").OverwriteValue<HistoryEntry[]>, unknown>;
20
20
  $sessions: import("@langchain/langgraph").BaseChannel<Record<string, {
21
21
  sessionId: string;
22
22
  identity: string;
23
- }>, Record<string, {
23
+ }>, import("@langchain/langgraph").OverwriteValue<Record<string, {
24
24
  sessionId: string;
25
25
  identity: string;
26
- }> | import("@langchain/langgraph").OverwriteValue<Record<string, {
26
+ }>> | Record<string, {
27
27
  sessionId: string;
28
28
  identity: string;
29
- }>>, unknown>;
29
+ }>, unknown>;
30
30
  $usage: import("@langchain/langgraph").BaseChannel<EngineUsage, EngineUsage | import("@langchain/langgraph").OverwriteValue<EngineUsage>, unknown>;
31
- $attempts: import("@langchain/langgraph").BaseChannel<Record<string, number>, Record<string, number> | import("@langchain/langgraph").OverwriteValue<Record<string, number>>, unknown>;
31
+ $attempts: import("@langchain/langgraph").BaseChannel<Record<string, number>, import("@langchain/langgraph").OverwriteValue<Record<string, number>> | Record<string, number>, unknown>;
32
32
  $consecutiveFailures: import("@langchain/langgraph").BaseChannel<{
33
33
  revision: number;
34
34
  count: number;
35
- }, {
35
+ }, import("@langchain/langgraph").OverwriteValue<{
36
36
  revision: number;
37
37
  count: number;
38
- } | import("@langchain/langgraph").OverwriteValue<{
38
+ }> | {
39
39
  revision: number;
40
40
  count: number;
41
- }>, unknown>;
41
+ }, unknown>;
42
42
  $candidate: import("@langchain/langgraph").BaseChannel<CandidateState | null, CandidateState | import("@langchain/langgraph").OverwriteValue<CandidateState | null> | null, unknown>;
43
- $verified: import("@langchain/langgraph").BaseChannel<VerifiedState | null, VerifiedState | import("@langchain/langgraph").OverwriteValue<VerifiedState | null> | null, unknown>;
43
+ $verified: import("@langchain/langgraph").BaseChannel<VerifiedState | null, import("@langchain/langgraph").OverwriteValue<VerifiedState | null> | VerifiedState | null, unknown>;
44
44
  $answers: import("@langchain/langgraph").BaseChannel<EngineAnswer[], EngineAnswer[] | import("@langchain/langgraph").OverwriteValue<EngineAnswer[]>, unknown>;
45
- $branches: import("@langchain/langgraph").BaseChannel<Record<string, BranchState>, Record<string, BranchState> | import("@langchain/langgraph").OverwriteValue<Record<string, BranchState>>, unknown>;
46
- $maps: import("@langchain/langgraph").BaseChannel<Record<string, import("./contracts.js").MapPlan>, Record<string, import("./contracts.js").MapPlan> | import("@langchain/langgraph").OverwriteValue<Record<string, import("./contracts.js").MapPlan>>, unknown>;
45
+ $branches: import("@langchain/langgraph").BaseChannel<Record<string, BranchState>, import("@langchain/langgraph").OverwriteValue<Record<string, BranchState>> | Record<string, BranchState>, unknown>;
46
+ $maps: import("@langchain/langgraph").BaseChannel<Record<string, import("./contracts.js").MapPlan>, import("@langchain/langgraph").OverwriteValue<Record<string, import("./contracts.js").MapPlan>> | Record<string, import("./contracts.js").MapPlan>, unknown>;
47
47
  $transitions: import("@langchain/langgraph").BaseChannel<number, number | import("@langchain/langgraph").OverwriteValue<number>, unknown>;
48
- $lastOutcome: import("@langchain/langgraph").BaseChannel<Record<string, string>, Record<string, string> | import("@langchain/langgraph").OverwriteValue<Record<string, string>>, unknown>;
48
+ $lastOutcome: import("@langchain/langgraph").BaseChannel<Record<string, string>, import("@langchain/langgraph").OverwriteValue<Record<string, string>> | Record<string, string>, unknown>;
49
49
  $item: import("@langchain/langgraph").BaseChannel<{
50
50
  index: number;
51
51
  value: JsonValue;
52
- } | null, {
52
+ } | null, import("@langchain/langgraph").OverwriteValue<{
53
53
  index: number;
54
54
  value: JsonValue;
55
- } | import("@langchain/langgraph").OverwriteValue<{
55
+ } | null> | {
56
56
  index: number;
57
57
  value: JsonValue;
58
- } | null> | null, unknown>;
58
+ } | null, unknown>;
59
59
  $scope: import("@langchain/langgraph").BaseChannel<ExecutionScope, ExecutionScope | import("@langchain/langgraph").OverwriteValue<ExecutionScope>, unknown>;
60
60
  $exit: import("@langchain/langgraph").BaseChannel<import("./contracts.js").ComponentExit | null, import("./contracts.js").ComponentExit | import("@langchain/langgraph").OverwriteValue<import("./contracts.js").ComponentExit | null> | null, unknown>;
61
61
  $commit: EphemeralValue<TerminalCommit>;
@@ -10,6 +10,9 @@ export interface EvaluationOptions {
10
10
  repetitions?: number;
11
11
  }
12
12
  export declare function runEvaluation(options: EvaluationOptions): Promise<{
13
+ schemaVersion: number;
14
+ isDefinitionEvaluation: boolean;
15
+ definitionHash?: string | null | undefined;
13
16
  acceptedCases: number;
14
17
  allCasesAccepted: boolean;
15
18
  experiment: string;
@@ -44,7 +47,4 @@ export declare function runEvaluation(options: EvaluationOptions): Promise<{
44
47
  stopReason: string | null;
45
48
  reportedSpendUsd: number;
46
49
  observations: Record<string, unknown>[];
47
- definitionHash?: string | null | undefined;
48
- schemaVersion: number;
49
- isDefinitionEvaluation: boolean;
50
50
  }>;
@@ -3,7 +3,7 @@ import type { CacheTokenUsage } from './efficiency-types.js';
3
3
  import type { GuardrailSettings } from './guardrails.js';
4
4
  export declare const DEFAULT_AGENT_TIMEOUT_MS: number;
5
5
  export declare const DEFAULT_AGENT_IDLE_TIMEOUT_MS: number;
6
- export declare const BUILTIN_ROLES: readonly ["architect", "developer", "reviewer"];
6
+ export declare const BUILTIN_ROLES: readonly ['architect', 'developer', 'reviewer'];
7
7
  export type BuiltinAgentRole = typeof BUILTIN_ROLES[number];
8
8
  export type AgentRole = string;
9
9
  export type AgentAccess = 'read' | 'write';
@@ -13,19 +13,19 @@ export declare const ROLE_ID: RegExp;
13
13
  export declare function isBuiltinRole(role: string): role is BuiltinAgentRole;
14
14
  export declare const BUILTIN_ROLE_POLICY: {
15
15
  readonly architect: {
16
- readonly access: "read";
17
- readonly artifacts: "all";
18
- readonly openspecSkill: "openspec-ff-change";
16
+ readonly access: 'read';
17
+ readonly artifacts: 'all';
18
+ readonly openspecSkill: 'openspec-ff-change';
19
19
  };
20
20
  readonly developer: {
21
- readonly access: "write";
22
- readonly artifacts: "tasks-checkboxes";
23
- readonly openspecSkill: "openspec-apply-change";
21
+ readonly access: 'write';
22
+ readonly artifacts: 'tasks-checkboxes';
23
+ readonly openspecSkill: 'openspec-apply-change';
24
24
  };
25
25
  readonly reviewer: {
26
- readonly access: "read";
27
- readonly artifacts: "none";
28
- readonly openspecSkill: "openspec-verify-change";
26
+ readonly access: 'read';
27
+ readonly artifacts: 'none';
28
+ readonly openspecSkill: 'openspec-verify-change';
29
29
  };
30
30
  };
31
31
  /** Who an observer sees acting: a pipeline role, or the FIXER stance the developer step takes on a correction round. */
@@ -1,4 +1,4 @@
1
- import type { VerificationReceipt } from '../../pipeline/pipeline-state.js';
1
+ import { type VerificationReceipt } from '../../pipeline/pipeline-state.js';
2
2
  import type { WorkflowState } from '../workflow-types.js';
3
3
  /** One verify visit, as the convergence guard remembers it. */
4
4
  export interface VerifyOutcome {
@@ -13,7 +13,7 @@ export interface VerifyOutcome {
13
13
  /** Verify visits since the latest explicit resume: a human continuing a blocked run grants a fresh budget, as for attempts. */
14
14
  export declare function outcomesSinceResume(history: readonly VerifyOutcome[], checkpoint: WorkflowState): VerifyOutcome[];
15
15
  /** Identity and one-line description of a failed receipt (or of a host finding that failed a green receipt). */
16
- export declare function describeFailure(receipt: Pick<VerificationReceipt, 'commands' | 'reason'>, roots: readonly string[], finding?: string): {
16
+ export declare function describeFailure(receipt: Pick<VerificationReceipt, 'commands' | 'reason' | 'selfMutation'>, roots: readonly string[], finding?: string): {
17
17
  signature: string;
18
18
  summary: string;
19
19
  };