@claudexor/orchestrator 4.1.1 → 4.3.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 (170) hide show
  1. package/dist/account-pool.d.ts +11 -0
  2. package/dist/account-pool.d.ts.map +1 -1
  3. package/dist/account-pool.js +9 -0
  4. package/dist/account-pool.js.map +1 -1
  5. package/dist/account-resolution.d.ts +5 -13
  6. package/dist/account-resolution.d.ts.map +1 -1
  7. package/dist/account-resolution.js +14 -15
  8. package/dist/account-resolution.js.map +1 -1
  9. package/dist/attemptTelemetry.d.ts +4 -6
  10. package/dist/attemptTelemetry.d.ts.map +1 -1
  11. package/dist/attemptTelemetry.js +6 -10
  12. package/dist/attemptTelemetry.js.map +1 -1
  13. package/dist/attemptUsageCost.d.ts +6 -1
  14. package/dist/attemptUsageCost.d.ts.map +1 -1
  15. package/dist/attemptUsageCost.js +16 -1
  16. package/dist/attemptUsageCost.js.map +1 -1
  17. package/dist/budgetFailure.d.ts +4 -1
  18. package/dist/budgetFailure.d.ts.map +1 -1
  19. package/dist/budgetFailure.js +4 -2
  20. package/dist/budgetFailure.js.map +1 -1
  21. package/dist/candidateEvidence.d.ts.map +1 -1
  22. package/dist/candidateEvidence.js +7 -2
  23. package/dist/candidateEvidence.js.map +1 -1
  24. package/dist/candidateOutputs.d.ts.map +1 -1
  25. package/dist/candidateOutputs.js +6 -0
  26. package/dist/candidateOutputs.js.map +1 -1
  27. package/dist/candidateReview.d.ts.map +1 -1
  28. package/dist/candidateReview.js +1 -0
  29. package/dist/candidateReview.js.map +1 -1
  30. package/dist/candidateTerminals.d.ts +12 -1
  31. package/dist/candidateTerminals.d.ts.map +1 -1
  32. package/dist/candidateTerminals.js +51 -21
  33. package/dist/candidateTerminals.js.map +1 -1
  34. package/dist/captureRefusal.d.ts +28 -0
  35. package/dist/captureRefusal.d.ts.map +1 -0
  36. package/dist/captureRefusal.js +54 -0
  37. package/dist/captureRefusal.js.map +1 -0
  38. package/dist/continuation-evidence.d.ts.map +1 -1
  39. package/dist/continuation-evidence.js +1 -0
  40. package/dist/continuation-evidence.js.map +1 -1
  41. package/dist/continuity-notice.d.ts.map +1 -1
  42. package/dist/continuity-notice.js +1 -0
  43. package/dist/continuity-notice.js.map +1 -1
  44. package/dist/continuity-terminal.d.ts +3 -1
  45. package/dist/continuity-terminal.d.ts.map +1 -1
  46. package/dist/continuity-terminal.js.map +1 -1
  47. package/dist/credential-cooldown.d.ts +2 -0
  48. package/dist/credential-cooldown.d.ts.map +1 -1
  49. package/dist/credential-cooldown.js +7 -1
  50. package/dist/credential-cooldown.js.map +1 -1
  51. package/dist/credential-preflight.d.ts.map +1 -1
  52. package/dist/credential-preflight.js +1 -0
  53. package/dist/credential-preflight.js.map +1 -1
  54. package/dist/credential-profile-rotation.d.ts.map +1 -1
  55. package/dist/credential-profile-rotation.js +4 -3
  56. package/dist/credential-profile-rotation.js.map +1 -1
  57. package/dist/decisionBudget.d.ts +17 -5
  58. package/dist/decisionBudget.d.ts.map +1 -1
  59. package/dist/decisionBudget.js +28 -6
  60. package/dist/decisionBudget.js.map +1 -1
  61. package/dist/deepScanReducer.d.ts +1 -1
  62. package/dist/deepScanReducer.d.ts.map +1 -1
  63. package/dist/delegationBudgetAuthority.d.ts +2 -2
  64. package/dist/delegationBudgetAuthority.d.ts.map +1 -1
  65. package/dist/delegationBudgetAuthority.js.map +1 -1
  66. package/dist/delegationFailure.d.ts +104 -7
  67. package/dist/delegationFailure.d.ts.map +1 -1
  68. package/dist/delegationFailure.js +47 -31
  69. package/dist/delegationFailure.js.map +1 -1
  70. package/dist/index.d.ts +1 -0
  71. package/dist/index.d.ts.map +1 -1
  72. package/dist/index.js +1 -0
  73. package/dist/index.js.map +1 -1
  74. package/dist/inrun-continuity-types.d.ts +13 -1
  75. package/dist/inrun-continuity-types.d.ts.map +1 -1
  76. package/dist/inrun-continuity.d.ts +10 -2
  77. package/dist/inrun-continuity.d.ts.map +1 -1
  78. package/dist/inrun-continuity.js +69 -50
  79. package/dist/inrun-continuity.js.map +1 -1
  80. package/dist/inrun-continuity.test-support.d.ts +17 -3
  81. package/dist/inrun-continuity.test-support.d.ts.map +1 -1
  82. package/dist/inrun-continuity.test-support.js +4 -1
  83. package/dist/inrun-continuity.test-support.js.map +1 -1
  84. package/dist/interaction.d.ts +5 -5
  85. package/dist/interaction.d.ts.map +1 -1
  86. package/dist/interaction.js +58 -26
  87. package/dist/interaction.js.map +1 -1
  88. package/dist/modelGovernance.d.ts +3 -1
  89. package/dist/modelGovernance.d.ts.map +1 -1
  90. package/dist/modelGovernance.js +4 -0
  91. package/dist/modelGovernance.js.map +1 -1
  92. package/dist/orchestrator-credentials.d.ts +5 -4
  93. package/dist/orchestrator-credentials.d.ts.map +1 -1
  94. package/dist/orchestrator-credentials.js +7 -4
  95. package/dist/orchestrator-credentials.js.map +1 -1
  96. package/dist/orchestrator.d.ts +10 -1
  97. package/dist/orchestrator.d.ts.map +1 -1
  98. package/dist/orchestrator.js +283 -335
  99. package/dist/orchestrator.js.map +1 -1
  100. package/dist/persistedPatch.js +2 -2
  101. package/dist/persistedPatch.js.map +1 -1
  102. package/dist/plannerAttempt.d.ts +1 -1
  103. package/dist/plannerAttempt.d.ts.map +1 -1
  104. package/dist/pool-attempt-evidence.d.ts +62 -0
  105. package/dist/pool-attempt-evidence.d.ts.map +1 -0
  106. package/dist/pool-attempt-evidence.js +153 -0
  107. package/dist/pool-attempt-evidence.js.map +1 -0
  108. package/dist/pre-progress-refusal.d.ts +43 -6
  109. package/dist/pre-progress-refusal.d.ts.map +1 -1
  110. package/dist/pre-progress-refusal.js +53 -8
  111. package/dist/pre-progress-refusal.js.map +1 -1
  112. package/dist/processing-routing.d.ts.map +1 -1
  113. package/dist/processing-routing.js +9 -0
  114. package/dist/processing-routing.js.map +1 -1
  115. package/dist/quota-refusal-scope.d.ts +11 -0
  116. package/dist/quota-refusal-scope.d.ts.map +1 -0
  117. package/dist/quota-refusal-scope.js +21 -0
  118. package/dist/quota-refusal-scope.js.map +1 -0
  119. package/dist/readonlyTerminals.d.ts +55 -0
  120. package/dist/readonlyTerminals.d.ts.map +1 -0
  121. package/dist/readonlyTerminals.js +205 -0
  122. package/dist/readonlyTerminals.js.map +1 -0
  123. package/dist/retry-processing-intent.d.ts +19 -0
  124. package/dist/retry-processing-intent.d.ts.map +1 -0
  125. package/dist/retry-processing-intent.js +32 -0
  126. package/dist/retry-processing-intent.js.map +1 -0
  127. package/dist/root-ledger.d.ts.map +1 -1
  128. package/dist/root-ledger.js +3 -1
  129. package/dist/root-ledger.js.map +1 -1
  130. package/dist/rotation-predicate.d.ts +7 -23
  131. package/dist/rotation-predicate.d.ts.map +1 -1
  132. package/dist/rotation-predicate.js +45 -0
  133. package/dist/rotation-predicate.js.map +1 -1
  134. package/dist/runEventLog.d.ts +1 -0
  135. package/dist/runEventLog.d.ts.map +1 -1
  136. package/dist/runEventLog.js +3 -2
  137. package/dist/runEventLog.js.map +1 -1
  138. package/dist/runSupport.d.ts +2 -2
  139. package/dist/runSupport.d.ts.map +1 -1
  140. package/dist/runSupport.js +3 -4
  141. package/dist/runSupport.js.map +1 -1
  142. package/dist/runTerminalContext.d.ts +7 -1
  143. package/dist/runTerminalContext.d.ts.map +1 -1
  144. package/dist/runTerminalContext.js +1 -0
  145. package/dist/runTerminalContext.js.map +1 -1
  146. package/dist/runTerminalHelpers.d.ts +25 -1
  147. package/dist/runTerminalHelpers.d.ts.map +1 -1
  148. package/dist/runTerminalHelpers.js +69 -6
  149. package/dist/runTerminalHelpers.js.map +1 -1
  150. package/dist/runTerminalResults.d.ts +25 -3
  151. package/dist/runTerminalResults.d.ts.map +1 -1
  152. package/dist/runTerminalResults.js +61 -29
  153. package/dist/runTerminalResults.js.map +1 -1
  154. package/dist/runTerminals.d.ts +0 -1
  155. package/dist/runTerminals.d.ts.map +1 -1
  156. package/dist/runTerminals.js +47 -11
  157. package/dist/runTerminals.js.map +1 -1
  158. package/dist/secretDiff.d.ts +14 -11
  159. package/dist/secretDiff.d.ts.map +1 -1
  160. package/dist/secretDiff.js +21 -28
  161. package/dist/secretDiff.js.map +1 -1
  162. package/dist/terminalOutcome.d.ts +24 -4
  163. package/dist/terminalOutcome.d.ts.map +1 -1
  164. package/dist/terminalOutcome.js +32 -5
  165. package/dist/terminalOutcome.js.map +1 -1
  166. package/dist/transientClassify.d.ts +1 -0
  167. package/dist/transientClassify.d.ts.map +1 -1
  168. package/dist/transientClassify.js +3 -0
  169. package/dist/transientClassify.js.map +1 -1
  170. package/package.json +17 -17
@@ -0,0 +1,55 @@
1
+ import type { ArtifactStore, RunPaths } from "@claudexor/artifact-store";
2
+ import type { BudgetLedger } from "@claudexor/budget";
3
+ import type { EventLog } from "@claudexor/event-log";
4
+ import { type ModeKind } from "@claudexor/schema";
5
+ import type { OrchestratorResult } from "./orchestrator.js";
6
+ import type { AttemptTelemetry } from "./attemptTelemetry.js";
7
+ import { type BudgetDenial } from "./budgetFailure.js";
8
+ import { type ContinuityTerminalFacts } from "./continuity-terminal.js";
9
+ import { type declaredFailure } from "./runTerminalResults.js";
10
+ /** One read-only (Ask/Plan chain or deep-scan scout) attempt as its terminals see it. */
11
+ export interface ReadonlyAttempt extends ContinuityTerminalFacts {
12
+ attemptId: string;
13
+ harnessId: string;
14
+ status: "success" | "failed" | "blocked";
15
+ report: string;
16
+ answerMatches?: number;
17
+ error: string | null;
18
+ telemetry: AttemptTelemetry;
19
+ /** QA-019: this scout was refused BEFORE spawn by the budget gate — it
20
+ * belongs in the denominator/omissions but never ran the harness, so the
21
+ * all-denied terminal still routes through the QA-050 budget classifier. */
22
+ budgetDenied?: boolean;
23
+ /** D-16 r8: scout ran out of context — a failed omission, never reducer
24
+ * input; ALL-interrupted terminalizes interrupted. */
25
+ interrupted?: boolean;
26
+ /** A5: the typed refusal (exhausted credential pool / spent window) this
27
+ * attempt died on, so the chain terminal can speak it machine-readably. */
28
+ declaredFailure?: ReturnType<typeof declaredFailure>;
29
+ }
30
+ interface ReadonlyTerminalContext {
31
+ store: ArtifactStore;
32
+ paths: RunPaths;
33
+ log: EventLog;
34
+ runId: string;
35
+ taskId: string;
36
+ mode: ModeKind;
37
+ ledger: BudgetLedger;
38
+ attempts: ReadonlyAttempt[];
39
+ attemptTelemetries: {
40
+ attemptId: string;
41
+ harnessId: string;
42
+ telemetry: AttemptTelemetry;
43
+ }[];
44
+ budgetStopped: boolean;
45
+ budgetDenial: BudgetDenial | null;
46
+ writeTelemetry(): void;
47
+ }
48
+ /** A read-only chain with no successful attempt (QA-036/QA-050/A5). */
49
+ export declare function readOnlyChainFailureResult(input: ReadonlyTerminalContext & {
50
+ fallbackOpen: boolean;
51
+ }): OrchestratorResult;
52
+ /** A deep scan whose every explorer failed: no synthesizable deliverable (QA-036). */
53
+ export declare function deepScanFailureResult(input: ReadonlyTerminalContext): OrchestratorResult;
54
+ export {};
55
+ //# sourceMappingURL=readonlyTerminals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readonlyTerminals.d.ts","sourceRoot":"","sources":["../src/readonlyTerminals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAA8C,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEnG,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAO3F,OAAO,EAAgB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE7E,yFAAyF;AACzF,MAAM,WAAW,eAAgB,SAAQ,uBAAuB;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,gBAAgB,CAAC;IAC5B;;gFAE4E;IAC5E,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;0DACsD;IACtD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;+EAC2E;IAC3E,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;CACtD;AAED,UAAU,uBAAuB;IAC/B,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,kBAAkB,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,EAAE,CAAC;IAC5F,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,cAAc,IAAI,IAAI,CAAC;CACxB;AAED,uEAAuE;AACvE,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,uBAAuB,GAAG;IAAE,YAAY,EAAE,OAAO,CAAA;CAAE,GACzD,kBAAkB,CA0HpB;AAED,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,uBAAuB,GAAG,kBAAkB,CAuFxF"}
@@ -0,0 +1,205 @@
1
+ import { join } from "node:path";
2
+ import { makeOutcomeFacts } from "@claudexor/schema";
3
+ import { readOnlyNoSuccessTerminal } from "./attemptFinalize.js";
4
+ import { budgetFailureRecord, classifyBudgetFailure } from "./budgetFailure.js";
5
+ import { unanimousDeclaredFailure } from "./candidateEvidence.js";
6
+ import { resumableTerminal } from "./continuity-terminal.js";
7
+ import { attemptVendorFailure, dominantHarnessFailureCategory, harnessFailureNextActions, } from "./harnessFailure.js";
8
+ import { poolFailure } from "./pool-attempt-evidence.js";
9
+ import { writeFailure } from "./runTerminalResults.js";
10
+ /** A read-only chain with no successful attempt (QA-036/QA-050/A5). */
11
+ export function readOnlyChainFailureResult(input) {
12
+ const { store, paths, log, runId, taskId, mode, ledger, attempts, attemptTelemetries } = input;
13
+ const { budgetStopped, budgetDenial } = input;
14
+ const last = attempts[attempts.length - 1];
15
+ const webBlocked = attempts.some((a) => a.status === "blocked");
16
+ // QA-050: a budget refusal is a BUDGET failure, not a harness one — route
17
+ // it through the shared classifier so phase/category/code/route and the
18
+ // remediation are budget-typed (never auth/setup) across every mode.
19
+ const budgetMapping = budgetStopped && !webBlocked
20
+ ? classifyBudgetFailure({ denial: budgetDenial, terminal: ledger.terminal() })
21
+ : null;
22
+ const { message: singleError, poolAttempts } = poolFailure(budgetMapping?.safeMessage ??
23
+ last?.error ??
24
+ (budgetStopped ? "budget exhausted before any attempt" : "harness failed"), attempts);
25
+ if (input.fallbackOpen || webBlocked) {
26
+ log.emit("route.fallback.exhausted", {
27
+ harness_id: last?.harnessId ?? null,
28
+ attempt_id: last?.attemptId ?? null,
29
+ reason: "web_evidence_unsatisfied",
30
+ error: singleError,
31
+ });
32
+ }
33
+ const partialReport = [...attempts].reverse().find((a) => a.report)?.report ?? "";
34
+ input.writeTelemetry();
35
+ store.writeText(join(paths.contextDir, "context_error.md"), `# ${budgetMapping ? "Budget Denied" : "Harness Error"}\n\n${singleError}\n`);
36
+ const roEventRefs = attempts.map((a) => `attempts/${a.attemptId}/events.jsonl`);
37
+ if (budgetMapping) {
38
+ writeFailure(store, paths, {
39
+ ...budgetFailureRecord(budgetMapping, { eventRefs: roEventRefs, runDir: paths.root }),
40
+ safeMessage: singleError,
41
+ poolAttempts,
42
+ });
43
+ }
44
+ else {
45
+ // #31: classify the harness cause across the read-only attempts so auth
46
+ // guidance appears only on a real auth failure.
47
+ const roCategory = dominantHarnessFailureCategory(attemptTelemetries.flatMap((a) => a.telemetry.transientFailures));
48
+ // A5: the terminal already speaks with the LAST attempt's message; its
49
+ // typed refusal rides along machine-readably instead of reducing to it.
50
+ const roDeclared = webBlocked ? undefined : last?.declaredFailure;
51
+ writeFailure(store, paths, {
52
+ phase: "harness",
53
+ category: webBlocked ? "policy" : (roDeclared?.category ?? "harness_error"),
54
+ code: roDeclared?.code ?? null,
55
+ harnessId: last?.harnessId,
56
+ attemptId: last?.attemptId,
57
+ safeMessage: singleError,
58
+ eventRefs: roEventRefs,
59
+ runDir: paths.root,
60
+ resetsAt: roDeclared?.resetsAt ?? null,
61
+ requestRefusal: roDeclared?.requestRefusal,
62
+ vendorFailure: attemptVendorFailure(attemptTelemetries, last?.attemptId),
63
+ poolAttempts,
64
+ nextActions: harnessFailureNextActions(roCategory),
65
+ });
66
+ }
67
+ // QA-036: re-check the DELIVERABLE through the shared finalizer helper —
68
+ // a blocked Ask that produced NO answer can no longer read as a succeeded
69
+ // "Needs review" run (exit 0); it is an honest failure (exit 1).
70
+ const roTerminal = readOnlyNoSuccessTerminal({
71
+ webBlocked,
72
+ hasDeliverable: partialReport.trim().length > 0,
73
+ budgetStopped,
74
+ attemptsCount: attempts.length,
75
+ });
76
+ const terminalFacts = makeOutcomeFacts(roTerminal.lifecycle, {
77
+ ...(roTerminal.review ? { review: roTerminal.review } : {}),
78
+ reason: budgetMapping?.reason ?? roTerminal.reason,
79
+ });
80
+ const terminalHarnessId = budgetMapping?.harnessId ?? last?.harnessId;
81
+ store.writeText(join(paths.finalDir, "summary.md"), `# Run ${runId} (${mode})\n\n- Harness: ${terminalHarnessId ?? "none"}\n- Lifecycle: ${terminalFacts.lifecycle}${terminalFacts.reason ? ` (${terminalFacts.reason})` : ""}\n\n${singleError}\n`);
82
+ log.emit("output.ready", { kind: "summary", path: "final/summary.md", state: "diagnostic" });
83
+ if (terminalFacts.lifecycle === "succeeded") {
84
+ log.emit("run.blocked", {
85
+ lifecycle: terminalFacts.lifecycle,
86
+ facts: terminalFacts,
87
+ harness_id: terminalHarnessId,
88
+ error: singleError,
89
+ pool_attempts: poolAttempts,
90
+ failure_ref: "final/failure.yaml",
91
+ ...resumableTerminal(store, paths, attempts, true),
92
+ });
93
+ }
94
+ else {
95
+ log.emit("run.failed", {
96
+ lifecycle: terminalFacts.lifecycle,
97
+ facts: terminalFacts,
98
+ reason: terminalFacts.reason,
99
+ phase: budgetMapping?.phase,
100
+ harness_id: terminalHarnessId,
101
+ error: singleError,
102
+ pool_attempts: poolAttempts,
103
+ failure_ref: "final/failure.yaml",
104
+ ...resumableTerminal(store, paths, attempts, true),
105
+ });
106
+ }
107
+ return {
108
+ spendUsd: ledger.spend(),
109
+ runId,
110
+ taskId,
111
+ mode,
112
+ lifecycle: terminalFacts.lifecycle,
113
+ facts: terminalFacts,
114
+ winner: null,
115
+ runDir: paths.root,
116
+ summary: singleError,
117
+ candidates: attempts.map((a) => ({
118
+ attemptId: a.attemptId,
119
+ harnessId: a.harnessId,
120
+ status: a.status,
121
+ })),
122
+ };
123
+ }
124
+ /** A deep scan whose every explorer failed: no synthesizable deliverable (QA-036). */
125
+ export function deepScanFailureResult(input) {
126
+ const { store, paths, log, runId, taskId, mode, ledger, attempts, attemptTelemetries } = input;
127
+ const { budgetStopped, budgetDenial } = input;
128
+ const blocked = attempts.some((a) => a.status === "blocked");
129
+ // QA-050/QA-019: only a pure-denial scan may claim a budget failure.
130
+ const scanBudgetMapping = budgetStopped && !blocked && attempts.every((a) => a.budgetDenied === true)
131
+ ? classifyBudgetFailure({ denial: budgetDenial, terminal: ledger.terminal() })
132
+ : null;
133
+ // D-16 r8: ALL scouts out of context → the aggregate is interrupted.
134
+ const allInterrupted = attempts.length > 0 && attempts.every((a) => a.interrupted === true);
135
+ const scanFailFacts = allInterrupted
136
+ ? makeOutcomeFacts("interrupted", { reason: "context_capacity_exhausted" })
137
+ : makeOutcomeFacts("failed", {
138
+ reason: scanBudgetMapping ? scanBudgetMapping.reason : "harness_failed",
139
+ });
140
+ const { message, poolAttempts } = poolFailure(scanBudgetMapping
141
+ ? scanBudgetMapping.safeMessage
142
+ : attempts.map((a) => `${a.attemptId}/${a.harnessId}: ${a.error ?? "failed"}`).join("\n"), attempts);
143
+ input.writeTelemetry();
144
+ if (scanBudgetMapping) {
145
+ writeFailure(store, paths, {
146
+ ...budgetFailureRecord(scanBudgetMapping, {
147
+ eventRefs: attempts.map((a) => `attempts/${a.attemptId}/events.jsonl`),
148
+ runDir: paths.root,
149
+ }),
150
+ safeMessage: message,
151
+ poolAttempts,
152
+ });
153
+ }
154
+ else {
155
+ // Mixed causes stay generic; only unanimous evidence may name the scan's cause.
156
+ const declared = blocked ? null : unanimousDeclaredFailure(attempts);
157
+ const scanCategory = dominantHarnessFailureCategory(attemptTelemetries.flatMap((a) => a.telemetry.transientFailures));
158
+ writeFailure(store, paths, {
159
+ phase: "harness",
160
+ category: blocked ? "policy" : (declared?.category ?? "harness_error"),
161
+ code: declared?.code,
162
+ resetsAt: declared?.resetsAt,
163
+ requestRefusal: declared?.requestRefusal,
164
+ safeMessage: message || "all explorers failed",
165
+ eventRefs: attempts.map((a) => `attempts/${a.attemptId}/events.jsonl`),
166
+ runDir: paths.root,
167
+ poolAttempts,
168
+ nextActions: [
169
+ ...harnessFailureNextActions(scanCategory).filter((a) => !a.startsWith("Retry")),
170
+ "Reduce explore width",
171
+ "Retry after setup",
172
+ ],
173
+ });
174
+ }
175
+ // QA-036: no successful explorer means no synthesizable deliverable.
176
+ store.writeText(join(paths.finalDir, "summary.md"), `# Run ${runId} (${mode})\n\n- Lifecycle: ${scanFailFacts.lifecycle}${scanFailFacts.reason ? ` (${scanFailFacts.reason})` : ""}\n\n${message}\n`);
177
+ log.emit("output.ready", { kind: "summary", path: "final/summary.md", state: "diagnostic" });
178
+ log.emit("run.failed", {
179
+ lifecycle: scanFailFacts.lifecycle,
180
+ facts: scanFailFacts,
181
+ reason: scanFailFacts.reason,
182
+ phase: scanBudgetMapping ? scanBudgetMapping.phase : "harness",
183
+ error: message,
184
+ pool_attempts: poolAttempts,
185
+ failure_ref: "final/failure.yaml",
186
+ ...resumableTerminal(store, paths, attempts, true),
187
+ });
188
+ return {
189
+ spendUsd: ledger.spend(),
190
+ runId,
191
+ taskId,
192
+ mode,
193
+ lifecycle: scanFailFacts.lifecycle,
194
+ facts: scanFailFacts,
195
+ winner: null,
196
+ runDir: paths.root,
197
+ summary: message,
198
+ candidates: attempts.map((a) => ({
199
+ attemptId: a.attemptId,
200
+ harnessId: a.harnessId,
201
+ status: a.status,
202
+ })),
203
+ };
204
+ }
205
+ //# sourceMappingURL=readonlyTerminals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readonlyTerminals.js","sourceRoot":"","sources":["../src/readonlyTerminals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ArtifactStore } from "@claudexor/artifact-store";
2
+ import { type ProcessingReceipt } from "@claudexor/schema";
3
+ export declare const PROCESSING_INTENT_FILE = "processing_intent.yaml";
4
+ /**
5
+ * Freeze the speed each routed harness chose without a preference at its first
6
+ * routing (the earliest typed selection, before any attempt). An Exact Retry
7
+ * records the intent it was given, not its own fallback, so a retry chain keeps
8
+ * the original choice and provenance. Later routings in the same run only add
9
+ * harnesses that were not routed before.
10
+ */
11
+ export declare function recordProcessingIntent(store: Pick<ArtifactStore, "readYaml" | "writeYaml">, contextDir: string, intents: Readonly<Record<string, ProcessingReceipt>>): void;
12
+ /**
13
+ * The speed an Exact Retry keeps: its source run's frozen routing-time intent,
14
+ * like the frozen model and effort (QA-035), so a settings or account change
15
+ * between the runs never re-resolves it. A source without that record (an older
16
+ * run, or one routed with a preference) yields nothing.
17
+ */
18
+ export declare function retryProcessingIntent(store: Pick<ArtifactStore, "readYaml">, sourceRunDir: string): Record<string, ProcessingReceipt> | undefined;
19
+ //# sourceMappingURL=retry-processing-intent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-processing-intent.d.ts","sourceRoot":"","sources":["../src/retry-processing-intent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEhF,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,GAAG,WAAW,CAAC,EACpD,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,GACnD,IAAI,CAYN;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EACtC,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,SAAS,CAK/C"}
@@ -0,0 +1,32 @@
1
+ import { join } from "node:path";
2
+ import { RunProcessingIntent } from "@claudexor/schema";
3
+ export const PROCESSING_INTENT_FILE = "processing_intent.yaml";
4
+ /**
5
+ * Freeze the speed each routed harness chose without a preference at its first
6
+ * routing (the earliest typed selection, before any attempt). An Exact Retry
7
+ * records the intent it was given, not its own fallback, so a retry chain keeps
8
+ * the original choice and provenance. Later routings in the same run only add
9
+ * harnesses that were not routed before.
10
+ */
11
+ export function recordProcessingIntent(store, contextDir, intents) {
12
+ const path = join(contextDir, PROCESSING_INTENT_FILE);
13
+ const recorded = RunProcessingIntent.safeParse(store.readYaml(path)).data?.harnesses ?? {};
14
+ const added = Object.entries(intents).filter(([harnessId]) => !(harnessId in recorded));
15
+ if (added.length === 0)
16
+ return;
17
+ store.writeYaml(path, RunProcessingIntent.parse({
18
+ schema_version: 1,
19
+ harnesses: { ...recorded, ...Object.fromEntries(added) },
20
+ }));
21
+ }
22
+ /**
23
+ * The speed an Exact Retry keeps: its source run's frozen routing-time intent,
24
+ * like the frozen model and effort (QA-035), so a settings or account change
25
+ * between the runs never re-resolves it. A source without that record (an older
26
+ * run, or one routed with a preference) yields nothing.
27
+ */
28
+ export function retryProcessingIntent(store, sourceRunDir) {
29
+ const recorded = RunProcessingIntent.safeParse(store.readYaml(join(sourceRunDir, "context", PROCESSING_INTENT_FILE))).data?.harnesses;
30
+ return recorded && Object.keys(recorded).length > 0 ? recorded : undefined;
31
+ }
32
+ //# sourceMappingURL=retry-processing-intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retry-processing-intent.js","sourceRoot":"","sources":["../src/retry-processing-intent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,mBAAmB,EAA0B,MAAM,mBAAmB,CAAC;AAEhF,MAAM,CAAC,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAAoD,EACpD,UAAkB,EAClB,OAAoD;IAEpD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE,CAAC;IAC3F,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC;IACxF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC/B,KAAK,CAAC,SAAS,CACb,IAAI,EACJ,mBAAmB,CAAC,KAAK,CAAC;QACxB,cAAc,EAAE,CAAC;QACjB,SAAS,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;KACzD,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,KAAsC,EACtC,YAAoB;IAEpB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,CAC5C,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,sBAAsB,CAAC,CAAC,CACtE,CAAC,IAAI,EAAE,SAAS,CAAC;IAClB,OAAO,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"root-ledger.d.ts","sourceRoot":"","sources":["../src/root-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,GAAG,EAAE,QAAQ,CAAC;IACd,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;CAC1C,GAAG,YAAY,CAmCf"}
1
+ {"version":3,"file":"root-ledger.d.ts","sourceRoot":"","sources":["../src/root-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAC3E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,GAAG,EAAE,QAAQ,CAAC;IACd,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;CAC1C,GAAG,YAAY,CAsCf"}
@@ -1,11 +1,13 @@
1
1
  import { BudgetLedger } from "@claudexor/budget";
2
2
  export function createRootLedger(args) {
3
- const onCashSettled = (cashSpendUsd, valuationUsd, cashEstimated, valuationKnowledge, cashKnowledge) => args.log.emit("budget.cash", {
3
+ const onCashSettled = (cashSpendUsd, valuationUsd, cashEstimated, valuationKnowledge, cashKnowledge, controllableCashKnowledge) => args.log.emit("budget.cash", {
4
4
  cash_spend_usd: cashSpendUsd,
5
5
  valuation_usd: valuationUsd,
6
6
  estimated: cashEstimated,
7
7
  valuation_knowledge: valuationKnowledge,
8
8
  cash_knowledge: cashKnowledge,
9
+ // The finite cap governs this; reported cash can stay unknown beside it.
10
+ controllable_cash_knowledge: controllableCashKnowledge,
9
11
  });
10
12
  const ledger = args.input.delegatedFromRunId
11
13
  ? args.authority?.attachChild(args.input.delegatedFromRunId, args.input.delegationAdmissionId ?? "", args.input.runId, args.contract.task_id, onCashSettled)
@@ -1 +1 @@
1
- {"version":3,"file":"root-ledger.js","sourceRoot":"","sources":["../src/root-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMjD,MAAM,UAAU,gBAAgB,CAAC,IAMhC;IACC,MAAM,aAAa,GAAG,CACpB,YAAoB,EACpB,YAAoB,EACpB,aAAsB,EACtB,kBAAqD,EACrD,aAAgD,EAChD,EAAE,CACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;QAC3B,cAAc,EAAE,YAAY;QAC5B,aAAa,EAAE,YAAY;QAC3B,SAAS,EAAE,aAAa;QACxB,mBAAmB,EAAE,kBAAkB;QACvC,cAAc,EAAE,aAAa;KAC9B,CAAC,CAAC;IACL,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB;QAC1C,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CACzB,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAC7B,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,EAAE,EACtC,IAAI,CAAC,KAAK,CAAC,KAAM,EACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,EACrB,aAAa,CACd;QACH,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;IACrF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,iBAAiB,IAAI,CAAC,QAAQ,CAAC,OAAO,uDAAuD,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAC7H,EACD,EAAE,IAAI,EAAE,sCAAsC,EAAE,MAAM,EAAE,GAAG,EAAE,CAC9D,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB;QAAE,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,CAAC;IAC5E,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc;QAAE,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAClF,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"root-ledger.js","sourceRoot":"","sources":["../src/root-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4B,MAAM,mBAAmB,CAAC;AAM3E,MAAM,UAAU,gBAAgB,CAAC,IAMhC;IACC,MAAM,aAAa,GAAwB,CACzC,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,EAAE,CACF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE;QAC3B,cAAc,EAAE,YAAY;QAC5B,aAAa,EAAE,YAAY;QAC3B,SAAS,EAAE,aAAa;QACxB,mBAAmB,EAAE,kBAAkB;QACvC,cAAc,EAAE,aAAa;QAC7B,yEAAyE;QACzE,2BAA2B,EAAE,yBAAyB;KACvD,CAAC,CAAC;IACL,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB;QAC1C,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CACzB,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAC7B,IAAI,CAAC,KAAK,CAAC,qBAAqB,IAAI,EAAE,EACtC,IAAI,CAAC,KAAK,CAAC,KAAM,EACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,EACrB,aAAa,CACd;QACH,CAAC,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;IACrF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,iBAAiB,IAAI,CAAC,QAAQ,CAAC,OAAO,uDAAuD,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAC7H,EACD,EAAE,IAAI,EAAE,sCAAsC,EAAE,MAAM,EAAE,GAAG,EAAE,CAC9D,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB;QAAE,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,CAAC;IAC5E,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,cAAc;QAAE,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAClF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,27 +1,5 @@
1
- /**
2
- * A2: the WIDENED reactive rotation predicate (W5.4 + the structural branch).
3
- *
4
- * Two independent ways an attempt becomes rotation-eligible:
5
- *
6
- * 1. TYPED fast path (W5.4 canon, unchanged): the attempt saw a TYPED vendor
7
- * rate-limit signal. Deliberately NOT hardened against thinking/tool
8
- * activity — the canon guard is no-deliverable/no-mutation, not
9
- * no-progress.
10
- *
11
- * 2. STRUCTURAL branch (owner decision 7=A): the attempt ended in a TERMINAL,
12
- * non-transient death BEFORE the agent demonstrably did any work. This
13
- * deliberately covers ANY pre-progress non-transient death — an invalid
14
- * flag, a missing binary, an untyped vendor refusal — bounded by the
15
- * profile pool size, and is NEVER narrowed by error-text matching.
16
- * Transient-retryable deaths are excluded: the transient machinery retries
17
- * them on the SAME profile first (rotation never fires on a plain
18
- * transient).
19
- *
20
- * Both branches require an empty deliverable and no observed workspace
21
- * mutation — a partially-acted attempt never silently reruns under another
22
- * credential.
23
- */
24
1
  import type { AttemptOutputMarkers } from "./attemptOutputMarkers.js";
2
+ import type { TryFacts } from "./inrun-continuity-types.js";
25
3
  /** Typed evidence one native try presents to the rotation predicate. */
26
4
  export interface RotationEvidence {
27
5
  requestRefused?: boolean;
@@ -71,4 +49,10 @@ export declare function reactiveRotationEvidence(args: {
71
49
  deliverableEmpty: boolean;
72
50
  workspaceDiffNonEmpty?: boolean;
73
51
  }): RotationEvidence;
52
+ /**
53
+ * One settled in-run try's facts as that fold's input. After progress
54
+ * (`forceEligible`) the no-deliverable/no-mutation fence scopes only the
55
+ * `fresh` carrier: the planner picks the carrier, rotation only the account.
56
+ */
57
+ export declare function inRunRotationArgs(facts: TryFacts, forceEligible: boolean): Parameters<typeof reactiveRotationEvidence>[0];
74
58
  //# sourceMappingURL=rotation-predicate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rotation-predicate.d.ts","sourceRoot":"","sources":["../src/rotation-predicate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEtE,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qEAAqE;IACrE,aAAa,EAAE,OAAO,CAAC;IACvB;;gFAE4E;IAC5E,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;iFAE6E;IAC7E,gBAAgB,EAAE,OAAO,CAAC;IAC1B;iFAC6E;IAC7E,yBAAyB,EAAE,OAAO,CAAC;IACnC;gFAC4E;IAC5E,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAKV;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GAAG,gBAAgB,CASnB"}
1
+ {"version":3,"file":"rotation-predicate.d.ts","sourceRoot":"","sources":["../src/rotation-predicate.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE5D,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,qEAAqE;IACrE,aAAa,EAAE,OAAO,CAAC;IACvB;;gFAE4E;IAC5E,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;iFAE6E;IAC7E,gBAAgB,EAAE,OAAO,CAAC;IAC1B;iFAC6E;IAC7E,yBAAyB,EAAE,OAAO,CAAC;IACnC;gFAC4E;IAC5E,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAKV;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,GAAG,gBAAgB,CASnB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,QAAQ,EACf,aAAa,EAAE,OAAO,GACrB,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAehD"}
@@ -1,3 +1,27 @@
1
+ /**
2
+ * A2: the WIDENED reactive rotation predicate (W5.4 + the structural branch).
3
+ *
4
+ * Two independent ways an attempt becomes rotation-eligible:
5
+ *
6
+ * 1. TYPED fast path (W5.4 canon, unchanged): the attempt saw a TYPED vendor
7
+ * rate-limit signal. Deliberately NOT hardened against thinking/tool
8
+ * activity — the canon guard is no-deliverable/no-mutation, not
9
+ * no-progress.
10
+ *
11
+ * 2. STRUCTURAL branch (owner decision 7=A): the attempt ended in a TERMINAL,
12
+ * non-transient death BEFORE the agent demonstrably did any work. This
13
+ * deliberately covers ANY pre-progress non-transient death — an invalid
14
+ * flag, a missing binary, an untyped vendor refusal — bounded by the
15
+ * profile pool size, and is NEVER narrowed by error-text matching.
16
+ * Transient-retryable deaths are excluded: the transient machinery retries
17
+ * them on the SAME profile first (rotation never fires on a plain
18
+ * transient).
19
+ *
20
+ * Both branches require an empty deliverable and no observed workspace
21
+ * mutation — a partially-acted attempt never silently reruns under another
22
+ * credential.
23
+ */
24
+ import { acceptedTryOutput } from "@claudexor/core";
1
25
  /**
2
26
  * `rotation_retry_eligible`: the one predicate both lanes and both branches
3
27
  * read. Optional fields default CONSERVATIVELY (absent evidence never widens
@@ -29,4 +53,25 @@ export function reactiveRotationEvidence(args) {
29
53
  sawAgentProgress: args.markers.sawAgentProgress,
30
54
  };
31
55
  }
56
+ /**
57
+ * One settled in-run try's facts as that fold's input. After progress
58
+ * (`forceEligible`) the no-deliverable/no-mutation fence scopes only the
59
+ * `fresh` carrier: the planner picks the carrier, rotation only the account.
60
+ */
61
+ export function inRunRotationArgs(facts, forceEligible) {
62
+ const accepted = acceptedTryOutput(facts.answer, facts.harnessErrored);
63
+ return {
64
+ markers: forceEligible
65
+ ? { sawAgentProgress: false, fileChanges: 0, sawSessionStart: facts.markers.sawSessionStart }
66
+ : facts.markers,
67
+ requestRefused: facts.requestRefused,
68
+ sawTypedLimit: facts.sawTypedLimit,
69
+ sawRetryable: facts.sawRetryable,
70
+ attemptErrored: facts.harnessErrored,
71
+ deliverableEmpty: forceEligible
72
+ ? true
73
+ : facts.workspaceDiffNonEmpty !== true && accepted.length === 0,
74
+ workspaceDiffNonEmpty: forceEligible ? false : facts.workspaceDiffNonEmpty,
75
+ };
76
+ }
32
77
  //# sourceMappingURL=rotation-predicate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rotation-predicate.js","sourceRoot":"","sources":["../src/rotation-predicate.ts"],"names":[],"mappings":"AA8CA;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAOrC;IACC,IAAI,KAAK,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,KAAK,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,KAAK,CAAC,yBAAyB,KAAK,IAAI,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI,CAAC;AACrF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAQxC;IACC,OAAO;QACL,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,gBAAgB,EAAE,CAAC,IAAI,CAAC,qBAAqB,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC;QACvF,yBAAyB,EAAE,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,YAAY;QACpE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;KAChD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"rotation-predicate.js","sourceRoot":"","sources":["../src/rotation-predicate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAyBpD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAOrC;IACC,IAAI,KAAK,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC7E,IAAI,KAAK,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,KAAK,CAAC,yBAAyB,KAAK,IAAI,IAAI,KAAK,CAAC,gBAAgB,KAAK,IAAI,CAAC;AACrF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,IAQxC;IACC,OAAO;QACL,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,gBAAgB,EAAE,CAAC,IAAI,CAAC,qBAAqB,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC;QACvF,yBAAyB,EAAE,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,YAAY;QACpE,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB;KAChD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAe,EACf,aAAsB;IAEtB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACvE,OAAO;QACL,OAAO,EAAE,aAAa;YACpB,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE;YAC7F,CAAC,CAAC,KAAK,CAAC,OAAO;QACjB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,gBAAgB,EAAE,aAAa;YAC7B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,KAAK,CAAC,qBAAqB,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QACjE,qBAAqB,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB;KAC3E,CAAC;AACJ,CAAC"}
@@ -44,6 +44,7 @@ export declare function beginAnnouncedRun(start: RunAnnouncementInput, announce:
44
44
  paths: RunPaths;
45
45
  log: EventLog;
46
46
  ledger: BudgetLedger;
47
+ runContext: AnnouncedRunContext;
47
48
  };
48
49
  export {};
49
50
  //# sourceMappingURL=runEventLog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runEventLog.d.ts","sourceRoot":"","sources":["../src/runEventLog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGzF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAExF,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC3C,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACrC;AAED,UAAU,oBAAoB;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mGAAmG;AACnG,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GACtB,QAAQ,CAWV;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAO5E;AAcD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,GAC/C;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE,CA6BhF"}
1
+ {"version":3,"file":"runEventLog.d.ts","sourceRoot":"","sources":["../src/runEventLog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,KAAK,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGzF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAExF,UAAU,gBAAgB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC3C,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACrC;AAED,UAAU,oBAAoB;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,CAAC,EAAE,yBAAyB,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mGAAmG;AACnG,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GACtB,QAAQ,CAWV;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAO5E;AAcD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,oBAAoB,EAC3B,QAAQ,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,GAC/C;IACD,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,mBAAmB,CAAC;CACjC,CA4BA"}
@@ -63,9 +63,10 @@ export function beginAnnouncedRun(start, announce) {
63
63
  log.emit("run.created", { mode, prompt: redactSecrets(start.prompt) });
64
64
  return preparedLedger;
65
65
  });
66
- announce(announcedRunContext({ log, store, paths, runId, taskId, mode, phase }, ledger, () => authority?.hasParent(runId) === true));
66
+ const runContext = announcedRunContext({ log, store, paths, runId, taskId, mode, phase }, ledger, () => authority?.hasParent(runId) === true);
67
+ announce(runContext);
67
68
  safeInvoke(input.onRunStart, { runId, taskId, runDir: paths.root });
68
69
  announcePreparedProjectGitInitialization(input, log);
69
- return { store, paths, log, ledger };
70
+ return { store, paths, log, ledger, runContext };
70
71
  }
71
72
  //# sourceMappingURL=runEventLog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runEventLog.js","sourceRoot":"","sources":["../src/runEventLog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runEventLog.js","sourceRoot":"","sources":["../src/runEventLog.ts"],"names":[],"mappings":"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"}
@@ -127,14 +127,14 @@ export interface ResolvedConfigLike {
127
127
  max_delay_ms: number;
128
128
  };
129
129
  reviewer_timeout_ms: number;
130
- harness_inactivity_timeout_ms: number;
130
+ harness_inactivity_timeout_ms: number | null;
131
131
  };
132
132
  };
133
133
  }
134
134
  export declare function envInheritance(cfg: ResolvedConfigLike): "mirror_native" | "clean";
135
135
  export declare function transientRetryPolicy(cfg: ResolvedConfigLike): TransientRetryPolicy;
136
136
  export declare function reviewerTimeoutMs(cfg: ResolvedConfigLike): number;
137
- export declare function harnessInactivityTimeoutMs(cfg: ResolvedConfigLike): number;
137
+ export declare function harnessInactivityTimeoutMs(cfg: ResolvedConfigLike): number | null;
138
138
  /** Typed auth-switch disclosure: adapters mark auth_switched on a message;
139
139
  * the run event log gets the typed route.fallback payload. */
140
140
  export declare function observeAuthSwitch(log: EventLog | undefined, harnessId: string, attemptId: string, ev: HarnessEvent): void;
@@ -1 +1 @@
1
- {"version":3,"file":"runSupport.d.ts","sourceRoot":"","sources":["../src/runSupport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runSupport.d.ts","sourceRoot":"","sources":["../src/runSupport.ts"],"names":[],"mappings":"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"}
@@ -217,12 +217,11 @@ export function harnessEventPayload(harnessId, attemptId, ev) {
217
217
  quota: safe.quota,
218
218
  rate_limit: safe.rate_limit,
219
219
  request_refusal: safe.request_refusal,
220
+ permission_denial: safe.permission_denial,
220
221
  tool: safe.tool,
221
222
  interaction: safe.interaction,
222
- // Typed finality/status MUST survive this projection (W-C1/W-C2): the
223
- // app's transcript reducer keys the answer-dedup on `final` and the
224
- // activity feed on `status` — dropping them here silently killed both
225
- // on the LIVE path (caught by the F2.5 E2E smoke, not unit tests).
223
+ // Preserve finality/status for answer dedup and activity (W-C1/W-C2);
224
+ // losing them here broke both on the live path (F2.5 E2E).
226
225
  final: safe.final,
227
226
  status: safe.status,
228
227
  payload: safe.payload,