@claudexor/orchestrator 3.1.2 → 3.3.7-rc.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 (137) hide show
  1. package/dist/attemptFinalize.d.ts +14 -11
  2. package/dist/attemptFinalize.d.ts.map +1 -1
  3. package/dist/attemptFinalize.js +41 -14
  4. package/dist/attemptFinalize.js.map +1 -1
  5. package/dist/attemptTelemetry.d.ts +7 -0
  6. package/dist/attemptTelemetry.d.ts.map +1 -1
  7. package/dist/attemptTelemetry.js +2 -1
  8. package/dist/attemptTelemetry.js.map +1 -1
  9. package/dist/attemptUsageCost.d.ts +24 -2
  10. package/dist/attemptUsageCost.d.ts.map +1 -1
  11. package/dist/attemptUsageCost.js +18 -2
  12. package/dist/attemptUsageCost.js.map +1 -1
  13. package/dist/budgetFailure.d.ts +1 -1
  14. package/dist/budgetFailure.d.ts.map +1 -1
  15. package/dist/budgetFailure.js.map +1 -1
  16. package/dist/candidateEvidence.d.ts +24 -0
  17. package/dist/candidateEvidence.d.ts.map +1 -1
  18. package/dist/candidateEvidence.js +26 -0
  19. package/dist/candidateEvidence.js.map +1 -1
  20. package/dist/credential-profile-rotation.d.ts +145 -0
  21. package/dist/credential-profile-rotation.d.ts.map +1 -0
  22. package/dist/credential-profile-rotation.js +335 -0
  23. package/dist/credential-profile-rotation.js.map +1 -0
  24. package/dist/credential-profiles.d.ts +90 -130
  25. package/dist/credential-profiles.d.ts.map +1 -1
  26. package/dist/credential-profiles.js +156 -290
  27. package/dist/credential-profiles.js.map +1 -1
  28. package/dist/decisionBudget.d.ts +2 -2
  29. package/dist/decisionBudget.d.ts.map +1 -1
  30. package/dist/deepScanReducer.d.ts +14 -44
  31. package/dist/deepScanReducer.d.ts.map +1 -1
  32. package/dist/deepScanReducer.js +240 -128
  33. package/dist/deepScanReducer.js.map +1 -1
  34. package/dist/delegatedHome.d.ts +156 -0
  35. package/dist/delegatedHome.d.ts.map +1 -0
  36. package/dist/delegatedHome.js +179 -0
  37. package/dist/delegatedHome.js.map +1 -0
  38. package/dist/delegationBudgetAuthority.d.ts.map +1 -1
  39. package/dist/delegationBudgetAuthority.js.map +1 -1
  40. package/dist/delegationFailure.d.ts.map +1 -1
  41. package/dist/git-precondition.d.ts +11 -0
  42. package/dist/git-precondition.d.ts.map +1 -0
  43. package/dist/git-precondition.js +69 -0
  44. package/dist/git-precondition.js.map +1 -0
  45. package/dist/index.d.ts +1 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +1 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/interaction.d.ts +14 -6
  50. package/dist/interaction.d.ts.map +1 -1
  51. package/dist/interaction.js +106 -19
  52. package/dist/interaction.js.map +1 -1
  53. package/dist/orchestrator.d.ts +64 -83
  54. package/dist/orchestrator.d.ts.map +1 -1
  55. package/dist/orchestrator.js +578 -691
  56. package/dist/orchestrator.js.map +1 -1
  57. package/dist/planBrief.d.ts +27 -0
  58. package/dist/planBrief.d.ts.map +1 -0
  59. package/dist/planBrief.js +42 -0
  60. package/dist/planBrief.js.map +1 -0
  61. package/dist/planQuestions.js +4 -1
  62. package/dist/planQuestions.js.map +1 -1
  63. package/dist/planRun.d.ts +4 -3
  64. package/dist/planRun.d.ts.map +1 -1
  65. package/dist/planRun.js +33 -33
  66. package/dist/planRun.js.map +1 -1
  67. package/dist/plannerAttempt.d.ts +64 -0
  68. package/dist/plannerAttempt.d.ts.map +1 -0
  69. package/dist/plannerAttempt.js +235 -0
  70. package/dist/plannerAttempt.js.map +1 -0
  71. package/dist/policyFindings.js.map +1 -1
  72. package/dist/requestRequirements.d.ts +43 -3
  73. package/dist/requestRequirements.d.ts.map +1 -1
  74. package/dist/requestRequirements.js +106 -13
  75. package/dist/requestRequirements.js.map +1 -1
  76. package/dist/reviewerPanel.js.map +1 -1
  77. package/dist/root-ledger.d.ts.map +1 -1
  78. package/dist/root-ledger.js +2 -0
  79. package/dist/root-ledger.js.map +1 -1
  80. package/dist/run-bounded.d.ts.map +1 -1
  81. package/dist/run-bounded.js +7 -1
  82. package/dist/run-bounded.js.map +1 -1
  83. package/dist/run-input-resolution.d.ts.map +1 -1
  84. package/dist/run-input-resolution.js +26 -8
  85. package/dist/run-input-resolution.js.map +1 -1
  86. package/dist/runEventLog.d.ts +48 -0
  87. package/dist/runEventLog.d.ts.map +1 -0
  88. package/dist/runEventLog.js +63 -0
  89. package/dist/runEventLog.js.map +1 -0
  90. package/dist/runFacts.d.ts +23 -0
  91. package/dist/runFacts.d.ts.map +1 -0
  92. package/dist/runFacts.js +179 -0
  93. package/dist/runFacts.js.map +1 -0
  94. package/dist/runFactsBuilder.d.ts +5 -0
  95. package/dist/runFactsBuilder.d.ts.map +1 -0
  96. package/dist/runFactsBuilder.js +412 -0
  97. package/dist/runFactsBuilder.js.map +1 -0
  98. package/dist/runFactsDeliverable.d.ts +13 -0
  99. package/dist/runFactsDeliverable.d.ts.map +1 -0
  100. package/dist/runFactsDeliverable.js +94 -0
  101. package/dist/runFactsDeliverable.js.map +1 -0
  102. package/dist/runFactsPresentation.d.ts +7 -0
  103. package/dist/runFactsPresentation.d.ts.map +1 -0
  104. package/dist/runFactsPresentation.js +113 -0
  105. package/dist/runFactsPresentation.js.map +1 -0
  106. package/dist/runFactsReview.d.ts +7 -0
  107. package/dist/runFactsReview.d.ts.map +1 -0
  108. package/dist/runFactsReview.js +63 -0
  109. package/dist/runFactsReview.js.map +1 -0
  110. package/dist/runSupport.d.ts +17 -15
  111. package/dist/runSupport.d.ts.map +1 -1
  112. package/dist/runSupport.js +16 -0
  113. package/dist/runSupport.js.map +1 -1
  114. package/dist/runTerminalContext.d.ts +31 -0
  115. package/dist/runTerminalContext.d.ts.map +1 -0
  116. package/dist/runTerminalContext.js +12 -0
  117. package/dist/runTerminalContext.js.map +1 -0
  118. package/dist/runTerminalResults.d.ts +80 -0
  119. package/dist/runTerminalResults.d.ts.map +1 -0
  120. package/dist/runTerminalResults.js +164 -0
  121. package/dist/runTerminalResults.js.map +1 -0
  122. package/dist/runTerminals.d.ts +4 -80
  123. package/dist/runTerminals.d.ts.map +1 -1
  124. package/dist/runTerminals.js +357 -260
  125. package/dist/runTerminals.js.map +1 -1
  126. package/dist/secretDiff.d.ts +3 -0
  127. package/dist/secretDiff.d.ts.map +1 -1
  128. package/dist/secretDiff.js +7 -0
  129. package/dist/secretDiff.js.map +1 -1
  130. package/dist/structuredOutput.d.ts.map +1 -1
  131. package/dist/structuredOutput.js.map +1 -1
  132. package/dist/task-contract-builder.d.ts +35 -0
  133. package/dist/task-contract-builder.d.ts.map +1 -0
  134. package/dist/task-contract-builder.js +114 -0
  135. package/dist/task-contract-builder.js.map +1 -0
  136. package/dist/transientClassify.js.map +1 -1
  137. package/package.json +17 -17
@@ -1,4 +1,8 @@
1
- import { HarnessRunSpec as HarnessRunSpecSchema } from "@claudexor/schema";
1
+ import { CredentialProfileStatus as CredentialProfileStatusSchema } from "@claudexor/schema";
2
+ import { redactSecrets } from "@claudexor/util";
3
+ import { estimateEffectiveAuthRoute } from "@claudexor/schema";
4
+ import { nextEligibleProfile, profileHeadroomBreach, } from "./credential-profile-rotation.js";
5
+ export { nextEligibleProfile, planReactiveRotation, preflightCredentialProfile, preflightDefaultSubject, profileHeadroomBreach, rotateSpecOnTypedLimit, rotationRetryEligible, staticRotationCandidates, } from "./credential-profile-rotation.js";
2
6
  /**
3
7
  * The ONE resolve owner for credential profiles (INV-135): explicit id →
4
8
  * durable registry entry for exactly this harness. Unknown, disabled, or
@@ -27,295 +31,186 @@ export async function selectedProfileAvailability(input) {
27
31
  }
28
32
  if (!input.probe)
29
33
  return `harness "${input.harnessId}" has no profile probe`;
30
- const result = await input.probe(profile);
31
- const verificationAdmits = result.verification === "passed" ||
32
- (profile.credential_kind === "api_key" && result.verification === "not_run");
33
- return result.availability === "available" && verificationAdmits
34
+ const result = vendorVerifiedProfileStatus(await probeCredentialProfileStatus(profile, input.probe), input.quota);
35
+ return profileStatusAdmits(profile, result)
34
36
  ? "available"
35
37
  : (result.detail ?? `${result.availability}/${result.verification}`);
36
38
  }
37
39
  /**
38
- * Proactive headroom check (W5.4 `profile_headroom_preflight`): the SELECTED
39
- * profile's freshest snapshot windows against the policy threshold. Unknown
40
- * usage is NOT a breach rotation never triggers on missing data.
40
+ * Quota sources that are an AUTHENTICATED REQUEST TO THE VENDOR made with the
41
+ * subject's own credential the vendor answering is proof the credential is
42
+ * still honored, and its 401/403 is proof it is not. Locally-read sources
43
+ * (`claude_statusline`, `codex_rollout`) and mid-run stream evidence
44
+ * (`claude_api_retry`) are deliberately excluded: they observe usage, not
45
+ * credential liveness, and treating them as proof would restate the very
46
+ * over-promise this overlay exists to remove.
41
47
  */
42
- export function profileHeadroomBreach(snapshots, harnessId, profileId, threshold) {
43
- for (const snapshot of snapshots) {
44
- // FRESH evidence only (release wave tier1 #3): a stale or unknown reading
45
- // must never breach headroom, rotate a profile away, or fail selection.
46
- if (snapshot.freshness !== "fresh")
47
- continue;
48
- if (snapshot.subject.harness !== harnessId)
49
- continue;
50
- if ((snapshot.subject.subject_id ?? null) !== profileId)
51
- continue;
52
- for (const constraint of snapshot.constraints) {
53
- if (constraint.used_ratio !== null && constraint.used_ratio >= threshold) {
54
- return {
55
- constraint_id: constraint.id,
56
- used_ratio: constraint.used_ratio,
57
- threshold,
58
- resets_at: constraint.resets_at,
59
- };
60
- }
61
- }
48
+ const VENDOR_AUTHENTICATED_QUOTA_SOURCES = new Set([
49
+ "claude_oauth_usage",
50
+ "codex_app_server",
51
+ ]);
52
+ /**
53
+ * The poller's verdict for one profile, if it has one (INV-135 honesty).
54
+ *
55
+ * The quota poller ALREADY calls the vendor once a minute with each profile's
56
+ * own token; a fresh snapshot from such a call means the credential was
57
+ * honored, and a typed `auth_revoked` absence means it was rejected. Reading
58
+ * that existing evidence is why profile verification can be live without a
59
+ * probe run a config-dir login has no cheaper liveness test than spending
60
+ * quota on a mini-run, so building one would cost exactly what it measures.
61
+ */
62
+ export function vendorCredentialObservation(quota, harnessId, profileId) {
63
+ const owns = (subject) => subject.harness === harnessId && (subject.subject_id ?? null) === profileId;
64
+ const snapshot = quota.snapshots.find((item) => owns(item.subject) && VENDOR_AUTHENTICATED_QUOTA_SOURCES.has(item.source));
65
+ if (snapshot)
66
+ return { outcome: "honored", observed_at: snapshot.observed_at };
67
+ const revoked = quota.absences.find((item) => owns(item.subject) && item.reason === "auth_revoked");
68
+ if (revoked) {
69
+ return {
70
+ outcome: "revoked",
71
+ observed_at: revoked.observed_at,
72
+ detail: revoked.detail ?? "the vendor rejected this profile's credential",
73
+ };
62
74
  }
63
75
  return null;
64
76
  }
65
77
  /**
66
- * The next rotation target after `currentProfileId` (W5.4): policy order wins
67
- * (`rotation_eligible`), else every enabled profile of the harness in registry
68
- * order. The current profile and disabled/unknown ids never come back; a
69
- * profile already over the headroom bound is skipped (rotating INTO a spent
70
- * subscription is not a failover). Cross-subscription rotation of one vendor
71
- * is allowed by owner decision but rotation NEVER crosses credential kinds
72
- * (release wave round-16 BLOCK): a subscription→API-key swap silently changes
73
- * the payment model mid-attempt, and the attempt's first-wins auth-route
74
- * receipt (decided once before spawn) would misvalue metered usage as
75
- * subscription entitlement, bypassing a finite cash cap.
78
+ * Overlay the vendor's verdict onto a locally-probed profile status, so
79
+ * `verification` means what a router assumes it means.
80
+ *
81
+ * The overlay may DOWNGRADE freely a rejected credential is a fact the local
82
+ * store cannot see, and it is exactly the case that made a `passed` profile
83
+ * fail a run one minute later. It may not UPGRADE: a local probe that already
84
+ * said "this dir is logged in under the wrong method" knows something the usage
85
+ * endpoint does not, so a successful vendor call only re-stamps provenance on
86
+ * an already-passing verdict. Absent a verdict the status is returned
87
+ * untouched, still declaring `local_store`.
76
88
  */
77
- export function nextEligibleProfile(registry, harnessId, policy, current, snapshots, excluded = new Set()) {
78
- const pool = registry.filter((p) => p.harness_id === harnessId && p.enabled);
79
- const ordered = policy.rotation_eligible.length > 0
80
- ? policy.rotation_eligible
81
- .map((id) => pool.find((p) => p.profile_id === id))
82
- .filter((p) => p !== undefined)
83
- : pool;
84
- for (const candidate of ordered) {
85
- if (candidate.profile_id === current?.profile_id)
86
- continue;
87
- if (excluded.has(candidate.profile_id))
88
- continue;
89
- // Fail-CLOSED kind guard (round-17 hardening of the round-16 BLOCK): the
90
- // kind comes from the TYPED current profile in hand — never re-found in
91
- // a freshly reloaded pool, where a mid-flight disable/remove of the
92
- // current profile would have silently dropped the cross-kind prohibition.
93
- if (current !== null && candidate.credential_kind !== current.credential_kind)
94
- continue;
95
- // `current === null` is the DEFAULT subject (the vendor-native store): the
96
- // same round-16 BLOCK applies — rotating the subscription default INTO an
97
- // api_key profile would silently change the payment model mid-attempt.
98
- if (current === null && candidate.credential_kind === "api_key")
99
- continue;
100
- if (profileHeadroomBreach(snapshots, harnessId, candidate.profile_id, policy.headroom_threshold))
101
- continue;
102
- return candidate;
89
+ export function withVendorCredentialObservation(status, observation) {
90
+ if (!observation)
91
+ return status;
92
+ if (observation.outcome === "revoked") {
93
+ return {
94
+ ...status,
95
+ verification: "failed",
96
+ verification_source: "vendor",
97
+ detail: redactSecrets(observation.detail),
98
+ last_verified_at: observation.observed_at,
99
+ };
103
100
  }
104
- return null;
101
+ if (status.verification !== "passed")
102
+ return status;
103
+ return {
104
+ ...status,
105
+ verification_source: "vendor",
106
+ last_verified_at: observation.observed_at,
107
+ };
108
+ }
109
+ /**
110
+ * The vendor-verified reading of ONE probed profile status — the single
111
+ * composition behind every consumer of `profileStatusAdmits`: run admission,
112
+ * rotation readiness, and the accounts projection. Keeping the overlay in one
113
+ * place is the point: applying it on the listing branch alone is what let the
114
+ * Accounts card say `revoked` while the router dispatched into the same token.
115
+ *
116
+ * `probeCredentialProfileStatus` guarantees the status carries its own
117
+ * profile's identity, so the subject is read from the status itself. Without
118
+ * quota evidence the local verdict stands untouched.
119
+ */
120
+ export function vendorVerifiedProfileStatus(status, quota) {
121
+ if (!quota)
122
+ return status;
123
+ return withVendorCredentialObservation(status, vendorCredentialObservation(quota, status.harness_id, status.profile_id));
124
+ }
125
+ /** One readiness predicate shared by run admission and accounts projection. */
126
+ export function profileStatusAdmits(profile, result) {
127
+ const verificationAdmits = result.verification === "passed" ||
128
+ (profile.credential_kind === "api_key" && result.verification === "not_run");
129
+ return result.availability === "available" && verificationAdmits;
130
+ }
131
+ /** One fail-closed profile doctor wrapper shared by Accounts and runtime
132
+ * selection. Probe failures are readiness facts, never selector exceptions. */
133
+ export async function probeCredentialProfileStatus(profile, probe) {
134
+ if (!probe) {
135
+ return {
136
+ profile_id: profile.profile_id,
137
+ harness_id: profile.harness_id,
138
+ availability: "unknown",
139
+ verification: "not_run",
140
+ verification_source: "local_store",
141
+ detail: `harness "${profile.harness_id}" has no profile probe`,
142
+ last_verified_at: null,
143
+ };
144
+ }
145
+ try {
146
+ const result = CredentialProfileStatusSchema.parse(await probe(profile));
147
+ if (result.profile_id !== profile.profile_id || result.harness_id !== profile.harness_id) {
148
+ throw new Error("profile readiness probe returned status for a different profile");
149
+ }
150
+ return {
151
+ ...result,
152
+ ...(result.detail === undefined ? {} : { detail: redactSecrets(result.detail) }),
153
+ };
154
+ }
155
+ catch (error) {
156
+ return {
157
+ profile_id: profile.profile_id,
158
+ harness_id: profile.harness_id,
159
+ availability: "unknown",
160
+ verification: "not_run",
161
+ verification_source: "local_store",
162
+ detail: `profile readiness probe failed: ${redactSecrets(error instanceof Error ? error.message : String(error))}`,
163
+ last_verified_at: null,
164
+ };
165
+ }
166
+ }
167
+ /** Same precedence used by run admission: the first explicit route wins;
168
+ * `auto` means fall through rather than shadow a more general setting. */
169
+ export function effectiveAuthPreference(...values) {
170
+ return (values.find((value) => value !== undefined && value !== null && value !== "auto") ?? "auto");
171
+ }
172
+ /** Fresh effective route for the unprofiled/default subject in Accounts. The
173
+ * gateway status proves aggregate intent readiness; the schema auth estimator
174
+ * then chooses the exact usable source under the same configured preference as
175
+ * run admission. Returning the route (not merely a bool) keeps next_up labels
176
+ * truthful when a native-capable harness falls back to an API key. */
177
+ export function defaultCredentialRoute(status, requested) {
178
+ if (status.status !== "ok" || status.routableIntents.length === 0)
179
+ return null;
180
+ return estimateEffectiveAuthRoute(requested, status.authSources);
105
181
  }
106
182
  export function nextUpIdentity(args) {
107
- const { registry, harnessId, policy, snapshots, nativeEnabled } = args;
108
- if (!nativeEnabled) {
183
+ const { registry, harnessId, policy, snapshots, defaultEnabled, defaultReady, defaultRoute, readyProfileIds, } = args;
184
+ if (!defaultEnabled) {
109
185
  return {
110
186
  kind: "none",
111
- reason: "the CLI login is disabled; pin an account per-run (--profile) or per-thread",
187
+ reason: "the default credential is disabled; enable it or pin an account per-run (--profile)",
188
+ };
189
+ }
190
+ if (!defaultReady) {
191
+ return {
192
+ kind: "none",
193
+ reason: "the default credential is not ready; refresh Accounts or run `claudexor doctor`",
112
194
  };
113
195
  }
114
196
  // Under `rotate`, a native/default subject already over its headroom bound
115
197
  // fails over to the next eligible enabled profile BEFORE spawn — that is who
116
198
  // an unpinned run routes to next. `ask`/`fail` proceed on the native default.
117
- if (policy.limit_action === "rotate") {
199
+ if (policy.limit_action === "rotate" && defaultRoute === "local_session") {
118
200
  const breach = profileHeadroomBreach(snapshots, harnessId, null, policy.headroom_threshold);
119
201
  if (breach) {
120
- const next = nextEligibleProfile(registry, harnessId, policy, null, snapshots);
202
+ const next = nextEligibleProfile(registry, harnessId, policy, null, snapshots, readyProfileIds);
121
203
  if (next)
122
204
  return { kind: "profile", profileId: next.profile_id };
123
205
  }
124
206
  }
125
- return { kind: "native" };
126
- }
127
- /**
128
- * `rotation_retry_eligible` (sol #30): a failover retry is allowed ONLY when
129
- * the attempt saw a TYPED vendor limit AND produced no deliverable and no
130
- * workspace mutation — a partially-acted attempt never silently reruns.
131
- */
132
- export function rotationRetryEligible(input) {
133
- return input.sawTypedLimit && input.deliverableEmpty;
134
- }
135
- function emitRotationExhausted(args) {
136
- const excluded = args.excluded ?? new Set();
137
- const candidates = args.registry
138
- .filter((profile) => profile.harness_id === args.harnessId && profile.enabled)
139
- .map((profile) => {
140
- const breach = profileHeadroomBreach(args.snapshots, args.harnessId, profile.profile_id, args.policy.headroom_threshold);
141
- const rejected = profile.profile_id === args.current?.profile_id
142
- ? "current"
143
- : args.policy.rotation_eligible.length > 0 &&
144
- !args.policy.rotation_eligible.includes(profile.profile_id)
145
- ? "not_in_rotation_policy"
146
- : excluded.has(profile.profile_id)
147
- ? "already_tried"
148
- : args.current && profile.credential_kind !== args.current.credential_kind
149
- ? "credential_kind_mismatch"
150
- : args.current === null && profile.credential_kind === "api_key"
151
- ? "credential_kind_mismatch"
152
- : breach
153
- ? "headroom_exceeded"
154
- : "not_selected";
207
+ if (!defaultRoute) {
155
208
  return {
156
- profile_id: profile.profile_id,
157
- credential_kind: profile.credential_kind,
158
- rejected,
159
- headroom: breach,
209
+ kind: "none",
210
+ reason: "the default credential route is unknown; refresh Accounts or run `claudexor doctor`",
160
211
  };
161
- });
162
- args.emit("route.profile.rotation_exhausted", {
163
- harness_id: args.harnessId,
164
- attempt_id: args.attemptId,
165
- from_profile_id: args.current?.profile_id ?? null,
166
- reason: args.reason,
167
- threshold: args.policy.headroom_threshold,
168
- candidates,
169
- });
170
- }
171
- /**
172
- * `profile_headroom_preflight` (W5.4): BEFORE spawn, the selected profile's
173
- * freshest quota windows are checked against the policy threshold. A breach
174
- * is always a typed event; `rotate` swaps to the next eligible profile with
175
- * provenance, `ask`/`fail` proceed on the selected profile — the runtime
176
- * `vendor_limit_rejected` evidence stays the terminating truth.
177
- */
178
- export function preflightCredentialProfile(args) {
179
- const { profile, harnessId, policy, registry, snapshots, emit } = args;
180
- const breach = profileHeadroomBreach(snapshots, harnessId, profile.profile_id, policy.headroom_threshold);
181
- if (!breach)
182
- return profile;
183
- emit("route.profile.headroom_exceeded", {
184
- harness_id: harnessId,
185
- profile_id: profile.profile_id,
186
- action: policy.limit_action,
187
- constraint_id: breach.constraint_id,
188
- used_ratio: breach.used_ratio,
189
- threshold: breach.threshold,
190
- resets_at: breach.resets_at,
191
- });
192
- if (policy.limit_action === "fail") {
193
- // The documented FAIL action fails (release wave tier1 #4): a FRESH breach
194
- // under fail refuses before spawn with the evidence, instead of silently
195
- // proceeding into a vendor rejection.
196
- throw new Error(`credential profile "${profile.profile_id}" (${harnessId}) is over its headroom threshold ` +
197
- `(${breach.constraint_id} at ${Math.round(breach.used_ratio * 100)}% >= ${Math.round(breach.threshold * 100)}%; ` +
198
- `limit_action=fail${breach.resets_at ? `; resets ${breach.resets_at}` : ""})`);
199
212
  }
200
- if (policy.limit_action !== "rotate")
201
- return profile;
202
- const next = nextEligibleProfile(registry, harnessId, policy, profile, snapshots);
203
- if (!next) {
204
- emitRotationExhausted({
205
- current: profile,
206
- harnessId,
207
- policy,
208
- registry,
209
- snapshots,
210
- reason: "profile_headroom_preflight",
211
- emit,
212
- });
213
- return profile;
214
- }
215
- emit("route.profile.rotated", {
216
- harness_id: harnessId,
217
- from_profile_id: profile.profile_id,
218
- to_profile_id: next.profile_id,
219
- reason: "profile_headroom_preflight",
220
- constraint_id: breach.constraint_id,
221
- used_ratio: breach.used_ratio,
222
- resets_at: breach.resets_at,
223
- });
224
- return next;
225
- }
226
- /**
227
- * Default-subject start selection (INV-135, owner scope "auto-balance"): when
228
- * NO profile is pinned, the policy is `rotate`, and the DEFAULT store's own
229
- * fresh quota window is at/over the headroom bound, pick the first eligible
230
- * SUBSCRIPTION profile instead of spawning into a near-certain vendor limit.
231
- * Strictly opt-in: `fail`/`ask` keep today's default-user behavior untouched
232
- * (the profile engine's fail action governs PINNED profiles only — throwing
233
- * here would brick every default user at 90% quota). Unknown or stale usage
234
- * never rotates.
235
- */
236
- export function preflightDefaultSubject(args) {
237
- const { harnessId, policy, registry, snapshots, emit } = args;
238
- if (policy.limit_action !== "rotate")
239
- return null;
240
- const breach = profileHeadroomBreach(snapshots, harnessId, null, policy.headroom_threshold);
241
- if (!breach)
242
- return null;
243
- emit("route.profile.headroom_exceeded", {
244
- harness_id: harnessId,
245
- profile_id: null,
246
- action: policy.limit_action,
247
- constraint_id: breach.constraint_id,
248
- used_ratio: breach.used_ratio,
249
- threshold: breach.threshold,
250
- resets_at: breach.resets_at,
251
- });
252
- const next = nextEligibleProfile(registry, harnessId, policy, null, snapshots);
253
- if (!next) {
254
- emitRotationExhausted({
255
- current: null,
256
- harnessId,
257
- policy,
258
- registry,
259
- snapshots,
260
- reason: "profile_headroom_preflight",
261
- emit,
262
- });
263
- return null;
264
- }
265
- emit("route.profile.rotated", {
266
- harness_id: harnessId,
267
- from_profile_id: null,
268
- to_profile_id: next.profile_id,
269
- reason: "profile_headroom_preflight",
270
- constraint_id: breach.constraint_id,
271
- used_ratio: breach.used_ratio,
272
- resets_at: breach.resets_at,
273
- });
274
- return next;
275
- }
276
- /**
277
- * Reactive failover plan (`vendor_limit_rejected`, W5.4): rotation fires ONLY
278
- * on the typed predicate under a `rotate` policy, marks the current profile
279
- * tried (at most once per attempt each), and returns the next target with
280
- * provenance already emitted — or null when the attempt must fail as-is.
281
- * `currentProfile: null` is the DEFAULT subject: allowed ONLY when the caller
282
- * proves the attempt's pre-spawn route was vendor_native (a metered default
283
- * hitting a limit is a budget fact, not a subscription to fail over from).
284
- */
285
- export function planReactiveRotation(args) {
286
- if (!rotationRetryEligible(args))
287
- return null;
288
- if (args.policy.limit_action !== "rotate")
289
- return null;
290
- if (args.currentProfile === null && args.defaultRouteWasVendorNative !== true)
291
- return null;
292
- if (args.currentProfile)
293
- args.triedProfiles.add(args.currentProfile.profile_id);
294
- const next = nextEligibleProfile(args.registry, args.harnessId, args.policy, args.currentProfile, args.snapshots, args.triedProfiles);
295
- if (!next) {
296
- emitRotationExhausted({
297
- current: args.currentProfile,
298
- harnessId: args.harnessId,
299
- policy: args.policy,
300
- registry: args.registry,
301
- snapshots: args.snapshots,
302
- excluded: args.triedProfiles,
303
- attemptId: args.attemptId,
304
- reason: "vendor_limit_rejected",
305
- emit: args.emit,
306
- });
307
- return null;
308
- }
309
- args.emit("route.profile.rotated", {
310
- harness_id: args.harnessId,
311
- attempt_id: args.attemptId,
312
- from_profile_id: args.currentProfile?.profile_id ?? null,
313
- to_profile_id: next.profile_id,
314
- reason: "vendor_limit_rejected",
315
- retry_delay_ms: args.lastLimit?.retryDelayMs ?? null,
316
- resets_at: args.lastLimit?.resetsAt ?? null,
317
- });
318
- return next;
213
+ return { kind: "native", route: defaultRoute };
319
214
  }
320
215
  /**
321
216
  * INV-135 at the engine boundary: a cached vendor session resumes ONLY under
@@ -346,33 +241,4 @@ export function observeNativeSessionEvent(input, harnessId, ev) {
346
241
  }
347
242
  }
348
243
  }
349
- /**
350
- * Shared reactive-failover step for BOTH lanes: given the attempt's typed
351
- * evidence, plan a rotation and rebuild the spec on a NEW vendor session
352
- * under the next profile — or return null when the attempt must fail as-is.
353
- */
354
- export function rotateSpecOnTypedLimit(args) {
355
- const rotation = planReactiveRotation({
356
- currentProfile: args.spec.credential_profile ?? null,
357
- defaultRouteWasVendorNative: args.defaultRouteWasVendorNative,
358
- harnessId: args.harnessId,
359
- attemptId: args.attemptId,
360
- policy: args.policy,
361
- registry: args.registry,
362
- snapshots: args.snapshots,
363
- triedProfiles: args.triedProfiles,
364
- sawTypedLimit: args.sawTypedLimit,
365
- deliverableEmpty: args.deliverableEmpty,
366
- lastLimit: args.lastLimit,
367
- emit: args.emit,
368
- });
369
- if (!rotation)
370
- return null;
371
- return HarnessRunSpecSchema.parse({
372
- ...args.spec,
373
- session_id: args.newSessionId(),
374
- credential_profile: rotation,
375
- resume_session_id: null,
376
- });
377
- }
378
244
  //# sourceMappingURL=credential-profiles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credential-profiles.js","sourceRoot":"","sources":["../src/credential-profiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential-profiles.js","sourceRoot":"","sources":["../src/credential-profiles.ts"],"names":[],"mappings":"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"}
@@ -30,14 +30,14 @@ export declare function decisionBudgetSummary(ledger: BudgetLedger): {
30
30
  readonly estimated: boolean;
31
31
  readonly cash_usd: number;
32
32
  readonly valuation_usd: number;
33
- readonly valuation_knowledge: "exact" | "estimated" | "unknown";
33
+ readonly valuation_knowledge: "estimated" | "exact" | "unknown";
34
34
  };
35
35
  export declare function arbitrationBudgetOptions(ledger: BudgetLedger): {
36
36
  readonly spendUsd: number;
37
37
  readonly estimatedSpend: boolean;
38
38
  readonly cashUsd: number;
39
39
  readonly valuationUsd: number;
40
- readonly valuationKnowledge: "exact" | "estimated" | "unknown";
40
+ readonly valuationKnowledge: "estimated" | "exact" | "unknown";
41
41
  };
42
42
  export {};
43
43
  //# sourceMappingURL=decisionBudget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decisionBudget.d.ts","sourceRoot":"","sources":["../src/decisionBudget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;CACvD;AAED,UAAU,oBAAoB;IAC5B,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;CAC9D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,GAAG,qBAAqB,CA2BzF;AAED;uDACuD;AACvD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACpE,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACjD,IAAI,CA6BN;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY;;;;;;EAQzD;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY;;;;;;EAQ5D"}
1
+ {"version":3,"file":"decisionBudget.d.ts","sourceRoot":"","sources":["../src/decisionBudget.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;CACvD;AAED,UAAU,oBAAoB;IAC5B,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;CAC9D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,GAAG,qBAAqB,CA2BzF;AAED;uDACuD;AACvD,wBAAgB,uBAAuB,CACrC,OAAO,EAAE;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACpE,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACjD,IAAI,CA6BN;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY;aAEtD,SAAS;aACT,SAAS;aACT,QAAQ;aACR,aAAa;aACb,mBAAmB;EAEtB;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY;aAEzD,QAAQ;aACR,cAAc;aACd,OAAO;aACP,YAAY;aACZ,kBAAkB;EAErB"}