scoutline 0.19.2 → 0.19.4

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.
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Provider availability — classification and healthy-first ordering
3
+ * (provider-availability plan, DESIGN D2/D7; fixes GitHub #94).
4
+ *
5
+ * Doctor keeps every row (a diagnostics tool that hides dead providers
6
+ * is a tautology) and annotates each with a closed-vocabulary
7
+ * `availability` value plus a top-level `availableProviders` short
8
+ * list, sorted healthy-first so agents can read the usable providers
9
+ * off the top of the report without destroying the diagnostic record.
10
+ *
11
+ * Availability NEVER fabricates: there is no snapshot entry ⇒ never
12
+ * "exhausted". The exhaustion signal is snapshot-based (a fresh 0%
13
+ * reading on a capability-relevant quota category), never
14
+ * probe-error-based — Tavily and Perplexity structurally demote quota
15
+ * failures to generic ApiError/NetworkError in probe normalization, so
16
+ * an error-code classifier would miss exactly the live case this
17
+ * module exists to surface.
18
+ *
19
+ * Boundary rules:
20
+ * - **Clock-free, registry-free.** `now` is a parameter and the
21
+ * registry tiebreak rank is injected by the caller; this module
22
+ * never reads the system clock nor imports the provider registry.
23
+ * - Pure derivation only: no disk I/O, no transport, no
24
+ * `process.stderr.write`. Imports the quota contract types and the
25
+ * staleness gate from `lib/quota-store.js` and the
26
+ * capability-relevant category names from `lib/quota-mapping.js`.
27
+ */
28
+ import { getProviderQuotaCategoryNames } from "./quota-mapping.js";
29
+ import { isQuotaSnapshotStale } from "./quota-store.js";
30
+ /**
31
+ * Class rank for healthy-first ordering (DESIGN D7): healthy providers
32
+ * first, then exhausted (data says "out of budget"), then probe errors,
33
+ * then unconfigured. Stable: same-class rows keep registry order.
34
+ */
35
+ export const AVAILABILITY_CLASS_RANK = {
36
+ ok: 0,
37
+ exhausted: 1,
38
+ error: 2,
39
+ unconfigured: 3,
40
+ };
41
+ /**
42
+ * Classify one provider row's availability. Evaluated in precedence
43
+ * order (first match wins):
44
+ *
45
+ * 1. `unconfigured` — the row is the not-configured skip
46
+ * (`status: "skipped"`, `reason: "not-configured"`; today's
47
+ * `!isConfigured(env)` row).
48
+ * 2. `exhausted` — a snapshot entry exists AND is fresh
49
+ * (`!isQuotaSnapshotStale`, the standard 10-min gate) AND some
50
+ * **capability-relevant** category sits at
51
+ * `remainingPercent === 0`. Capability-relevant = the names
52
+ * `getProviderQuotaCategoryNames` maps for the provider's
53
+ * quota-capability scoring — Tavily's key-pool `requests`, not its
54
+ * account-level `plan`. Providers with no mapping rows fall back to
55
+ * the honest "any fresh category at 0%" rule. A tools-disabled
56
+ * (`--no-tools`) row takes this same snapshot rule — the gate is
57
+ * absence of snapshot evidence, not the flag.
58
+ * 3. `error` — the probe failed with no fresh-0% evidence.
59
+ * 4. `ok` — everything else.
60
+ *
61
+ * A bare scaffold entry (`observedAt === 0`) is stale for any realistic
62
+ * `now`, so it can never fabricate exhaustion.
63
+ */
64
+ export function classifyAvailability(row, snapshotEntry, now) {
65
+ if (row.status === "skipped" && row.reason === "not-configured") {
66
+ return "unconfigured";
67
+ }
68
+ if (snapshotEntry !== undefined && !isQuotaSnapshotStale(snapshotEntry, now)) {
69
+ const relevant = getProviderQuotaCategoryNames(row.provider);
70
+ const exhausted = relevant === undefined || relevant.size === 0
71
+ ? snapshotEntry.categories.some((category) => category.current?.remainingPercent === 0)
72
+ : snapshotEntry.categories.some((category) => relevant.has(category.name) && category.current?.remainingPercent === 0);
73
+ if (exhausted)
74
+ return "exhausted";
75
+ }
76
+ if (row.status === "error")
77
+ return "error";
78
+ return "ok";
79
+ }
80
+ /**
81
+ * Stable healthy-first comparator (DESIGN D7). Primary key: the
82
+ * caller-extracted availability class rank; secondary: the
83
+ * caller-injected registry-order rank; ties keep input order (the
84
+ * caller's sort must be stable — `Array.prototype.sort` is stable in
85
+ * every ES2019+ engine).
86
+ *
87
+ * The class extraction is a parameter so the same comparator serves
88
+ * other report orderings without editing this module (e.g. the quota
89
+ * dashboard's `ok` < `error` < `none` row status). The registry rank
90
+ * lookup is built by the caller — this module stays registry-free.
91
+ */
92
+ export function compareAvailabilityRows(a, b, classOf, tiebreakOf) {
93
+ const classDelta = classOf(a) - classOf(b);
94
+ if (classDelta !== 0)
95
+ return classDelta;
96
+ if (tiebreakOf !== undefined) {
97
+ const tiebreakDelta = tiebreakOf(a) - tiebreakOf(b);
98
+ if (tiebreakDelta !== 0)
99
+ return tiebreakDelta;
100
+ }
101
+ return 0;
102
+ }
103
+ //# sourceMappingURL=availability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"availability.js","sourceRoot":"","sources":["../../src/lib/availability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAA8B,MAAM,kBAAkB,CAAC;AAkBpF;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAmD;IACrF,EAAE,EAAE,CAAC;IACL,SAAS,EAAE,CAAC;IACZ,KAAK,EAAE,CAAC;IACR,YAAY,EAAE,CAAC;CAChB,CAAC;AAcF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAyB,EACzB,aAAgD,EAChD,GAAW;IAEX,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;QAChE,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,oBAAoB,CAAC,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC;QAC7E,MAAM,QAAQ,GAAG,6BAA6B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,SAAS,GACb,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;YAC3C,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAC3B,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,KAAK,CAAC,CACvD;YACH,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAC3B,CAAC,QAAQ,EAAE,EAAE,CACX,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,gBAAgB,KAAK,CAAC,CAC1E,CAAC;QACR,IAAI,SAAS;YAAE,OAAO,WAAW,CAAC;IACpC,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CACrC,CAAI,EACJ,CAAI,EACJ,OAA2B,EAC3B,UAA+B;IAE/B,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3C,IAAI,UAAU,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC;IACxC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,aAAa,KAAK,CAAC;YAAE,OAAO,aAAa,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -24,8 +24,16 @@
24
24
  * Providers with a real credit/token signal form a **known tier**,
25
25
  * ranked by score; providers without a signal (Brave rate-limit,
26
26
  * Exa none) form an **unknown tier**, ranked after every known
27
- * provider. The unknown tier never wins over a known provider, even
28
- * a low-scored one.
27
+ * provider. The unknown tier never wins over a healthy known
28
+ * provider, even a low-scored one. The one exception is the #97
29
+ * KNOWN_EXHAUSTED demotion: a known provider whose capability-mapped
30
+ * category reads 0% on a snapshot observed within the 24h
31
+ * {@link QUOTA_EXHAUSTION_DEMOTION_HORIZON_MS} is demoted into the
32
+ * unknown tier by the ranker and placed strictly below every
33
+ * natural unknown. Demotion is ranking-only — the scorer still
34
+ * returns `authority:"known", score:0` — and runs only when the
35
+ * caller supplies a clock (`ScoreOptions.now`); without one the
36
+ * checks are skipped and the pre-#97 ordering holds.
29
37
  *
30
38
  * Boundary rules:
31
39
  * - Imports the quota contract types from `capabilities/quota.js`,
@@ -63,10 +71,13 @@ import type { QuotaState } from "./quota-store.js";
63
71
  * ranked.
64
72
  * - `authority: "unknown"` — no authoritative signal is available
65
73
  * (provider has no spend quota; snapshot missing; mapped category
66
- * absent and no fallback matched; percent corrupt). `reason` is a
67
- * stable, machine-readable reason code, NOT a user-facing message.
68
- * Unknown entries are eligible as fallback but never win over a
69
- * known-scored provider (PB-T4 contract).
74
+ * absent and no fallback matched; percent corrupt; or — since #97 —
75
+ * the ranker demoted a fresh-0% known score to KNOWN_EXHAUSTED).
76
+ * `reason` is a stable, machine-readable reason code, NOT a
77
+ * user-facing message. Unknown entries are eligible as fallback and
78
+ * rank after every healthy known-scored provider (PB-T4 contract);
79
+ * a known provider demoted to KNOWN_EXHAUSTED ranks after the
80
+ * natural unknowns.
70
81
  *
71
82
  * `unknown` is NEVER encoded as a numeric score (no neutral `50`, no
72
83
  * `Infinity`, no `0`). This is the explicit fix for the "neutral 50 yet
@@ -121,7 +132,20 @@ export type UnknownScoreReason =
121
132
  * this, but a hand-edited `state.json` could violate it; the scorer
122
133
  * treats corrupt input as unknown rather than synthesizing a score.
123
134
  */
124
- | "PERCENT_CORRUPT";
135
+ | "PERCENT_CORRUPT"
136
+ /**
137
+ * Ranking-only demotion (#97): the provider scored
138
+ * `authority:"known", score:0` — its capability-mapped category is
139
+ * depleted — on a snapshot whose `observedAt` is within
140
+ * {@link QUOTA_EXHAUSTION_DEMOTION_HORIZON_MS} of the caller's
141
+ * clock. The ranker rewrites the entry into the unknown tier and
142
+ * ranks it strictly below every natural unknown, so a
143
+ * still-exhausted provider no longer floats to the top of the
144
+ * selection order. Never produced by {@link scoreCapability}
145
+ * (demotion lives in ranking, not in scoring's meaning) and never
146
+ * when no clock was supplied.
147
+ */
148
+ | "KNOWN_EXHAUSTED";
125
149
  /**
126
150
  * One row of the static mapping table: for `(provider, capability)`,
127
151
  * which raw `QuotaCategory.name` governs the score.
@@ -229,8 +253,11 @@ export declare const CAPABILITY_MAPPINGS: readonly CapabilityMappingEntry[];
229
253
  * - `"always-unknown"` — the provider has no authoritative spend
230
254
  * signal. {@link CapabilityScore} always returns `authority:"unknown"`
231
255
  * with the documented reason, regardless of whether a snapshot
232
- * exists. The provider remains **eligible** for PB-T4 fallback, but
233
- * it never wins over a known-scored provider.
256
+ * exists. The provider remains **eligible** for PB-T4 fallback; it
257
+ * never wins over a healthy known-scored provider (since #97, a
258
+ * known provider whose capability-mapped category reads 0% on a
259
+ * snapshot within the 24h demotion horizon is demoted below the
260
+ * unknown tier itself, so "healthy" is the operative word).
234
261
  *
235
262
  * `reason` is surfaced unchanged through the warning channel when a
236
263
  * score is requested for an always-unknown provider; it documents the
@@ -268,8 +295,12 @@ export interface ProviderAuthorityPolicy {
268
295
  * percentage-bounded plan signal.
269
296
  *
270
297
  * All six providers stay **eligible** for PB-T4 fallback (their
271
- * `authority:"unknown"` score sorts after every known provider), so
272
- * they can still be picked when no known provider remains.
298
+ * `authority:"unknown"` score sorts after every healthy known
299
+ * provider), so they can still be picked when no healthy known
300
+ * provider remains. Since #97 they can even outrank a mapped provider:
301
+ * a known-tier provider whose capability-mapped category reads 0% on
302
+ * a snapshot observed within the 24h demotion horizon is demoted below
303
+ * the natural unknowns in the ranking.
273
304
  */
274
305
  export declare const PROVIDER_AUTHORITY_POLICIES: readonly ProviderAuthorityPolicy[];
275
306
  /**
@@ -282,7 +313,7 @@ export declare const PROVIDER_AUTHORITY_POLICIES: readonly ProviderAuthorityPoli
282
313
  * `message` is a single-line human-readable string suitable for stderr.
283
314
  */
284
315
  export interface QuotaMappingWarning {
285
- readonly code: "PROVIDER_NON_AUTHORITATIVE" | "MAPPING_MISSING" | "SNAPSHOT_MISSING" | "SNAPSHOT_EMPTY" | "CATEGORY_NOT_FOUND" | "PROVIDER_FALLBACK_USED" | "PERCENT_CORRUPT";
316
+ readonly code: "PROVIDER_NON_AUTHORITATIVE" | "MAPPING_MISSING" | "SNAPSHOT_MISSING" | "SNAPSHOT_EMPTY" | "CATEGORY_NOT_FOUND" | "PROVIDER_FALLBACK_USED" | "PERCENT_CORRUPT" | "KNOWN_EXHAUSTED";
286
317
  readonly provider: ProviderId;
287
318
  readonly capability: ProviderCapability;
288
319
  readonly message: string;
@@ -311,6 +342,22 @@ export declare function getCapabilityMapping(provider: ProviderId, capability: P
311
342
  * Unknown capabilities return an empty list.
312
343
  */
313
344
  export declare function resolveMiniMaxAliasesForCapability(capability: ProviderCapability, aliases?: Readonly<Record<"search" | "vision.interpret-image", readonly string[]>>): readonly string[];
345
+ /**
346
+ * The union of capability-relevant quota category names for one
347
+ * provider — exactly the names the scorer can match for that provider:
348
+ * the effective `categoryAliases` of every {@link CAPABILITY_MAPPINGS}
349
+ * row (MiniMax rows expand through the model-alias table) plus each
350
+ * row's `providerFallbackCategory` (Tavily's aggregate `requests`
351
+ * pool). Account-level or informational categories a provider may also
352
+ * emit (e.g. Tavily's `plan`) are deliberately absent: they are not
353
+ * capability-relevant.
354
+ *
355
+ * Returns `undefined` when the provider has no mapping rows at all
356
+ * (observational-only or always-unknown providers) — callers choose
357
+ * their own fallback (doctor's availability classifier treats any
358
+ * fresh category at 0% as exhausted for unmapped providers).
359
+ */
360
+ export declare function getProviderQuotaCategoryNames(provider: ProviderId): ReadonlySet<string> | undefined;
314
361
  /**
315
362
  * Options for {@link scoreCapability} and {@link rankProvidersForCapability}.
316
363
  */
@@ -328,6 +375,19 @@ export interface ScoreOptions {
328
375
  * stderr writer; tests inject a recorder.
329
376
  */
330
377
  readonly onWarning?: (warning: QuotaMappingWarning) => void;
378
+ /**
379
+ * The clock for the #97 KNOWN_EXHAUSTED demotion, as a Unix epoch
380
+ * millisecond. This module stays clockless: when `now` is absent
381
+ * the exhaustiveness check is skipped entirely and ranking behaves
382
+ * exactly as it did before #97 (a 0% known provider outranks the
383
+ * unknown tier). When supplied, a known-tier candidate whose
384
+ * capability-mapped category read 0% on a snapshot observed within
385
+ * {@link QUOTA_EXHAUSTION_DEMOTION_HORIZON_MS} of this clock is
386
+ * demoted below the natural unknowns in
387
+ * {@link rankProvidersForCapability}. Ignored by
388
+ * {@link scoreCapability} — scoring's meaning is unchanged (D6).
389
+ */
390
+ readonly now?: number;
331
391
  }
332
392
  /**
333
393
  * Derive the authority-aware score for a single `(provider, capability)`
@@ -367,9 +427,17 @@ export declare function scoreCapability(state: QuotaState, provider: ProviderId,
367
427
  *
368
428
  * - Known-tier entries appear first, sorted by `score` descending.
369
429
  * Ties break by registry order (`PROVIDER_IDS` by default, or the
370
- * `registryOrder` option).
371
- * - Unknown-tier entries appear after every known entry, in registry
372
- * order. They remain eligible as fallback.
430
+ * `registryOrder` option). A known-tier provider whose
431
+ * capability-mapped category reads 0% on a snapshot within the 24h
432
+ * demotion horizon (#97, `ScoreOptions.now` supplied) does not stay
433
+ * here — it is demoted to the unknown tier with reason
434
+ * `KNOWN_EXHAUSTED`.
435
+ * - Unknown-tier entries appear after every (healthy) known entry, in
436
+ * registry order. They remain eligible as fallback.
437
+ * - Demoted (`KNOWN_EXHAUSTED`) entries rank strictly below every
438
+ * natural unknown: natural unknowns first in registry order, then
439
+ * demoted entries in registry order (D6 positioning). Without a
440
+ * supplied clock no demotion happens and this band is empty.
373
441
  *
374
442
  * Optional fields are present only when meaningful: `score`/`category`
375
443
  * for known entries; `reason` for unknown entries.
@@ -390,15 +458,27 @@ export interface RankedProvider {
390
458
  *
391
459
  * Algorithm:
392
460
  * 1. Score each candidate via {@link scoreCapability}.
393
- * 2. Partition into known and unknown tiers.
394
- * 3. Sort known tier by score desc; break ties by registry order.
395
- * 4. Sort unknown tier by registry order only.
396
- * 5. Concatenate: known first, then unknown.
461
+ * 2. Demote fresh-exhausted known entries (#97): when a clock was
462
+ * supplied, a known entry whose capability-mapped category read
463
+ * 0% on a snapshot observed within
464
+ * {@link QUOTA_EXHAUSTION_DEMOTION_HORIZON_MS} is rewritten to
465
+ * the unknown tier with reason `KNOWN_EXHAUSTED`.
466
+ * 3. Partition into known and unknown tiers.
467
+ * 4. Sort known tier by score desc; break ties by registry order.
468
+ * 5. Sort unknown tier by registry order only.
469
+ * 6. Concatenate: known first, then natural unknowns in registry
470
+ * order, then demoted entries in registry order (D6 positioning —
471
+ * demoted entries rank strictly below every natural unknown).
397
472
  *
398
- * The "5% known beats unknown" contract falls out of steps 3–5: every
399
- * known entry precedes every unknown entry regardless of score. A
400
- * known provider at 5% remaining still ranks above a non-authoritative
401
- * Brave/Exa provider, because Brave/Exa are in the unknown tier.
473
+ * The "5% known beats unknown" contract falls out of steps 3–6: every
474
+ * healthy known entry precedes every unknown entry regardless of
475
+ * score. A known provider at 5% remaining still ranks above a
476
+ * non-authoritative Brave/Exa provider, because Brave/Exa are in the
477
+ * unknown tier. The contract is freshness-scoped since #97: at 0% on a
478
+ * fresh snapshot the provider is demoted below the unknown tier
479
+ * instead — the one case where an unknown-tier provider outranks a
480
+ * known one. Without a supplied clock the demotion never runs and the
481
+ * pre-#97 ordering holds byte-for-byte.
402
482
  *
403
483
  * Duplicate candidates are de-duplicated in first-occurrence order
404
484
  * before scoring (defensive — PB-T4 builds candidate lists, and a
@@ -1 +1 @@
1
- {"version":3,"file":"quota-mapping.d.ts","sourceRoot":"","sources":["../../src/lib/quota-mapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quota-mapping.d.ts","sourceRoot":"","sources":["../../src/lib/quota-mapping.ts"],"names":[],"mappings":"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"}
@@ -24,8 +24,16 @@
24
24
  * Providers with a real credit/token signal form a **known tier**,
25
25
  * ranked by score; providers without a signal (Brave rate-limit,
26
26
  * Exa none) form an **unknown tier**, ranked after every known
27
- * provider. The unknown tier never wins over a known provider, even
28
- * a low-scored one.
27
+ * provider. The unknown tier never wins over a healthy known
28
+ * provider, even a low-scored one. The one exception is the #97
29
+ * KNOWN_EXHAUSTED demotion: a known provider whose capability-mapped
30
+ * category reads 0% on a snapshot observed within the 24h
31
+ * {@link QUOTA_EXHAUSTION_DEMOTION_HORIZON_MS} is demoted into the
32
+ * unknown tier by the ranker and placed strictly below every
33
+ * natural unknown. Demotion is ranking-only — the scorer still
34
+ * returns `authority:"known", score:0` — and runs only when the
35
+ * caller supplies a clock (`ScoreOptions.now`); without one the
36
+ * checks are skipped and the pre-#97 ordering holds.
29
37
  *
30
38
  * Boundary rules:
31
39
  * - Imports the quota contract types from `capabilities/quota.js`,
@@ -51,6 +59,7 @@
51
59
  * selection algorithm. This module never selects.
52
60
  */
53
61
  import { PROVIDER_IDS } from "../providers/types.js";
62
+ import { QUOTA_EXHAUSTION_DEMOTION_HORIZON_MS } from "./quota-store.js";
54
63
  /**
55
64
  * Default MiniMax model-name aliases per capability. MiniMax's
56
65
  * `/remains` normalizer emits one category per live `model_name`
@@ -248,8 +257,12 @@ export const CAPABILITY_MAPPINGS = [
248
257
  * percentage-bounded plan signal.
249
258
  *
250
259
  * All six providers stay **eligible** for PB-T4 fallback (their
251
- * `authority:"unknown"` score sorts after every known provider), so
252
- * they can still be picked when no known provider remains.
260
+ * `authority:"unknown"` score sorts after every healthy known
261
+ * provider), so they can still be picked when no healthy known
262
+ * provider remains. Since #97 they can even outrank a mapped provider:
263
+ * a known-tier provider whose capability-mapped category reads 0% on
264
+ * a snapshot observed within the 24h demotion horizon is demoted below
265
+ * the natural unknowns in the ranking.
253
266
  */
254
267
  export const PROVIDER_AUTHORITY_POLICIES = [
255
268
  { provider: "zai", kind: "mapped", reason: "Z.AI exposes TIME_LIMIT/TOKENS_LIMIT signals." },
@@ -347,6 +360,36 @@ export function resolveMiniMaxAliasesForCapability(capability, aliases = DEFAULT
347
360
  }
348
361
  return [];
349
362
  }
363
+ /**
364
+ * The union of capability-relevant quota category names for one
365
+ * provider — exactly the names the scorer can match for that provider:
366
+ * the effective `categoryAliases` of every {@link CAPABILITY_MAPPINGS}
367
+ * row (MiniMax rows expand through the model-alias table) plus each
368
+ * row's `providerFallbackCategory` (Tavily's aggregate `requests`
369
+ * pool). Account-level or informational categories a provider may also
370
+ * emit (e.g. Tavily's `plan`) are deliberately absent: they are not
371
+ * capability-relevant.
372
+ *
373
+ * Returns `undefined` when the provider has no mapping rows at all
374
+ * (observational-only or always-unknown providers) — callers choose
375
+ * their own fallback (doctor's availability classifier treats any
376
+ * fresh category at 0% as exhausted for unmapped providers).
377
+ */
378
+ export function getProviderQuotaCategoryNames(provider) {
379
+ const rows = CAPABILITY_MAPPINGS.filter((m) => m.provider === provider);
380
+ if (rows.length === 0)
381
+ return undefined;
382
+ const names = new Set();
383
+ for (const row of rows) {
384
+ for (const alias of resolveEffectiveAliases(row, DEFAULT_MINIMAX_MODEL_ALIASES)) {
385
+ names.add(alias);
386
+ }
387
+ if (row.providerFallbackCategory !== undefined) {
388
+ names.add(row.providerFallbackCategory);
389
+ }
390
+ }
391
+ return names;
392
+ }
350
393
  /**
351
394
  * Resolve the effective alias list for a mapping entry. For non-MiniMax
352
395
  * providers, returns the entry's static `categoryAliases`. For MiniMax,
@@ -505,15 +548,27 @@ export function scoreCapability(state, provider, capability, options = {}) {
505
548
  *
506
549
  * Algorithm:
507
550
  * 1. Score each candidate via {@link scoreCapability}.
508
- * 2. Partition into known and unknown tiers.
509
- * 3. Sort known tier by score desc; break ties by registry order.
510
- * 4. Sort unknown tier by registry order only.
511
- * 5. Concatenate: known first, then unknown.
551
+ * 2. Demote fresh-exhausted known entries (#97): when a clock was
552
+ * supplied, a known entry whose capability-mapped category read
553
+ * 0% on a snapshot observed within
554
+ * {@link QUOTA_EXHAUSTION_DEMOTION_HORIZON_MS} is rewritten to
555
+ * the unknown tier with reason `KNOWN_EXHAUSTED`.
556
+ * 3. Partition into known and unknown tiers.
557
+ * 4. Sort known tier by score desc; break ties by registry order.
558
+ * 5. Sort unknown tier by registry order only.
559
+ * 6. Concatenate: known first, then natural unknowns in registry
560
+ * order, then demoted entries in registry order (D6 positioning —
561
+ * demoted entries rank strictly below every natural unknown).
512
562
  *
513
- * The "5% known beats unknown" contract falls out of steps 3–5: every
514
- * known entry precedes every unknown entry regardless of score. A
515
- * known provider at 5% remaining still ranks above a non-authoritative
516
- * Brave/Exa provider, because Brave/Exa are in the unknown tier.
563
+ * The "5% known beats unknown" contract falls out of steps 3–6: every
564
+ * healthy known entry precedes every unknown entry regardless of
565
+ * score. A known provider at 5% remaining still ranks above a
566
+ * non-authoritative Brave/Exa provider, because Brave/Exa are in the
567
+ * unknown tier. The contract is freshness-scoped since #97: at 0% on a
568
+ * fresh snapshot the provider is demoted below the unknown tier
569
+ * instead — the one case where an unknown-tier provider outranks a
570
+ * known one. Without a supplied clock the demotion never runs and the
571
+ * pre-#97 ordering holds byte-for-byte.
517
572
  *
518
573
  * Duplicate candidates are de-duplicated in first-occurrence order
519
574
  * before scoring (defensive — PB-T4 builds candidate lists, and a
@@ -546,8 +601,50 @@ export function rankProvidersForCapability(state, capability, candidates, option
546
601
  orderRank: orderRank.get(provider) ?? unknownRank,
547
602
  inputOrder: idx,
548
603
  }));
549
- const known = staged.filter((s) => s.score.authority === "known");
550
- const unknown = staged.filter((s) => s.score.authority === "unknown");
604
+ // Demotion pass (#97, D6) — between staging and the known/unknown
605
+ // partition. A staged known entry whose capability-mapped category
606
+ // read 0% on a snapshot observed within the 24h horizon is rewritten
607
+ // to the unknown tier with reason KNOWN_EXHAUSTED. The mapping
608
+ // lookup is the same one the scorer uses (getCapabilityMapping;
609
+ // MiniMax alias expansion happens inside the scorer, so a known-0
610
+ // score already proves a mapped category matched), and a provider
611
+ // with no mapping row cannot demote because it can never score
612
+ // known. Demotion is skipped entirely when no clock was supplied —
613
+ // the module stays clockless and no-`now` callers see pre-#97
614
+ // ranking. scoreCapability itself is untouched: a fresh-0% category
615
+ // still scores known/0 (D6).
616
+ const nowMs = options.now;
617
+ const demoted = new Set();
618
+ if (nowMs !== undefined) {
619
+ const onWarning = options.onWarning ?? (() => { });
620
+ for (const s of staged) {
621
+ if (s.score.authority !== "known" || s.score.score !== 0)
622
+ continue;
623
+ if (!getCapabilityMapping(s.provider, capability))
624
+ continue;
625
+ const snapshot = state.quota[s.provider];
626
+ if (!snapshot)
627
+ continue;
628
+ if (nowMs - snapshot.observedAt > QUOTA_EXHAUSTION_DEMOTION_HORIZON_MS)
629
+ continue;
630
+ demoted.add(s.provider);
631
+ onWarning({
632
+ code: "KNOWN_EXHAUSTED",
633
+ provider: s.provider,
634
+ capability,
635
+ message: `${s.provider} is exhausted for ${capability} (mapped category "${s.score.category}" at 0% on a snapshot ${Math.round((nowMs - snapshot.observedAt) / 60000)} min old, within the 24h demotion horizon); demoted below unknown-tier providers.`,
636
+ });
637
+ }
638
+ }
639
+ const effective = staged.map((s) => demoted.has(s.provider)
640
+ ? { ...s, score: { authority: "unknown", reason: "KNOWN_EXHAUSTED" } }
641
+ : s);
642
+ const known = effective.filter((s) => s.score.authority === "known");
643
+ // D6 positioning: natural unknowns and demoted entries are kept in
644
+ // separate bands so a demoted provider can never ride registry order
645
+ // above a natural unknown.
646
+ const naturalUnknown = effective.filter((s) => s.score.authority === "unknown" && !demoted.has(s.provider));
647
+ const demotedUnknown = effective.filter((s) => s.score.authority === "unknown" && demoted.has(s.provider));
551
648
  // Known tier: score desc, registry order, then input order (stable).
552
649
  known.sort((a, b) => {
553
650
  const sa = a.score.score;
@@ -558,12 +655,16 @@ export function rankProvidersForCapability(state, capability, candidates, option
558
655
  return a.orderRank - b.orderRank;
559
656
  return a.inputOrder - b.inputOrder;
560
657
  });
561
- // Unknown tier: registry order, then input order (stable).
562
- unknown.sort((a, b) => {
658
+ // Unknown tiers: registry order, then input order (stable). The
659
+ // natural-unknown band sorts first; the demoted band sorts after it
660
+ // (D6 positioning).
661
+ const sortByRegistry = (a, b) => {
563
662
  if (a.orderRank !== b.orderRank)
564
663
  return a.orderRank - b.orderRank;
565
664
  return a.inputOrder - b.inputOrder;
566
- });
665
+ };
666
+ naturalUnknown.sort(sortByRegistry);
667
+ demotedUnknown.sort(sortByRegistry);
567
668
  const toRanked = (s) => {
568
669
  if (s.score.authority === "known") {
569
670
  return {
@@ -579,6 +680,10 @@ export function rankProvidersForCapability(state, capability, candidates, option
579
680
  reason: s.score.reason,
580
681
  };
581
682
  };
582
- return [...known.map(toRanked), ...unknown.map(toRanked)];
683
+ return [
684
+ ...known.map(toRanked),
685
+ ...naturalUnknown.map(toRanked),
686
+ ...demotedUnknown.map(toRanked),
687
+ ];
583
688
  }
584
689
  //# sourceMappingURL=quota-mapping.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"quota-mapping.js","sourceRoot":"","sources":["../../src/lib/quota-mapping.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quota-mapping.js","sourceRoot":"","sources":["../../src/lib/quota-mapping.ts"],"names":[],"mappings":"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"}
@@ -215,6 +215,26 @@ export declare function writeQuotaSnapshot(providerId: ProviderId, snapshot: Pro
215
215
  * this (the user asked for fresh data).
216
216
  */
217
217
  export declare const DEFAULT_QUOTA_STALE_THRESHOLD_MS: number;
218
+ /**
219
+ * Selection-only freshness horizon for KNOWN_EXHAUSTED demotion
220
+ * (#97): a 0% reading on a provider's capability-mapped category
221
+ * demotes that provider below the unknown tier in
222
+ * {@link "../lib/quota-mapping.js".rankProvidersForCapability} only
223
+ * while `now - observedAt` is within this horizon. Snapshots older
224
+ * than the horizon score exactly as they did before #97.
225
+ *
226
+ * Deliberately NOT the 10-minute {@link DEFAULT_QUOTA_STALE_THRESHOLD_MS}
227
+ * command-cadence gate, on two grounds: (a) the after-command
228
+ * due-refresh is command-coupled and best-effort, so snapshot
229
+ * freshness at selection time is not oracle-grade; (b) gating
230
+ * demotion on the 10-minute threshold would tie exhaustion-trust to
231
+ * refresh cadence — any >10-minute pause between commands would lapse
232
+ * the demotion and float a still-exhausted provider back to the top.
233
+ * The 24h horizon decouples exhaustion-trust from the command-cadence
234
+ * gate; the value is insensitive anywhere in the hours-to-days band,
235
+ * so retuning is a one-constant change.
236
+ */
237
+ export declare const QUOTA_EXHAUSTION_DEMOTION_HORIZON_MS: number;
218
238
  /**
219
239
  * A snapshot is stale when `observedAt` is older than the threshold
220
240
  * relative to `now`. A missing snapshot (undefined) is always stale.
@@ -1 +1 @@
1
- {"version":3,"file":"quota-store.d.ts","sourceRoot":"","sources":["../../src/lib/quota-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quota-store.d.ts","sourceRoot":"","sources":["../../src/lib/quota-store.ts"],"names":[],"mappings":"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"}