@claudexor/orchestrator 3.19.0 → 3.22.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 (223) hide show
  1. package/dist/account-evidence.d.ts +13 -0
  2. package/dist/account-evidence.d.ts.map +1 -0
  3. package/dist/account-evidence.js +55 -0
  4. package/dist/account-evidence.js.map +1 -0
  5. package/dist/account-resolution.d.ts.map +1 -1
  6. package/dist/account-resolution.js +22 -5
  7. package/dist/account-resolution.js.map +1 -1
  8. package/dist/attemptFinalize.d.ts +14 -101
  9. package/dist/attemptFinalize.d.ts.map +1 -1
  10. package/dist/attemptFinalize.js +7 -328
  11. package/dist/attemptFinalize.js.map +1 -1
  12. package/dist/candidateEvidence.d.ts +15 -6
  13. package/dist/candidateEvidence.d.ts.map +1 -1
  14. package/dist/candidateEvidence.js +1 -1
  15. package/dist/candidateEvidence.js.map +1 -1
  16. package/dist/candidateOutputs.d.ts +7 -3
  17. package/dist/candidateOutputs.d.ts.map +1 -1
  18. package/dist/candidateOutputs.js +4 -1
  19. package/dist/candidateOutputs.js.map +1 -1
  20. package/dist/candidateReview.d.ts.map +1 -1
  21. package/dist/candidateReview.js +3 -1
  22. package/dist/candidateReview.js.map +1 -1
  23. package/dist/candidateTerminals.d.ts +10 -0
  24. package/dist/candidateTerminals.d.ts.map +1 -1
  25. package/dist/candidateTerminals.js +44 -5
  26. package/dist/candidateTerminals.js.map +1 -1
  27. package/dist/candidateWorkProduct.d.ts +21 -0
  28. package/dist/candidateWorkProduct.d.ts.map +1 -0
  29. package/dist/candidateWorkProduct.js +43 -0
  30. package/dist/candidateWorkProduct.js.map +1 -0
  31. package/dist/carrier-planner.d.ts +94 -0
  32. package/dist/carrier-planner.d.ts.map +1 -0
  33. package/dist/carrier-planner.js +111 -0
  34. package/dist/carrier-planner.js.map +1 -0
  35. package/dist/continuation-custody.d.ts +57 -0
  36. package/dist/continuation-custody.d.ts.map +1 -0
  37. package/dist/continuation-custody.js +151 -0
  38. package/dist/continuation-custody.js.map +1 -0
  39. package/dist/continuation-evidence-io.d.ts +18 -0
  40. package/dist/continuation-evidence-io.d.ts.map +1 -0
  41. package/dist/continuation-evidence-io.js +167 -0
  42. package/dist/continuation-evidence-io.js.map +1 -0
  43. package/dist/continuation-evidence.d.ts +81 -0
  44. package/dist/continuation-evidence.d.ts.map +1 -0
  45. package/dist/continuation-evidence.js +122 -0
  46. package/dist/continuation-evidence.js.map +1 -0
  47. package/dist/continuation-input.d.ts +10 -0
  48. package/dist/continuation-input.d.ts.map +1 -0
  49. package/dist/continuation-input.js +69 -0
  50. package/dist/continuation-input.js.map +1 -0
  51. package/dist/continue-from.d.ts +41 -0
  52. package/dist/continue-from.d.ts.map +1 -0
  53. package/dist/continue-from.js +292 -0
  54. package/dist/continue-from.js.map +1 -0
  55. package/dist/continuity-facts.d.ts +1 -0
  56. package/dist/continuity-facts.d.ts.map +1 -1
  57. package/dist/continuity-facts.js +1 -0
  58. package/dist/continuity-facts.js.map +1 -1
  59. package/dist/continuity-notice.d.ts +42 -0
  60. package/dist/continuity-notice.d.ts.map +1 -0
  61. package/dist/continuity-notice.js +42 -0
  62. package/dist/continuity-notice.js.map +1 -0
  63. package/dist/continuity-summary.d.ts +2 -1
  64. package/dist/continuity-summary.d.ts.map +1 -1
  65. package/dist/continuity-summary.js +2 -2
  66. package/dist/continuity-summary.js.map +1 -1
  67. package/dist/continuity-terminal.d.ts +19 -0
  68. package/dist/continuity-terminal.d.ts.map +1 -0
  69. package/dist/continuity-terminal.js +34 -0
  70. package/dist/continuity-terminal.js.map +1 -0
  71. package/dist/credential-cooldown.d.ts +0 -10
  72. package/dist/credential-cooldown.d.ts.map +1 -1
  73. package/dist/credential-cooldown.js +8 -27
  74. package/dist/credential-cooldown.js.map +1 -1
  75. package/dist/credential-differential.d.ts +13 -1
  76. package/dist/credential-differential.d.ts.map +1 -1
  77. package/dist/credential-differential.js +71 -14
  78. package/dist/credential-differential.js.map +1 -1
  79. package/dist/credential-execution.d.ts +4 -0
  80. package/dist/credential-execution.d.ts.map +1 -0
  81. package/dist/credential-execution.js +101 -0
  82. package/dist/credential-execution.js.map +1 -0
  83. package/dist/credential-profile-rotation.d.ts.map +1 -1
  84. package/dist/credential-profile-rotation.js +8 -2
  85. package/dist/credential-profile-rotation.js.map +1 -1
  86. package/dist/credential-profiles.d.ts +3 -4
  87. package/dist/credential-profiles.d.ts.map +1 -1
  88. package/dist/credential-profiles.js +28 -6
  89. package/dist/credential-profiles.js.map +1 -1
  90. package/dist/deepScanReducer.d.ts +4 -1
  91. package/dist/deepScanReducer.d.ts.map +1 -1
  92. package/dist/deepScanReducer.js +14 -8
  93. package/dist/deepScanReducer.js.map +1 -1
  94. package/dist/delegationFailure.d.ts +4 -3
  95. package/dist/delegationFailure.d.ts.map +1 -1
  96. package/dist/delegationFailure.js +32 -56
  97. package/dist/delegationFailure.js.map +1 -1
  98. package/dist/directoryCandidate.d.ts +2 -2
  99. package/dist/directoryCandidate.d.ts.map +1 -1
  100. package/dist/directoryCandidate.js +3 -0
  101. package/dist/directoryCandidate.js.map +1 -1
  102. package/dist/index.d.ts +4 -3
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +3 -2
  105. package/dist/index.js.map +1 -1
  106. package/dist/inrun-continuity-carrier.d.ts +76 -0
  107. package/dist/inrun-continuity-carrier.d.ts.map +1 -0
  108. package/dist/inrun-continuity-carrier.js +218 -0
  109. package/dist/inrun-continuity-carrier.js.map +1 -0
  110. package/dist/inrun-continuity-thread.d.ts +8 -0
  111. package/dist/inrun-continuity-thread.d.ts.map +1 -0
  112. package/dist/inrun-continuity-thread.js +23 -0
  113. package/dist/inrun-continuity-thread.js.map +1 -0
  114. package/dist/inrun-continuity-types.d.ts +105 -0
  115. package/dist/inrun-continuity-types.d.ts.map +1 -0
  116. package/dist/inrun-continuity-types.js +2 -0
  117. package/dist/inrun-continuity-types.js.map +1 -0
  118. package/dist/inrun-continuity.d.ts +79 -0
  119. package/dist/inrun-continuity.d.ts.map +1 -0
  120. package/dist/inrun-continuity.js +465 -0
  121. package/dist/inrun-continuity.js.map +1 -0
  122. package/dist/inrun-continuity.test-support.d.ts +374 -0
  123. package/dist/inrun-continuity.test-support.d.ts.map +1 -0
  124. package/dist/inrun-continuity.test-support.js +198 -0
  125. package/dist/inrun-continuity.test-support.js.map +1 -0
  126. package/dist/inrun-retained-output.d.ts +9 -0
  127. package/dist/inrun-retained-output.d.ts.map +1 -0
  128. package/dist/inrun-retained-output.js +16 -0
  129. package/dist/inrun-retained-output.js.map +1 -0
  130. package/dist/interaction.d.ts +1 -1
  131. package/dist/interaction.d.ts.map +1 -1
  132. package/dist/interaction.js +6 -1
  133. package/dist/interaction.js.map +1 -1
  134. package/dist/laneStreamEvents.d.ts +2 -4
  135. package/dist/laneStreamEvents.d.ts.map +1 -1
  136. package/dist/laneStreamEvents.js +3 -5
  137. package/dist/laneStreamEvents.js.map +1 -1
  138. package/dist/modelGovernance.d.ts +4 -0
  139. package/dist/modelGovernance.d.ts.map +1 -1
  140. package/dist/modelGovernance.js +29 -3
  141. package/dist/modelGovernance.js.map +1 -1
  142. package/dist/orchestrator-credentials.d.ts +5 -1
  143. package/dist/orchestrator-credentials.d.ts.map +1 -1
  144. package/dist/orchestrator-credentials.js +32 -8
  145. package/dist/orchestrator-credentials.js.map +1 -1
  146. package/dist/orchestrator.d.ts +7 -5
  147. package/dist/orchestrator.d.ts.map +1 -1
  148. package/dist/orchestrator.js +297 -267
  149. package/dist/orchestrator.js.map +1 -1
  150. package/dist/persistedPatch.d.ts +55 -0
  151. package/dist/persistedPatch.d.ts.map +1 -0
  152. package/dist/persistedPatch.js +132 -0
  153. package/dist/persistedPatch.js.map +1 -0
  154. package/dist/planFinalize.d.ts +37 -0
  155. package/dist/planFinalize.d.ts.map +1 -0
  156. package/dist/planFinalize.js +94 -0
  157. package/dist/planFinalize.js.map +1 -0
  158. package/dist/planRun.d.ts +3 -30
  159. package/dist/planRun.d.ts.map +1 -1
  160. package/dist/planRun.js +9 -88
  161. package/dist/planRun.js.map +1 -1
  162. package/dist/plannerAttempt.d.ts +4 -1
  163. package/dist/plannerAttempt.d.ts.map +1 -1
  164. package/dist/plannerAttempt.js +14 -8
  165. package/dist/plannerAttempt.js.map +1 -1
  166. package/dist/prompt-framing.d.ts +1 -1
  167. package/dist/prompt-framing.d.ts.map +1 -1
  168. package/dist/prompt-framing.js.map +1 -1
  169. package/dist/retainedOutput.d.ts +4 -0
  170. package/dist/retainedOutput.d.ts.map +1 -0
  171. package/dist/retainedOutput.js +31 -0
  172. package/dist/retainedOutput.js.map +1 -0
  173. package/dist/reviewerEffort.d.ts +41 -0
  174. package/dist/reviewerEffort.d.ts.map +1 -0
  175. package/dist/reviewerEffort.js +37 -0
  176. package/dist/reviewerEffort.js.map +1 -0
  177. package/dist/reviewerPanel.d.ts +5 -5
  178. package/dist/reviewerPanel.d.ts.map +1 -1
  179. package/dist/reviewerPanel.js +22 -50
  180. package/dist/reviewerPanel.js.map +1 -1
  181. package/dist/run-input-resolution.d.ts.map +1 -1
  182. package/dist/run-input-resolution.js +10 -0
  183. package/dist/run-input-resolution.js.map +1 -1
  184. package/dist/runEventLog.d.ts.map +1 -1
  185. package/dist/runEventLog.js +5 -0
  186. package/dist/runEventLog.js.map +1 -1
  187. package/dist/runFactsBuilder.d.ts.map +1 -1
  188. package/dist/runFactsBuilder.js +11 -2
  189. package/dist/runFactsBuilder.js.map +1 -1
  190. package/dist/runFactsPresentation.d.ts.map +1 -1
  191. package/dist/runFactsPresentation.js +6 -1
  192. package/dist/runFactsPresentation.js.map +1 -1
  193. package/dist/runSupport.d.ts +2 -1
  194. package/dist/runSupport.d.ts.map +1 -1
  195. package/dist/runSupport.js +2 -1
  196. package/dist/runSupport.js.map +1 -1
  197. package/dist/runTelemetryWriter.d.ts.map +1 -1
  198. package/dist/runTelemetryWriter.js +7 -2
  199. package/dist/runTelemetryWriter.js.map +1 -1
  200. package/dist/runTerminalResults.d.ts +6 -2
  201. package/dist/runTerminalResults.d.ts.map +1 -1
  202. package/dist/runTerminalResults.js +28 -3
  203. package/dist/runTerminalResults.js.map +1 -1
  204. package/dist/runTerminals.d.ts.map +1 -1
  205. package/dist/runTerminals.js +15 -7
  206. package/dist/runTerminals.js.map +1 -1
  207. package/dist/secretDiff.d.ts +67 -27
  208. package/dist/secretDiff.d.ts.map +1 -1
  209. package/dist/secretDiff.js +143 -113
  210. package/dist/secretDiff.js.map +1 -1
  211. package/dist/session-capsule.d.ts +29 -0
  212. package/dist/session-capsule.d.ts.map +1 -0
  213. package/dist/session-capsule.js +86 -0
  214. package/dist/session-capsule.js.map +1 -0
  215. package/dist/workReportEnvelope.d.ts +123 -0
  216. package/dist/workReportEnvelope.d.ts.map +1 -0
  217. package/dist/workReportEnvelope.js +362 -0
  218. package/dist/workReportEnvelope.js.map +1 -0
  219. package/package.json +17 -17
  220. package/dist/effortGovernance.d.ts +0 -13
  221. package/dist/effortGovernance.d.ts.map +0 -1
  222. package/dist/effortGovernance.js +0 -7
  223. package/dist/effortGovernance.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"continuity-summary.js","sourceRoot":"","sources":["../src/continuity-summary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"continuity-summary.js","sourceRoot":"","sources":["../src/continuity-summary.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ArtifactStore, RunPaths } from "@claudexor/artifact-store";
2
+ import type { ResumableCause, RunResumable } from "@claudexor/schema";
3
+ export interface ContinuityTerminalFacts {
4
+ resumable?: RunResumable;
5
+ /** Internal snapshot used only if gates/review/arbitration later leave work unfinished. */
6
+ resumableOnFailure?: RunResumable;
7
+ }
8
+ /** Execution roots without an isolated envelope survive this run (Agent and Ask). */
9
+ export declare function continuityWorkspace(envelope: {
10
+ worktree_path: string;
11
+ repo_root: string;
12
+ } | null, cwd: string): RunResumable["workspace"];
13
+ /** The first attempt that declared continuation facts speaks for the run. */
14
+ export declare function resumableOf(items: ReadonlyArray<ContinuityTerminalFacts>, cause?: ResumableCause): RunResumable | null;
15
+ /** Write `final/resumable.yaml` when present and return the terminal payload fragment. */
16
+ export declare function resumableTerminal(store: ArtifactStore, paths: Pick<RunPaths, "finalDir">, items: ReadonlyArray<ContinuityTerminalFacts>, nonSuccess?: boolean): {
17
+ resumable: RunResumable;
18
+ } | Record<never, never>;
19
+ //# sourceMappingURL=continuity-terminal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuity-terminal.d.ts","sourceRoot":"","sources":["../src/continuity-terminal.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtE,MAAM,WAAW,uBAAuB;IACtC,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,2FAA2F;IAC3F,kBAAkB,CAAC,EAAE,YAAY,CAAC;CACnC;AAED,qFAAqF;AACrF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,EAC7D,GAAG,EAAE,MAAM,GACV,YAAY,CAAC,WAAW,CAAC,CAI3B;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,EAC7C,KAAK,CAAC,EAAE,cAAc,GACrB,YAAY,GAAG,IAAI,CAMrB;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EACjC,KAAK,EAAE,aAAa,CAAC,uBAAuB,CAAC,EAC7C,UAAU,UAAQ,GACjB;IAAE,SAAS,EAAE,YAAY,CAAA;CAAE,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAKpD"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * The terminal `resumable` block (INTERFACES §2): present on every terminal
3
+ * whose WORK is unfinished and can be continued — non-success lifecycles and
4
+ * `succeeded` runs whose work state is `needs_input`/`incomplete`. The attempt
5
+ * loop decides it (`InRunContinuity.finish`); this owner materializes it as
6
+ * `final/resumable.yaml` and the payload fragment every terminal event carries,
7
+ * so no lane re-derives the block.
8
+ */
9
+ import { join } from "node:path";
10
+ /** Execution roots without an isolated envelope survive this run (Agent and Ask). */
11
+ export function continuityWorkspace(envelope, cwd) {
12
+ return !envelope || envelope.worktree_path === envelope.repo_root
13
+ ? { kind: "in_place", root: cwd }
14
+ : { kind: "none", root: null };
15
+ }
16
+ /** The first attempt that declared continuation facts speaks for the run. */
17
+ export function resumableOf(items, cause) {
18
+ const declared = items.find((item) => item.resumable)?.resumable;
19
+ if (declared)
20
+ return declared;
21
+ if (!cause)
22
+ return null;
23
+ const completed = items.find((item) => item.resumableOnFailure)?.resumableOnFailure;
24
+ return completed ? { ...completed, cause } : null;
25
+ }
26
+ /** Write `final/resumable.yaml` when present and return the terminal payload fragment. */
27
+ export function resumableTerminal(store, paths, items, nonSuccess = false) {
28
+ const resumable = resumableOf(items, nonSuccess ? "other" : undefined);
29
+ if (!resumable)
30
+ return {};
31
+ store.writeYaml(join(paths.finalDir, "resumable.yaml"), resumable);
32
+ return { resumable };
33
+ }
34
+ //# sourceMappingURL=continuity-terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuity-terminal.js","sourceRoot":"","sources":["../src/continuity-terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAUjC,qFAAqF;AACrF,MAAM,UAAU,mBAAmB,CACjC,QAA6D,EAC7D,GAAW;IAEX,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,SAAS;QAC/D,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE;QACjC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,WAAW,CACzB,KAA6C,EAC7C,KAAsB;IAEtB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IACjE,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACpF,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,iBAAiB,CAC/B,KAAoB,EACpB,KAAiC,EACjC,KAA6C,EAC7C,UAAU,GAAG,KAAK;IAElB,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACvE,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAC1B,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,SAAS,CAAC,CAAC;IACnE,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
@@ -1,14 +1,4 @@
1
1
  import type { CredentialUnusableObservation, QuotaSnapshot } from "@claudexor/schema";
2
- /**
3
- * THE live-observation matcher (A7): does a typed `credential_unusable`
4
- * observation currently condemn this subject for this decision's model? One
5
- * owner, so rotation refusal, exhaustion rows, and the pool terminal can never
6
- * disagree about which observation is live. Expired observations never match
7
- * (the self-expiry half of the clearing contract); a model-scoped observation
8
- * matches only its own model, while a credential-wide one (model=null) matches
9
- * every route — the write side owns that scoping decision.
10
- */
11
- export declare function liveUnusableFor(observations: readonly CredentialUnusableObservation[], harnessId: string, profileId: string | null, model?: string | null, now?: Date): CredentialUnusableObservation | null;
12
2
  /**
13
3
  * Typed verdict that a credential subject's own observed quota evidence blocks
14
4
  * spending right now (A4 cooldown reader). `kind` distinguishes a spent window
@@ -1 +1 @@
1
- {"version":3,"file":"credential-cooldown.d.ts","sourceRoot":"","sources":["../src/credential-cooldown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGtF;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,SAAS,6BAA6B,EAAE,EACtD,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,GAAG,GAAE,IAAiB,GACrB,6BAA6B,GAAG,IAAI,CAUtC;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,IAAI,CAAC;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,YAAY,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,EAChD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,GAAG,CAAC,EAAE,IAAI,GACT,UAAU,GAAG,IAAI,CAqBnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C;;yEAEqE;IACrE,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpC;AAcD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,uBAAuB,GAAG,OAAO,CAW9E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EACJ,4BAA4B,GAAG,uBAAuB,GAAG,iCAAiC,CAAC;IAC7F,UAAU,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC/C;;iEAE6D;IAC7D,YAAY,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAClD;;uDAEmD;IACnD,eAAe,CAAC,EAAE,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACtE,GAAG,KAAK,CA0ER"}
1
+ {"version":3,"file":"credential-cooldown.d.ts","sourceRoot":"","sources":["../src/credential-cooldown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGtF;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,IAAI,CAAC;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,SAAS,aAAa,EAAE,EACnC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,YAAY,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI,EAChD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,GAAG,CAAC,EAAE,IAAI,GACT,UAAU,GAAG,IAAI,CAqBnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C,QAAQ,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9C;;yEAEqE;IACrE,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpC;AAcD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,uBAAuB,GAAG,OAAO,CAW9E;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EACJ,4BAA4B,GAAG,uBAAuB,GAAG,iCAAiC,CAAC;IAC7F,UAAU,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC/C;;iEAE6D;IAC7D,YAAY,EAAE;QAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAClD;;uDAEmD;IACnD,eAAe,CAAC,EAAE,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACtE,GAAG,KAAK,CA8ER"}
@@ -1,28 +1,4 @@
1
1
  import { ControlProblem, quotaSnapshotAvailability } from "@claudexor/schema";
2
- /**
3
- * THE live-observation matcher (A7): does a typed `credential_unusable`
4
- * observation currently condemn this subject for this decision's model? One
5
- * owner, so rotation refusal, exhaustion rows, and the pool terminal can never
6
- * disagree about which observation is live. Expired observations never match
7
- * (the self-expiry half of the clearing contract); a model-scoped observation
8
- * matches only its own model, while a credential-wide one (model=null) matches
9
- * every route — the write side owns that scoping decision.
10
- */
11
- export function liveUnusableFor(observations, harnessId, profileId, model, now = new Date()) {
12
- for (const obs of observations) {
13
- if (obs.harness_id !== harnessId)
14
- continue;
15
- if (obs.profile_id !== profileId)
16
- continue;
17
- if (obs.model !== null && obs.model !== (model ?? null))
18
- continue;
19
- const expires = Date.parse(obs.expires_at);
20
- if (!Number.isFinite(expires) || expires <= now.getTime())
21
- continue;
22
- return obs;
23
- }
24
- return null;
25
- }
26
2
  /**
27
3
  * Does any observed quota window BLOCK this subject right now?
28
4
  *
@@ -170,9 +146,14 @@ export function credentialPoolExhausted(args) {
170
146
  ? "quota"
171
147
  : "unavailable")),
172
148
  ];
173
- const error = new Error(`credential pool exhausted for "${args.harnessId}": ${subject} hit ${args.reason === "structural_pre_progress_failure"
174
- ? "a terminal pre-progress failure"
175
- : "a vendor limit"} and none of ${args.candidates.length} registered candidate(s) can take over` +
149
+ if (args.subjectUnusable?.code === "auth_revoked" && !poolCauses.includes("auth"))
150
+ poolCauses.push("auth");
151
+ const cause = poolCauses.length === 1 && poolCauses[0] === "auth"
152
+ ? "the available credentials were rejected"
153
+ : poolCauses.length === 1 && poolCauses[0] === "quota"
154
+ ? "the available accounts have an active quota limit"
155
+ : "the available accounts cannot serve this request";
156
+ const error = new Error(`credential pool exhausted for "${args.harnessId}": ${cause}; ${subject} has no eligible replacement` +
176
157
  (args.subjectUnusable
177
158
  ? `; the subject's credential itself was observed unusable (${args.subjectUnusable.code})`
178
159
  : "") +
@@ -1 +1 @@
1
- {"version":3,"file":"credential-cooldown.js","sourceRoot":"","sources":["../src/credential-cooldown.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential-cooldown.js","sourceRoot":"","sources":["../src/credential-cooldown.ts"],"names":[],"mappings":"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"}
@@ -20,10 +20,20 @@
20
20
  * deliberately NOT a verdict here — that is A4's lane and needs no
21
21
  * observation.
22
22
  */
23
- import type { CredentialProfile, CredentialProfileStatus, CredentialUnusableObservation } from "@claudexor/schema";
23
+ import type { CredentialProfile, CredentialProfileStatus, CredentialUnusableObservation, CredentialRoute } from "@claudexor/schema";
24
24
  import { type ProfilePolicy } from "./credential-profile-rotation.js";
25
25
  import { type VendorQuotaObservations } from "./credential-profiles.js";
26
26
  import type { TransientFailureObservation } from "./transientClassify.js";
27
+ export declare function pollerCredentialRejections(quota: VendorQuotaObservations): CredentialUnusableObservation[];
28
+ /** The cheap typed stream intake. No profile probing or routing policy. */
29
+ export declare function credentialStreamRefusal(args: {
30
+ harnessId: string;
31
+ profileId: string | null;
32
+ model: string | null;
33
+ route?: CredentialRoute;
34
+ refusal: TransientFailureObservation;
35
+ now?: Date;
36
+ }): CredentialUnusableObservation | null;
27
37
  /**
28
38
  * The differential verdict for ONE subject, from evidence that already exists.
29
39
  * Returns a typed observation ONLY when the evidence distinguishes a dead
@@ -35,6 +45,7 @@ export declare function differentialSubjectVerdict(args: {
35
45
  /** The triggering subject: a pinned profile, or null for the default. */
36
46
  profile: CredentialProfile | null;
37
47
  model: string | null;
48
+ route?: CredentialRoute | null;
38
49
  quota: VendorQuotaObservations;
39
50
  /** THIS try's typed failure observations from the attempt stream. */
40
51
  transients: readonly TransientFailureObservation[];
@@ -54,6 +65,7 @@ export declare function currentSubjectProber(args: {
54
65
  harnessId: string;
55
66
  profile: CredentialProfile | null;
56
67
  model: string | null;
68
+ route?: CredentialRoute | null;
57
69
  quota: VendorQuotaObservations;
58
70
  transients: readonly TransientFailureObservation[];
59
71
  probe?: (profile: CredentialProfile) => Promise<CredentialProfileStatus>;
@@ -1 +1 @@
1
- {"version":3,"file":"credential-differential.d.ts","sourceRoot":"","sources":["../src/credential-differential.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EACvB,6BAA6B,EAC9B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAChG,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AA+B1E;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,uBAAuB,CAAC;IAC/B,qEAAqE;IACrE,UAAU,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACnD,yEAAyE;IACzE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACzE,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,GAAG,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAyChD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,uBAAuB,CAAC;IAC/B,UAAU,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACnD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACzE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,6BAA6B,KAAK,IAAI,CAAC;CACvD,GAAG,MAAM,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAYtD;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,iBAAiB,CAAC,GAAG,IAAI,CAAC;IAC1E,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACzE,KAAK,EAAE,uBAAuB,CAAC;IAC/B,QAAQ,CAAC,EAAE,SAAS,6BAA6B,EAAE,CAAC;IACpD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CA+B/B"}
1
+ {"version":3,"file":"credential-differential.d.ts","sourceRoot":"","sources":["../src/credential-differential.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EACvB,6BAA6B,EAE7B,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,kCAAkC,CAAC;AAChG,OAAO,EAKL,KAAK,uBAAuB,EAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAmD1E,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,uBAAuB,GAC7B,6BAA6B,EAAE,CAgBjC;AAED,2EAA2E;AAC3E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,2BAA2B,CAAC;IACrC,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,GAAG,6BAA6B,GAAG,IAAI,CAgBvC;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,uBAAuB,CAAC;IAC/B,qEAAqE;IACrE,UAAU,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACnD,yEAAyE;IACzE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACzE,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,GAAG,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAmDhD;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,uBAAuB,CAAC;IAC/B,UAAU,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACnD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACzE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,6BAA6B,KAAK,IAAI,CAAC;CACvD,GAAG,MAAM,OAAO,CAAC,6BAA6B,GAAG,IAAI,CAAC,CAYtD;AAED;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,YAAY,GAAG,iBAAiB,CAAC,GAAG,IAAI,CAAC;IAC1E,QAAQ,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACzE,KAAK,EAAE,uBAAuB,CAAC;IAC/B,QAAQ,CAAC,EAAE,SAAS,6BAA6B,EAAE,CAAC;IACpD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,GAAG,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAiC/B"}
@@ -1,8 +1,8 @@
1
- import { liveUnusableFor } from "./credential-cooldown.js";
2
1
  import { staticRotationCandidates } from "./credential-profile-rotation.js";
3
- import { probeCredentialProfileStatus, profileStatusAdmits, vendorVerifiedProfileStatus, } from "./credential-profiles.js";
2
+ import { probeCredentialProfileStatus, profileStatusAdmits, vendorVerifiedProfileStatus, vendorCredentialObservation, } from "./credential-profiles.js";
3
+ import { composeCredentialProfileEvidence } from "./account-evidence.js";
4
4
  /** Bounded per-code TTLs (clearing contract, half one: self-expiry). A vendor
5
- * 401/403 is high-confidence and worth hours; an entitlement/probe verdict can
5
+ * credential rejection is high-confidence and worth hours; an entitlement/probe verdict can
6
6
  * be model- or configuration-shaped, so it self-heals within the hour even if
7
7
  * nothing clears it earlier. The ledger clamps every write to 24h max. */
8
8
  const UNUSABLE_TTL_MS = {
@@ -22,6 +22,44 @@ function observation(args, code, source, model, detail) {
22
22
  expires_at: new Date(args.now.getTime() + UNUSABLE_TTL_MS[code]).toISOString(),
23
23
  };
24
24
  }
25
+ /** Derived decision evidence, never a second stored credential verdict. */
26
+ function pollerRejection(absence) {
27
+ return {
28
+ ...observation({
29
+ harnessId: absence.subject.harness,
30
+ profileId: absence.subject.subject_id,
31
+ now: new Date(absence.observed_at),
32
+ }, "auth_revoked", "vendor_poller", null, absence.detail),
33
+ credential_route: absence.subject.credential_route,
34
+ expires_at: new Date(Date.now() + UNUSABLE_TTL_MS.auth_revoked).toISOString(),
35
+ };
36
+ }
37
+ export function pollerCredentialRejections(quota) {
38
+ return quota.absences
39
+ .filter((row) => {
40
+ if (row.reason !== "auth_revoked")
41
+ return false;
42
+ const route = row.subject.credential_route;
43
+ const evidence = {
44
+ snapshots: quota.snapshots.filter((item) => item.subject.credential_route === route),
45
+ absences: quota.absences.filter((item) => item.subject.credential_route === route),
46
+ honored: quota.honored?.filter((item) => item.credential_route === route),
47
+ };
48
+ return (vendorCredentialObservation(evidence, row.subject.harness, row.subject.subject_id)
49
+ ?.outcome === "revoked");
50
+ })
51
+ .map(pollerRejection);
52
+ }
53
+ /** The cheap typed stream intake. No profile probing or routing policy. */
54
+ export function credentialStreamRefusal(args) {
55
+ if (args.refusal.retryable ||
56
+ !["auth_failed", "capability_refused"].includes(args.refusal.category))
57
+ return null;
58
+ return {
59
+ ...observation({ harnessId: args.harnessId, profileId: args.profileId, now: args.now ?? new Date() }, args.refusal.category === "auth_failed" ? "auth_revoked" : "capability_refused", "attempt_stream", args.refusal.category === "auth_failed" ? null : args.model, args.refusal.adapterCode),
60
+ ...(args.route ? { credential_route: args.route } : {}),
61
+ };
62
+ }
25
63
  /**
26
64
  * The differential verdict for ONE subject, from evidence that already exists.
27
65
  * Returns a typed observation ONLY when the evidence distinguishes a dead
@@ -30,6 +68,12 @@ function observation(args, code, source, model, detail) {
30
68
  */
31
69
  export async function differentialSubjectVerdict(args) {
32
70
  const profileId = args.profile?.profile_id ?? null;
71
+ const route = args.route ??
72
+ (args.profile
73
+ ? args.profile.credential_kind === "api_key"
74
+ ? "managed_api_key"
75
+ : "vendor_native"
76
+ : null);
33
77
  const ctx = { harnessId: args.harnessId, profileId, now: args.now ?? new Date() };
34
78
  // 1. The attempt's own stream: a typed NON-RETRYABLE auth/entitlement
35
79
  // refusal the vendor just sent under this exact credential. An auth
@@ -37,20 +81,30 @@ export async function differentialSubjectVerdict(args) {
37
81
  // may be model-scoped, so it condemns only the model this attempt ran.
38
82
  const refusal = args.transients.find((t) => !t.retryable && (t.category === "auth_failed" || t.category === "capability_refused"));
39
83
  if (refusal) {
40
- return observation(ctx, refusal.category === "auth_failed" ? "auth_revoked" : "capability_refused", "attempt_stream", refusal.category === "auth_failed" ? null : args.model, refusal.adapterCode);
84
+ return credentialStreamRefusal({
85
+ ...ctx,
86
+ model: args.model,
87
+ route: route ?? undefined,
88
+ refusal,
89
+ });
41
90
  }
42
91
  // 2. The quota poller's last authenticated vendor contact: a typed
43
92
  // `auth_revoked` absence means the vendor rejected this subject's own token.
44
- const revoked = args.quota.absences.find((a) => a.subject.harness === args.harnessId &&
45
- (a.subject.subject_id ?? null) === profileId &&
46
- a.reason === "auth_revoked");
47
- if (revoked)
48
- return observation(ctx, "auth_revoked", "vendor_poller", null, revoked.detail);
93
+ const quota = route
94
+ ? {
95
+ snapshots: args.quota.snapshots.filter((item) => item.subject.credential_route === route),
96
+ absences: args.quota.absences.filter((item) => item.subject.credential_route === route),
97
+ honored: args.quota.honored?.filter((item) => item.credential_route === route),
98
+ }
99
+ : args.quota;
100
+ const rejected = pollerCredentialRejections(quota).find((item) => item.harness_id === args.harnessId && item.profile_id === profileId);
101
+ if (rejected)
102
+ return rejected;
49
103
  // 3. The local doctor probe (pinned profiles only — the default subject has
50
104
  // no per-profile probe surface): a FAILED verification, vendor overlay
51
105
  // included, is a dead-credential fact the quota path cannot see.
52
106
  if (args.profile && args.probe) {
53
- const status = vendorVerifiedProfileStatus(await probeCredentialProfileStatus(args.profile, args.probe), args.quota);
107
+ const status = vendorVerifiedProfileStatus(await probeCredentialProfileStatus(args.profile, args.probe), quota);
54
108
  if (status.verification === "failed") {
55
109
  return observation(ctx, "verification_failed", "local_probe", null, status.detail ?? null);
56
110
  }
@@ -99,15 +153,18 @@ export async function readyProfilesForRotation(args) {
99
153
  profile,
100
154
  // Rotating INTO a profile the vendor has already rejected would spend a
101
155
  // whole attempt to rediscover the 401 the poller reported a minute ago.
102
- status: vendorVerifiedProfileStatus(await probeCredentialProfileStatus(profile, args.probe), args.quota),
156
+ status: composeCredentialProfileEvidence(await probeCredentialProfileStatus(profile, args.probe), {
157
+ quota: args.quota,
158
+ unusable: args.unusable,
159
+ model: args.model,
160
+ route: profile.credential_kind === "api_key" ? "managed_api_key" : "vendor_native",
161
+ }),
103
162
  })));
104
163
  return new Set(entries
105
164
  .filter(({ profile, status }) =>
106
165
  // Pool and rotation choices are unpinned by construction (a pin
107
166
  // never rotates): a last positive after a timeout may admit (#363).
108
- profileStatusAdmits(profile, status, { unpinned: true }) &&
109
- liveUnusableFor(args.unusable ?? [], args.harnessId, profile.profile_id, args.model) ===
110
- null)
167
+ profileStatusAdmits(profile, status, { unpinned: true }))
111
168
  .map(({ profile }) => profile.profile_id));
112
169
  }
113
170
  //# sourceMappingURL=credential-differential.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credential-differential.js","sourceRoot":"","sources":["../src/credential-differential.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential-differential.js","sourceRoot":"","sources":["../src/credential-differential.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CredentialEvidenceAuthority, CredentialExecutionBinding, CredentialExecutionObserver } from "@claudexor/core";
2
+ /** Bind before native execution; events cannot choose another account's identity. */
3
+ export declare function createCredentialExecutionObserver(authority: CredentialEvidenceAuthority, captured: CredentialExecutionBinding): CredentialExecutionObserver;
4
+ //# sourceMappingURL=credential-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-execution.d.ts","sourceRoot":"","sources":["../src/credential-execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC5B,MAAM,iBAAiB,CAAC;AAKzB,qFAAqF;AACrF,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,2BAA2B,EACtC,QAAQ,EAAE,0BAA0B,GACnC,2BAA2B,CA8F7B"}
@@ -0,0 +1,101 @@
1
+ import { credentialStreamRefusal } from "./credential-differential.js";
2
+ import { classifyStatusError } from "./transientClassify.js";
3
+ /** Bind before native execution; events cannot choose another account's identity. */
4
+ export function createCredentialExecutionObserver(authority, captured) {
5
+ const subject = captured.subject;
6
+ const bindings = new Map();
7
+ for (const route of subject.route
8
+ ? [subject.route]
9
+ : ["vendor_native", "managed_api_key"]) {
10
+ bindings.set(route, { ...captured, subject: { ...subject, route } });
11
+ }
12
+ let route = subject.route;
13
+ let terminalFailure = false;
14
+ let cleanTerminal = false;
15
+ let reportedFailure = false;
16
+ let finished = false;
17
+ let observedModel = null;
18
+ const pending = new Map();
19
+ const servedEvidence = new Map();
20
+ return {
21
+ observe(event) {
22
+ if (event.credential_profile_id !== undefined &&
23
+ event.credential_profile_id !== subject.profileId)
24
+ return;
25
+ if (event.credential_route) {
26
+ if (subject.route !== null && event.credential_route !== subject.route)
27
+ return;
28
+ if (route !== event.credential_route)
29
+ observedModel = null;
30
+ route = event.credential_route;
31
+ }
32
+ if (route === null)
33
+ return;
34
+ const binding = bindings.get(route);
35
+ if (!binding)
36
+ return;
37
+ if (event.observed_model)
38
+ observedModel = event.observed_model;
39
+ const category = event.status?.error_category;
40
+ if (category) {
41
+ const refusal = classifyStatusError(category, event.status?.retry_delay_ms ?? null);
42
+ if (refusal) {
43
+ const value = credentialStreamRefusal({
44
+ harnessId: subject.harnessId,
45
+ profileId: subject.profileId,
46
+ model: subject.requestedModel,
47
+ route,
48
+ refusal,
49
+ now: new Date(event.ts),
50
+ });
51
+ if (value) {
52
+ pending.set(route, value);
53
+ cleanTerminal = false;
54
+ }
55
+ }
56
+ }
57
+ const served = event.type === "usage" &&
58
+ ((event.usage?.input_tokens ?? 0) > 0 || (event.usage?.output_tokens ?? 0) > 0);
59
+ if (served) {
60
+ servedEvidence.set(route, { model: observedModel, at: event.ts });
61
+ }
62
+ if (event.type === "error" || event.payload?.["non_success_result"] === true) {
63
+ terminalFailure = true;
64
+ cleanTerminal = false;
65
+ reportedFailure = true;
66
+ }
67
+ if (event.type === "completed") {
68
+ const exitCode = event.payload?.["exit_code"];
69
+ if (typeof exitCode === "number" && exitCode !== 0)
70
+ terminalFailure = true;
71
+ else if (exitCode === 0 && event.payload?.["aborted"] !== true && !reportedFailure)
72
+ cleanTerminal = true;
73
+ }
74
+ },
75
+ finish() {
76
+ if (finished)
77
+ return;
78
+ finished = true;
79
+ for (const [actualRoute, proof] of servedEvidence) {
80
+ const refusal = pending.get(actualRoute);
81
+ // Failed native results can report cumulative usage before their error.
82
+ if (terminalFailure &&
83
+ !cleanTerminal &&
84
+ refusal &&
85
+ (refusal.model === null || proof.model === null || refusal.model === proof.model))
86
+ continue;
87
+ authority.honorBound(bindings.get(actualRoute), proof.model, proof.at);
88
+ if (refusal?.model === null || refusal?.model === proof.model)
89
+ pending.delete(actualRoute);
90
+ }
91
+ for (const [actualRoute, refusal] of pending) {
92
+ const succeededElsewhere = cleanTerminal &&
93
+ (actualRoute !== route ||
94
+ (refusal.model !== null && observedModel !== null && refusal.model !== observedModel));
95
+ if ((terminalFailure && !cleanTerminal) || succeededElsewhere)
96
+ authority.recordBound(bindings.get(actualRoute), refusal);
97
+ }
98
+ },
99
+ };
100
+ }
101
+ //# sourceMappingURL=credential-execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-execution.js","sourceRoot":"","sources":["../src/credential-execution.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"credential-profile-rotation.d.ts","sourceRoot":"","sources":["../src/credential-profile-rotation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential-profile-rotation.d.ts","sourceRoot":"","sources":["../src/credential-profile-rotation.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { HarnessRunSpec as HarnessRunSpecSchema, RouteCredentialUnusablePayload, } from "@claudexor/schema";
2
2
  import { quotaConstraintAppliesToModel } from "@claudexor/budget";
3
3
  import { stampCredentialProfileSelection } from "@claudexor/core";
4
- import { credentialPoolExhausted, liveUnusableFor, poolMemberEvidence, profileQuotaBlock, } from "./credential-cooldown.js";
4
+ import { credentialPoolExhausted, poolMemberEvidence, profileQuotaBlock, } from "./credential-cooldown.js";
5
5
  import { refusedBeforeProgress } from "./pre-progress-refusal.js";
6
+ import { applicableCredentialUnusable } from "./account-evidence.js";
6
7
  import { reactiveRotationEvidence, rotationRetryEligible, } from "./rotation-predicate.js";
7
8
  export { rotationRetryEligible } from "./rotation-predicate.js";
8
9
  /** The route of a limit decision's subject: a pinned profile decides by its
@@ -139,7 +140,12 @@ function rotationExhaustionCandidates(args) {
139
140
  // so typed, instead of hiding behind "not_ready" — a dead credential is
140
141
  // not a readiness hiccup, and its quota evidence never carries a
141
142
  // reopen promise.
142
- const dead = liveUnusableFor(args.unusable ?? [], args.harnessId, profile.profile_id, args.model);
143
+ const dead = applicableCredentialUnusable({ harness_id: args.harnessId, profile_id: profile.profile_id }, {
144
+ unusable: args.unusable,
145
+ quota: { snapshots: args.snapshots, absences: [] },
146
+ model: args.model,
147
+ route: profile.credential_kind === "api_key" ? "managed_api_key" : "vendor_native",
148
+ });
143
149
  const rejected = profile.profile_id === args.current?.profile_id
144
150
  ? "current"
145
151
  : args.policy.rotation_eligible.length > 0 &&