@claudexor/orchestrator 3.1.1 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/attemptFinalize.d.ts +14 -11
  2. package/dist/attemptFinalize.d.ts.map +1 -1
  3. package/dist/attemptFinalize.js +41 -14
  4. package/dist/attemptFinalize.js.map +1 -1
  5. package/dist/attemptTelemetry.d.ts +16 -20
  6. package/dist/attemptTelemetry.d.ts.map +1 -1
  7. package/dist/attemptTelemetry.js +38 -70
  8. package/dist/attemptTelemetry.js.map +1 -1
  9. package/dist/attemptUsageCost.d.ts +47 -0
  10. package/dist/attemptUsageCost.d.ts.map +1 -0
  11. package/dist/attemptUsageCost.js +191 -0
  12. package/dist/attemptUsageCost.js.map +1 -0
  13. package/dist/budgetFailure.d.ts +3 -1
  14. package/dist/budgetFailure.d.ts.map +1 -1
  15. package/dist/budgetFailure.js.map +1 -1
  16. package/dist/candidateEvidence.d.ts +5 -0
  17. package/dist/candidateEvidence.d.ts.map +1 -1
  18. package/dist/candidateEvidence.js +3 -1
  19. package/dist/candidateEvidence.js.map +1 -1
  20. package/dist/candidateOutputs.d.ts +19 -0
  21. package/dist/candidateOutputs.d.ts.map +1 -1
  22. package/dist/candidateOutputs.js +201 -67
  23. package/dist/candidateOutputs.js.map +1 -1
  24. package/dist/credential-profile-rotation.d.ts +145 -0
  25. package/dist/credential-profile-rotation.d.ts.map +1 -0
  26. package/dist/credential-profile-rotation.js +315 -0
  27. package/dist/credential-profile-rotation.js.map +1 -0
  28. package/dist/credential-profiles.d.ts +35 -134
  29. package/dist/credential-profiles.d.ts.map +1 -1
  30. package/dist/credential-profiles.js +73 -295
  31. package/dist/credential-profiles.js.map +1 -1
  32. package/dist/decisionBudget.d.ts +43 -0
  33. package/dist/decisionBudget.d.ts.map +1 -0
  34. package/dist/decisionBudget.js +84 -0
  35. package/dist/decisionBudget.js.map +1 -0
  36. package/dist/decisionTerminalReconciliation.d.ts +18 -0
  37. package/dist/decisionTerminalReconciliation.d.ts.map +1 -0
  38. package/dist/decisionTerminalReconciliation.js +26 -0
  39. package/dist/decisionTerminalReconciliation.js.map +1 -0
  40. package/dist/deepScanReducer.d.ts +14 -44
  41. package/dist/deepScanReducer.d.ts.map +1 -1
  42. package/dist/deepScanReducer.js +240 -128
  43. package/dist/deepScanReducer.js.map +1 -1
  44. package/dist/delegation-parent-activation.d.ts +6 -0
  45. package/dist/delegation-parent-activation.d.ts.map +1 -0
  46. package/dist/delegation-parent-activation.js +13 -0
  47. package/dist/delegation-parent-activation.js.map +1 -0
  48. package/dist/delegationBudgetAuthority.d.ts +30 -0
  49. package/dist/delegationBudgetAuthority.d.ts.map +1 -0
  50. package/dist/delegationBudgetAuthority.js +157 -0
  51. package/dist/delegationBudgetAuthority.js.map +1 -0
  52. package/dist/delegationFailure.d.ts +58 -0
  53. package/dist/delegationFailure.d.ts.map +1 -0
  54. package/dist/delegationFailure.js +184 -0
  55. package/dist/delegationFailure.js.map +1 -0
  56. package/dist/delegationToolEvidence.d.ts +20 -0
  57. package/dist/delegationToolEvidence.d.ts.map +1 -0
  58. package/dist/delegationToolEvidence.js +46 -0
  59. package/dist/delegationToolEvidence.js.map +1 -0
  60. package/dist/git-precondition.d.ts +11 -0
  61. package/dist/git-precondition.d.ts.map +1 -0
  62. package/dist/git-precondition.js +69 -0
  63. package/dist/git-precondition.js.map +1 -0
  64. package/dist/index.d.ts +3 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +3 -1
  67. package/dist/index.js.map +1 -1
  68. package/dist/interaction.d.ts +14 -6
  69. package/dist/interaction.d.ts.map +1 -1
  70. package/dist/interaction.js +106 -19
  71. package/dist/interaction.js.map +1 -1
  72. package/dist/orchestrator.d.ts +62 -115
  73. package/dist/orchestrator.d.ts.map +1 -1
  74. package/dist/orchestrator.js +671 -965
  75. package/dist/orchestrator.js.map +1 -1
  76. package/dist/plan-prompt.d.ts +3 -0
  77. package/dist/plan-prompt.d.ts.map +1 -0
  78. package/dist/plan-prompt.js +28 -0
  79. package/dist/plan-prompt.js.map +1 -0
  80. package/dist/planBrief.d.ts +27 -0
  81. package/dist/planBrief.d.ts.map +1 -0
  82. package/dist/planBrief.js +42 -0
  83. package/dist/planBrief.js.map +1 -0
  84. package/dist/planRun.d.ts +4 -3
  85. package/dist/planRun.d.ts.map +1 -1
  86. package/dist/planRun.js +33 -33
  87. package/dist/planRun.js.map +1 -1
  88. package/dist/plannerAttempt.d.ts +64 -0
  89. package/dist/plannerAttempt.d.ts.map +1 -0
  90. package/dist/plannerAttempt.js +235 -0
  91. package/dist/plannerAttempt.js.map +1 -0
  92. package/dist/policyFindings.js.map +1 -1
  93. package/dist/requestRequirements.d.ts +45 -1
  94. package/dist/requestRequirements.d.ts.map +1 -1
  95. package/dist/requestRequirements.js +158 -11
  96. package/dist/requestRequirements.js.map +1 -1
  97. package/dist/reviewerPanel.js.map +1 -1
  98. package/dist/root-ledger.d.ts +13 -0
  99. package/dist/root-ledger.d.ts.map +1 -0
  100. package/dist/root-ledger.js +21 -0
  101. package/dist/root-ledger.js.map +1 -0
  102. package/dist/routing-failure.d.ts +6 -0
  103. package/dist/routing-failure.d.ts.map +1 -0
  104. package/dist/routing-failure.js +12 -0
  105. package/dist/routing-failure.js.map +1 -0
  106. package/dist/run-bounded.d.ts +3 -0
  107. package/dist/run-bounded.d.ts.map +1 -0
  108. package/dist/run-bounded.js +23 -0
  109. package/dist/run-bounded.js.map +1 -0
  110. package/dist/run-input-resolution.d.ts +10 -0
  111. package/dist/run-input-resolution.d.ts.map +1 -0
  112. package/dist/run-input-resolution.js +88 -0
  113. package/dist/run-input-resolution.js.map +1 -0
  114. package/dist/runEventLog.d.ts +48 -0
  115. package/dist/runEventLog.d.ts.map +1 -0
  116. package/dist/runEventLog.js +63 -0
  117. package/dist/runEventLog.js.map +1 -0
  118. package/dist/runFacts.d.ts +23 -0
  119. package/dist/runFacts.d.ts.map +1 -0
  120. package/dist/runFacts.js +179 -0
  121. package/dist/runFacts.js.map +1 -0
  122. package/dist/runFactsBuilder.d.ts +5 -0
  123. package/dist/runFactsBuilder.d.ts.map +1 -0
  124. package/dist/runFactsBuilder.js +412 -0
  125. package/dist/runFactsBuilder.js.map +1 -0
  126. package/dist/runFactsDeliverable.d.ts +13 -0
  127. package/dist/runFactsDeliverable.d.ts.map +1 -0
  128. package/dist/runFactsDeliverable.js +94 -0
  129. package/dist/runFactsDeliverable.js.map +1 -0
  130. package/dist/runFactsPresentation.d.ts +7 -0
  131. package/dist/runFactsPresentation.d.ts.map +1 -0
  132. package/dist/runFactsPresentation.js +113 -0
  133. package/dist/runFactsPresentation.js.map +1 -0
  134. package/dist/runFactsReview.d.ts +7 -0
  135. package/dist/runFactsReview.d.ts.map +1 -0
  136. package/dist/runFactsReview.js +63 -0
  137. package/dist/runFactsReview.js.map +1 -0
  138. package/dist/runSupport.d.ts +17 -15
  139. package/dist/runSupport.d.ts.map +1 -1
  140. package/dist/runSupport.js +16 -0
  141. package/dist/runSupport.js.map +1 -1
  142. package/dist/runTelemetryWriter.d.ts +5 -2
  143. package/dist/runTelemetryWriter.d.ts.map +1 -1
  144. package/dist/runTelemetryWriter.js +72 -1
  145. package/dist/runTelemetryWriter.js.map +1 -1
  146. package/dist/runTerminalContext.d.ts +31 -0
  147. package/dist/runTerminalContext.d.ts.map +1 -0
  148. package/dist/runTerminalContext.js +12 -0
  149. package/dist/runTerminalContext.js.map +1 -0
  150. package/dist/runTerminalResults.d.ts +55 -0
  151. package/dist/runTerminalResults.d.ts.map +1 -0
  152. package/dist/runTerminalResults.js +134 -0
  153. package/dist/runTerminalResults.js.map +1 -0
  154. package/dist/runTerminals.d.ts +8 -57
  155. package/dist/runTerminals.d.ts.map +1 -1
  156. package/dist/runTerminals.js +423 -135
  157. package/dist/runTerminals.js.map +1 -1
  158. package/dist/secretDiff.d.ts +32 -0
  159. package/dist/secretDiff.d.ts.map +1 -0
  160. package/dist/secretDiff.js +140 -0
  161. package/dist/secretDiff.js.map +1 -0
  162. package/dist/structuredOutput.d.ts.map +1 -1
  163. package/dist/structuredOutput.js.map +1 -1
  164. package/dist/task-contract-builder.d.ts +35 -0
  165. package/dist/task-contract-builder.d.ts.map +1 -0
  166. package/dist/task-contract-builder.js +114 -0
  167. package/dist/task-contract-builder.js.map +1 -0
  168. package/dist/terminalOutcome.d.ts +22 -0
  169. package/dist/terminalOutcome.d.ts.map +1 -0
  170. package/dist/terminalOutcome.js +39 -0
  171. package/dist/terminalOutcome.js.map +1 -0
  172. package/dist/transientClassify.js.map +1 -1
  173. package/package.json +17 -17
@@ -23,9 +23,9 @@ import type { ToolErrorRecord, WebEvidenceState } from "./attemptTelemetry.js";
23
23
  * - `side_tool`: a `{work_report}`-only schema arms claude's StructuredOutput
24
24
  * TOOL; the markdown final message stays the deliverable and the report rides
25
25
  * the tool payload (surfaced on the final message's `work_report_side_tool`).
26
- * - `instructed_fence`: no native constraint — the model is INSTRUCTED to end
27
- * its answer with a fenced `{work_report, output}` JSON block, validated off
28
- * the last fenced JSON (cursor).
26
+ * - `instructed_fence`: no native constraint — the model writes its complete
27
+ * markdown answer, then appends a fenced `{work_report}` metadata block
28
+ * validated off the last fenced JSON (cursor).
29
29
  */
30
30
  export type WorkReportChannel = "constrained_json" | "side_tool" | "instructed_fence";
31
31
  /** The per-attempt envelope decision made at spec build and consumed by the
@@ -41,9 +41,10 @@ export interface WorkReportEnvelopeMode {
41
41
  }
42
42
  /**
43
43
  * The instruction appended to an `instructed_fence` (cursor) route so the model
44
- * emits the WorkReport envelope the finalizer validates. No native schema
44
+ * emits the WorkReport footer the finalizer validates. No native schema
45
45
  * constrains cursor, so the contract is instructed and validated off the last
46
- * fenced JSON block (D-16c). The `output` string carries the deliverable prose.
46
+ * fenced JSON block (D-16c). The normal markdown before that footer is the
47
+ * deliverable; a historical fence-only `output` remains a read fallback.
47
48
  */
48
49
  export declare const WORK_REPORT_FENCE_INSTRUCTION: string;
49
50
  /** Result of the spec-build envelope decision. */
@@ -87,8 +88,9 @@ export interface UnwrappedAnswer {
87
88
  * Un-nest the WorkReport envelope from an active route's answer (D-16 §2). The
88
89
  * behavior forks on `mode.channel`:
89
90
  * - `constrained_json`: the whole answer IS `{work_report, output}` JSON.
90
- * - `instructed_fence`: the envelope is the LAST fenced JSON block; prose
91
- * before it is discarded (the `output` string is the deliverable).
91
+ * - `instructed_fence`: the LAST fenced JSON block carries metadata; the
92
+ * markdown before it is the deliverable. Historical fence-only envelopes
93
+ * fall back to their string `output`.
92
94
  * - `side_tool`: the answer text IS the markdown deliverable; the report rides
93
95
  * `opts.sideToolReport` (the tool payload the adapter surfaced).
94
96
  * A non-active mode passes the answer through untouched. The WorkReport
@@ -105,12 +107,13 @@ export declare function unwrapWorkReportEnvelope(answerText: string, mode: WorkR
105
107
  sideToolReport?: unknown;
106
108
  }): UnwrappedAnswer;
107
109
  /**
108
- * QA-036: the terminal outcome facts for a read-only (ask) run that produced NO
110
+ * QA-036: the terminal outcome facts for a read-only run that produced NO
109
111
  * successful attempt. The D8 legacy mapping treated ANY web-blocked run as a
110
112
  * succeeded/review_blocked terminal (exit 0, "Needs review"); a blocked Ask that
111
- * delivered nothing then read as done. This re-checks the DELIVERABLE: only a
112
- * blocked attempt that actually produced a partial answer is a review-blocked
113
- * SUCCESS; an empty blocked (or plain failed) run is a failure (exit 1).
113
+ * delivered nothing then read as done, and Plan later repeated the same error
114
+ * without a final/plan.md. This re-checks the DELIVERABLE: only a blocked
115
+ * attempt that actually produced a canonical read-only output is a
116
+ * review-blocked SUCCESS; an empty blocked (or plain failed) run is a failure.
114
117
  */
115
118
  export declare function readOnlyNoSuccessTerminal(opts: {
116
119
  webBlocked: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"attemptFinalize.d.ts","sourceRoot":"","sources":["../src/attemptFinalize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attemptFinalize.d.ts","sourceRoot":"","sources":["../src/attemptFinalize.ts"],"names":[],"mappings":"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"}
@@ -18,16 +18,19 @@ import { buildWorkReportEnvelope, strictifyOutputSchema, WorkReport, } from "@cl
18
18
  import { redactSecrets } from "@claudexor/util";
19
19
  /**
20
20
  * The instruction appended to an `instructed_fence` (cursor) route so the model
21
- * emits the WorkReport envelope the finalizer validates. No native schema
21
+ * emits the WorkReport footer the finalizer validates. No native schema
22
22
  * constrains cursor, so the contract is instructed and validated off the last
23
- * fenced JSON block (D-16c). The `output` string carries the deliverable prose.
23
+ * fenced JSON block (D-16c). The normal markdown before that footer is the
24
+ * deliverable; a historical fence-only `output` remains a read fallback.
24
25
  */
25
26
  export const WORK_REPORT_FENCE_INSTRUCTION = [
26
- "When you have finished, end your reply with a single fenced ```json code block",
27
+ "Write your complete final answer as normal Markdown.",
28
+ "When you have finished, append a single fenced ```json code block",
27
29
  "containing exactly this object and nothing after it:",
28
30
  '{"work_report": {"state": "completed" | "needs_input" | "incomplete",',
29
31
  '"required_inputs": [{"kind": "file"|"context"|"credential"|"permission"|"decision"|"external_dependency",',
30
- '"locator": string|null, "description": string}]}, "output": "<your final answer as a string>"}.',
32
+ '"locator": string|null, "description": string}]}}.',
33
+ "Do not duplicate or summarize your answer inside this block.",
31
34
  'Use state "completed" only when the task is fully done with an empty required_inputs list;',
32
35
  'use "needs_input" (with at least one required_inputs entry) when you are blocked on a missing input;',
33
36
  'use "incomplete" when partial work remains. This block is mandatory.',
@@ -136,8 +139,9 @@ function extractOutput(obj, mode) {
136
139
  return { deliverable: output };
137
140
  }
138
141
  /** Extract the LAST fenced ```…``` block's body (its optional language tag
139
- * stripped), or null when the text has no closed fence. No-regex, mechanical
140
- * transport parsing (INV-049 governs the typed WorkReport, not this seam). */
142
+ * stripped) and the complete prefix before its opening fence, or null when the
143
+ * text has no closed fence. No-regex, mechanical transport parsing (INV-049
144
+ * governs the typed WorkReport, not this seam). */
141
145
  function lastFencedBlock(text) {
142
146
  const FENCE = "```";
143
147
  const end = text.lastIndexOf(FENCE);
@@ -158,14 +162,20 @@ function lastFencedBlock(text) {
158
162
  if (firstLine === "" || isLangTag)
159
163
  inner = inner.slice(nl + 1);
160
164
  }
161
- return inner.trim();
165
+ return {
166
+ body: inner.trim(),
167
+ // Remove only the separator before the metadata footer. The caller owns
168
+ // any further presentation trimming; all authored markdown stays intact.
169
+ prefix: text.slice(0, start).trimEnd(),
170
+ };
162
171
  }
163
172
  /**
164
173
  * Un-nest the WorkReport envelope from an active route's answer (D-16 §2). The
165
174
  * behavior forks on `mode.channel`:
166
175
  * - `constrained_json`: the whole answer IS `{work_report, output}` JSON.
167
- * - `instructed_fence`: the envelope is the LAST fenced JSON block; prose
168
- * before it is discarded (the `output` string is the deliverable).
176
+ * - `instructed_fence`: the LAST fenced JSON block carries metadata; the
177
+ * markdown before it is the deliverable. Historical fence-only envelopes
178
+ * fall back to their string `output`.
169
179
  * - `side_tool`: the answer text IS the markdown deliverable; the report rides
170
180
  * `opts.sideToolReport` (the tool payload the adapter surfaced).
171
181
  * A non-active mode passes the answer through untouched. The WorkReport
@@ -201,6 +211,7 @@ export function unwrapWorkReportEnvelope(answerText, mode, opts = {}) {
201
211
  return validateWorkReport(answerText, opts.sideToolReport, mode.source);
202
212
  }
203
213
  let text = answerText.trim();
214
+ let instructedPrefix = null;
204
215
  if (mode.channel === "instructed_fence") {
205
216
  const fenced = lastFencedBlock(answerText);
206
217
  if (fenced === null) {
@@ -211,7 +222,8 @@ export function unwrapWorkReportEnvelope(answerText, mode, opts = {}) {
211
222
  contractViolation: "final answer has no fenced work_report envelope",
212
223
  };
213
224
  }
214
- text = fenced;
225
+ text = fenced.body;
226
+ instructedPrefix = fenced.prefix;
215
227
  }
216
228
  let parsed;
217
229
  try {
@@ -234,6 +246,20 @@ export function unwrapWorkReportEnvelope(answerText, mode, opts = {}) {
234
246
  };
235
247
  }
236
248
  const obj = parsed;
249
+ // Cursor's current contract makes the complete normal markdown canonical.
250
+ // The legacy output slot is consulted only for historical fence-only replies;
251
+ // when both exist the prefix wins deterministically, without length/heading
252
+ // heuristics that could silently replace a full answer with a summary.
253
+ if (mode.channel === "instructed_fence" && instructedPrefix?.trim()) {
254
+ return validateWorkReport(instructedPrefix, obj["work_report"], mode.source);
255
+ }
256
+ // A footer-only reply is still a valid report. Each consumer keeps its
257
+ // established product rule: Ask/report may surface honest "(no output)",
258
+ // Plan/reducer require prose, and a mutating attempt may have a real diff.
259
+ // Only a PRESENT legacy output must satisfy the old string shape.
260
+ if (mode.channel === "instructed_fence" && obj["output"] === undefined) {
261
+ return validateWorkReport("", obj["work_report"], mode.source);
262
+ }
237
263
  const extracted = extractOutput(obj, mode);
238
264
  if ("violation" in extracted) {
239
265
  return {
@@ -292,12 +318,13 @@ function validateWorkReport(deliverable, rawReport, source) {
292
318
  return { deliverable, workReport: report, source, contractViolation: null };
293
319
  }
294
320
  /**
295
- * QA-036: the terminal outcome facts for a read-only (ask) run that produced NO
321
+ * QA-036: the terminal outcome facts for a read-only run that produced NO
296
322
  * successful attempt. The D8 legacy mapping treated ANY web-blocked run as a
297
323
  * succeeded/review_blocked terminal (exit 0, "Needs review"); a blocked Ask that
298
- * delivered nothing then read as done. This re-checks the DELIVERABLE: only a
299
- * blocked attempt that actually produced a partial answer is a review-blocked
300
- * SUCCESS; an empty blocked (or plain failed) run is a failure (exit 1).
324
+ * delivered nothing then read as done, and Plan later repeated the same error
325
+ * without a final/plan.md. This re-checks the DELIVERABLE: only a blocked
326
+ * attempt that actually produced a canonical read-only output is a
327
+ * review-blocked SUCCESS; an empty blocked (or plain failed) run is a failure.
301
328
  */
302
329
  export function readOnlyNoSuccessTerminal(opts) {
303
330
  if (opts.webBlocked && opts.hasDeliverable) {
@@ -1 +1 @@
1
- {"version":3,"file":"attemptFinalize.js","sourceRoot":"","sources":["../src/attemptFinalize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attemptFinalize.js","sourceRoot":"","sources":["../src/attemptFinalize.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,11 @@
2
2
  * Attempt-level telemetry: the single owner of tool-error records, web
3
3
  * evidence state, transient-failure observations, and the attempt outcome
4
4
  * truth. Adapters emit typed events; the orchestrator observes them here —
5
- * no regex over prose, and a tool error is "recovered" only when the SAME
6
- * tool later succeeds against the SAME target.
5
+ * no regex over prose. Recovery needs matching tool + kind + target plus matching
6
+ * non-null use ids when both exist; a missing id retains the tuple fallback.
7
7
  */
8
8
  import type { AttemptTelemetryRecord, AuthSourceKind, ExternalContextPolicy, HarnessEvent, RequestRequirementResolution, TaskContract, ToolKind, WorkState } from "@claudexor/schema";
9
+ import { type AttemptUsageCost } from "./attemptUsageCost.js";
9
10
  import { type TransientFailureObservation } from "./transientClassify.js";
10
11
  export { type TransientFailureObservation, classifyAdapterThrow } from "./transientClassify.js";
11
12
  export interface ToolErrorRecord {
@@ -14,7 +15,7 @@ export interface ToolErrorRecord {
14
15
  target: string | null;
15
16
  summary: string;
16
17
  toolUseId: string | null;
17
- /** True when a later successful result of the SAME tool against the SAME target exists in this attempt (INV-043). */
18
+ /** True when a later success matches tool + kind + target and any ids both records provide (INV-043). */
18
19
  recovered: boolean;
19
20
  }
20
21
  export type AttemptOutcomeStatus = "success" | "success_with_warnings" | "blocked" | "failed";
@@ -63,9 +64,10 @@ export interface BrowserEvidenceState {
63
64
  * Delegation-belt runtime readiness for one attempt (QA-024). `requested` is
64
65
  * set at attempt creation when a belt MCP server was injected into the spec;
65
66
  * `ready`/`failed` are filled from the harness's `started` event (its
66
- * `mcp_servers[<belt>].status`); `toolEvidence` flips when any `mcp__<belt>__*`
67
- * tool actually runs. A requested belt that reports `failed` with no tool
68
- * evidence is the false-success trap the outcome axis must catch.
67
+ * `mcp_servers[<belt>].status`); `toolEvidence` flips when any exact belt tool
68
+ * actually runs. Startup failure lives in this state; an exact non-ok tool
69
+ * result lives in `toolErrors` and hard-fails under INV-030 while reusing
70
+ * INV-043's invocation-aware recovery key.
69
71
  */
70
72
  export interface DelegationBeltState {
71
73
  requested: boolean;
@@ -137,11 +139,7 @@ export interface AttemptTelemetry {
137
139
  };
138
140
  /** Per-usage-event billing split. Route can change across native retries,
139
141
  * so this is deliberately not derived from the attempt's first route. */
140
- usageCost: {
141
- cashUsd: number;
142
- valuationUsd: number;
143
- unknownUsd: number;
144
- };
142
+ usageCost: AttemptUsageCost;
145
143
  }
146
144
  export declare function createAttemptTelemetry(policy: ExternalContextPolicy, webRequired: boolean, effectiveMode?: ExternalContextPolicy, requestRequirements?: RequestRequirementResolution[], requestedModel?: string | null,
147
145
  /** The delegation-belt MCP server name injected into THIS attempt's spec, or
@@ -151,15 +149,6 @@ beltServerName?: string | null,
151
149
  * namespace), or null when the browser was not injected (QA-040). Non-null
152
150
  * marks the browser requested/armed. */
153
151
  browserServerName?: string | null): AttemptTelemetry;
154
- /**
155
- * The delegation belt was requested (--delegate injected it) but never became
156
- * operational: the harness reported the server `failed` and no belt tool ever
157
- * ran (QA-024). This is the false-success trap — the harness may have answered
158
- * from its own native subagent with no Claudexor sub-run provenance. A belt
159
- * that was ready-but-unused is NOT unavailable (docs leave the spawn decision to
160
- * the harness); only a startup failure counts.
161
- */
162
- export declare function delegationBeltUnavailable(t: AttemptTelemetry): boolean;
163
152
  /**
164
153
  * QA-040: the browser was armed but never called while generic web evidence
165
154
  * satisfied the run — a legitimately policy-satisfied run (e.g. web_search
@@ -185,6 +174,13 @@ export declare function setAttemptOutcome(t: AttemptTelemetry, opts: {
185
174
  * incomplete veto rides HERE without flipping `status` — the lifecycle
186
175
  * stays succeeded-class; applyability and the CLI exit read the axis. */
187
176
  workState?: WorkState;
177
+ /** The lane's contract does NOT require a deliverable: a clean completion
178
+ * with an honestly empty answer stays a success (read-only ask/report,
179
+ * where "(no output)" is a valid outcome). Every harder axis still wins —
180
+ * a harness error, failed gate, unsatisfied web, or belt failure fails the
181
+ * attempt exactly as before; this only stops a MISSING deliverable from
182
+ * being counted as a contract failure on its own. */
183
+ emptyDeliverableAllowed?: boolean;
188
184
  }): void;
189
185
  /** Bounded telemetry summary for events/artifacts (full detail lives in telemetry.yaml). */
190
186
  export declare function telemetrySummary(t: AttemptTelemetry): Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"attemptTelemetry.d.ts","sourceRoot":"","sources":["../src/attemptTelemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attemptTelemetry.d.ts","sourceRoot":"","sources":["../src/attemptTelemetry.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ import { newAttemptUsageCost, observeAttemptUsageEvent, } from "./attemptUsageCost.js";
1
2
  import { redactSecrets } from "@claudexor/util";
3
+ import * as belt from "./delegationToolEvidence.js";
2
4
  import { classifyCompletedCrash, classifyRateLimit, classifyStatusError, classifyTransientSignal, } from "./transientClassify.js";
3
5
  export { classifyAdapterThrow } from "./transientClassify.js";
4
6
  export function createAttemptTelemetry(policy, webRequired, effectiveMode = policy, requestRequirements = [], requestedModel = null,
@@ -53,7 +55,7 @@ browserServerName = null) {
53
55
  sideToolWorkReport: null,
54
56
  outcome: null,
55
57
  usage: { inputTokens: null, outputTokens: null, cachedInputTokens: null },
56
- usageCost: { cashUsd: 0, valuationUsd: 0, unknownUsd: 0 },
58
+ usageCost: newAttemptUsageCost(),
57
59
  };
58
60
  }
59
61
  /** Add one present token field to a null-aware accumulator (null stays null
@@ -88,17 +90,6 @@ function observeBeltStartup(t, ev) {
88
90
  return;
89
91
  }
90
92
  }
91
- /**
92
- * The delegation belt was requested (--delegate injected it) but never became
93
- * operational: the harness reported the server `failed` and no belt tool ever
94
- * ran (QA-024). This is the false-success trap — the harness may have answered
95
- * from its own native subagent with no Claudexor sub-run provenance. A belt
96
- * that was ready-but-unused is NOT unavailable (docs leave the spawn decision to
97
- * the harness); only a startup failure counts.
98
- */
99
- export function delegationBeltUnavailable(t) {
100
- return t.delegationBelt.requested && t.delegationBelt.failed && !t.delegationBelt.toolEvidence;
101
- }
102
93
  /**
103
94
  * QA-040: does this tool ref belong to the engine-armed browser MCP? Adapters
104
95
  * normalize browser calls as `kind:"mcp"` (codex `browser:browser_navigate`,
@@ -138,20 +129,19 @@ function bumpWebVerification(t, retrieval) {
138
129
  * matching or tool-name heuristics.
139
130
  */
140
131
  export function observeAttemptTelemetry(t, ev) {
141
- // Delegation belt readiness (QA-024): the harness's `started` frame lists its
142
- // MCP servers and each one's status. When the engine injected a belt, read
143
- // THAT server's status as first-class readiness truth never prose. A
144
- // `failed` belt with no later tool evidence is the false-success trap.
145
- if (ev.type === "started" && t.delegationBelt.requested) {
132
+ // Delegation belt readiness (QA-024): normalized startup/error events carry
133
+ // typed MCP server statuses. Read THAT server's status as first-class truth;
134
+ // a failed belt must never launder into a native-subagent success.
135
+ if (t.delegationBelt.requested && Array.isArray(ev.payload?.["mcp_servers"])) {
146
136
  observeBeltStartup(t, ev);
147
137
  }
148
- // Belt tool evidence: any `mcp__<belt>__*` tool call/result proves the belt
149
- // was actually reachable and used (a real Claudexor sub-run path), which
150
- // distinguishes a used belt from one the harness silently substituted.
151
- if (t.delegationBelt.requested && t.delegationBelt.serverName && ev.tool?.name) {
152
- if (ev.tool.name.startsWith(`mcp__${t.delegationBelt.serverName}`)) {
153
- t.delegationBelt.toolEvidence = true;
154
- }
138
+ // Exact adapter-neutral evidence distinguishes the belt from a native subagent;
139
+ // recovery uses matching ids when both exist, else legacy tool+kind+target.
140
+ const beltToolEvent = t.delegationBelt.requested &&
141
+ t.delegationBelt.serverName &&
142
+ belt.isDelegationBeltTool(ev.tool, t.delegationBelt.serverName);
143
+ if (beltToolEvent) {
144
+ t.delegationBelt.toolEvidence = true;
155
145
  }
156
146
  // Route evidence: remember the model identity the stream itself disclosed.
157
147
  if (ev.observed_model && !t.observedModel)
@@ -164,29 +154,7 @@ export function observeAttemptTelemetry(t, ev) {
164
154
  else if (ev.credential_route === "managed_api_key")
165
155
  t.authMode = "api_key";
166
156
  }
167
- if (ev.credential_route === "vendor_native")
168
- t.currentAuthMode = "local_session";
169
- else if (ev.credential_route === "managed_api_key")
170
- t.currentAuthMode = "api_key";
171
- if (ev.type === "message" && ev.payload?.["auth_switched"] === true) {
172
- if (ev.payload["to_auth_mode"] === "subscription")
173
- t.currentAuthMode = "local_session";
174
- if (ev.payload["to_auth_mode"] === "api_key")
175
- t.currentAuthMode = "api_key";
176
- }
177
- if (ev.usage?.cost_usd) {
178
- const usageMode = ev.credential_route === "vendor_native"
179
- ? "local_session"
180
- : ev.credential_route === "managed_api_key"
181
- ? "api_key"
182
- : t.currentAuthMode;
183
- if (usageMode === "local_session")
184
- t.usageCost.valuationUsd += ev.usage.cost_usd;
185
- else if (usageMode === "api_key")
186
- t.usageCost.cashUsd += ev.usage.cost_usd;
187
- else
188
- t.usageCost.unknownUsd += ev.usage.cost_usd;
189
- }
157
+ t.currentAuthMode = observeAttemptUsageEvent(t.usageCost, ev, t.currentAuthMode);
190
158
  // First-wins like the route: the source is decided once before spawn.
191
159
  if (!t.authSource && ev.credential_source)
192
160
  t.authSource = ev.credential_source;
@@ -271,9 +239,13 @@ export function observeAttemptTelemetry(t, ev) {
271
239
  if (tool.status === undefined) {
272
240
  // A result without a status must never silently count as ok.
273
241
  t.statuslessResults += 1;
242
+ if (beltToolEvent)
243
+ belt.recordDelegationBeltResultFailure(t, tool, "required delegation belt tool result omitted status");
274
244
  return;
275
245
  }
276
246
  if (tool.status === "cancelled" || tool.status === "denied") {
247
+ if (beltToolEvent)
248
+ belt.recordDelegationBeltResultFailure(t, tool, `required delegation belt tool result marked ${tool.status}`);
277
249
  if (tool.kind === "web") {
278
250
  t.web.attempted = true;
279
251
  t.web.tool = tool.name;
@@ -316,18 +288,18 @@ export function observeAttemptTelemetry(t, ev) {
316
288
  }
317
289
  return;
318
290
  }
319
- // status === "ok": a later success of the SAME tool against the SAME target
320
- // is the verified recovery for that call's earlier errors within this
321
- // attempt (keying fix: `bash echo done` must NOT launder an earlier
322
- // `bash npm test` failure — the name alone proved nothing).
291
+ // status === "ok": recovery needs the same tool + kind + target, plus the same
292
+ // non-null use id when both sides have one. A missing id retains the legacy
293
+ // tuple key for adapters and synthetic telemetry that cannot correlate calls.
294
+ const resultToolUseId = tool.use_id ?? null;
323
295
  for (const err of t.toolErrors) {
324
- // INV-043: recovery must be attributable to the failed operation — same
325
- // tool, same KIND, same target (a non-web tool sharing a name with a web
326
- // tool must not clear its web error).
296
+ // INV-043: a later identical-looking invocation cannot launder an earlier
297
+ // error when both vendor records prove different invocation ids.
327
298
  if (!err.recovered &&
328
299
  err.tool === tool.name &&
329
300
  err.kind === tool.kind &&
330
- err.target === (tool.target ?? null)) {
301
+ err.target === (tool.target ?? null) &&
302
+ (err.toolUseId === null || resultToolUseId === null || err.toolUseId === resultToolUseId)) {
331
303
  err.recovered = true;
332
304
  }
333
305
  }
@@ -339,12 +311,12 @@ export function observeAttemptTelemetry(t, ev) {
339
311
  // legitimate alternative-route recovery, not laundering (blocking it
340
312
  // would false-block the most common web workflow). What must NOT vanish
341
313
  // is the DISCLOSURE: `failed` clears only when the success matches the
342
- // failed call's target (INV-043 keying), so telemetry.yaml keeps the
314
+ // failed invocation (INV-043 keying), so telemetry.yaml keeps the
343
315
  // unrecovered failure + errorSummary visible even on satisfied runs.
344
316
  t.web.satisfied = true;
345
- // Derived rollup, single source of truth: the tool+target-keyed
317
+ // Derived rollup, single source of truth: the invocation-keyed
346
318
  // toolErrors store (the recovery loop above already marked matching
347
- // errors recovered). Multiple failed targets stay disclosed until EACH
319
+ // errors recovered). Multiple failed invocations stay disclosed until EACH
348
320
  // recovers; a missing target never wildcards (exact null==null match).
349
321
  t.web.failed = t.toolErrors.some((e) => e.kind === "web" && !e.recovered);
350
322
  // Keep the summary in lockstep with the rollup: point at a live
@@ -399,16 +371,12 @@ export function toolWarnings(t) {
399
371
  }
400
372
  export function setAttemptOutcome(t, opts) {
401
373
  const warnings = toolWarnings(t).length;
402
- const contractFailed = !opts.deliverablePresent || opts.gatesPassed === false;
403
- // QA-024: a requested belt that failed to start with no tool evidence is an
404
- // explicitly-requested capability that never became operational treated
405
- // like an unsatisfied hard requirement (never a silent clean success). It
406
- // rides the same axis order as web: it can only ELEVATE severity, never mask
407
- // a harder failure. NOTE (D-16 seam): this producer maps belt-unavailable to
408
- // `failed`; a future finalizer that prefers a softer disclosure would flip
409
- // this to `success_with_warnings` — the typed telemetry fact
410
- // (delegation_belt.*) is what a consumer reads either way.
411
- const beltUnavailable = delegationBeltUnavailable(t);
374
+ const contractFailed = (!opts.deliverablePresent && opts.emptyDeliverableAllowed !== true) ||
375
+ opts.gatesPassed === false;
376
+ // INV-030: after injection, startup failure or an unrecovered exact belt
377
+ // operation is an unsatisfied required capability. It can only ELEVATE
378
+ // severity, never soften into a warning or mask a harder terminal fact.
379
+ const beltUnavailable = belt.delegationBeltUnavailable(t) || belt.delegationBeltToolFailure(t);
412
380
  const status = opts.webRequiredUnsatisfied
413
381
  ? "blocked"
414
382
  : opts.harnessErrored || contractFailed || beltUnavailable
@@ -484,7 +452,7 @@ export function telemetrySummary(t) {
484
452
  ready: t.delegationBelt.ready,
485
453
  failed: t.delegationBelt.failed,
486
454
  tool_evidence: t.delegationBelt.toolEvidence,
487
- unavailable: delegationBeltUnavailable(t),
455
+ unavailable: belt.delegationBeltUnavailable(t),
488
456
  },
489
457
  }
490
458
  : {}),
@@ -552,7 +520,7 @@ export function attemptTelemetryRecord(attemptId, harnessId, t) {
552
520
  gates_passed: t.outcome?.gatesPassed ?? null,
553
521
  harness_errored: t.outcome?.harnessErrored ?? false,
554
522
  web_required_unsatisfied: t.outcome?.webRequiredUnsatisfied ?? false,
555
- delegation_belt_unavailable: delegationBeltUnavailable(t),
523
+ delegation_belt_unavailable: belt.delegationBeltUnavailable(t),
556
524
  tool_warnings_count: t.outcome?.toolWarningsCount ?? warnings.length,
557
525
  status: t.outcome?.status ?? (warnings.length > 0 ? "success_with_warnings" : "success"),
558
526
  ...(t.outcome?.workState ? { work_state: t.outcome.workState } : {}),