audit-tools 0.32.59 → 0.32.60

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 (116) hide show
  1. package/dist/audit/cli/charterDeltaPrompt.d.ts.map +1 -1
  2. package/dist/audit/cli/charterDeltaPrompt.js +19 -1
  3. package/dist/audit/cli/charterDeltaPrompt.js.map +1 -1
  4. package/dist/audit/cli/dispatch/tierRouting.d.ts +8 -0
  5. package/dist/audit/cli/dispatch/tierRouting.d.ts.map +1 -1
  6. package/dist/audit/cli/dispatch/tierRouting.js +1 -1
  7. package/dist/audit/cli/dispatch/tierRouting.js.map +1 -1
  8. package/dist/audit/cli/dispatch/tokenUsageObservation.d.ts +91 -0
  9. package/dist/audit/cli/dispatch/tokenUsageObservation.d.ts.map +1 -0
  10. package/dist/audit/cli/dispatch/tokenUsageObservation.js +210 -0
  11. package/dist/audit/cli/dispatch/tokenUsageObservation.js.map +1 -0
  12. package/dist/audit/cli/dispatch.d.ts.map +1 -1
  13. package/dist/audit/cli/dispatch.js +21 -9
  14. package/dist/audit/cli/dispatch.js.map +1 -1
  15. package/dist/audit/cli/mergeAndIngestCommand.d.ts.map +1 -1
  16. package/dist/audit/cli/mergeAndIngestCommand.js +62 -4
  17. package/dist/audit/cli/mergeAndIngestCommand.js.map +1 -1
  18. package/dist/audit/cli/nextStepCommand.d.ts.map +1 -1
  19. package/dist/audit/cli/nextStepCommand.js +7 -4
  20. package/dist/audit/cli/nextStepCommand.js.map +1 -1
  21. package/dist/audit/cli/prompts.d.ts.map +1 -1
  22. package/dist/audit/cli/prompts.js +12 -0
  23. package/dist/audit/cli/prompts.js.map +1 -1
  24. package/dist/audit/cli/providerConfirmationStep.d.ts +10 -1
  25. package/dist/audit/cli/providerConfirmationStep.d.ts.map +1 -1
  26. package/dist/audit/cli/providerConfirmationStep.js +49 -0
  27. package/dist/audit/cli/providerConfirmationStep.js.map +1 -1
  28. package/dist/audit/cli/rollingAuditDispatch.d.ts.map +1 -1
  29. package/dist/audit/cli/rollingAuditDispatch.js +17 -1
  30. package/dist/audit/cli/rollingAuditDispatch.js.map +1 -1
  31. package/dist/audit/contracts/workerSchemas.d.ts +36 -0
  32. package/dist/audit/contracts/workerSchemas.d.ts.map +1 -1
  33. package/dist/audit/orchestrator/charterExtractionExecutor.d.ts.map +1 -1
  34. package/dist/audit/orchestrator/charterExtractionExecutor.js +11 -6
  35. package/dist/audit/orchestrator/charterExtractionExecutor.js.map +1 -1
  36. package/dist/audit/orchestrator/rollingDispatch.d.ts.map +1 -1
  37. package/dist/audit/orchestrator/rollingDispatch.js +2 -0
  38. package/dist/audit/orchestrator/rollingDispatch.js.map +1 -1
  39. package/dist/audit/quota/index.d.ts +4 -4
  40. package/dist/audit/types/activeDispatch.d.ts +8 -0
  41. package/dist/audit/types/activeDispatch.d.ts.map +1 -1
  42. package/dist/audit/types.d.ts +30 -0
  43. package/dist/audit/types.d.ts.map +1 -1
  44. package/dist/audit/types.js +19 -0
  45. package/dist/audit/types.js.map +1 -1
  46. package/dist/audit/validation/auditResults.d.ts.map +1 -1
  47. package/dist/audit/validation/auditResults.js +40 -0
  48. package/dist/audit/validation/auditResults.js.map +1 -1
  49. package/dist/remediate/steps/dispatch/acceptNode.d.ts +1 -1
  50. package/dist/remediate/steps/dispatch/acceptNode.d.ts.map +1 -1
  51. package/dist/remediate/steps/dispatch/acceptNode.js +13 -6
  52. package/dist/remediate/steps/dispatch/acceptNode.js.map +1 -1
  53. package/dist/remediate/steps/nextStep.d.ts +23 -0
  54. package/dist/remediate/steps/nextStep.d.ts.map +1 -1
  55. package/dist/remediate/steps/nextStep.js +52 -15
  56. package/dist/remediate/steps/nextStep.js.map +1 -1
  57. package/dist/shared/dispatch/admissionLoop.d.ts +8 -6
  58. package/dist/shared/dispatch/admissionLoop.d.ts.map +1 -1
  59. package/dist/shared/dispatch/admissionLoop.js +13 -7
  60. package/dist/shared/dispatch/admissionLoop.js.map +1 -1
  61. package/dist/shared/dispatch/providerLaunchFinalize.d.ts +7 -3
  62. package/dist/shared/dispatch/providerLaunchFinalize.d.ts.map +1 -1
  63. package/dist/shared/dispatch/providerLaunchFinalize.js +52 -6
  64. package/dist/shared/dispatch/providerLaunchFinalize.js.map +1 -1
  65. package/dist/shared/dispatch/rollingDispatch.d.ts +97 -1
  66. package/dist/shared/dispatch/rollingDispatch.d.ts.map +1 -1
  67. package/dist/shared/dispatch/rollingDispatch.js +231 -80
  68. package/dist/shared/dispatch/rollingDispatch.js.map +1 -1
  69. package/dist/shared/dispatch/unifiedRolling.d.ts +23 -0
  70. package/dist/shared/dispatch/unifiedRolling.d.ts.map +1 -1
  71. package/dist/shared/dispatch/unifiedRolling.js +2 -0
  72. package/dist/shared/dispatch/unifiedRolling.js.map +1 -1
  73. package/dist/shared/friction/stepBoundaryCapture.d.ts +87 -1
  74. package/dist/shared/friction/stepBoundaryCapture.d.ts.map +1 -1
  75. package/dist/shared/friction/stepBoundaryCapture.js +117 -0
  76. package/dist/shared/friction/stepBoundaryCapture.js.map +1 -1
  77. package/dist/shared/friction/triage.d.ts.map +1 -1
  78. package/dist/shared/friction/triage.js +0 -0
  79. package/dist/shared/friction/triage.js.map +1 -1
  80. package/dist/shared/index.d.ts +9 -7
  81. package/dist/shared/index.d.ts.map +1 -1
  82. package/dist/shared/index.js +5 -5
  83. package/dist/shared/index.js.map +1 -1
  84. package/dist/shared/providers/providerConfirmation.d.ts +43 -1
  85. package/dist/shared/providers/providerConfirmation.d.ts.map +1 -1
  86. package/dist/shared/providers/providerConfirmation.js +28 -0
  87. package/dist/shared/providers/providerConfirmation.js.map +1 -1
  88. package/dist/shared/quota/accountId.d.ts +54 -0
  89. package/dist/shared/quota/accountId.d.ts.map +1 -0
  90. package/dist/shared/quota/accountId.js +96 -0
  91. package/dist/shared/quota/accountId.js.map +1 -0
  92. package/dist/shared/quota/apiPool.d.ts.map +1 -1
  93. package/dist/shared/quota/apiPool.js +29 -1
  94. package/dist/shared/quota/apiPool.js.map +1 -1
  95. package/dist/shared/quota/capacity.d.ts +2 -2
  96. package/dist/shared/quota/errorParsing.d.ts +31 -0
  97. package/dist/shared/quota/errorParsing.d.ts.map +1 -1
  98. package/dist/shared/quota/errorParsing.js +115 -0
  99. package/dist/shared/quota/errorParsing.js.map +1 -1
  100. package/dist/shared/quota/hostSessionQuotaSource.d.ts +15 -2
  101. package/dist/shared/quota/hostSessionQuotaSource.d.ts.map +1 -1
  102. package/dist/shared/quota/hostSessionQuotaSource.js +12 -8
  103. package/dist/shared/quota/hostSessionQuotaSource.js.map +1 -1
  104. package/dist/shared/quota/scheduler.d.ts +70 -11
  105. package/dist/shared/quota/scheduler.d.ts.map +1 -1
  106. package/dist/shared/quota/scheduler.js +86 -18
  107. package/dist/shared/quota/scheduler.js.map +1 -1
  108. package/dist/shared/quota/state.d.ts +72 -0
  109. package/dist/shared/quota/state.d.ts.map +1 -1
  110. package/dist/shared/quota/state.js +108 -0
  111. package/dist/shared/quota/state.js.map +1 -1
  112. package/dist/shared/types/rollingDispatch.d.ts +50 -1
  113. package/dist/shared/types/rollingDispatch.d.ts.map +1 -1
  114. package/package.json +1 -1
  115. package/schemas/audit_result.schema.json +16 -0
  116. package/schemas/audit_results.schema.json +16 -0
@@ -1,4 +1,4 @@
1
- import type { ResolvedProviderName, SessionConfig } from "../types/sessionConfig.js";
1
+ import type { DispatchableSource, ResolvedProviderName, SessionConfig } from "../types/sessionConfig.js";
2
2
  import type { FreshSessionProvider, ProviderRateLimits } from "./types.js";
3
3
  import type { ConfirmedPoolEntry, HostModelCostEntry, ProviderConfirmationInput } from "../types/providerConfirmation.js";
4
4
  export type CapabilityTier = "frontier" | "capable" | "fast" | "unknown";
@@ -100,4 +100,46 @@ export declare function annotateConfirmedPool(pool: ConfirmedPoolEntry[], sessio
100
100
  */
101
101
  export declare function annotateConfirmedPoolCost(pool: ConfirmedPoolEntry[], sessionConfig: SessionConfig): ConfirmedPoolEntry[];
102
102
  export declare function applyProviderConfirmationSelections(discovered: DiscoveredProvider[], exclude: ResolvedProviderName[], addUndetected: DiscoveredProvider[]): ConfirmedProviderPool;
103
+ /**
104
+ * Display-only view of one `sessionConfig.sources[]` pool for the Gate-0 roster.
105
+ *
106
+ * Backlog gap (a): `discoverProviders`/`buildSharedProviderConfirmation` only ever
107
+ * looked at PATH-probed CLIs + the legacy `openai_compatible` block, so an explicit
108
+ * `sources[]` pool (e.g. an opencode-free endpoint) never appeared at Gate-0 even
109
+ * though `collectDispatchableSources` (apiPool.ts) folds EVERY `sources[]` entry
110
+ * into what actually dispatches — the operator was confirming an ordering that
111
+ * omitted pools that WILL route. This type/derivation is display-only: it never
112
+ * round-trips through `ConfirmedPoolEntry` / the persisted `SharedProviderConfirmation`,
113
+ * so it can't perturb the existing cost_order/dispatch contract.
114
+ */
115
+ export interface SourcePoolDisplayEntry {
116
+ /**
117
+ * Same id convention the dispatch side uses (explicit `id`, else
118
+ * `${provider}:${model ?? endpoint ?? "default"}`) — display-only, not a
119
+ * guaranteed exact match of the dispatch-side pool key.
120
+ */
121
+ id: string;
122
+ provider: DispatchableSource["provider"];
123
+ model?: string;
124
+ /**
125
+ * Operator-declared `cost_per_mtok` on this source. Authoritative over the
126
+ * models.dev catalog price when present (mirrors the dispatch-side authority
127
+ * rule on `DispatchableSource.cost_per_mtok` — see sessionConfig.ts).
128
+ */
129
+ declared_cost_per_mtok?: number;
130
+ /**
131
+ * models.dev blended price, computed only when the source has no declared cost
132
+ * and a model id is known; `null` when the dataset can't price it.
133
+ */
134
+ blended_price_usd_per_mtok?: number | null;
135
+ }
136
+ /**
137
+ * Derive the Gate-0 display view of every configured `sessionConfig.sources[]`
138
+ * entry (backlog follow-up a). Read-only and additive: mirrors the same
139
+ * `sessionConfig.sources` array `collectDispatchableSources` (apiPool.ts) folds
140
+ * into dispatch, so what the operator sees at Gate-0 includes every pool that will
141
+ * actually route. Order is preserved from the operator-authored config array
142
+ * (content-derived, stable — never re-sorted by iteration/readdir order).
143
+ */
144
+ export declare function deriveSourcePoolDisplay(sessionConfig: SessionConfig): SourcePoolDisplayEntry[];
103
145
  //# sourceMappingURL=providerConfirmation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"providerConfirmation.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/providerConfirmation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAQ3E,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAM1C,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,eAAe,EAAE,kBAAkB,EAAE,CAAC;CACvC;AAsED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,aAAa,EAC5B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,aAAa,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAuB,GAC1D,kBAAkB,EAAE,CA6DtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,kBAAkB,EAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,GACnD,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAUpC;AAED;;;;;;;GAOG;AACH;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,oBAAoB,EAC1B,aAAa,EAAE,aAAa,GAC3B,MAAM,GAAG,SAAS,CASpB;AAED,oFAAoF;AACpF,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC;;;OAGG;IACH,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;CAC7C;AA+BD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,kBAAkB,EAAE,EAC1B,aAAa,EAAE,aAAa,EAC5B,KAAK,CAAC,EAAE,yBAAyB,GAChC,qBAAqB,CAiCvB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,kBAAkB,EAAE,EAC1B,aAAa,EAAE,aAAa,GAC3B,kBAAkB,EAAE,CAEtB;AAED,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,kBAAkB,EAAE,EAChC,OAAO,EAAE,oBAAoB,EAAE,EAC/B,aAAa,EAAE,kBAAkB,EAAE,GAClC,qBAAqB,CAYvB"}
1
+ {"version":3,"file":"providerConfirmation.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/providerConfirmation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,aAAa,EACd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAQ3E,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAM1C,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;;;;OASG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,kBAAkB,EAAE,CAAC;IAChC,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,eAAe,EAAE,kBAAkB,EAAE,CAAC;CACvC;AAsED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,aAAa,EAAE,aAAa,EAC5B,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,aAAa,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAuB,GAC1D,kBAAkB,EAAE,CA6DtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,kBAAkB,EAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,GACnD,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAUpC;AAED;;;;;;;GAOG;AACH;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,oBAAoB,EAC1B,aAAa,EAAE,aAAa,GAC3B,MAAM,GAAG,SAAS,CASpB;AAED,oFAAoF;AACpF,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC;;;OAGG;IACH,qBAAqB,EAAE,kBAAkB,EAAE,CAAC;CAC7C;AA+BD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,kBAAkB,EAAE,EAC1B,aAAa,EAAE,aAAa,EAC5B,KAAK,CAAC,EAAE,yBAAyB,GAChC,qBAAqB,CAiCvB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,kBAAkB,EAAE,EAC1B,aAAa,EAAE,aAAa,GAC3B,kBAAkB,EAAE,CAEtB;AAED,wBAAgB,mCAAmC,CACjD,UAAU,EAAE,kBAAkB,EAAE,EAChC,OAAO,EAAE,oBAAoB,EAAE,EAC/B,aAAa,EAAE,kBAAkB,EAAE,GAClC,qBAAqB,CAYvB;AAMD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC;;;OAGG;IACH,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,aAAa,GAC3B,sBAAsB,EAAE,CAoB1B"}
@@ -259,4 +259,32 @@ export function applyProviderConfirmationSelections(discovered, exclude, addUnde
259
259
  addedUndetected: undetectedNormalized,
260
260
  };
261
261
  }
262
+ /**
263
+ * Derive the Gate-0 display view of every configured `sessionConfig.sources[]`
264
+ * entry (backlog follow-up a). Read-only and additive: mirrors the same
265
+ * `sessionConfig.sources` array `collectDispatchableSources` (apiPool.ts) folds
266
+ * into dispatch, so what the operator sees at Gate-0 includes every pool that will
267
+ * actually route. Order is preserved from the operator-authored config array
268
+ * (content-derived, stable — never re-sorted by iteration/readdir order).
269
+ */
270
+ export function deriveSourcePoolDisplay(sessionConfig) {
271
+ const sources = sessionConfig.sources ?? [];
272
+ return sources.map((source) => {
273
+ const id = source.id ?? `${source.provider}:${source.model ?? source.endpoint ?? "default"}`;
274
+ const entry = {
275
+ id,
276
+ provider: source.provider,
277
+ ...(source.model ? { model: source.model } : {}),
278
+ ...(source.cost_per_mtok !== undefined
279
+ ? { declared_cost_per_mtok: source.cost_per_mtok }
280
+ : {}),
281
+ };
282
+ if (source.cost_per_mtok === undefined) {
283
+ entry.blended_price_usd_per_mtok = source.model
284
+ ? (resolveModelPrice(source.model) ?? null)
285
+ : null;
286
+ }
287
+ return entry;
288
+ });
289
+ }
262
290
  //# sourceMappingURL=providerConfirmation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"providerConfirmation.js","sourceRoot":"","sources":["../../../src/shared/providers/providerConfirmation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"providerConfirmation.js","sourceRoot":"","sources":["../../../src/shared/providers/providerConfirmation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { QuotaStateEntry } from "./types.js";
2
+ /**
3
+ * Derive a LOCAL, credential-VALUE-free account id for a bare-API-key source
4
+ * (`openai-compatible` — NIM/vLLM/LM Studio/...), from `(endpoint,
5
+ * api_key_env)` — the only discriminator such a source exposes with no
6
+ * whoami/network call. Two sources declaring the SAME normalized endpoint and
7
+ * the SAME `api_key_env` NAME (never its value — the env var's contents are
8
+ * never read here) resolve to the SAME account id, so a learned 429/cooldown
9
+ * observed on one folds onto every sibling sharing that credential.
10
+ *
11
+ * Backlog HIGH, 2026-07-11: the primary `openai-compatible/*` source and the
12
+ * explicitly-`id`'d `nim-nano`/`nim-super`/`nim-kimi` sources all authenticate
13
+ * with the same `NVIDIA_API_KEY` against the same endpoint, but formed
14
+ * separately-keyed quota pools (`dispatchableSourceId` — untouched by this
15
+ * module, still subdivides BUDGETS per source/model) — so a learned cooldown
16
+ * on the primary never gated the siblings. See {@link foldAccountCooldown}
17
+ * for how the derived id is used.
18
+ *
19
+ * Deliberately NOT an extension of `BaseHttpQuotaSource.resolveAccountId`
20
+ * (`httpQuotaSource.ts`) — that interface is a stub for a live network
21
+ * handshake (Claude/Codex/Copilot/Antigravity each expose a whoami-shaped
22
+ * endpoint); a bare API key has no such endpoint, so this is a pure, local,
23
+ * no-I/O derivation instead.
24
+ *
25
+ * Returns null when: the source isn't `openai-compatible`; either half of the
26
+ * discriminator is missing; or the source already carries an explicit
27
+ * `account` override (`DispatchableSource.account` — the operator's own
28
+ * account declaration always wins, and two explicitly-different declared
29
+ * accounts on the same endpoint/key must NOT be silently re-merged here).
30
+ */
31
+ export declare function deriveLocalAccountId(source: {
32
+ provider: string;
33
+ endpoint?: string;
34
+ api_key_env?: string;
35
+ account?: string | null;
36
+ }): string | null;
37
+ /**
38
+ * Fold the ACCOUNT-scoped 429/cooldown signal from a set of sibling pools'
39
+ * quota-state entries into `ownEntry`, taking whichever of `cooldown_until` /
40
+ * `last_429_at` is furthest in the future across the whole group. This is the
41
+ * mechanism that makes the invariant hold: a cooldown learned on ANY sibling
42
+ * source of the same account gates EVERY sibling, because every sibling's
43
+ * effective entry is re-derived through this fold.
44
+ *
45
+ * `tokens_per_pct` / `output_per_input` / `consecutive_429_count` (per-pool
46
+ * BUDGET and backoff-growth bookkeeping) are always taken from `ownEntry`
47
+ * only — the account fold gates the cooldown-gating axis alone, never the
48
+ * per-model budget subdivision (`dispatchableSourceId` stays untouched).
49
+ *
50
+ * Pure; never mutates its inputs. Returns null only when `ownEntry` is null
51
+ * and no sibling contributes a cooldown/last-429 signal either.
52
+ */
53
+ export declare function foldAccountCooldown(ownEntry: QuotaStateEntry | null | undefined, siblingEntries: ReadonlyArray<QuotaStateEntry | null | undefined>): QuotaStateEntry | null;
54
+ //# sourceMappingURL=accountId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountId.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/accountId.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,GAAG,MAAM,GAAG,IAAI,CAOhB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,GAAG,IAAI,GAAG,SAAS,EAC5C,cAAc,EAAE,aAAa,CAAC,eAAe,GAAG,IAAI,GAAG,SAAS,CAAC,GAChE,eAAe,GAAG,IAAI,CAuCxB"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Derive a LOCAL, credential-VALUE-free account id for a bare-API-key source
3
+ * (`openai-compatible` — NIM/vLLM/LM Studio/...), from `(endpoint,
4
+ * api_key_env)` — the only discriminator such a source exposes with no
5
+ * whoami/network call. Two sources declaring the SAME normalized endpoint and
6
+ * the SAME `api_key_env` NAME (never its value — the env var's contents are
7
+ * never read here) resolve to the SAME account id, so a learned 429/cooldown
8
+ * observed on one folds onto every sibling sharing that credential.
9
+ *
10
+ * Backlog HIGH, 2026-07-11: the primary `openai-compatible/*` source and the
11
+ * explicitly-`id`'d `nim-nano`/`nim-super`/`nim-kimi` sources all authenticate
12
+ * with the same `NVIDIA_API_KEY` against the same endpoint, but formed
13
+ * separately-keyed quota pools (`dispatchableSourceId` — untouched by this
14
+ * module, still subdivides BUDGETS per source/model) — so a learned cooldown
15
+ * on the primary never gated the siblings. See {@link foldAccountCooldown}
16
+ * for how the derived id is used.
17
+ *
18
+ * Deliberately NOT an extension of `BaseHttpQuotaSource.resolveAccountId`
19
+ * (`httpQuotaSource.ts`) — that interface is a stub for a live network
20
+ * handshake (Claude/Codex/Copilot/Antigravity each expose a whoami-shaped
21
+ * endpoint); a bare API key has no such endpoint, so this is a pure, local,
22
+ * no-I/O derivation instead.
23
+ *
24
+ * Returns null when: the source isn't `openai-compatible`; either half of the
25
+ * discriminator is missing; or the source already carries an explicit
26
+ * `account` override (`DispatchableSource.account` — the operator's own
27
+ * account declaration always wins, and two explicitly-different declared
28
+ * accounts on the same endpoint/key must NOT be silently re-merged here).
29
+ */
30
+ export function deriveLocalAccountId(source) {
31
+ if (source.account)
32
+ return null;
33
+ if (source.provider !== "openai-compatible")
34
+ return null;
35
+ if (!source.endpoint || !source.api_key_env)
36
+ return null;
37
+ const normalizedEndpoint = source.endpoint.trim().toLowerCase().replace(/\/+$/, "");
38
+ if (!normalizedEndpoint)
39
+ return null;
40
+ return `${normalizedEndpoint}::${source.api_key_env}`;
41
+ }
42
+ /**
43
+ * Fold the ACCOUNT-scoped 429/cooldown signal from a set of sibling pools'
44
+ * quota-state entries into `ownEntry`, taking whichever of `cooldown_until` /
45
+ * `last_429_at` is furthest in the future across the whole group. This is the
46
+ * mechanism that makes the invariant hold: a cooldown learned on ANY sibling
47
+ * source of the same account gates EVERY sibling, because every sibling's
48
+ * effective entry is re-derived through this fold.
49
+ *
50
+ * `tokens_per_pct` / `output_per_input` / `consecutive_429_count` (per-pool
51
+ * BUDGET and backoff-growth bookkeeping) are always taken from `ownEntry`
52
+ * only — the account fold gates the cooldown-gating axis alone, never the
53
+ * per-model budget subdivision (`dispatchableSourceId` stays untouched).
54
+ *
55
+ * Pure; never mutates its inputs. Returns null only when `ownEntry` is null
56
+ * and no sibling contributes a cooldown/last-429 signal either.
57
+ */
58
+ export function foldAccountCooldown(ownEntry, siblingEntries) {
59
+ let cooldownUntil = ownEntry?.cooldown_until ?? null;
60
+ let cooldownUntilMs = cooldownUntil ? Date.parse(cooldownUntil) : NaN;
61
+ let lastAt = ownEntry?.last_429_at ?? null;
62
+ let lastAtMs = lastAt ? Date.parse(lastAt) : NaN;
63
+ for (const sibling of siblingEntries) {
64
+ const siblingCooldown = sibling?.cooldown_until;
65
+ if (siblingCooldown) {
66
+ const ms = Date.parse(siblingCooldown);
67
+ if (Number.isFinite(ms) && (!Number.isFinite(cooldownUntilMs) || ms > cooldownUntilMs)) {
68
+ cooldownUntil = siblingCooldown;
69
+ cooldownUntilMs = ms;
70
+ }
71
+ }
72
+ const siblingLast = sibling?.last_429_at;
73
+ if (siblingLast) {
74
+ const ms = Date.parse(siblingLast);
75
+ if (Number.isFinite(ms) && (!Number.isFinite(lastAtMs) || ms > lastAtMs)) {
76
+ lastAt = siblingLast;
77
+ lastAtMs = ms;
78
+ }
79
+ }
80
+ }
81
+ if (!ownEntry && cooldownUntil === null && lastAt === null)
82
+ return null;
83
+ return {
84
+ updated_at: ownEntry?.updated_at ?? new Date().toISOString(),
85
+ cooldown_until: cooldownUntil,
86
+ last_429_at: lastAt,
87
+ ...(ownEntry?.consecutive_429_count !== undefined
88
+ ? { consecutive_429_count: ownEntry.consecutive_429_count }
89
+ : {}),
90
+ ...(ownEntry?.tokens_per_pct !== undefined ? { tokens_per_pct: ownEntry.tokens_per_pct } : {}),
91
+ ...(ownEntry?.output_per_input !== undefined
92
+ ? { output_per_input: ownEntry.output_per_input }
93
+ : {}),
94
+ };
95
+ }
96
+ //# sourceMappingURL=accountId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accountId.js","sourceRoot":"","sources":["../../../src/shared/quota/accountId.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"apiPool.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/apiPool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apiPool.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/apiPool.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import { probeQuotaSource, resolveAccountIdSafe } from "./quotaSource.js";
2
2
  import { buildProviderModelKey } from "./scheduler.js";
3
3
  import { parseProviderModelKey } from "./httpQuotaSource.js";
4
4
  import { buildAccountScopedQuotaSource } from "./compositeQuotaSource.js";
5
+ import { deriveLocalAccountId, foldAccountCooldown } from "./accountId.js";
5
6
  import { classifyQuotaCoverage, sourceCoversProvider } from "./coverage.js";
6
7
  import { hasConfiguredOpenAiCompatible } from "../providers/providerFactory.js";
7
8
  import { resolveConversationHostProvider } from "../providers/providerPathGuard.js";
@@ -369,6 +370,33 @@ export async function buildSourcePools(params) {
369
370
  const sources = collectDispatchableSources(params.sessionConfig, params.primaryProviderName, {
370
371
  demotePrimaryInProcess: params.demotePrimaryInProcess,
371
372
  });
372
- return Promise.all(sources.map((source) => buildSourcePool({ source, quotaSource: params.quotaSource, quotaEntries: params.quotaEntries })));
373
+ const pools = await Promise.all(sources.map((source) => buildSourcePool({ source, quotaSource: params.quotaSource, quotaEntries: params.quotaEntries })));
374
+ return foldAccountCooldownAcrossPools(pools);
375
+ }
376
+ /**
377
+ * Re-derive each pool's `quotaStateEntry` by folding in the account-scoped
378
+ * cooldown/429 signal from its siblings (Bug 3 / Slice A3: account-axis pool
379
+ * identity). Applied ONCE across the whole freshly-built pool set — after
380
+ * this, every pool's frozen `quotaStateEntry` already reflects the worst
381
+ * cooldown its account has seen, so a peer whose OWN key never recorded a 429
382
+ * still shows up degraded. This is the construction-time counterpart to the
383
+ * live fold `selectProvider` applies mid-run in `rollingDispatch.ts` (same
384
+ * {@link foldAccountCooldown} primitive, single-sourced). A pool with no
385
+ * derivable account (not `openai-compatible`, missing endpoint/api_key_env, or
386
+ * an explicit `source.account` override) is returned unchanged.
387
+ */
388
+ function foldAccountCooldownAcrossPools(pools) {
389
+ return pools.map((pool) => {
390
+ const accountId = pool.source ? deriveLocalAccountId(pool.source) : null;
391
+ if (!accountId)
392
+ return pool;
393
+ const siblingEntries = pools
394
+ .filter((p) => p !== pool && p.source && deriveLocalAccountId(p.source) === accountId)
395
+ .map((p) => p.quotaStateEntry ?? null);
396
+ if (siblingEntries.length === 0)
397
+ return pool;
398
+ const folded = foldAccountCooldown(pool.quotaStateEntry ?? null, siblingEntries);
399
+ return folded === (pool.quotaStateEntry ?? null) ? pool : { ...pool, quotaStateEntry: folded };
400
+ });
373
401
  }
374
402
  //# sourceMappingURL=apiPool.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apiPool.js","sourceRoot":"","sources":["../../../src/shared/quota/apiPool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apiPool.js","sourceRoot":"","sources":["../../../src/shared/quota/apiPool.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA0B,EAAE,OAAuB;IACtF,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;IACtE,OAAO,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,OAAO,CAAC,CAAC;AAClG,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,KAAyB;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnF,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,KAAyB;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnF,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAA0B;IAC7D,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IAClC,QAAQ,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,KAAK,mBAAmB;YACtB,OAAO;gBACL,iBAAiB,EAAE;oBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,GAAG,CAAC;iBACL;aACF,CAAC;QACJ,KAAK,OAAO;YACV,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAC5E,KAAK,UAAU;YACb,OAAO,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAC1D,KAAK,qBAAqB;YACxB,OAAO;gBACL,mBAAmB,EAAE;oBACnB,gBAAgB,EAAG,CAAC,CAAC,gBAAyC,IAAI,EAAE;oBACpE,GAAG,CAAC;iBACL;aACF,CAAC;QACJ,KAAK,gBAAgB;YACnB,uEAAuE;YACvE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,aAA4B,EAC5B,MAAsC;IAEtC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;AACxF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAQxC;IACC,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAC5E,GAAqB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CACjE,CAAC;IACF,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,OAAO;QAClB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,SAAS,EAAE,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK;QACtD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;QACjD,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;QAC/C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,mBAAmB,EAAE,KAAK,CAAC,QAAQ;QACnC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,aAAa,EAAE,qBAAqB,CAClC,MAAM,CAAC,YAAY,EACnB,oBAAoB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,YAAY,CAAC,CAC9D;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,MAazC;IACC,kFAAkF;IAClF,iFAAiF;IACjF,+EAA+E;IAC/E,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAC5C,MAAM,CAAC,WAAW,EAClB,qBAAqB,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,CAC7D,CAAC;IACF,OAAO,OAAO,CAAC,GAAG,CAChB,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC5C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7C,+EAA+E;QAC/E,qEAAqE;QACrE,MAAM,MAAM,GAAG,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAClF,OAAO,kBAAkB,CAAC;YACxB,OAAO;YACP,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,IAAI,EAAE,KAAK,EAAE,IAAI;YACjB,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YACjD,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI;YACrD,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;YAC3C,WAAW,EAAE,MAAM,CAAC,WAAW;SAChC,CAAC,CAAC;IACL,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,cAAc,CAC5B,KAAyD;IAEzD,MAAM,GAAG,GAAG,IAAI,GAAG,EAA8B,CAAC;IAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM;YAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAIrC;IACC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,MAAM,CAAC;IACrD,kFAAkF;IAClF,6EAA6E;IAC7E,MAAM,MAAM,GAAG,6BAA6B,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClE,oFAAoF;IACpF,4EAA4E;IAC5E,MAAM,OAAO,GACX,MAAM,CAAC,OAAO;QACd,CAAC,MAAM,oBAAoB,CACzB,MAAM,EACN,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,CAChF,CAAC,CAAC;IACL,MAAM,OAAO,GAAG,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,CACzD,GAAqB,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CACjE,CAAC;IACF,OAAO;QACL,EAAE,EAAE,OAAO;QACX,YAAY,EAAE,MAAM,CAAC,QAAQ;QAC7B,8EAA8E;QAC9E,kFAAkF;QAClF,mFAAmF;QACnF,oFAAoF;QACpF,+EAA+E;QAC/E,8EAA8E;QAC9E,SAAS,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;QAC/B,oBAAoB,EAAE,IAAI;QAC1B,0EAA0E;QAC1E,2EAA2E;QAC3E,6EAA6E;QAC7E,yEAAyE;QACzE,+EAA+E;QAC/E,gFAAgF;QAChF,gFAAgF;QAChF,cAAc,EAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,cAAc,CAAC;QAClE,gFAAgF;QAChF,kFAAkF;QAClF,8EAA8E;QAC9E,mBAAmB,EAAE,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC;QAChE,eAAe,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI;QAC9C,iFAAiF;QACjF,2EAA2E;QAC3E,gBAAgB,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;QACtC,mBAAmB,EAAE,KAAK,CAAC,QAAQ;QACnC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,aAAa,EAAE,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACpG,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,8BAA8B,GAAwB,IAAI,GAAG,CAAC;IAClE,mBAAmB;IACnB,OAAO;IACP,UAAU;CACX,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,4BAA4B,CAAC,YAAgC;IAC3E,OAAO,YAAY,KAAK,SAAS,IAAI,8BAA8B,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACxF,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,4BAA4B,CAAC,OAI5C;IACC,IAAI,CAAC,OAAO,CAAC,eAAe;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC;IACjD,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;QACvD,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,OAAO,gBAAgB,KAAK,QAAQ,CAAC;AACvC,CAAC;AAED;oFACoF;AACpF,SAAS,sBAAsB,CAC7B,EAAmD;IAEnD,OAAO;QACL,QAAQ,EAAE,mBAAmB;QAC7B,QAAQ,EAAE,EAAE,CAAC,QAAQ;QACrB,KAAK,EAAE,EAAE,CAAC,KAAK;QACf,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,OAAO,EAAE,EAAE,CAAC,OAAO;QACnB,UAAU,EAAE;YACV,GAAG,CAAC,EAAE,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,GAAG,CAAC,EAAE,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,GAAG,CAAC,EAAE,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1F,GAAG,CAAC,EAAE,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnG,GAAG,CAAC,EAAE,CAAC,wBAAwB,KAAK,SAAS;gBAC3C,CAAC,CAAC,EAAE,wBAAwB,EAAE,EAAE,CAAC,wBAAwB,EAAE;gBAC3D,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,EAAE,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnG,GAAG,CAAC,EAAE,CAAC,wBAAwB,KAAK,SAAS;gBAC3C,CAAC,CAAC,EAAE,wBAAwB,EAAE,EAAE,CAAC,wBAAwB,EAAE;gBAC3D,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,EAAE,CAAC,+BAA+B,KAAK,SAAS;gBAClD,CAAC,CAAC,EAAE,+BAA+B,EAAE,EAAE,CAAC,+BAA+B,EAAE;gBACzE,CAAC,CAAC,EAAE,CAAC;SACR;QACD,yEAAyE;QACzE,6EAA6E;QAC7E,2EAA2E;QAC3E,+DAA+D;QAC/D,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,aAA4B,EAC5B,mBAA2B;IAE3B,IAAI,CAAC,8BAA8B,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1E,QAAQ,mBAAmB,EAAE,CAAC;QAC5B,KAAK,mBAAmB;YACtB,OAAO,6BAA6B,CAAC,aAAa,CAAC,iBAAiB,CAAC;gBACnE,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC,iBAAkB,CAAC;gBAC1D,CAAC,CAAC,IAAI,CAAC;QACX,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,CAAC,GAAG,aAAa,CAAC,KAAK,IAAI,EAAE,CAAC;YACpC,OAAO;gBACL,QAAQ,EAAE,OAAO;gBACjB,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,UAAU,EAAE;oBACV,GAAG,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACzE,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpE;aACF,CAAC;QACJ,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YAChB,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC;YACvC,OAAO;gBACL,QAAQ,EAAE,UAAU;gBACpB,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,UAAU,EAAE;oBACV,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACpE;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,aAA4B,EAC5B,mBAA2B,EAC3B,OAA8C;IAE9C,MAAM,GAAG,GAAyB,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,CAAC,MAA0B,EAAQ,EAAE;QACtD,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzE,CAAC,CAAC;IACF,oFAAoF;IACpF,qFAAqF;IACrF,iFAAiF;IACjF,IAAI,OAAO,EAAE,sBAAsB,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,sBAAsB,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;QAC3E,IAAI,OAAO;YAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,IACE,mBAAmB,KAAK,mBAAmB;QAC3C,6BAA6B,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAC9D,CAAC;QACD,UAAU,CAAC,sBAAsB,CAAC,aAAa,CAAC,iBAAkB,CAAC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAOtC;IACC,MAAM,OAAO,GAAG,0BAA0B,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,mBAAmB,EAAE;QAC3F,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;KACtD,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrB,eAAe,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAChG,CACF,CAAC;IACF,OAAO,8BAA8B,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,8BAA8B,CAAC,KAAqB;IAC3D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzE,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5B,MAAM,cAAc,GAAG,KAAK;aACzB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;aACrF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC;QACzC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7C,MAAM,MAAM,GAAG,mBAAmB,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE,cAAc,CAAC,CAAC;QACjF,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;IACjG,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -381,10 +381,10 @@ export declare const DispatchCapacityPoolSummarySchema: z.ZodObject<{
381
381
  in_flight_tokens?: number | undefined;
382
382
  calibrating?: boolean | undefined;
383
383
  rank?: "deep" | "small" | "standard" | undefined;
384
+ declared_cost_per_mtok?: number | null | undefined;
384
385
  quota_signal_degraded?: boolean | undefined;
385
386
  quota_coverage?: "established" | "reactive_only" | "unestablished" | undefined;
386
387
  concurrency_cap?: number | null | undefined;
387
- declared_cost_per_mtok?: number | null | undefined;
388
388
  }, {
389
389
  confidence: "high" | "low" | "medium";
390
390
  source: "default" | "explicit_config" | "discovered_capability" | "static_metadata" | "cli_flags" | "provider_default" | "learned";
@@ -425,10 +425,10 @@ export declare const DispatchCapacityPoolSummarySchema: z.ZodObject<{
425
425
  in_flight_tokens?: number | undefined;
426
426
  calibrating?: boolean | undefined;
427
427
  rank?: "deep" | "small" | "standard" | undefined;
428
+ declared_cost_per_mtok?: number | null | undefined;
428
429
  quota_signal_degraded?: boolean | undefined;
429
430
  quota_coverage?: "established" | "reactive_only" | "unestablished" | undefined;
430
431
  concurrency_cap?: number | null | undefined;
431
- declared_cost_per_mtok?: number | null | undefined;
432
432
  }>;
433
433
  export type DispatchCapacityPoolSummary = z.infer<typeof DispatchCapacityPoolSummarySchema>;
434
434
  /**
@@ -3,6 +3,37 @@ export interface RateLimitDetectionResult {
3
3
  retryAfterMs: number | null;
4
4
  rawMatch: string | null;
5
5
  }
6
+ /** Detection result for the non-resettable credit-exhaustion error class. */
7
+ export interface CreditExhaustionDetectionResult {
8
+ isCreditExhausted: boolean;
9
+ rawMatch: string | null;
10
+ }
11
+ /**
12
+ * Detect a non-resettable credit-exhaustion condition (out of prepaid usage
13
+ * credits) — distinct from {@link detectRateLimitError}: a positive result here
14
+ * carries no retry-after/reset semantics, ever. A caller must exclude the pool
15
+ * from the admissible set for the remainder of the run rather than apply a
16
+ * timed cooldown.
17
+ */
18
+ export declare function detectCreditExhaustionError(text: string): CreditExhaustionDetectionResult;
19
+ /**
20
+ * Channel-isolated credit-exhaustion detection (CE-003, mirrors
21
+ * {@link detectRateLimitFromChannel}): only the worker's `error`/`status`
22
+ * channel is inspected, never the consumed `result` channel, so a healthy
23
+ * AuditResult that merely quotes a credit-exhaustion string can never trip it.
24
+ */
25
+ export declare function detectCreditExhaustionFromChannel(channel: WorkerOutputChannel, text: string): CreditExhaustionDetectionResult;
26
+ /**
27
+ * TIER 2 broad pre-filter (Slice A2b): true when `text` merely smells
28
+ * quota/billing-related. Deliberately over-broad and routing-ONLY — a positive
29
+ * result is never a classification by itself (see
30
+ * {@link detectCreditExhaustionError} / {@link detectRateLimitError} for the
31
+ * precise, acted-on classes). Callers use a positive result only to decide
32
+ * whether an otherwise-unmatched provider death should surface as the
33
+ * conservative `quota_unclassified` outcome (re-queue + verbatim-message
34
+ * harvest for pattern improvement) rather than a silent, unclassified `error`.
35
+ */
36
+ export declare function detectQuotaSuspicious(text: string): boolean;
6
37
  /**
7
38
  * The worker output channel a piece of text came from. Host *session-limit*
8
39
  * sentinels are only trustworthy from the ERROR / STATUS channel: the consumed
@@ -1 +1 @@
1
- {"version":3,"file":"errorParsing.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/errorParsing.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAiHD;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhE;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAmB,GACvB,wBAAwB,CAK1B;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAmB,GACvB,wBAAwB,CAgB1B;AAED,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,SAAS,GAAE,MAA4B,EACvC,GAAG,GAAE,MAAmB,GACvB,MAAM,CAGR"}
1
+ {"version":3,"file":"errorParsing.d.ts","sourceRoot":"","sources":["../../../src/shared/quota/errorParsing.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,wBAAwB;IACvC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AA+GD,6EAA6E;AAC7E,MAAM,WAAW,+BAA+B;IAC9C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AA2BD;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,GACX,+BAA+B,CAkBjC;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,MAAM,GACX,+BAA+B,CAKjC;AA0BD;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE3D;AAgCD;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhE;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAmB,GACvB,wBAAwB,CAK1B;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAmB,GACvB,wBAAwB,CAgB1B;AAED,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C,wBAAgB,oBAAoB,CAClC,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,SAAS,GAAE,MAA4B,EACvC,GAAG,GAAE,MAAmB,GACvB,MAAM,CAGR"}
@@ -17,6 +17,31 @@ const USAGE_LIMIT_PATTERNS = [
17
17
  /\b(?:session|usage) limit reached\b/i,
18
18
  ];
19
19
  const ALL_RATE_LIMIT_PATTERNS = [...RATE_LIMIT_PATTERNS, ...USAGE_LIMIT_PATTERNS];
20
+ // Credit exhaustion (the account/API key has run out of PREPAID usage credits,
21
+ // e.g. Anthropic's "Your credit balance is too low" or OpenAI-compatible
22
+ // `insufficient_quota`) is architecturally distinct from a rate limit: it
23
+ // carries NO reset time — the condition does not clear on a timer, only when an
24
+ // operator adds credits. Patterns are deliberately exact vendor wording so an
25
+ // ordinary resettable 429 / "quota exceeded" (RATE_LIMIT_PATTERNS, which DOES
26
+ // reset) is never misclassified as unrecoverable, and vice versa. The
27
+ // `exceeded your current quota` phrase gap is BOUNDED (no wildcard span across a
28
+ // resettable clause), and `RESET_INDICATOR_PATTERN` below is a hard veto on any
29
+ // free-text match whose message self-describes as resettable — because
30
+ // permanently sinking a pool that would have recovered is worse than the bug
31
+ // this fixes (adversarial-review finding, 2026-07-11).
32
+ const CREDIT_EXHAUSTION_PATTERNS = [
33
+ /credit balance is too low/i,
34
+ /\bout of (?:usage )?credits\b/i,
35
+ /\binsufficient credits\b/i,
36
+ /\bno credits? remaining\b/i,
37
+ /\bpurchase (?:more )?credits\b/i,
38
+ /exceeded your current quota,? please check your plan and billing details/i,
39
+ ];
40
+ // A message that says it RESETS / is transient is a rate limit, never permanent
41
+ // credit exhaustion — veto any free-text credit match when these appear. (The
42
+ // structured `insufficient_quota` JSON code is exempt: it is an unambiguous
43
+ // vendor billing signal, trusted even if the surrounding prose mentions retry.)
44
+ const RESET_INDICATOR_PATTERN = /\b(?:resets?|resetting|retry|retry[- ]after|temporar(?:y|ily)|transient|per[- ]?(?:minute|second|hour|day)|try again|rate[- ]?limit)\b/i;
20
45
  function tryParseJson(text) {
21
46
  const jsonStart = text.indexOf("{");
22
47
  if (jsonStart === -1)
@@ -70,6 +95,96 @@ function detectFromJson(text) {
70
95
  rawMatch: `json:${status === 429 ? "status=429" : `type=${type ?? errorType}`}`,
71
96
  };
72
97
  }
98
+ // OpenAI-compatible endpoints (OpenAI itself, and NIM/vLLM/LM Studio proxies
99
+ // that mirror the shape) report billing-hard-limit exhaustion with the
100
+ // structured `error.type`/`error.code === "insufficient_quota"` — a precise,
101
+ // vendor-defined signal distinct from `rate_limit_error`/status 429.
102
+ function detectCreditExhaustionFromJson(text) {
103
+ const obj = tryParseJson(text);
104
+ if (!obj)
105
+ return null;
106
+ const errorObj = obj["error"];
107
+ const errorType = errorObj?.["type"];
108
+ const errorCode = errorObj?.["code"];
109
+ const isCreditExhausted = errorType === "insufficient_quota" || errorCode === "insufficient_quota";
110
+ if (!isCreditExhausted)
111
+ return null;
112
+ return {
113
+ isCreditExhausted: true,
114
+ rawMatch: `json:type=${errorType ?? errorCode}`,
115
+ };
116
+ }
117
+ /**
118
+ * Detect a non-resettable credit-exhaustion condition (out of prepaid usage
119
+ * credits) — distinct from {@link detectRateLimitError}: a positive result here
120
+ * carries no retry-after/reset semantics, ever. A caller must exclude the pool
121
+ * from the admissible set for the remainder of the run rather than apply a
122
+ * timed cooldown.
123
+ */
124
+ export function detectCreditExhaustionError(text) {
125
+ const jsonResult = detectCreditExhaustionFromJson(text);
126
+ if (jsonResult)
127
+ return jsonResult;
128
+ // A message that self-describes as resettable/transient is a rate limit, not
129
+ // permanent credit exhaustion — never sink such a pool for the whole run.
130
+ if (RESET_INDICATOR_PATTERN.test(text)) {
131
+ return { isCreditExhausted: false, rawMatch: null };
132
+ }
133
+ for (const pattern of CREDIT_EXHAUSTION_PATTERNS) {
134
+ const match = pattern.exec(text);
135
+ if (match) {
136
+ return { isCreditExhausted: true, rawMatch: match[0] };
137
+ }
138
+ }
139
+ return { isCreditExhausted: false, rawMatch: null };
140
+ }
141
+ /**
142
+ * Channel-isolated credit-exhaustion detection (CE-003, mirrors
143
+ * {@link detectRateLimitFromChannel}): only the worker's `error`/`status`
144
+ * channel is inspected, never the consumed `result` channel, so a healthy
145
+ * AuditResult that merely quotes a credit-exhaustion string can never trip it.
146
+ */
147
+ export function detectCreditExhaustionFromChannel(channel, text) {
148
+ if (channel === "result") {
149
+ return { isCreditExhausted: false, rawMatch: null };
150
+ }
151
+ return detectCreditExhaustionError(text);
152
+ }
153
+ // Slice A2b (TIER 2 of the three-tier classifier — see rollingDispatch.ts's
154
+ // header doc for the full design): a deliberately BROAD, routing-only
155
+ // pre-filter for "does this text merely SMELL quota/billing-related?". Neither
156
+ // CREDIT_EXHAUSTION_PATTERNS nor ALL_RATE_LIMIT_PATTERNS is exhaustive — a
157
+ // provider death whose text matches neither currently falls through to a raw,
158
+ // silent `error` outcome (the exact failure mode credit-exhaustion detection
159
+ // fixed, but only for text it recognizes). This pattern is intentionally far
160
+ // broader than either precise class: a false positive here only routes an
161
+ // unmatched death to the CONSERVATIVE `quota_unclassified` degrade (re-queue +
162
+ // reversible cooldown, never a permanent pool exclusion — see
163
+ // `rollingDispatch.ts`) instead of a silent raw error, so over-matching is
164
+ // cheap. It is NEVER used to classify a `credit_exhausted` or `rate_limited`
165
+ // outcome — those stay owned by their precise detectors above, checked first.
166
+ // Broad — but NOT so broad it fires on ordinary crash text. Bare "limit" /
167
+ // "usage" / "credit" / "exceeded" / "rate" matched generic failures ("Maximum
168
+ // call stack size exceeded", a CLI "Usage:" banner, "...(reading credit)",
169
+ // "limit-based pagination") — adversarial-review finding. Require quota/billing-
170
+ // SPECIFIC phrasing (a qualifier before "limit", "credits" not bare "credit",
171
+ // etc.). Genuinely novel wording the precise detectors AND this filter both miss
172
+ // is caught by the host-observation net (triage.ts mechanism B), so erring
173
+ // slightly narrow here is safe; erring broad masks a real bug as a quota event.
174
+ const QUOTA_SUSPICIOUS_PATTERN = /\b(?:quota|billing|429|402|payment required|too many requests|throttl(?:e|ed|ing)|insufficient (?:quota|credits?|balance|funds)|credit balance|out of (?:usage |prepaid )?credits?|(?:no )?credits? (?:remaining|left)|(?:usage|rate|spend(?:ing)?|session|account|daily|weekly|monthly|token|request|concurrency)[- ]?(?:limit|cap)|(?:quota|usage|credit|rate|plan|token|request|spend(?:ing)?)\s+(?:exceeded|reached)|limit (?:reached|exceeded|hit)|rate[- ]?limit(?:ed|ing)?|exceeded your (?:current )?(?:quota|limit|usage|plan)|over (?:your )?(?:quota|limit))\b/i;
175
+ /**
176
+ * TIER 2 broad pre-filter (Slice A2b): true when `text` merely smells
177
+ * quota/billing-related. Deliberately over-broad and routing-ONLY — a positive
178
+ * result is never a classification by itself (see
179
+ * {@link detectCreditExhaustionError} / {@link detectRateLimitError} for the
180
+ * precise, acted-on classes). Callers use a positive result only to decide
181
+ * whether an otherwise-unmatched provider death should surface as the
182
+ * conservative `quota_unclassified` outcome (re-queue + verbatim-message
183
+ * harvest for pattern improvement) rather than a silent, unclassified `error`.
184
+ */
185
+ export function detectQuotaSuspicious(text) {
186
+ return QUOTA_SUSPICIOUS_PATTERN.test(text);
187
+ }
73
188
  function extractResetsInMs(text) {
74
189
  const match = /Resets in (?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?/i.exec(text);
75
190
  if (!match)