@claudexor/orchestrator 5.0.1 → 5.1.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 (251) hide show
  1. package/dist/account-evidence.d.ts +7 -0
  2. package/dist/account-evidence.d.ts.map +1 -1
  3. package/dist/account-evidence.js +12 -0
  4. package/dist/account-evidence.js.map +1 -1
  5. package/dist/account-pool.d.ts +4 -0
  6. package/dist/account-pool.d.ts.map +1 -1
  7. package/dist/account-pool.js +8 -1
  8. package/dist/account-pool.js.map +1 -1
  9. package/dist/account-resolution.d.ts.map +1 -1
  10. package/dist/account-resolution.js +7 -5
  11. package/dist/account-resolution.js.map +1 -1
  12. package/dist/attemptFinalize.d.ts +22 -7
  13. package/dist/attemptFinalize.d.ts.map +1 -1
  14. package/dist/attemptFinalize.js +29 -7
  15. package/dist/attemptFinalize.js.map +1 -1
  16. package/dist/attemptTelemetry.d.ts +19 -18
  17. package/dist/attemptTelemetry.d.ts.map +1 -1
  18. package/dist/attemptTelemetry.js +32 -79
  19. package/dist/attemptTelemetry.js.map +1 -1
  20. package/dist/attemptUsage.d.ts.map +1 -1
  21. package/dist/attemptUsage.js +6 -14
  22. package/dist/attemptUsage.js.map +1 -1
  23. package/dist/attemptUsageCost.d.ts +11 -2
  24. package/dist/attemptUsageCost.d.ts.map +1 -1
  25. package/dist/attemptUsageCost.js +16 -3
  26. package/dist/attemptUsageCost.js.map +1 -1
  27. package/dist/candidateEvidence.d.ts +42 -8
  28. package/dist/candidateEvidence.d.ts.map +1 -1
  29. package/dist/candidateEvidence.js +75 -16
  30. package/dist/candidateEvidence.js.map +1 -1
  31. package/dist/candidateReview.d.ts.map +1 -1
  32. package/dist/candidateReview.js +4 -2
  33. package/dist/candidateReview.js.map +1 -1
  34. package/dist/candidateTerminals.d.ts +10 -0
  35. package/dist/candidateTerminals.d.ts.map +1 -1
  36. package/dist/candidateTerminals.js +55 -11
  37. package/dist/candidateTerminals.js.map +1 -1
  38. package/dist/captureRefusal.d.ts +14 -4
  39. package/dist/captureRefusal.d.ts.map +1 -1
  40. package/dist/captureRefusal.js +64 -27
  41. package/dist/captureRefusal.js.map +1 -1
  42. package/dist/carrier-planner.d.ts +5 -2
  43. package/dist/carrier-planner.d.ts.map +1 -1
  44. package/dist/carrier-planner.js +6 -3
  45. package/dist/carrier-planner.js.map +1 -1
  46. package/dist/command-telemetry.d.ts +15 -0
  47. package/dist/command-telemetry.d.ts.map +1 -0
  48. package/dist/command-telemetry.js +27 -0
  49. package/dist/command-telemetry.js.map +1 -0
  50. package/dist/continuation-custody.d.ts.map +1 -1
  51. package/dist/continuation-custody.js +3 -1
  52. package/dist/continuation-custody.js.map +1 -1
  53. package/dist/continuation-evidence-io.d.ts +13 -3
  54. package/dist/continuation-evidence-io.d.ts.map +1 -1
  55. package/dist/continuation-evidence-io.js +36 -4
  56. package/dist/continuation-evidence-io.js.map +1 -1
  57. package/dist/continuation-evidence.d.ts +13 -2
  58. package/dist/continuation-evidence.d.ts.map +1 -1
  59. package/dist/continuation-evidence.js +23 -4
  60. package/dist/continuation-evidence.js.map +1 -1
  61. package/dist/continuation-later.d.ts.map +1 -1
  62. package/dist/continuation-later.js +6 -6
  63. package/dist/continuation-later.js.map +1 -1
  64. package/dist/continuity-facts.d.ts +25 -1
  65. package/dist/continuity-facts.d.ts.map +1 -1
  66. package/dist/continuity-facts.js +71 -4
  67. package/dist/continuity-facts.js.map +1 -1
  68. package/dist/continuity-notice.d.ts.map +1 -1
  69. package/dist/continuity-notice.js +2 -1
  70. package/dist/continuity-notice.js.map +1 -1
  71. package/dist/continuity-summary.d.ts +4 -1
  72. package/dist/continuity-summary.d.ts.map +1 -1
  73. package/dist/continuity-summary.js +30 -12
  74. package/dist/continuity-summary.js.map +1 -1
  75. package/dist/continuity.d.ts +36 -8
  76. package/dist/continuity.d.ts.map +1 -1
  77. package/dist/continuity.js +96 -21
  78. package/dist/continuity.js.map +1 -1
  79. package/dist/credential-cooldown.d.ts +7 -0
  80. package/dist/credential-cooldown.d.ts.map +1 -1
  81. package/dist/credential-cooldown.js +31 -5
  82. package/dist/credential-cooldown.js.map +1 -1
  83. package/dist/credential-differential.d.ts +15 -1
  84. package/dist/credential-differential.d.ts.map +1 -1
  85. package/dist/credential-differential.js +32 -17
  86. package/dist/credential-differential.js.map +1 -1
  87. package/dist/credential-execution.d.ts.map +1 -1
  88. package/dist/credential-execution.js +14 -15
  89. package/dist/credential-execution.js.map +1 -1
  90. package/dist/credential-preflight.js +1 -1
  91. package/dist/credential-preflight.js.map +1 -1
  92. package/dist/credential-profile-rotation.d.ts +1 -0
  93. package/dist/credential-profile-rotation.d.ts.map +1 -1
  94. package/dist/credential-profile-rotation.js +1 -1
  95. package/dist/credential-profile-rotation.js.map +1 -1
  96. package/dist/deepScanReducer.d.ts.map +1 -1
  97. package/dist/deepScanReducer.js +8 -18
  98. package/dist/deepScanReducer.js.map +1 -1
  99. package/dist/delegatedHome.d.ts +6 -4
  100. package/dist/delegatedHome.d.ts.map +1 -1
  101. package/dist/delegatedHome.js.map +1 -1
  102. package/dist/delegationFailure.d.ts +75 -14
  103. package/dist/delegationFailure.d.ts.map +1 -1
  104. package/dist/delegationFailure.js +38 -9
  105. package/dist/delegationFailure.js.map +1 -1
  106. package/dist/directoryCandidate.d.ts +10 -0
  107. package/dist/directoryCandidate.d.ts.map +1 -1
  108. package/dist/directoryCandidate.js +59 -9
  109. package/dist/directoryCandidate.js.map +1 -1
  110. package/dist/harnessFailure.d.ts +6 -5
  111. package/dist/harnessFailure.d.ts.map +1 -1
  112. package/dist/harnessFailure.js +7 -6
  113. package/dist/harnessFailure.js.map +1 -1
  114. package/dist/index.d.ts +2 -2
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +2 -1
  117. package/dist/index.js.map +1 -1
  118. package/dist/inrun-continuity-carrier.d.ts +4 -1
  119. package/dist/inrun-continuity-carrier.d.ts.map +1 -1
  120. package/dist/inrun-continuity-carrier.js +2 -0
  121. package/dist/inrun-continuity-carrier.js.map +1 -1
  122. package/dist/inrun-continuity.d.ts +2 -2
  123. package/dist/inrun-continuity.d.ts.map +1 -1
  124. package/dist/inrun-continuity.js +22 -19
  125. package/dist/inrun-continuity.js.map +1 -1
  126. package/dist/inrun-retained-output.d.ts +18 -4
  127. package/dist/inrun-retained-output.d.ts.map +1 -1
  128. package/dist/inrun-retained-output.js +39 -8
  129. package/dist/inrun-retained-output.js.map +1 -1
  130. package/dist/laneStreamEvents.d.ts +9 -10
  131. package/dist/laneStreamEvents.d.ts.map +1 -1
  132. package/dist/laneStreamEvents.js +21 -7
  133. package/dist/laneStreamEvents.js.map +1 -1
  134. package/dist/modelGovernance.d.ts +10 -4
  135. package/dist/modelGovernance.d.ts.map +1 -1
  136. package/dist/modelGovernance.js +21 -1
  137. package/dist/modelGovernance.js.map +1 -1
  138. package/dist/native-retry-telemetry.d.ts +4 -1
  139. package/dist/native-retry-telemetry.d.ts.map +1 -1
  140. package/dist/native-retry-telemetry.js +6 -1
  141. package/dist/native-retry-telemetry.js.map +1 -1
  142. package/dist/orchestrator.d.ts +10 -2
  143. package/dist/orchestrator.d.ts.map +1 -1
  144. package/dist/orchestrator.js +137 -156
  145. package/dist/orchestrator.js.map +1 -1
  146. package/dist/planRun.js +4 -4
  147. package/dist/planRun.js.map +1 -1
  148. package/dist/plannerAttempt.d.ts +1 -0
  149. package/dist/plannerAttempt.d.ts.map +1 -1
  150. package/dist/plannerAttempt.js +14 -19
  151. package/dist/plannerAttempt.js.map +1 -1
  152. package/dist/pool-attempt-evidence.d.ts +3 -1
  153. package/dist/pool-attempt-evidence.d.ts.map +1 -1
  154. package/dist/pool-attempt-evidence.js +16 -3
  155. package/dist/pool-attempt-evidence.js.map +1 -1
  156. package/dist/quota-refusal-scope.d.ts +1 -0
  157. package/dist/quota-refusal-scope.d.ts.map +1 -1
  158. package/dist/quota-refusal-scope.js +29 -1
  159. package/dist/quota-refusal-scope.js.map +1 -1
  160. package/dist/rawPatchLane.d.ts +42 -0
  161. package/dist/rawPatchLane.d.ts.map +1 -0
  162. package/dist/rawPatchLane.js +79 -0
  163. package/dist/rawPatchLane.js.map +1 -0
  164. package/dist/readonlyTerminals.d.ts +0 -3
  165. package/dist/readonlyTerminals.d.ts.map +1 -1
  166. package/dist/readonlyTerminals.js +30 -10
  167. package/dist/readonlyTerminals.js.map +1 -1
  168. package/dist/requestRequirements.d.ts +5 -4
  169. package/dist/requestRequirements.d.ts.map +1 -1
  170. package/dist/requestRequirements.js +6 -5
  171. package/dist/requestRequirements.js.map +1 -1
  172. package/dist/retainedOutput.d.ts +19 -2
  173. package/dist/retainedOutput.d.ts.map +1 -1
  174. package/dist/retainedOutput.js +83 -12
  175. package/dist/retainedOutput.js.map +1 -1
  176. package/dist/reviewerInventory.d.ts +2 -8
  177. package/dist/reviewerInventory.d.ts.map +1 -1
  178. package/dist/reviewerInventory.js +2 -3
  179. package/dist/reviewerInventory.js.map +1 -1
  180. package/dist/reviewerPanel.d.ts +1 -1
  181. package/dist/reviewerPanel.d.ts.map +1 -1
  182. package/dist/reviewerPanel.js +9 -4
  183. package/dist/reviewerPanel.js.map +1 -1
  184. package/dist/route-admission.d.ts.map +1 -1
  185. package/dist/route-admission.js +3 -1
  186. package/dist/route-admission.js.map +1 -1
  187. package/dist/routeControls.d.ts +32 -0
  188. package/dist/routeControls.d.ts.map +1 -0
  189. package/dist/routeControls.js +47 -0
  190. package/dist/routeControls.js.map +1 -0
  191. package/dist/run-input-resolution.d.ts +5 -0
  192. package/dist/run-input-resolution.d.ts.map +1 -1
  193. package/dist/run-input-resolution.js +12 -6
  194. package/dist/run-input-resolution.js.map +1 -1
  195. package/dist/run-runtime-root.d.ts +16 -0
  196. package/dist/run-runtime-root.d.ts.map +1 -0
  197. package/dist/run-runtime-root.js +16 -0
  198. package/dist/run-runtime-root.js.map +1 -0
  199. package/dist/runAdmission.d.ts.map +1 -1
  200. package/dist/runAdmission.js +2 -1
  201. package/dist/runAdmission.js.map +1 -1
  202. package/dist/runEventLog.d.ts +2 -1
  203. package/dist/runEventLog.d.ts.map +1 -1
  204. package/dist/runEventLog.js +3 -1
  205. package/dist/runEventLog.js.map +1 -1
  206. package/dist/runFacts.d.ts +5 -2
  207. package/dist/runFacts.d.ts.map +1 -1
  208. package/dist/runFacts.js +11 -11
  209. package/dist/runFacts.js.map +1 -1
  210. package/dist/runScope.d.ts +2 -0
  211. package/dist/runScope.d.ts.map +1 -1
  212. package/dist/runScope.js +3 -2
  213. package/dist/runScope.js.map +1 -1
  214. package/dist/runSupport.d.ts +3 -1
  215. package/dist/runSupport.d.ts.map +1 -1
  216. package/dist/runSupport.js +3 -1
  217. package/dist/runSupport.js.map +1 -1
  218. package/dist/runTelemetryWriter.d.ts +18 -5
  219. package/dist/runTelemetryWriter.d.ts.map +1 -1
  220. package/dist/runTelemetryWriter.js +7 -2
  221. package/dist/runTelemetryWriter.js.map +1 -1
  222. package/dist/runTerminalResults.d.ts.map +1 -1
  223. package/dist/runTerminalResults.js +22 -7
  224. package/dist/runTerminalResults.js.map +1 -1
  225. package/dist/runTerminals.d.ts.map +1 -1
  226. package/dist/runTerminals.js +19 -8
  227. package/dist/runTerminals.js.map +1 -1
  228. package/dist/secretDiff.d.ts.map +1 -1
  229. package/dist/secretDiff.js +2 -1
  230. package/dist/secretDiff.js.map +1 -1
  231. package/dist/transientClassify.d.ts +17 -9
  232. package/dist/transientClassify.d.ts.map +1 -1
  233. package/dist/transientClassify.js +33 -9
  234. package/dist/transientClassify.js.map +1 -1
  235. package/dist/webEvidence.d.ts +41 -0
  236. package/dist/webEvidence.d.ts.map +1 -0
  237. package/dist/webEvidence.js +99 -0
  238. package/dist/webEvidence.js.map +1 -0
  239. package/dist/workReportEnvelope.d.ts +12 -0
  240. package/dist/workReportEnvelope.d.ts.map +1 -1
  241. package/dist/workReportEnvelope.js +19 -0
  242. package/dist/workReportEnvelope.js.map +1 -1
  243. package/package.json +17 -17
  244. package/dist/continuation-chain.test-support.d.ts +0 -473
  245. package/dist/continuation-chain.test-support.d.ts.map +0 -1
  246. package/dist/continuation-chain.test-support.js +0 -206
  247. package/dist/continuation-chain.test-support.js.map +0 -1
  248. package/dist/inrun-continuity.test-support.d.ts +0 -504
  249. package/dist/inrun-continuity.test-support.d.ts.map +0 -1
  250. package/dist/inrun-continuity.test-support.js +0 -212
  251. package/dist/inrun-continuity.test-support.js.map +0 -1
@@ -12,11 +12,12 @@
12
12
  * collapsed one-liners with real prose: the caller runs `planContinuation` to
13
13
  * learn which older turns would collapse (and their boundary turn id — the
14
14
  * summary cache key), resolves a summary for that prefix (cache hit or a bounded
15
- * inline summarization pass), and passes it back as `cachedSummary`. The
16
- * mechanical one-liner collapse is ALWAYS the fallback, so a missing/failed
17
- * summary never loses information. Either way `summarized` stays true (the
18
- * verbatim prefix was condensed); the packet text itself discloses which form
19
- * was used.
15
+ * inline summarization pass), and passes it back as `cachedSummary`. A collapsed
16
+ * turn without a final answer keeps its one-liner beside the summary, whatever
17
+ * the prose says (#405). The mechanical one-liner collapse is ALWAYS the
18
+ * fallback, so a missing/failed summary never loses information. Either way
19
+ * `summarized` stays true (the verbatim prefix was condensed); the packet text
20
+ * itself discloses which form was used.
20
21
  *
21
22
  * This module takes fully-resolved structured data (the daemon supplies thread
22
23
  * facts; the orchestrator reads prior outputs + git anchor) and returns the
@@ -26,13 +27,28 @@
26
27
  export const PER_TURN_BUDGET_BYTES = 8 * 1024;
27
28
  /** Whole-packet verbatim budget; older turns collapse past this. */
28
29
  export const TOTAL_BUDGET_BYTES = 24 * 1024;
29
- /** One-line collapsed entry keeps this many chars of each field. */
30
+ /**
31
+ * One-line collapsed entry keeps up to this many UTF-16 code units of each
32
+ * field; a cut ends on a whole character and adds "…" outside the allowance.
33
+ */
30
34
  export const COLLAPSE_PREFIX_CHARS = 200;
35
+ const NO_FINAL_ANSWER = {
36
+ ended: { lead: "The turn ended without a final answer.", note: "ended without a final answer" },
37
+ unknown: {
38
+ lead: "No final answer is recorded for this turn, and its outcome could not be read.",
39
+ note: "no final answer recorded; outcome could not be read",
40
+ },
41
+ };
42
+ /** How a turn without a final answer is described (`lead` sentence, short `note`);
43
+ * null for an answered turn. */
44
+ export function noFinalAnswerText(turn) {
45
+ return turn.noFinalAnswer ? NO_FINAL_ANSWER[turn.noFinalAnswer] : null;
46
+ }
31
47
  function bytes(text) {
32
48
  return Buffer.byteLength(text, "utf8");
33
49
  }
34
- /** Truncate to at most `maxBytes` UTF-8 bytes on a safe char boundary. */
35
- function boundBytes(text, maxBytes) {
50
+ /** Truncate to at most `maxBytes` UTF-8 bytes on a safe char boundary; a cut ends with `mark`. */
51
+ function boundBytes(text, maxBytes, mark = "\n…[truncated]") {
36
52
  if (bytes(text) <= maxBytes)
37
53
  return text;
38
54
  // Buffer slice can split a multi-byte scalar; back off a few bytes until valid.
@@ -40,21 +56,60 @@ function boundBytes(text, maxBytes) {
40
56
  for (let trim = 0; trim <= 3 && trim <= buf.length; trim += 1) {
41
57
  try {
42
58
  const decoded = new TextDecoder("utf-8", { fatal: true }).decode(trim === 0 ? buf : buf.subarray(0, buf.length - trim));
43
- return `${decoded}\n…[truncated]`;
59
+ return `${decoded}${mark}`;
44
60
  }
45
61
  catch {
46
62
  /* prefix ended inside a scalar; back off */
47
63
  }
48
64
  }
49
- return `${buf.toString("utf8")}\n…[truncated]`;
65
+ return `${buf.toString("utf8")}${mark}`;
66
+ }
67
+ /** The longest end of `text` within `maxBytes` UTF-8 bytes, starting on a whole character. */
68
+ export function tailBytes(text, maxBytes) {
69
+ const buf = Buffer.from(text, "utf8");
70
+ let start = Math.max(0, buf.length - maxBytes);
71
+ // A continuation byte (10xxxxxx) lies inside a character: start after it.
72
+ while (start < buf.length && (buf[start] & 0xc0) === 0x80)
73
+ start += 1;
74
+ return buf.subarray(start).toString("utf8");
50
75
  }
51
- function oneLine(text) {
76
+ /**
77
+ * A verbatim entry's output within `maxBytes` (#405). An answer keeps its
78
+ * start. A turn without a final answer keeps its end, where its newest
79
+ * recorded output is (its retained file opens with a fixed preamble). The cut
80
+ * mark sits outside the allowance and names the file holding the whole output.
81
+ */
82
+ function boundOutput(turn, maxBytes) {
83
+ const text = turn.outputText.trim();
84
+ const whole = turn.outputSource
85
+ ? `; the whole output is ${bytes(text)} bytes, complete in ${turn.outputSource}`
86
+ : "";
87
+ if (!turn.noFinalAnswer)
88
+ return boundBytes(text, maxBytes, `\n…[truncated${whole}]`);
89
+ if (bytes(text) <= maxBytes)
90
+ return text;
91
+ return `[earlier output truncated${whole}]\n…${tailBytes(text, maxBytes)}`;
92
+ }
93
+ /** One line of at most COLLAPSE_PREFIX_CHARS UTF-16 units: the start of `text`,
94
+ * or its end when `keepEnd`. A cut is marked "…" outside the allowance and
95
+ * names `source`, the file holding the whole text, when given. */
96
+ function oneLine(text, keepEnd = false, source) {
52
97
  const flat = text.replace(/\s+/g, " ").trim();
53
- return flat.length > COLLAPSE_PREFIX_CHARS ? `${flat.slice(0, COLLAPSE_PREFIX_CHARS)}…` : flat;
98
+ if (flat.length <= COLLAPSE_PREFIX_CHARS)
99
+ return flat;
100
+ const whole = source ? ` (whole output: ${source})` : "";
101
+ // A cut between a surrogate pair's halves would leave a lone surrogate, which
102
+ // becomes U+FFFD in THREAD.md; drop that character whole instead (#577).
103
+ if (keepEnd) {
104
+ const tail = flat.slice(-COLLAPSE_PREFIX_CHARS);
105
+ return `…${/^\p{Surrogate}/u.test(tail) ? tail.slice(1) : tail}${whole}`;
106
+ }
107
+ const head = flat.slice(0, COLLAPSE_PREFIX_CHARS);
108
+ return `${/\p{Surrogate}$/u.test(head) ? head.slice(0, -1) : head}…${whole}`;
54
109
  }
55
110
  /** Delta turns for this lane: everything AFTER the checkpoint (all prior when
56
111
  * the lane never ran / has no reachable native session to trust). */
57
- function deltaTurns(req) {
112
+ export function deltaTurns(req) {
58
113
  // Without a reachable native session the lane starts blank — carry the whole
59
114
  // prior conversation regardless of any stale checkpoint.
60
115
  if (!req.nativeResumeAvailable)
@@ -68,14 +123,23 @@ function deltaTurns(req) {
68
123
  function verbatimEntry(turn, index) {
69
124
  const prompt = boundBytes(turn.prompt.trim(), PER_TURN_BUDGET_BYTES / 2);
70
125
  const output = turn.outputText.trim()
71
- ? boundBytes(turn.outputText.trim(), PER_TURN_BUDGET_BYTES / 2)
126
+ ? boundOutput(turn, PER_TURN_BUDGET_BYTES / 2)
72
127
  : "_(no recorded output)_";
73
- return `### Turn ${index + 1}\n\n**User asked:**\n\n${prompt}\n\n**The assistant answered:**\n\n${output}\n`;
128
+ const missing = noFinalAnswerText(turn);
129
+ const said = missing
130
+ ? `**${missing.lead} The assistant's recorded output (not a completion verdict):**`
131
+ : "**The assistant answered:**";
132
+ return `### Turn ${index + 1}\n\n**User asked:**\n\n${prompt}\n\n${said}\n\n${output}\n`;
74
133
  }
75
134
  function collapsedEntry(turn, index) {
76
135
  const prompt = oneLine(turn.prompt) || "(empty)";
77
- const output = turn.outputText.trim() ? oneLine(turn.outputText) : "(no recorded output)";
78
- return `- Turn ${index + 1} — user: ${prompt} · assistant: ${output}`;
136
+ const missing = noFinalAnswerText(turn);
137
+ // An unfinished turn's line keeps the end of its output and names the file (#405).
138
+ const output = turn.outputText.trim()
139
+ ? oneLine(turn.outputText, missing !== null, missing ? turn.outputSource : undefined)
140
+ : "(no recorded output)";
141
+ const speaker = missing ? `assistant (${missing.note})` : "assistant";
142
+ return `- Turn ${index + 1} — user: ${prompt} · ${speaker}: ${output}`;
79
143
  }
80
144
  /**
81
145
  * How many of the OLDEST delta turns collapse to one-liners: grow the collapsed
@@ -96,9 +160,11 @@ function collapseCount(delta) {
96
160
  /**
97
161
  * Assemble the packet body from delta turns, collapsing the OLDEST turns while
98
162
  * the verbatim total exceeds the budget. When a `summary` covering the collapse
99
- * boundary is supplied it REPLACES the one-liners with real prose; otherwise the
100
- * mechanical one-liner collapse renders (always works). Returns the body and
101
- * whether any collapse happened (`summarized`).
163
+ * boundary is supplied it REPLACES the one-liners with real prose, except those
164
+ * of turns without a final answer: generated or cached prose may omit their
165
+ * output and never names its file, so their lines follow the summary (#405).
166
+ * Otherwise the mechanical one-liner collapse renders (always works). Returns
167
+ * the body and whether any collapse happened (`summarized`).
102
168
  */
103
169
  function renderPacket(delta, activePlan, anchor, summary) {
104
170
  const collapsedCount = collapseCount(delta);
@@ -119,7 +185,16 @@ function renderPacket(delta, activePlan, anchor, summary) {
119
185
  : "> The older turns are condensed to one-line entries below (a cached conversation summary was unavailable for this turn). The most recent turns are verbatim.", "");
120
186
  }
121
187
  if (usableSummary) {
122
- parts.push("## Earlier conversation (summary)", "", usableSummary.text.trim(), "", "## Recent turns", "");
188
+ parts.push("## Earlier conversation (summary)", "", usableSummary.text.trim(), "");
189
+ const unfinished = [];
190
+ for (let i = 0; i < collapsedCount; i += 1) {
191
+ if (delta[i].noFinalAnswer)
192
+ unfinished.push(collapsedEntry(delta[i], i));
193
+ }
194
+ if (unfinished.length > 0) {
195
+ parts.push("Recorded output of the summarized turns that have no final answer (not a completion verdict):", "", ...unfinished, "");
196
+ }
197
+ parts.push("## Recent turns", "");
123
198
  for (let i = collapsedCount; i < delta.length; i += 1) {
124
199
  parts.push(verbatimEntry(delta[i], i));
125
200
  }
@@ -1 +1 @@
1
- {"version":3,"file":"continuity.js","sourceRoot":"","sources":["../src/continuity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"continuity.js","sourceRoot":"","sources":["../src/continuity.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,13 @@ import type { CredentialUnusableObservation, QuotaSnapshot } from "@claudexor/sc
10
10
  export interface QuotaBlock {
11
11
  blocked: true;
12
12
  constraint_id: string | null;
13
+ /** Null while a usage refusal with no reopening time is active (#558): no
14
+ * time is known for the account, whatever its cooldown or other windows say. */
13
15
  resets_at: string | null;
16
+ /** Set only for that refusal: no reader may present it as a window a timer heals. */
17
+ reopening?: "unknown";
18
+ /** That refusal's bounded engine cooldown end: a recheck instant, never a reset. */
19
+ recheck_at?: string;
14
20
  kind: "exhausted" | "cooldown";
15
21
  }
16
22
  /**
@@ -62,6 +68,7 @@ export interface PoolExhaustionCandidate {
62
68
  } | null;
63
69
  cooldown: {
64
70
  resets_at: string | null;
71
+ reopening?: "unknown";
65
72
  } | null;
66
73
  /** A7: a live `credential_unusable` verdict about this row's credential —
67
74
  * dead-credential evidence for the terminal's claim, and an exclusion from
@@ -1 +1 @@
1
- {"version":3,"file":"credential-cooldown.d.ts","sourceRoot":"","sources":["../src/credential-cooldown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,6BAA6B,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGtF;;;;;;GAMG;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,EACV,WAAW,CAAC,EAAE,gBAAgB,GAC7B,UAAU,GAAG,IAAI,CAmCnB;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,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,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,CAoFR"}
1
+ {"version":3,"file":"credential-cooldown.d.ts","sourceRoot":"","sources":["../src/credential-cooldown.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,6BAA6B,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAOtF;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,IAAI,CAAC;IACd,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;oFACgF;IAChF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qFAAqF;IACrF,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,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,EACV,WAAW,CAAC,EAAE,gBAAgB,GAC7B,UAAU,GAAG,IAAI,CAyDnB;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,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,CAAA;KAAE,GAAG,IAAI,CAAC;IACrE;;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,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,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,CA4FR"}
@@ -1,4 +1,4 @@
1
- import { ControlProblem, quotaSnapshotAvailability } from "@claudexor/schema";
1
+ import { ControlProblem, REOPENING_UNKNOWN_COOLDOWN_ID, quotaSnapshotAvailability, } from "@claudexor/schema";
2
2
  /**
3
3
  * Does any observed quota window BLOCK this subject right now?
4
4
  *
@@ -39,6 +39,7 @@ export function profileQuotaBlock(snapshots, harnessId, profileId, subjectRoute,
39
39
  : subjectRoute === "api_key"
40
40
  ? "managed_api_key"
41
41
  : null;
42
+ let dated = null;
42
43
  for (const snapshot of snapshots) {
43
44
  if (snapshot.subject.harness !== harnessId)
44
45
  continue;
@@ -50,6 +51,25 @@ export function profileQuotaBlock(snapshots, harnessId, profileId, subjectRoute,
50
51
  const availability = quotaSnapshotAvailability(snapshot, opts);
51
52
  if (availability.state === "available")
52
53
  continue;
54
+ // #558: an active, applicable usage refusal with no reopening time decides
55
+ // the account's verdict whatever else blocks it. Another window's date
56
+ // keeps its meaning for that window only and promises nothing about the
57
+ // account; the refusal's own cooldown end is a recheck, never a reset.
58
+ const refusal = snapshot.constraints.find((constraint) => constraint.id === REOPENING_UNKNOWN_COOLDOWN_ID &&
59
+ availability.blocking_constraints.includes(constraint.id));
60
+ if (refusal) {
61
+ const recheck = quotaSnapshotAvailability({ constraints: [refusal] }, opts).resets_at;
62
+ return {
63
+ blocked: true,
64
+ constraint_id: refusal.id,
65
+ resets_at: null,
66
+ reopening: "unknown",
67
+ ...(recheck ? { recheck_at: recheck } : {}),
68
+ kind: "cooldown",
69
+ };
70
+ }
71
+ if (dated)
72
+ continue;
53
73
  // One snapshot may block on several windows. Report the window whose own
54
74
  // release is the projection's earliest recheck instant, with that window's
55
75
  // kind, so id, kind and reset never come from different windows.
@@ -60,7 +80,7 @@ export function profileQuotaBlock(snapshots, harnessId, profileId, subjectRoute,
60
80
  own: quotaSnapshotAvailability({ constraints: [constraint] }, opts),
61
81
  }))
62
82
  .find(({ own }) => own.resets_at === availability.resets_at);
63
- return {
83
+ dated = {
64
84
  blocked: true,
65
85
  constraint_id: controlling?.id ?? availability.blocking_constraints[0] ?? null,
66
86
  resets_at: availability.resets_at,
@@ -69,7 +89,7 @@ export function profileQuotaBlock(snapshots, harnessId, profileId, subjectRoute,
69
89
  : availability.state,
70
90
  };
71
91
  }
72
- return null;
92
+ return dated;
73
93
  }
74
94
  /** Rejection labels that keep a row a POOL MEMBER for the reset fold. The
75
95
  * other labels (`not_ready`, `not_in_rotation_policy`,
@@ -128,7 +148,11 @@ export function credentialPoolExhausted(args) {
128
148
  const members = args.candidates.filter((c) => POOL_MEMBER_REJECTIONS.has(c.rejected) &&
129
149
  !c.unusable &&
130
150
  (c.headroom !== null || c.cooldown !== null));
131
- const limits = members.map((c) => c.headroom?.resets_at ?? c.cooldown?.resets_at ?? null);
151
+ // A member refused with no known reopening (#558) promises no instant, whatever
152
+ // else it reports: one such member leaves the pool's reset unknown.
153
+ const limits = members.map((c) => c.cooldown?.reopening === "unknown"
154
+ ? null
155
+ : (c.headroom?.resets_at ?? c.cooldown?.resets_at ?? null));
132
156
  // Same rule for the triggering subject: its own observed limit joins the
133
157
  // fold only while its credential is not observed dead — the terminal must
134
158
  // not promise the DEAD subject's reset as the instant the pool reopens.
@@ -155,7 +179,9 @@ export function credentialPoolExhausted(args) {
155
179
  ? "auth"
156
180
  : !candidate.unusable &&
157
181
  POOL_MEMBER_REJECTIONS.has(candidate.rejected) &&
158
- (candidate.headroom || candidate.cooldown)
182
+ (candidate.headroom || candidate.cooldown) &&
183
+ // A refusal of unknown nature (#558) is not known to be quota.
184
+ candidate.cooldown?.reopening !== "unknown"
159
185
  ? "quota"
160
186
  : "unavailable")),
161
187
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"credential-cooldown.js","sourceRoot":"","sources":["../src/credential-cooldown.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAgB9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAmC,EACnC,SAAiB,EACjB,SAAwB,EACxB,YAAgD,EAChD,KAAqB,EACrB,GAAU,EACV,WAA8B;IAE9B,MAAM,SAAS,GACb,YAAY,KAAK,eAAe;QAC9B,CAAC,CAAC,eAAe;QACjB,CAAC,CAAC,YAAY,KAAK,SAAS;YAC1B,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,IAAI,CAAC;IACb,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS;YAAE,SAAS;QACrD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QAClE,IAAI,SAAS,KAAK,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;YAAE,SAAS;QACpF,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC;QACxD,MAAM,YAAY,GAAG,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC/D,IAAI,YAAY,CAAC,KAAK,KAAK,WAAW;YAAE,SAAS;QACjD,yEAAyE;QACzE,2EAA2E;QAC3E,iEAAiE;QACjE,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW;aACrC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,oBAAoB,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;aACjF,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACpB,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,GAAG,EAAE,yBAAyB,CAAC,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC;SACpE,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,KAAK,YAAY,CAAC,SAAS,CAAC,CAAC;QAC/D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,aAAa,EAAE,WAAW,EAAE,EAAE,IAAI,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,IAAI;YAC9E,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,IAAI,EACF,WAAW,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,KAAK,WAAW;gBAClD,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK;gBACvB,CAAC,CAAC,YAAY,CAAC,KAAK;SACzB,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAmBD;;;oEAGoE;AACpE,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,SAAS;IACT,eAAe;IACf,mBAAmB;IACnB,UAAU;IACV,cAAc;CACf,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAkC;IACnE,IACE,CAAC,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC/C,SAAS,CAAC,QAAQ,KAAK,qBAAqB;QAE5C,OAAO,KAAK,CAAC;IACf,OAAO,CACL,SAAS,CAAC,QAAQ,KAAK,IAAI;QAC3B,SAAS,CAAC,QAAQ,KAAK,IAAI;QAC3B,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,CACtC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAiBvC;IACC,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CACpC,CAAC,CAAC,EAAE,EAAE,CACJ,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;QACtC,CAAC,CAAC,CAAC,QAAQ;QACX,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAC/C,CAAC;IACF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC,CAAC;IAC1F,yEAAyE;IACzE,0EAA0E;IAC1E,wEAAwE;IACxE,IACE,IAAI,CAAC,YAAY;QACjB,CAAC,IAAI,CAAC,eAAe;QACrB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,CAAC,EACrD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,QAAQ,GACZ,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAgB,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;QAClE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC1F,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAC;IAC3F,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,UAAU,GAAG;QACjB,GAAG,IAAI,GAAG,CACR,IAAI,CAAC,UAAU;aACZ,MAAM,CACL,CAAC,SAAS,EAAE,EAAE,CACZ,CAAC;YACC,UAAU;YACV,oBAAoB;YACpB,wBAAwB;YACxB,0BAA0B;SAC3B,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CACjC;aACA,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACjB,SAAS,CAAC,QAAQ,EAAE,IAAI,KAAK,cAAc;YACzC,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ;gBACjB,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC9C,CAAC,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC;gBAC5C,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,aAAa,CACpB,CACJ;KACF,CAAC;IACF,IAAI,IAAI,CAAC,eAAe,EAAE,IAAI,KAAK,cAAc,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC/E,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,KAAK,GACT,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM;QACjD,CAAC,CAAC,yCAAyC;QAC3C,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,OAAO;YACpD,CAAC,CAAC,mDAAmD;YACrD,CAAC,CAAC,kDAAkD,CAAC;IAC3D,MAAM,KAAK,GAAG,IAAI,KAAK,CACrB,kCAAkC,IAAI,CAAC,SAAS,MAAM,KAAK,KAAK,OAAO,8BAA8B;QACnG,CAAC,IAAI,CAAC,eAAe;YACnB,CAAC,CAAC,4DAA4D,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG;YAC1F,CAAC,CAAC,EAAE,CAAC;QACP,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACxD,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,2BAA2B;QACjC,oEAAoE;QACpE,+DAA+D;QAC/D,QAAQ,EAAE,qBAAqB;QAC/B,QAAQ;QACR,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC;YAC5B,IAAI,EAAE,2BAA2B;YACjC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE;gBACP,UAAU;gBACV,QAAQ;gBACR,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;gBACzB,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,MAAM;gBACvC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,EAAE;aACjE;SACF,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"credential-cooldown.js","sourceRoot":"","sources":["../src/credential-cooldown.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,21 @@ 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
27
  export declare function pollerCredentialRejections(quota: VendorQuotaObservations): CredentialUnusableObservation[];
28
- /** The cheap typed stream intake. No profile probing or routing policy. */
28
+ /**
29
+ * The cheap typed stream intake and the ONE owner of a refusal's scope, which
30
+ * follows what the vendor's typed category proves, never whether the run named
31
+ * a model (`model: null` on an observation means credential-wide):
32
+ * - an auth rejection condemns the credential for every model;
33
+ * - a denial of subscription access the adapter proved (`entitlementDenied`: the
34
+ * vendor's exact `oauth_org_not_allowed` code or its recorded result, never a
35
+ * category inferred from prose) condemns that credential for every model on
36
+ * the observed subscription route, and proves nothing about an API key or
37
+ * another route;
38
+ * - any other capability refusal concerns the model the run requested: a known
39
+ * model stays exact, and a run that named none proves nothing about the
40
+ * credential, so nothing is recorded and the diagnostics stay the run's own.
41
+ * No profile probing or routing policy.
42
+ */
29
43
  export declare function credentialStreamRefusal(args: {
30
44
  harnessId: string;
31
45
  profileId: string | null;
@@ -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,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
+ {"version":3,"file":"credential-differential.d.ts","sourceRoot":"","sources":["../src/credential-differential.ts"],"names":[],"mappings":"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"}
@@ -50,13 +50,31 @@ export function pollerCredentialRejections(quota) {
50
50
  })
51
51
  .map(pollerRejection);
52
52
  }
53
- /** The cheap typed stream intake. No profile probing or routing policy. */
53
+ /**
54
+ * The cheap typed stream intake and the ONE owner of a refusal's scope, which
55
+ * follows what the vendor's typed category proves, never whether the run named
56
+ * a model (`model: null` on an observation means credential-wide):
57
+ * - an auth rejection condemns the credential for every model;
58
+ * - a denial of subscription access the adapter proved (`entitlementDenied`: the
59
+ * vendor's exact `oauth_org_not_allowed` code or its recorded result, never a
60
+ * category inferred from prose) condemns that credential for every model on
61
+ * the observed subscription route, and proves nothing about an API key or
62
+ * another route;
63
+ * - any other capability refusal concerns the model the run requested: a known
64
+ * model stays exact, and a run that named none proves nothing about the
65
+ * credential, so nothing is recorded and the diagnostics stay the run's own.
66
+ * No profile probing or routing policy.
67
+ */
54
68
  export function credentialStreamRefusal(args) {
55
- if (args.refusal.retryable ||
56
- !["auth_failed", "capability_refused"].includes(args.refusal.category))
69
+ const { refusal } = args;
70
+ if (refusal.retryable || !["auth_failed", "capability_refused"].includes(refusal.category))
71
+ return null;
72
+ const authFailed = refusal.category === "auth_failed";
73
+ const credentialWide = authFailed || (refusal.entitlementDenied === true && args.route === "vendor_native");
74
+ if (!credentialWide && args.model === null)
57
75
  return null;
58
76
  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),
77
+ ...observation({ harnessId: args.harnessId, profileId: args.profileId, now: args.now ?? new Date() }, authFailed ? "auth_revoked" : "capability_refused", "attempt_stream", credentialWide ? null : args.model, refusal.adapterCode),
60
78
  ...(args.route ? { credential_route: args.route } : {}),
61
79
  };
62
80
  }
@@ -75,19 +93,16 @@ export async function differentialSubjectVerdict(args) {
75
93
  : "vendor_native"
76
94
  : null);
77
95
  const ctx = { harnessId: args.harnessId, profileId, now: args.now ?? new Date() };
78
- // 1. The attempt's own stream: a typed NON-RETRYABLE auth/entitlement
79
- // refusal the vendor just sent under this exact credential. An auth
80
- // rejection condemns the credential for every model; an entitlement refusal
81
- // may be model-scoped, so it condemns only the model this attempt ran.
82
- const refusal = args.transients.find((t) => !t.retryable && (t.category === "auth_failed" || t.category === "capability_refused"));
83
- if (refusal) {
84
- return credentialStreamRefusal({
85
- ...ctx,
86
- model: args.model,
87
- route: route ?? undefined,
88
- refusal,
89
- });
90
- }
96
+ // 1. The attempt's own stream: a typed NON-RETRYABLE auth/entitlement refusal
97
+ // the vendor just sent under this exact credential, in the scope
98
+ // `credentialStreamRefusal` proves for it; the try's broadest proven scope
99
+ // wins. A refusal that proves nothing about this credential is no verdict, so
100
+ // the independent evidence below still answers.
101
+ const verdicts = args.transients.flatMap((refusal) => credentialStreamRefusal({ ...ctx, model: args.model, route: route ?? undefined, refusal }) ??
102
+ []);
103
+ const streamVerdict = verdicts.find((verdict) => verdict.model === null) ?? verdicts[0];
104
+ if (streamVerdict)
105
+ return streamVerdict;
91
106
  // 2. The quota poller's last authenticated vendor contact: a typed
92
107
  // `auth_revoked` absence means the vendor rejected this subject's own token.
93
108
  const quota = route
@@ -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":"AA6BA,OAAO,EAAE,wBAAwB,EAAsB,MAAM,kCAAkC,CAAC;AAChG,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,2BAA2B,EAC3B,2BAA2B,GAE5B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;;0EAG0E;AAC1E,MAAM,eAAe,GAA0D;IAC7E,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM;IAC7B,kBAAkB,EAAE,EAAE,GAAG,MAAM;IAC/B,mBAAmB,EAAE,EAAE,GAAG,MAAM;CACjC,CAAC;AAEF,SAAS,WAAW,CAClB,IAAgE,EAChE,IAA2C,EAC3C,MAA+C,EAC/C,KAAoB,EACpB,MAAqB;IAErB,OAAO;QACL,UAAU,EAAE,IAAI,CAAC,SAAS;QAC1B,UAAU,EAAE,IAAI,CAAC,SAAS;QAC1B,KAAK;QACL,IAAI;QACJ,MAAM;QACN,MAAM;QACN,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;QACnC,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE;KAC/E,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,SAAS,eAAe,CAAC,OAAqB;IAC5C,OAAO;QACL,GAAG,WAAW,CACZ;YACE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;YAClC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU;YACrC,GAAG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;SACnC,EACD,cAAc,EACd,eAAe,EACf,IAAI,EACJ,OAAO,CAAC,MAAM,CACf;QACD,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,gBAAgB;QAClD,UAAU,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;KAC9E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAA8B;IAE9B,OAAO,KAAK,CAAC,QAAQ;SAClB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACd,IAAI,GAAG,CAAC,MAAM,KAAK,cAAc;YAAE,OAAO,KAAK,CAAC;QAChD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC3C,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,CAAC;YACpF,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,CAAC;YAClF,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC;SAC1E,CAAC;QACF,OAAO,CACL,2BAA2B,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;YAChF,EAAE,OAAO,KAAK,SAAS,CAC1B,CAAC;IACJ,CAAC,CAAC;SACD,GAAG,CAAC,eAAe,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAOvC;IACC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzB,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,aAAa,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;QACxF,OAAO,IAAI,CAAC;IACd,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,KAAK,aAAa,CAAC;IACtD,MAAM,cAAc,GAClB,UAAU,IAAI,CAAC,OAAO,CAAC,iBAAiB,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,CAAC;IACvF,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxD,OAAO;QACL,GAAG,WAAW,CACZ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,EACrF,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,oBAAoB,EAClD,gBAAgB,EAChB,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAClC,OAAO,CAAC,WAAW,CACpB;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,IAYhD;IACC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI,CAAC;IACnD,MAAM,KAAK,GACT,IAAI,CAAC,KAAK;QACV,CAAC,IAAI,CAAC,OAAO;YACX,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;gBAC1C,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,eAAe;YACnB,CAAC,CAAC,IAAI,CAAC,CAAC;IACZ,MAAM,GAAG,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;IAClF,8EAA8E;IAC9E,iEAAiE;IACjE,2EAA2E;IAC3E,8EAA8E;IAC9E,gDAAgD;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CACtC,CAAC,OAAO,EAAE,EAAE,CACV,uBAAuB,CAAC,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,OAAO,EAAE,CAAC;QAC1F,EAAE,CACL,CAAC;IACF,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxF,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IACxC,mEAAmE;IACnE,6EAA6E;IAC7E,MAAM,KAAK,GAAG,KAAK;QACjB,CAAC,CAAC;YACE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,CAAC;YACzF,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,CAAC;YACvF,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,KAAK,KAAK,CAAC;SAC/E;QACH,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACf,MAAM,QAAQ,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC,IAAI,CACrD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,CAC9E,CAAC;IACF,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,4EAA4E;IAC5E,uEAAuE;IACvE,iEAAiE;IACjE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,2BAA2B,CACxC,MAAM,4BAA4B,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAC5D,KAAK,CACN,CAAC;QACF,IAAI,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;YACrC,OAAO,WAAW,CAAC,GAAG,EAAE,qBAAqB,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,IASpC;IACC,OAAO,KAAK,IAAI,EAAE;QAChB,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC;gBACH,IAAI,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;YAAC,MAAM,CAAC;gBACP,6DAA6D;YAC/D,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAU9C;IACC,MAAM,QAAQ,GAAG,wBAAwB,CAAC;QACxC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,GAAG,EAAE;KACrC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO;QACP,wEAAwE;QACxE,wEAAwE;QACxE,MAAM,EAAE,gCAAgC,CACtC,MAAM,4BAA4B,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EACvD;YACE,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe;SACnF,CACF;KACF,CAAC,CAAC,CACJ,CAAC;IACF,OAAO,IAAI,GAAG,CACZ,OAAO;SACJ,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;IAC9B,gEAAgE;IAChE,oEAAoE;IACpE,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CACzD;SACA,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAC5C,CAAC;AACJ,CAAC"}
@@ -1 +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"}
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,CA4F7B"}
@@ -36,22 +36,21 @@ export function createCredentialExecutionObserver(authority, captured) {
36
36
  return;
37
37
  if (event.observed_model)
38
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) {
39
+ const refusal = classifyStatusError(event);
40
+ if (refusal) {
41
+ const value = credentialStreamRefusal({
42
+ harnessId: subject.harnessId,
43
+ profileId: subject.profileId,
44
+ model: subject.requestedModel,
45
+ route,
46
+ refusal,
47
+ now: new Date(event.ts),
48
+ });
49
+ if (value) {
50
+ // A later refusal of one model never narrows a credential-wide one.
51
+ if (value.model === null || pending.get(route)?.model !== null)
52
52
  pending.set(route, value);
53
- cleanTerminal = false;
54
- }
53
+ cleanTerminal = false;
55
54
  }
56
55
  }
57
56
  const served = event.type === "usage" &&
@@ -1 +1 @@
1
- {"version":3,"file":"credential-execution.js","sourceRoot":"","sources":["../src/credential-execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential-execution.js","sourceRoot":"","sources":["../src/credential-execution.ts"],"names":[],"mappings":"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"}
@@ -75,7 +75,7 @@ export function preflightDefaultSubject(args) {
75
75
  reason: "profile_headroom_preflight",
76
76
  constraint_id: breach?.constraint_id ?? block?.constraint_id ?? null,
77
77
  used_ratio: breach?.used_ratio ?? null,
78
- resets_at: breach?.resets_at ?? block?.resets_at ?? null,
78
+ resets_at: block?.reopening ? null : (breach?.resets_at ?? block?.resets_at ?? null),
79
79
  });
80
80
  return next;
81
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"credential-preflight.js","sourceRoot":"","sources":["../src/credential-preflight.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential-preflight.js","sourceRoot":"","sources":["../src/credential-preflight.ts"],"names":[],"mappings":"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"}
@@ -170,6 +170,7 @@ export declare function rotateSpecOnTypedLimit(args: {
170
170
  retryDelayMs: number | null;
171
171
  resetsAt: string | null;
172
172
  constraintId?: string | null;
173
+ reopening?: "unknown" | null;
173
174
  } | null;
174
175
  emit: EmitFn;
175
176
  newSessionId: () => string;