agent-nuvira 3.4.0 → 3.5.1

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 (194) hide show
  1. package/README.md +13 -13
  2. package/dist/agent-sdk/src/register.d.ts +23 -7
  3. package/dist/agent-sdk/src/register.d.ts.map +1 -1
  4. package/dist/agent-sdk/src/register.js +159 -5
  5. package/dist/agent-sdk/src/register.js.map +1 -1
  6. package/dist/agent-sdk/src/scaffold.d.ts +1 -1
  7. package/dist/agent-sdk/src/scaffold.js +1 -1
  8. package/dist/cli/agent.d.ts.map +1 -1
  9. package/dist/cli/agent.js +16 -3
  10. package/dist/cli/agent.js.map +1 -1
  11. package/dist/cli/chat.d.ts +202 -6
  12. package/dist/cli/chat.d.ts.map +1 -1
  13. package/dist/cli/chat.js +805 -34
  14. package/dist/cli/chat.js.map +1 -1
  15. package/dist/cli/config.d.ts +10 -0
  16. package/dist/cli/config.d.ts.map +1 -1
  17. package/dist/cli/config.js +39 -0
  18. package/dist/cli/config.js.map +1 -1
  19. package/dist/cli/doctor.d.ts.map +1 -1
  20. package/dist/cli/doctor.js +18 -3
  21. package/dist/cli/doctor.js.map +1 -1
  22. package/dist/cli/duties.d.ts +11 -0
  23. package/dist/cli/duties.d.ts.map +1 -1
  24. package/dist/cli/duties.js +31 -0
  25. package/dist/cli/duties.js.map +1 -1
  26. package/dist/cli/mcp.d.ts +50 -0
  27. package/dist/cli/mcp.d.ts.map +1 -1
  28. package/dist/cli/mcp.js +496 -49
  29. package/dist/cli/mcp.js.map +1 -1
  30. package/dist/cli/memory.d.ts.map +1 -1
  31. package/dist/cli/memory.js +3 -2
  32. package/dist/cli/memory.js.map +1 -1
  33. package/dist/cli/models.d.ts.map +1 -1
  34. package/dist/cli/models.js +55 -0
  35. package/dist/cli/models.js.map +1 -1
  36. package/dist/cli/plugins.d.ts.map +1 -1
  37. package/dist/cli/plugins.js +26 -9
  38. package/dist/cli/plugins.js.map +1 -1
  39. package/dist/cli/sdk.d.ts.map +1 -1
  40. package/dist/cli/sdk.js +10 -3
  41. package/dist/cli/sdk.js.map +1 -1
  42. package/dist/cli/tool-install-prompt.d.ts.map +1 -1
  43. package/dist/cli/tool-install-prompt.js +23 -1
  44. package/dist/cli/tool-install-prompt.js.map +1 -1
  45. package/dist/cli/tools.d.ts +16 -0
  46. package/dist/cli/tools.d.ts.map +1 -1
  47. package/dist/cli/tools.js +101 -1
  48. package/dist/cli/tools.js.map +1 -1
  49. package/dist/config/manager.d.ts +6 -0
  50. package/dist/config/manager.d.ts.map +1 -1
  51. package/dist/config/manager.js +66 -0
  52. package/dist/config/manager.js.map +1 -1
  53. package/dist/config/types.d.ts +18 -0
  54. package/dist/config/types.d.ts.map +1 -1
  55. package/dist/index.d.ts +2 -2
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +4 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/learning/auto-router.d.ts +28 -0
  60. package/dist/learning/auto-router.d.ts.map +1 -1
  61. package/dist/learning/auto-router.js +84 -5
  62. package/dist/learning/auto-router.js.map +1 -1
  63. package/dist/learning/duty-lease.d.ts +163 -0
  64. package/dist/learning/duty-lease.d.ts.map +1 -0
  65. package/dist/learning/duty-lease.js +301 -0
  66. package/dist/learning/duty-lease.js.map +1 -0
  67. package/dist/learning/exhaustion-report.d.ts +12 -0
  68. package/dist/learning/exhaustion-report.d.ts.map +1 -1
  69. package/dist/learning/exhaustion-report.js +3 -1
  70. package/dist/learning/exhaustion-report.js.map +1 -1
  71. package/dist/learning/model-capability.d.ts +33 -0
  72. package/dist/learning/model-capability.d.ts.map +1 -1
  73. package/dist/learning/model-capability.js +51 -0
  74. package/dist/learning/model-capability.js.map +1 -1
  75. package/dist/learning/model-first-router.d.ts +21 -22
  76. package/dist/learning/model-first-router.d.ts.map +1 -1
  77. package/dist/learning/model-first-router.js +61 -54
  78. package/dist/learning/model-first-router.js.map +1 -1
  79. package/dist/learning/model-selection.d.ts +27 -0
  80. package/dist/learning/model-selection.d.ts.map +1 -1
  81. package/dist/learning/model-selection.js +46 -0
  82. package/dist/learning/model-selection.js.map +1 -1
  83. package/dist/learning/model-warmup.d.ts +92 -0
  84. package/dist/learning/model-warmup.d.ts.map +1 -1
  85. package/dist/learning/model-warmup.js +137 -2
  86. package/dist/learning/model-warmup.js.map +1 -1
  87. package/dist/learning/reasoning-trace.d.ts +1 -1
  88. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  89. package/dist/learning/reasoning-trace.js.map +1 -1
  90. package/dist/learning/resilient-call.d.ts +15 -1
  91. package/dist/learning/resilient-call.d.ts.map +1 -1
  92. package/dist/learning/resilient-call.js +38 -22
  93. package/dist/learning/resilient-call.js.map +1 -1
  94. package/dist/learning/retry-patience.d.ts +139 -0
  95. package/dist/learning/retry-patience.d.ts.map +1 -0
  96. package/dist/learning/retry-patience.js +169 -0
  97. package/dist/learning/retry-patience.js.map +1 -0
  98. package/dist/learning/working-state.d.ts +7 -0
  99. package/dist/learning/working-state.d.ts.map +1 -1
  100. package/dist/learning/working-state.js +23 -1
  101. package/dist/learning/working-state.js.map +1 -1
  102. package/dist/mcp/catalog.d.ts +206 -26
  103. package/dist/mcp/catalog.d.ts.map +1 -1
  104. package/dist/mcp/catalog.js +664 -52
  105. package/dist/mcp/catalog.js.map +1 -1
  106. package/dist/mcp/client.d.ts +6 -0
  107. package/dist/mcp/client.d.ts.map +1 -1
  108. package/dist/mcp/client.js +35 -5
  109. package/dist/mcp/client.js.map +1 -1
  110. package/dist/mcp/custom-server.d.ts +120 -0
  111. package/dist/mcp/custom-server.d.ts.map +1 -0
  112. package/dist/mcp/custom-server.js +330 -0
  113. package/dist/mcp/custom-server.js.map +1 -0
  114. package/dist/mcp/manager.d.ts +9 -1
  115. package/dist/mcp/manager.d.ts.map +1 -1
  116. package/dist/mcp/manager.js +15 -2
  117. package/dist/mcp/manager.js.map +1 -1
  118. package/dist/mcp/mcp-oauth.d.ts +28 -0
  119. package/dist/mcp/mcp-oauth.d.ts.map +1 -1
  120. package/dist/mcp/mcp-oauth.js +63 -8
  121. package/dist/mcp/mcp-oauth.js.map +1 -1
  122. package/dist/mcp/oauth-authorize.d.ts +51 -0
  123. package/dist/mcp/oauth-authorize.d.ts.map +1 -0
  124. package/dist/mcp/oauth-authorize.js +133 -0
  125. package/dist/mcp/oauth-authorize.js.map +1 -0
  126. package/dist/mcp/oauth-connect.d.ts +53 -0
  127. package/dist/mcp/oauth-connect.d.ts.map +1 -0
  128. package/dist/mcp/oauth-connect.js +103 -0
  129. package/dist/mcp/oauth-connect.js.map +1 -0
  130. package/dist/mcp/pin-verifier.d.ts +44 -0
  131. package/dist/mcp/pin-verifier.d.ts.map +1 -0
  132. package/dist/mcp/pin-verifier.js +102 -0
  133. package/dist/mcp/pin-verifier.js.map +1 -0
  134. package/dist/mcp/prereqs.d.ts +145 -0
  135. package/dist/mcp/prereqs.d.ts.map +1 -0
  136. package/dist/mcp/prereqs.js +245 -0
  137. package/dist/mcp/prereqs.js.map +1 -0
  138. package/dist/mcp/runtime.d.ts +59 -0
  139. package/dist/mcp/runtime.d.ts.map +1 -0
  140. package/dist/mcp/runtime.js +77 -0
  141. package/dist/mcp/runtime.js.map +1 -0
  142. package/dist/mcp/server.d.ts +21 -0
  143. package/dist/mcp/server.d.ts.map +1 -1
  144. package/dist/mcp/server.js +29 -1
  145. package/dist/mcp/server.js.map +1 -1
  146. package/dist/mcp/settings.d.ts +164 -0
  147. package/dist/mcp/settings.d.ts.map +1 -0
  148. package/dist/mcp/settings.js +358 -0
  149. package/dist/mcp/settings.js.map +1 -0
  150. package/dist/mcp/types.d.ts +62 -0
  151. package/dist/mcp/types.d.ts.map +1 -1
  152. package/dist/mcp/types.js.map +1 -1
  153. package/dist/memory/vector-store.d.ts +12 -0
  154. package/dist/memory/vector-store.d.ts.map +1 -1
  155. package/dist/memory/vector-store.js +23 -0
  156. package/dist/memory/vector-store.js.map +1 -1
  157. package/dist/plugins/agent-plugin.d.ts +35 -0
  158. package/dist/plugins/agent-plugin.d.ts.map +1 -1
  159. package/dist/plugins/agent-plugin.js +142 -24
  160. package/dist/plugins/agent-plugin.js.map +1 -1
  161. package/dist/sandbox/manager.d.ts +12 -0
  162. package/dist/sandbox/manager.d.ts.map +1 -1
  163. package/dist/sandbox/manager.js +43 -2
  164. package/dist/sandbox/manager.js.map +1 -1
  165. package/dist/tools/modality/browser.d.ts +39 -3
  166. package/dist/tools/modality/browser.d.ts.map +1 -1
  167. package/dist/tools/modality/browser.js +113 -16
  168. package/dist/tools/modality/browser.js.map +1 -1
  169. package/dist/tools/optional-deps.d.ts +48 -0
  170. package/dist/tools/optional-deps.d.ts.map +1 -0
  171. package/dist/tools/optional-deps.js +42 -0
  172. package/dist/tools/optional-deps.js.map +1 -0
  173. package/dist/tools/registry.d.ts.map +1 -1
  174. package/dist/tools/registry.js +68 -11
  175. package/dist/tools/registry.js.map +1 -1
  176. package/dist/tools/remediation-ladder.d.ts.map +1 -1
  177. package/dist/tools/remediation-ladder.js +9 -1
  178. package/dist/tools/remediation-ladder.js.map +1 -1
  179. package/dist/tools/tool-loop.d.ts +41 -3
  180. package/dist/tools/tool-loop.d.ts.map +1 -1
  181. package/dist/tools/tool-loop.js +317 -9
  182. package/dist/tools/tool-loop.js.map +1 -1
  183. package/dist/web-dashboard/chat-retry.d.ts +11 -1
  184. package/dist/web-dashboard/chat-retry.d.ts.map +1 -1
  185. package/dist/web-dashboard/chat-retry.js +18 -4
  186. package/dist/web-dashboard/chat-retry.js.map +1 -1
  187. package/dist/web-dashboard/server.d.ts.map +1 -1
  188. package/dist/web-dashboard/server.js +349 -2
  189. package/dist/web-dashboard/server.js.map +1 -1
  190. package/package.json +6 -2
  191. package/src/web-dashboard/public/assets/{index-DeD3L0kG.js → index-Bik91KJh.js} +115 -89
  192. package/src/web-dashboard/public/assets/index-Bik91KJh.js.map +1 -0
  193. package/src/web-dashboard/public/index.html +1 -1
  194. package/src/web-dashboard/public/assets/index-DeD3L0kG.js.map +0 -1
@@ -19,7 +19,15 @@ import { getModelRegistry } from './model-registry.js';
19
19
  import { classifyPairEntitlement, orderByEntitlement } from './pair-entitlement.js';
20
20
  import { getCatalogProvider, CATALOG_PROVIDER_IDS } from '../inference/provider-catalog.js';
21
21
  import { isSmallTalk } from './hybrid-router.js';
22
- import { hasCredentials, KEYLESS_PROVIDERS } from './model-selection.js';
22
+ import { hasCredentials, isPairPlausible } from './model-selection.js';
23
+ export { isPairPlausible };
24
+ // ONE capability taxonomy. The tier below used to be computed from this
25
+ // module's OWN `capabilityFit` score while every other decision (pinned
26
+ // handoffs, the local last resort, the router's band checks) used
27
+ // `model-capability` bands — two taxonomies, so the same pair could be
28
+ // `medium` on one path and `low` on another, which is how a 0.5B and a 120B
29
+ // ended up as "same tier".
30
+ import { capabilityClassOf, estimateModelCapability } from './model-capability.js';
23
31
  import { isNonChatModel } from '../inference/model-catalog.js';
24
32
  // ─── Task Analysis ──────────────────────────────────────────────────────────
25
33
  /**
@@ -234,43 +242,12 @@ function scoreModelOnProvider(model, provider, entry, catalog, requirements, pro
234
242
  };
235
243
  }
236
244
  /**
237
- * P6 (fix_model_routing) — POOL HYGIENE: could this provider really serve this
238
- * model id?
239
- *
240
- * The registry can hold pairs that are syntactically fine and physically
241
- * impossible, and a `verified` status on one of them is worse than useless — it
242
- * spends a fallback slot, a round trip, and (as an "eligible model") credibility
243
- * on a call that cannot succeed. Observed on disk: `gemini/qwen2.5:0.5b` and
244
- * `groq/wire-stub-model` marked verified.
245
- *
246
- * Deliberately CONSERVATIVE — only two rules, both of which are decidable from
247
- * the id alone:
248
- *
249
- * 1. An Ollama-style TAGGED id (`name:tag`) is a LOCAL runner's naming
250
- * scheme. A hosted provider does not serve `qwen2.5:0.5b`; the `:tag` form
251
- * belongs to the local-ops providers (see KEYLESS_PROVIDERS).
252
- * 2. Stub/fixture ids (`wire-stub-model`, `test-…`, `…-stub`) come from test
253
- * harnesses and must never be routed to.
254
- *
255
- * Anything needing a catalog to adjudicate (a vendor that does not serve a
256
- * family) is NOT guessed at here: a wrong exclusion silently removes a working
257
- * model, which is the more expensive mistake.
245
+ * `isPairPlausible` lives in `model-selection.ts` (re-exported above): that
246
+ * module is where a ranked model id actually reaches an adapter request
247
+ * (`resolveAdapterDefault`), so the filter has to sit on THAT ranking too — not
248
+ * only on this router's candidate list. See its doc for the measured case
249
+ * (trace-1791732980335-omkv62).
258
250
  */
259
- export function isPairPlausible(provider, model) {
260
- const id = (model ?? '').trim().toLowerCase();
261
- if (!id)
262
- return false;
263
- // 2. Fixture/stub ids.
264
- if (/^(wire-|test-|fixture-|stub-)/.test(id) || /-stub(-|$)|\.stub\./.test(id))
265
- return false;
266
- // 1. Ollama-style tags only on a local runner.
267
- if (id.includes(':')) {
268
- const localRunner = KEYLESS_PROVIDERS.includes(provider) || provider === 'ollama';
269
- if (!localRunner)
270
- return false;
271
- }
272
- return true;
273
- }
274
251
  /**
275
252
  * Build the full model candidate list across all providers.
276
253
  * This is the core of model-first routing: instead of scoring providers,
@@ -464,16 +441,41 @@ export function buildFailoverChain(bestCandidate, allCandidates) {
464
441
  }
465
442
  /**
466
443
  * Classify a model into a capability tier.
444
+ *
445
+ * TWO AXES, and they are different questions:
446
+ * 1. WHERE the model runs — a keyless local runner (`local`, `lmstudio`,
447
+ * `vllm`) is the LAST resort whatever its size, so it keeps its own tier.
448
+ * 2. HOW MUCH it can do — `model-capability` bands, name-derived and
449
+ * deterministic, the SAME bands the pinned-handoff repair, the local
450
+ * last-resort pick and the router's capability floors already use.
451
+ *
452
+ * The band used to come from this module's own `capabilityFit` dimension, a
453
+ * task-relative score: a fast small model fits a trivial task well, so it read
454
+ * `high` HERE and `low` to everything else — two taxonomies for one fact, and
455
+ * the reason a 0.5B and a 120B could land in the same tier. `capabilityFit`
456
+ * still decides the candidate ORDER (it is the task fit); it no longer decides
457
+ * the BAND.
467
458
  */
468
459
  export function classifyTier(candidate) {
469
460
  if (candidate.provider === 'local' || candidate.provider === 'lmstudio' || candidate.provider === 'vllm') {
470
461
  return 'local';
471
462
  }
472
- if (candidate.dimensions.capabilityFit >= 0.8)
473
- return 'high';
474
- if (candidate.dimensions.capabilityFit >= 0.5)
475
- return 'medium';
476
- return 'low';
463
+ return capabilityClassOf(candidate.model);
464
+ }
465
+ /**
466
+ * Order the candidates of ONE tier strongest-first, stable within equal
467
+ * capability (so the scorer's task fit still decides among equals).
468
+ *
469
+ * WHY, and why here: the tiers were ordered by the scorer, which is a HEALTH-
470
+ * AND-COST ranking, and a small model wins that ranking precisely because it is
471
+ * fast and cheap. Inside a tier that is the wrong question — the tier already
472
+ * said "these are equally suitable", so the strongest must go first. MEASURED
473
+ * (trace-1791879575576-x731yp): the LOCAL tier is where it bit, because a local
474
+ * tier holds every local model from a 0.5B to a 120B and nothing ranked them by
475
+ * size, so the agentic ask was answered by the weakest one on the machine.
476
+ */
477
+ function strongestFirstInTier(candidates) {
478
+ return [...candidates].sort((a, b) => estimateModelCapability(b.model) - estimateModelCapability(a.model));
477
479
  }
478
480
  /**
479
481
  * Check if a model candidate has available quota (not parked, not blocked).
@@ -530,11 +532,12 @@ export function buildTieredFailoverChain(bestCandidate, allCandidates) {
530
532
  });
531
533
  sameModelDifferentProvider.forEach(c => tried.add(`${c.provider}:${c.model}`));
532
534
  }
533
- // Phase 2: Same capability tier, different models (pre-check quota)
534
- const sameTier = allCandidates.filter(c => classifyTier(c) === bestTier
535
+ // Phase 2: Same capability tier, different models (pre-check quota).
536
+ // STRONGEST-FIRST within the tier — see `strongestFirstInTier`.
537
+ const sameTier = strongestFirstInTier(allCandidates.filter(c => classifyTier(c) === bestTier
535
538
  && c.model !== bestCandidate.model
536
539
  && !tried.has(`${c.provider}:${c.model}`)
537
- && isCandidateAvailable(c));
540
+ && isCandidateAvailable(c)));
538
541
  if (sameTier.length > 0) {
539
542
  tiers.push({
540
543
  phase: 'same-tier',
@@ -548,9 +551,9 @@ export function buildTieredFailoverChain(bestCandidate, allCandidates) {
548
551
  : bestTier === 'medium' ? ['high']
549
552
  : [];
550
553
  for (const tier of higherTiers) {
551
- const escalation = allCandidates.filter(c => classifyTier(c) === tier
554
+ const escalation = strongestFirstInTier(allCandidates.filter(c => classifyTier(c) === tier
552
555
  && !tried.has(`${c.provider}:${c.model}`)
553
- && isCandidateAvailable(c));
556
+ && isCandidateAvailable(c)));
554
557
  if (escalation.length > 0) {
555
558
  tiers.push({
556
559
  phase: 'escalate',
@@ -565,9 +568,9 @@ export function buildTieredFailoverChain(bestCandidate, allCandidates) {
565
568
  : bestTier === 'medium' ? ['low']
566
569
  : [];
567
570
  for (const tier of lowerTiers) {
568
- const deescalation = allCandidates.filter(c => classifyTier(c) === tier
571
+ const deescalation = strongestFirstInTier(allCandidates.filter(c => classifyTier(c) === tier
569
572
  && !tried.has(`${c.provider}:${c.model}`)
570
- && isCandidateAvailable(c));
573
+ && isCandidateAvailable(c)));
571
574
  if (deescalation.length > 0) {
572
575
  tiers.push({
573
576
  phase: 'de-escalate',
@@ -577,9 +580,13 @@ export function buildTieredFailoverChain(bestCandidate, allCandidates) {
577
580
  deescalation.forEach(c => tried.add(`${c.provider}:${c.model}`));
578
581
  }
579
582
  }
580
- // Phase 5: Local models (always available, last resort before neural)
581
- const localModels = allCandidates.filter(c => classifyTier(c) === 'local'
582
- && !tried.has(`${c.provider}:${c.model}`));
583
+ // Phase 5: Local models (always available, last resort before neural).
584
+ // STRONGEST-FIRST is the whole point of this phase: the local tier is a
585
+ // single tier by necessity (keyless, no quota, no account), so without this
586
+ // the weakest model on the machine — the one that wins a health ranking for
587
+ // being fast — is what an agentic ask lands on.
588
+ const localModels = strongestFirstInTier(allCandidates.filter(c => classifyTier(c) === 'local'
589
+ && !tried.has(`${c.provider}:${c.model}`)));
583
590
  if (localModels.length > 0) {
584
591
  tiers.push({
585
592
  phase: 'local',
@@ -589,8 +596,8 @@ export function buildTieredFailoverChain(bestCandidate, allCandidates) {
589
596
  localModels.forEach(c => tried.add(`${c.provider}:${c.model}`));
590
597
  }
591
598
  // Phase 6: Any remaining available models (last resort)
592
- const remaining = allCandidates.filter(c => !tried.has(`${c.provider}:${c.model}`)
593
- && isCandidateAvailable(c));
599
+ const remaining = strongestFirstInTier(allCandidates.filter(c => !tried.has(`${c.provider}:${c.model}`)
600
+ && isCandidateAvailable(c)));
594
601
  if (remaining.length > 0) {
595
602
  tiers.push({
596
603
  phase: 'remaining',
@@ -1 +1 @@
1
- {"version":3,"file":"model-first-router.js","sourceRoot":"","sources":["../../src/learning/model-first-router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-first-router.js","sourceRoot":"","sources":["../../src/learning/model-first-router.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,33 @@ export declare function hasCredentials(configManager: ConfigManager, provider: s
52
52
  * failed outright.
53
53
  */
54
54
  export declare const MODEL_HEALTH_CEILING = 0.6;
55
+ /**
56
+ * POOL HYGIENE: could this provider really serve this model id?
57
+ *
58
+ * MOVED HERE (from `model-first-router.ts`) because this module is the one that
59
+ * hands out model ids to the ADAPTERS — `resolveAdapterDefault` and
60
+ * `resolveWorkingModel`'s fast path both read `preferredModelsFor`, so a bogus
61
+ * row that survives this filter is not merely a bad ranking, it becomes the
62
+ * literal `model` of a real request.
63
+ *
64
+ * MEASURED (trace-1791732980335-omkv62, 2026-10-11). The provider-WIRE harness
65
+ * (`src/parity/wire-fixtures.ts`) left `local|wire-stub-model` in the real
66
+ * registry as `status: verified`, `source: telemetry`, errorRate 0. Telemetry
67
+ * outranks spot-check and errorRate 0 beats every real Ollama model, so it
68
+ * sorted FIRST for `local` — and when a pinned `deepseek` turn failed over, the
69
+ * walk resolved `local`'s model to `wire-stub-model` and sent it to a provider
70
+ * that cannot serve it. The turn burned its whole failover walk and reported a
71
+ * model shortage while healthy models sat in the pool.
72
+ *
73
+ * Deliberately CONSERVATIVE — only two rules, both decidable from the id alone:
74
+ * 1. Fixture/stub ids (`wire-…`, `test-…`, `…-stub`) come from test harnesses
75
+ * and must never be routed to.
76
+ * 2. An Ollama-style TAGGED id (`name:tag`) is a LOCAL runner's naming scheme;
77
+ * a hosted provider does not serve `qwen2.5:0.5b`.
78
+ * Anything needing a catalog to adjudicate is NOT guessed at: a wrong exclusion
79
+ * silently removes a working model, which is the more expensive mistake.
80
+ */
81
+ export declare function isPairPlausible(provider: string, model: string): boolean;
55
82
  /**
56
83
  * Verified working models for a provider, ranked by learned health:
57
84
  * strongest verification source first, then lowest error rate, then lowest
@@ -1 +1 @@
1
- {"version":3,"file":"model-selection.d.ts","sourceRoot":"","sources":["../../src/learning/model-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAU1D,qFAAqF;AACrF,eAAO,MAAM,iBAAiB,qEAAsE,CAAC;AAErG;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,CAAC;AAMnE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,EAA6B,CAAC;AAEpE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOtF;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAyDxC;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAmD7D;AAcD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,aAAa,GAAG,cAAc,EAAE,CAuErF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,CAE3E;AAED,gFAAgF;AAChF,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,iBAAiB,EAC1B,aAAa,CAAC,EAAE,aAAa,GAC5B;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CA0BjD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGxG;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAS1F;AAED,qFAAqF;AACrF,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,CAa5E"}
1
+ {"version":3,"file":"model-selection.d.ts","sourceRoot":"","sources":["../../src/learning/model-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAU1D,qFAAqF;AACrF,eAAO,MAAM,iBAAiB,qEAAsE,CAAC;AAErG;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,CAAC;AAMnE;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,EAA6B,CAAC;AAEpE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOtF;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAyDxC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAWxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAwD7D;AAcD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,aAAa,GAAG,cAAc,EAAE,CAuErF;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,CAE3E;AAED,gFAAgF;AAChF,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,iBAAiB,EAC1B,aAAa,CAAC,EAAE,aAAa,GAC5B;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CA0BjD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGxG;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAS1F;AAED,qFAAqF;AACrF,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,CAa5E"}
@@ -121,6 +121,47 @@ function definitivelyMissing(entry) {
121
121
  text.includes('not found') ||
122
122
  text.includes('no such model'));
123
123
  }
124
+ /**
125
+ * POOL HYGIENE: could this provider really serve this model id?
126
+ *
127
+ * MOVED HERE (from `model-first-router.ts`) because this module is the one that
128
+ * hands out model ids to the ADAPTERS — `resolveAdapterDefault` and
129
+ * `resolveWorkingModel`'s fast path both read `preferredModelsFor`, so a bogus
130
+ * row that survives this filter is not merely a bad ranking, it becomes the
131
+ * literal `model` of a real request.
132
+ *
133
+ * MEASURED (trace-1791732980335-omkv62, 2026-10-11). The provider-WIRE harness
134
+ * (`src/parity/wire-fixtures.ts`) left `local|wire-stub-model` in the real
135
+ * registry as `status: verified`, `source: telemetry`, errorRate 0. Telemetry
136
+ * outranks spot-check and errorRate 0 beats every real Ollama model, so it
137
+ * sorted FIRST for `local` — and when a pinned `deepseek` turn failed over, the
138
+ * walk resolved `local`'s model to `wire-stub-model` and sent it to a provider
139
+ * that cannot serve it. The turn burned its whole failover walk and reported a
140
+ * model shortage while healthy models sat in the pool.
141
+ *
142
+ * Deliberately CONSERVATIVE — only two rules, both decidable from the id alone:
143
+ * 1. Fixture/stub ids (`wire-…`, `test-…`, `…-stub`) come from test harnesses
144
+ * and must never be routed to.
145
+ * 2. An Ollama-style TAGGED id (`name:tag`) is a LOCAL runner's naming scheme;
146
+ * a hosted provider does not serve `qwen2.5:0.5b`.
147
+ * Anything needing a catalog to adjudicate is NOT guessed at: a wrong exclusion
148
+ * silently removes a working model, which is the more expensive mistake.
149
+ */
150
+ export function isPairPlausible(provider, model) {
151
+ const id = (model ?? '').trim().toLowerCase();
152
+ if (!id)
153
+ return false;
154
+ // 1. Fixture/stub ids.
155
+ if (/^(wire-|test-|fixture-|stub-)/.test(id) || /-stub(-|$)|\.stub\./.test(id))
156
+ return false;
157
+ // 2. Ollama-style tags only on a local runner.
158
+ if (id.includes(':')) {
159
+ const localRunner = KEYLESS_PROVIDERS.includes(provider) || provider === 'ollama';
160
+ if (!localRunner)
161
+ return false;
162
+ }
163
+ return true;
164
+ }
124
165
  /**
125
166
  * Verified working models for a provider, ranked by learned health:
126
167
  * strongest verification source first, then lowest error rate, then lowest
@@ -153,6 +194,11 @@ export function preferredModelsFor(provider) {
153
194
  // This is the read-side half of the cross-provider poisoning measured live
154
195
  // on 2026-10-06 — see `definitivelyMissing`.
155
196
  .filter((m) => !definitivelyMissing(registry.getEntry(provider, m)))
197
+ // Never rank a pair that CANNOT exist — a test fixture id, or an
198
+ // Ollama-tagged id on a hosted provider. A `verified` stub row would
199
+ // otherwise win the health ranking and become the literal model of the
200
+ // next real request (see `isPairPlausible`).
201
+ .filter((m) => isPairPlausible(provider, m))
156
202
  .sort((a, b) => {
157
203
  const ea = registry.getEntry(provider, a);
158
204
  const eb = registry.getEntry(provider, b);
@@ -1 +1 @@
1
- {"version":3,"file":"model-selection.js","sourceRoot":"","sources":["../../src/learning/model-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,gBAAgB,EAAqD,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,qFAAqF;AACrF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAU,CAAC;AAErG;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAA2B,EAAE,CAAC;AACnE,KAAK,MAAM,EAAE,IAAI,oBAAoB,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS;QAAE,wBAAwB,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAa,CAAC,GAAG,mBAAmB,CAAC,CAAC;AAEpE;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,aAA4B,EAAE,QAAgB;IAC3E,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAC;IACpF,IAAI,CAAC;QACH,OAAO,aAAa,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,MAAM,iBAAiB,GAAwC;IAC7D,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;IACf,KAAK,EAAE,CAAC;CACT,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,SAAS,mBAAmB,CAAC,KAAqC;IAChE,MAAM,GAAG,GAAG,KAAK,EAAE,SAAS,CAAC;IAC7B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC1B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,QAAQ;SACpB,iBAAiB,CAAC,QAAQ,CAAC;QAC5B,yEAAyE;QACzE,iEAAiE;QACjE,0EAA0E;QAC1E,2EAA2E;QAC3E,uEAAuE;QACvE,8CAA8C;SAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;QACtC,sEAAsE;QACtE,yEAAyE;QACzE,yEAAyE;QACzE,+DAA+D;SAC9D,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAClC,yEAAyE;QACzE,4EAA4E;QAC5E,yEAAyE;QACzE,2EAA2E;QAC3E,6CAA6C;SAC5C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;SACnE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,EAAE,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1C,wEAAwE;QACxE,uEAAuE;QACvE,uEAAuE;QACvE,MAAM,EAAE,GAAG,iBAAiB,CAAC,EAAE,EAAE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,EAAE,GAAG,iBAAiB,CAAC,EAAE,EAAE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,IAAI,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,IAAI,CAAC,CAAC;QAC9B,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,IAAI,MAAM,CAAC,gBAAgB,CAAC;QACpD,MAAM,EAAE,GAAG,EAAE,EAAE,SAAS,IAAI,MAAM,CAAC,gBAAgB,CAAC;QACpD,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE,EAAE,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,IAAI,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEL,wEAAwE;IACxE,uEAAuE;IACvE,sEAAsE;IACtE,oEAAoE;IACpE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,SAAS,IAAI,CAAC,CAAC;QAChE,CAAC,IAAI,IAAI,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED,uFAAuF;AACvF,SAAS,cAAc,CAAC,QAAgB;IACtC,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,IAAI,IAAI,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC;QACxE,IAAI,KAAK,GAAG,IAAI;YAAE,IAAI,GAAG,KAAK,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,aAA4B;IACjE,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,IAAI,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAEtD,yEAAyE;IACzE,0EAA0E;IAC1E,uEAAuE;IACvE,yEAAyE;IACzE,sEAAsE;IACtE,wCAAwC;IACxC,IAAI,aAAa,GAAa,EAAE,CAAC;IACjC,IAAI,cAAc,GAAsD,EAAE,CAAC;IAC3E,IAAI,CAAC;QACH,cAAc,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,SAAS,IAAI,EAAE,CAAC;QAC3D,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,oBAAoB,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACxF,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACjC,4EAA4E;QAC5E,6EAA6E;QAC7E,2DAA2D;QAC3D,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,KAAK;YAAE,OAAO,KAAK,CAAC;QACvD,6EAA6E;QAC7E,wEAAwE;QACxE,wEAAwE;QACxE,mEAAmE;QACnE,wEAAwE;QACxE,IAAI,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;gBAAE,OAAO,KAAK,CAAC;QAC3C,CAAC;QACD,OAAO,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACrE,MAAM,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QACzD,IAAI,UAAU,KAAK,CAAC;YAAE,OAAO,UAAU,CAAC;QACxC,wEAAwE;QACxE,0EAA0E;QAC1E,0EAA0E;QAC1E,sEAAsE;QACtE,MAAM,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,UAAU;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;SAC7B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACb,gEAAgE;QAChE,MAAM,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,OAAO;YAAE,OAAO,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,OAAO;YAAE,OAAO,CAAC,CAAC;QAC5B,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACxC,QAAQ,EAAE,CAAC;QACX,cAAc,EAAE,kBAAkB,CAAC,CAAC,CAAC;QACrC,UAAU,EAAE,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC;KAC7C,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,aAA4B;IACjE,OAAO,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,OAAO,CAAC;AACvE,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA0B,EAC1B,aAA6B;IAE7B,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;IACpC,MAAM,MAAM,GAAqB,aAAa;QAC5C,CAAC,CAAC,sBAAsB,CAAC,aAAa,CAAC;QACvC,CAAC,CAAC,QAAQ;aACL,kBAAkB,EAAE;aACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE1C,0EAA0E;IAC1E,uEAAuE;IACvE,6DAA6D;IAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,aAAa;QAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC9F,CAAC,CAAC,KAAK,CAAC;IACV,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhD,IAAI,KAAK,GAAG,MAAM,CAAC;IACnB,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAChC,kEAAkE;QAClE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;QACzF,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,GAAG,GAAG,CAAC;IAClC,CAAC;IACD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC;AAC/E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,YAAoB,EAAE,eAAwB;IAClF,IAAI,eAAe,IAAI,eAAe,KAAK,SAAS;QAAE,OAAO,eAAe,CAAC;IAC7E,OAAO,kBAAkB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,YAAoB,EAAE,eAAwB;IAChF,MAAM,KAAK,GAAG,qBAAqB,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,0BAA0B,YAAY,kEAAkE;YACtG,oBAAoB,YAAY,2BAA2B,CAC9D,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,uBAAuB,CAAC,aAA4B;IAClE,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC,CAC1E,CAAC;IACF,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CACR,kIAAkI,CACnI,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,kHAAkH,CAAC,CAAC;IAC/H,KAAK,CAAC,IAAI,CAAC,8FAA8F,CAAC,CAAC;IAC3G,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"model-selection.js","sourceRoot":"","sources":["../../src/learning/model-selection.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@
25
25
  * stopWarmupDaemon();
26
26
  */
27
27
  import { getModelRegistry } from './model-registry.js';
28
+ import { type DutyLeaseInfo } from './duty-lease.js';
28
29
  import type { ConfigManager } from '../config/manager.js';
29
30
  /**
30
31
  * Every bound this module spends against a free tier, in one place and
@@ -52,6 +53,33 @@ export interface WarmupConfig {
52
53
  hotWindowMs: number;
53
54
  /** Models used within this window are "warm" (ms). */
54
55
  warmWindowMs: number;
56
+ /**
57
+ * Max VERIFIED, in-pool models re-spot-checked per cycle to keep the pool
58
+ * FRESH. Separate from `hotPerCycle` because the two halves spend on
59
+ * different things: `hotPerCycle` keeps in-use models warm, this one stops
60
+ * the routable pool from ageing out.
61
+ */
62
+ poolRefreshPerCycle: number;
63
+ /**
64
+ * How long a VERIFIED model may go without re-verification (ms).
65
+ *
66
+ * WHY HOURS, NOT THE 7-DAY RULE. The registry retires a model nothing
67
+ * re-verifies, and NOTHING was re-verifying a verified one: the exploration
68
+ * half selects `status === 'unverified'` rows only, so a model that had been
69
+ * verified once could only age — the measured pool showed verified entries at
70
+ * 142.8h and shrinking, while routing kept serving from a pool that was
71
+ * quietly expiring. Freshness IS a routing input (health ranking reads
72
+ * `lastVerifiedAt`, latency and errorRate), so a stale pool is a routing
73
+ * signal that stops describing reality.
74
+ *
75
+ * WHY THIS STAYS BOUNDED. Only VERIFIED rows are eligible (the pool the
76
+ * router would actually serve — never the hundreds of catalog entries), only
77
+ * `poolRefreshPerCycle` of them per cycle, parked rows are skipped (a park is
78
+ * a rest, not staleness), and a 1-token spot-check per model every 12h is a
79
+ * few hundred tokens a day for a pool of ~12 — not a catalog-wide sweep,
80
+ * which on free tiers is where RPM/TPM limits would turn warmup into 429s.
81
+ */
82
+ poolStalenessMs: number;
55
83
  }
56
84
  /**
57
85
  * Resolve the sweep's bounds (env overrides → defaults).
@@ -86,6 +114,8 @@ export interface WarmupCycleResult {
86
114
  warmed: number;
87
115
  /** NEVER-VERIFIED models spot-checked to grow the routing pool. */
88
116
  explored: number;
117
+ /** STALE, verified in-pool models re-spot-checked to keep the pool fresh. */
118
+ poolRefreshed: number;
89
119
  /** Spot-checks of either kind that came back `verified`. */
90
120
  verified: number;
91
121
  /** Hot candidates the per-cycle cap left for the next cycle. */
@@ -96,6 +126,18 @@ export interface WarmupCycleResult {
96
126
  * did noticeably more network work than its neighbours.
97
127
  */
98
128
  catalogRefreshed: boolean;
129
+ /**
130
+ * False when a cycle was REFUSED because another process holds the warmup
131
+ * duty lease (see `duty-lease.ts`) — every other counter is zero then.
132
+ *
133
+ * Reported rather than silent because it is the one outcome that looks
134
+ * identical to "there was nothing to do", and the two call for opposite
135
+ * responses: one is good news, the other means this process will never do the
136
+ * sweep on its own.
137
+ */
138
+ ran: boolean;
139
+ /** Who held the lease, when `ran` is false. Diagnostics only. */
140
+ leaseHeldBy?: DutyLeaseInfo;
99
141
  }
100
142
  /** Injectable seams for tests — the real spot-check talks to a provider. */
101
143
  export interface WarmupDeps {
@@ -123,6 +165,29 @@ export interface WarmupDeps {
123
165
  * spend its whole budget on something that cannot answer.
124
166
  */
125
167
  export declare function selectExplorationCandidates(registry: ReturnType<typeof getModelRegistry>, configManager: ConfigManager, now: number, limit: number): WarmupCandidate[];
168
+ /**
169
+ * Pick VERIFIED, in-pool models that have gone STALE, oldest verification
170
+ * first.
171
+ *
172
+ * This is the half the module was missing: exploration (`status ===
173
+ * 'unverified'`) grows the pool, hot records keep THIS process's models warm,
174
+ * and nothing refreshed a verified model that stopped being used — so a pool
175
+ * model aged toward the registry's 7-day retirement and, because the health
176
+ * ranking reads `lastVerifiedAt`, routing kept ranking it on evidence that was
177
+ * no longer true.
178
+ *
179
+ * Deliberately narrow:
180
+ * - VERIFIED rows only. An `unverified` row belongs to exploration, and an
181
+ * `unavailable` one is not stale — it is broken, and re-probing it is
182
+ * exploration's job once it is re-listed.
183
+ * - Unservable providers are excluded, so a cycle never spends its budget on
184
+ * a provider with no credentials.
185
+ * - Quota-parked rows are skipped: a park is a rest with a known end, and
186
+ * re-probing it would be exactly the extra traffic the park prevents.
187
+ * - The exploration throttle still applies per model, so this can never
188
+ * re-probe the same model twice in one `exploreThrottleMs` window.
189
+ */
190
+ export declare function selectPoolRefreshCandidates(registry: ReturnType<typeof getModelRegistry>, configManager: ConfigManager, now: number, limit: number): WarmupCandidate[];
126
191
  /**
127
192
  * Run one warmup cycle: keep hot models warm, and grow the verified pool.
128
193
  *
@@ -132,6 +197,33 @@ export declare function selectExplorationCandidates(registry: ReturnType<typeof
132
197
  * a fresh process (the old `if (records.length === 0) return;` made the first
133
198
  * cycle of every short-lived CLI run a no-op).
134
199
  */
200
+ /** The duty name every warmup caller contends on — one lease per machine. */
201
+ export declare const WARMUP_DUTY_LEASE = "model-warmup";
202
+ /**
203
+ * How long an un-renewed warmup lease may live before another process may steal
204
+ * it (ms).
205
+ *
206
+ * A live cycle re-news at half this window (see the loop below), so this is
207
+ * purely the CRASH-RECOVERY delay: how long a dead holder can keep the sweep
208
+ * switched off. It is also the floor under the interval — a lease that expired
209
+ * inside one cycle would let two processes sweep at once.
210
+ */
211
+ export declare function warmupLeaseStaleMs(env?: NodeJS.ProcessEnv): number;
212
+ /**
213
+ * Run one warmup cycle UNDER the warmup duty lease, or refuse and say who holds
214
+ * it.
215
+ *
216
+ * WHY THE LEASE LIVES HERE AND NOT IN THE CALLERS. Every caller wants the same
217
+ * thing — "one sweep at a time" — and there are four of them (the daemon timer,
218
+ * the first-cycle kick at startup, `nuvira models warm`, and any future
219
+ * dashboard trigger). Putting the guard in each one means the fifth caller, or a
220
+ * refactor, silently re-introduces the waste. Putting it here means the sweep
221
+ * cannot be started un-leased at all.
222
+ *
223
+ * The work a cycle does is a real generation per candidate, on the user's free
224
+ * tier — which is why two processes sweeping the same candidate list is not
225
+ * merely redundant, it is the exact traffic that turns warmup into 429s.
226
+ */
135
227
  export declare function runWarmupCycle(configManager: ConfigManager, deps?: WarmupDeps): Promise<WarmupCycleResult>;
136
228
  /**
137
229
  * Get warmup statistics (for dashboard display).
@@ -1 +1 @@
1
- {"version":3,"file":"model-warmup.d.ts","sourceRoot":"","sources":["../../src/learning/model-warmup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,gBAAgB,EAA2B,MAAM,qBAAqB,CAAC;AAIhF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAK1D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,iFAAiF;IACjF,eAAe,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,YAAY,EAAE,MAAM,CAAC;CACtB;AASD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,YAAY,CAU/E;AAsCD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CActE;AAID,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAmDD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,GAAE,UAAe,GAAG,IAAI,CAwB3F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAMvC;AAED,mFAAmF;AACnF,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,4EAA4E;AAC5E,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,CACV,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,aAAa,KACd,OAAO,CAAC,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC;IAC/D;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,2EAA2E;IAC3E,sBAAsB,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;CACtE;AAYD;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,EAC7C,aAAa,EAAE,aAAa,EAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,eAAe,EAAE,CAyBnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,aAAa,EAAE,aAAa,EAC5B,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAgF5B;AAID;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAoBA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,KAAK,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;CACjC,CAAC,CAiBD"}
1
+ {"version":3,"file":"model-warmup.d.ts","sourceRoot":"","sources":["../../src/learning/model-warmup.ts"],"names":[],"mappings":"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"}