agent-nuvira 3.3.11 → 3.3.13

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 (220) hide show
  1. package/README.md +32 -1
  2. package/dist/agents/agents/reasoner.d.ts.map +1 -1
  3. package/dist/agents/agents/reasoner.js +13 -0
  4. package/dist/agents/agents/reasoner.js.map +1 -1
  5. package/dist/agents/orchestrator.d.ts.map +1 -1
  6. package/dist/agents/orchestrator.js +56 -20
  7. package/dist/agents/orchestrator.js.map +1 -1
  8. package/dist/cli/chat.d.ts +36 -0
  9. package/dist/cli/chat.d.ts.map +1 -1
  10. package/dist/cli/chat.js +456 -43
  11. package/dist/cli/chat.js.map +1 -1
  12. package/dist/cli/cli-program.d.ts.map +1 -1
  13. package/dist/cli/cli-program.js +8 -0
  14. package/dist/cli/cli-program.js.map +1 -1
  15. package/dist/cli/config.d.ts.map +1 -1
  16. package/dist/cli/config.js +35 -4
  17. package/dist/cli/config.js.map +1 -1
  18. package/dist/cli/execute.d.ts.map +1 -1
  19. package/dist/cli/execute.js +14 -0
  20. package/dist/cli/execute.js.map +1 -1
  21. package/dist/cli/knowledge.d.ts +23 -0
  22. package/dist/cli/knowledge.d.ts.map +1 -0
  23. package/dist/cli/knowledge.js +132 -0
  24. package/dist/cli/knowledge.js.map +1 -0
  25. package/dist/cli/loop-executor.d.ts.map +1 -1
  26. package/dist/cli/loop-executor.js +57 -13
  27. package/dist/cli/loop-executor.js.map +1 -1
  28. package/dist/cli/omniroute-control.d.ts +88 -0
  29. package/dist/cli/omniroute-control.d.ts.map +1 -0
  30. package/dist/cli/omniroute-control.js +179 -0
  31. package/dist/cli/omniroute-control.js.map +1 -0
  32. package/dist/cli/omniroute.d.ts +21 -0
  33. package/dist/cli/omniroute.d.ts.map +1 -0
  34. package/dist/cli/omniroute.js +67 -0
  35. package/dist/cli/omniroute.js.map +1 -0
  36. package/dist/cli/tool-install-prompt.d.ts +58 -0
  37. package/dist/cli/tool-install-prompt.d.ts.map +1 -1
  38. package/dist/cli/tool-install-prompt.js +137 -0
  39. package/dist/cli/tool-install-prompt.js.map +1 -1
  40. package/dist/cli/weak-model-prompt.d.ts +16 -7
  41. package/dist/cli/weak-model-prompt.d.ts.map +1 -1
  42. package/dist/cli/weak-model-prompt.js +24 -8
  43. package/dist/cli/weak-model-prompt.js.map +1 -1
  44. package/dist/config/types.d.ts +44 -0
  45. package/dist/config/types.d.ts.map +1 -1
  46. package/dist/context/cache.d.ts +35 -1
  47. package/dist/context/cache.d.ts.map +1 -1
  48. package/dist/context/cache.js +31 -2
  49. package/dist/context/cache.js.map +1 -1
  50. package/dist/context/history.d.ts +21 -0
  51. package/dist/context/history.d.ts.map +1 -1
  52. package/dist/context/history.js +50 -0
  53. package/dist/context/history.js.map +1 -1
  54. package/dist/gateway/hook-contract.d.ts +173 -0
  55. package/dist/gateway/hook-contract.d.ts.map +1 -0
  56. package/dist/gateway/hook-contract.js +352 -0
  57. package/dist/gateway/hook-contract.js.map +1 -0
  58. package/dist/gateway/hooks.d.ts.map +1 -1
  59. package/dist/gateway/hooks.js +14 -0
  60. package/dist/gateway/hooks.js.map +1 -1
  61. package/dist/inference/interface.d.ts +17 -0
  62. package/dist/inference/interface.d.ts.map +1 -1
  63. package/dist/inference/model-catalog.d.ts +17 -0
  64. package/dist/inference/model-catalog.d.ts.map +1 -1
  65. package/dist/inference/model-catalog.js +42 -7
  66. package/dist/inference/model-catalog.js.map +1 -1
  67. package/dist/inference/model-id-validation.d.ts +57 -0
  68. package/dist/inference/model-id-validation.d.ts.map +1 -0
  69. package/dist/inference/model-id-validation.js +127 -0
  70. package/dist/inference/model-id-validation.js.map +1 -0
  71. package/dist/inference/openai-compat-adapter.d.ts.map +1 -1
  72. package/dist/inference/openai-compat-adapter.js +12 -1
  73. package/dist/inference/openai-compat-adapter.js.map +1 -1
  74. package/dist/inference/provider-catalog.d.ts +11 -0
  75. package/dist/inference/provider-catalog.d.ts.map +1 -1
  76. package/dist/inference/provider-catalog.js +80 -0
  77. package/dist/inference/provider-catalog.js.map +1 -1
  78. package/dist/inference/route-resolver.d.ts +2 -8
  79. package/dist/inference/route-resolver.d.ts.map +1 -1
  80. package/dist/inference/route-resolver.js +17 -0
  81. package/dist/inference/route-resolver.js.map +1 -1
  82. package/dist/inference/tool-call-utils.d.ts +4 -3
  83. package/dist/inference/tool-call-utils.d.ts.map +1 -1
  84. package/dist/inference/tool-call-utils.js +26 -12
  85. package/dist/inference/tool-call-utils.js.map +1 -1
  86. package/dist/inference/tools.d.ts +1 -0
  87. package/dist/inference/tools.d.ts.map +1 -1
  88. package/dist/inference/tools.js +20 -3
  89. package/dist/inference/tools.js.map +1 -1
  90. package/dist/learning/agentic-route-gate.d.ts +104 -0
  91. package/dist/learning/agentic-route-gate.d.ts.map +1 -0
  92. package/dist/learning/agentic-route-gate.js +125 -0
  93. package/dist/learning/agentic-route-gate.js.map +1 -0
  94. package/dist/learning/auto-router.d.ts +89 -0
  95. package/dist/learning/auto-router.d.ts.map +1 -1
  96. package/dist/learning/auto-router.js +188 -8
  97. package/dist/learning/auto-router.js.map +1 -1
  98. package/dist/learning/build-prerequisites.d.ts +68 -0
  99. package/dist/learning/build-prerequisites.d.ts.map +1 -0
  100. package/dist/learning/build-prerequisites.js +267 -0
  101. package/dist/learning/build-prerequisites.js.map +1 -0
  102. package/dist/learning/continuation-intent.d.ts +43 -0
  103. package/dist/learning/continuation-intent.d.ts.map +1 -0
  104. package/dist/learning/continuation-intent.js +82 -0
  105. package/dist/learning/continuation-intent.js.map +1 -0
  106. package/dist/learning/error-repair.d.ts +23 -1
  107. package/dist/learning/error-repair.d.ts.map +1 -1
  108. package/dist/learning/error-repair.js +58 -0
  109. package/dist/learning/error-repair.js.map +1 -1
  110. package/dist/learning/knowledge-base.d.ts +124 -0
  111. package/dist/learning/knowledge-base.d.ts.map +1 -0
  112. package/dist/learning/knowledge-base.js +337 -0
  113. package/dist/learning/knowledge-base.js.map +1 -0
  114. package/dist/learning/model-harness.d.ts +19 -0
  115. package/dist/learning/model-harness.d.ts.map +1 -1
  116. package/dist/learning/model-harness.js +27 -0
  117. package/dist/learning/model-harness.js.map +1 -1
  118. package/dist/learning/model-selection.d.ts +2 -1
  119. package/dist/learning/model-selection.d.ts.map +1 -1
  120. package/dist/learning/model-selection.js +35 -2
  121. package/dist/learning/model-selection.js.map +1 -1
  122. package/dist/learning/project-docs.d.ts +83 -0
  123. package/dist/learning/project-docs.d.ts.map +1 -0
  124. package/dist/learning/project-docs.js +132 -0
  125. package/dist/learning/project-docs.js.map +1 -0
  126. package/dist/learning/prompt-budget.d.ts +91 -0
  127. package/dist/learning/prompt-budget.d.ts.map +1 -0
  128. package/dist/learning/prompt-budget.js +99 -0
  129. package/dist/learning/prompt-budget.js.map +1 -0
  130. package/dist/learning/quota-ledger.d.ts +13 -0
  131. package/dist/learning/quota-ledger.d.ts.map +1 -1
  132. package/dist/learning/quota-ledger.js +28 -0
  133. package/dist/learning/quota-ledger.js.map +1 -1
  134. package/dist/learning/reasoning-trace.d.ts +55 -2
  135. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  136. package/dist/learning/reasoning-trace.js +48 -0
  137. package/dist/learning/reasoning-trace.js.map +1 -1
  138. package/dist/learning/resilient-call.d.ts.map +1 -1
  139. package/dist/learning/resilient-call.js +16 -3
  140. package/dist/learning/resilient-call.js.map +1 -1
  141. package/dist/learning/routing-history.d.ts +13 -0
  142. package/dist/learning/routing-history.d.ts.map +1 -1
  143. package/dist/learning/routing-history.js.map +1 -1
  144. package/dist/learning/seeded-benchmark.d.ts +14 -0
  145. package/dist/learning/seeded-benchmark.d.ts.map +1 -1
  146. package/dist/learning/seeded-benchmark.js +43 -4
  147. package/dist/learning/seeded-benchmark.js.map +1 -1
  148. package/dist/learning/turn-report.d.ts +78 -0
  149. package/dist/learning/turn-report.d.ts.map +1 -0
  150. package/dist/learning/turn-report.js +140 -0
  151. package/dist/learning/turn-report.js.map +1 -0
  152. package/dist/security/secret-scan.d.ts +156 -0
  153. package/dist/security/secret-scan.d.ts.map +1 -0
  154. package/dist/security/secret-scan.js +525 -0
  155. package/dist/security/secret-scan.js.map +1 -0
  156. package/dist/tools/edit-verification.d.ts +2 -11
  157. package/dist/tools/edit-verification.d.ts.map +1 -1
  158. package/dist/tools/edit-verification.js +33 -1
  159. package/dist/tools/edit-verification.js.map +1 -1
  160. package/dist/tools/loop-skill-hint.d.ts +51 -0
  161. package/dist/tools/loop-skill-hint.d.ts.map +1 -1
  162. package/dist/tools/loop-skill-hint.js +87 -2
  163. package/dist/tools/loop-skill-hint.js.map +1 -1
  164. package/dist/tools/plan-store.d.ts +126 -3
  165. package/dist/tools/plan-store.d.ts.map +1 -1
  166. package/dist/tools/plan-store.js +290 -6
  167. package/dist/tools/plan-store.js.map +1 -1
  168. package/dist/tools/registry.d.ts +20 -1
  169. package/dist/tools/registry.d.ts.map +1 -1
  170. package/dist/tools/registry.js +165 -4
  171. package/dist/tools/registry.js.map +1 -1
  172. package/dist/tools/remediation-ladder.d.ts +91 -0
  173. package/dist/tools/remediation-ladder.d.ts.map +1 -0
  174. package/dist/tools/remediation-ladder.js +308 -0
  175. package/dist/tools/remediation-ladder.js.map +1 -0
  176. package/dist/tools/run-terminal.d.ts.map +1 -1
  177. package/dist/tools/run-terminal.js +60 -2
  178. package/dist/tools/run-terminal.js.map +1 -1
  179. package/dist/tools/skills-hub.d.ts +7 -0
  180. package/dist/tools/skills-hub.d.ts.map +1 -1
  181. package/dist/tools/skills-hub.js +11 -2
  182. package/dist/tools/skills-hub.js.map +1 -1
  183. package/dist/tools/step-artifact.d.ts +35 -0
  184. package/dist/tools/step-artifact.d.ts.map +1 -0
  185. package/dist/tools/step-artifact.js +154 -0
  186. package/dist/tools/step-artifact.js.map +1 -0
  187. package/dist/tools/tool-loop.d.ts +35 -0
  188. package/dist/tools/tool-loop.d.ts.map +1 -1
  189. package/dist/tools/tool-loop.js +284 -9
  190. package/dist/tools/tool-loop.js.map +1 -1
  191. package/dist/tools/toolsets.js +4 -4
  192. package/dist/tools/toolsets.js.map +1 -1
  193. package/dist/tools/worktree.d.ts +11 -2
  194. package/dist/tools/worktree.d.ts.map +1 -1
  195. package/dist/tools/worktree.js +11 -2
  196. package/dist/tools/worktree.js.map +1 -1
  197. package/dist/utils/effect-verification.js +1 -1
  198. package/dist/utils/effect-verification.js.map +1 -1
  199. package/dist/web-dashboard/chat-console.d.ts +21 -1
  200. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  201. package/dist/web-dashboard/chat-console.js +33 -5
  202. package/dist/web-dashboard/chat-console.js.map +1 -1
  203. package/dist/web-dashboard/server.d.ts +29 -0
  204. package/dist/web-dashboard/server.d.ts.map +1 -1
  205. package/dist/web-dashboard/server.js +410 -5
  206. package/dist/web-dashboard/server.js.map +1 -1
  207. package/dist/web-dashboard/src/types.d.ts +137 -0
  208. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  209. package/dist/web-dashboard/workspace-guard.d.ts +7 -0
  210. package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
  211. package/dist/web-dashboard/workspace-guard.js +70 -0
  212. package/dist/web-dashboard/workspace-guard.js.map +1 -1
  213. package/package.json +4 -1
  214. package/src/web-dashboard/public/assets/index-DhiuR4S2.js +210 -0
  215. package/src/web-dashboard/public/assets/index-DhiuR4S2.js.map +1 -0
  216. package/src/web-dashboard/public/assets/index-tK8Y2qHB.css +1 -0
  217. package/src/web-dashboard/public/index.html +2 -2
  218. package/src/web-dashboard/public/assets/index-BdKf5Xw2.js +0 -207
  219. package/src/web-dashboard/public/assets/index-BdKf5Xw2.js.map +0 -1
  220. package/src/web-dashboard/public/assets/index-C9eBskc9.css +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentic-route-gate.js","sourceRoot":"","sources":["../../src/learning/agentic-route-gate.ts"],"names":[],"mappings":"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"}
@@ -63,6 +63,23 @@ export interface TaskProfile {
63
63
  escalationTarget?: string;
64
64
  notes: string[];
65
65
  }
66
+ /**
67
+ * The software intents whose NON-TRIVIAL asks need an agentic-capable model.
68
+ * Writing/creative and plain chat are deliberately excluded: there a small
69
+ * model is a legitimate choice.
70
+ */
71
+ export declare const SOFTWARE_INTENTS: ReadonlySet<string>;
72
+ /**
73
+ * Is this complexity/intent profile an AGENTIC ask — one that needs a model
74
+ * able to hold a tool loop across turns and report truthfully what it observed?
75
+ *
76
+ * Exported so the router's capability floor and the shared post-route gate
77
+ * (`assertAgenticRoute`) can never disagree about what counts as agentic — the
78
+ * same reason `isAgenticCapableModel` is shared across both seams. A software
79
+ * build ask is agentic at ANY non-trivial complexity; a trivial one-shot
80
+ * ("format this code") and non-software asks are not.
81
+ */
82
+ export declare function isAgenticTask(complexity: ComplexityLevel, taskProfile: Pick<TaskProfile, 'intent' | 'requiresVerification'>): boolean;
66
83
  /** Human labels for each dimension (used in explanations). */
67
84
  export declare const DIMENSION_LABELS: Record<RoutingDimension, string>;
68
85
  /**
@@ -160,6 +177,42 @@ export declare function governanceVerdict(configManager: ConfigManager | undefin
160
177
  model?: string;
161
178
  taskText?: string;
162
179
  }): GovernanceVerdict;
180
+ /**
181
+ * THE admin-BUDGET gate for a PINNED provider×model.
182
+ *
183
+ * `governanceVerdict` above covers the admin allow/deny lists and the PII
184
+ * privacy gate, but deliberately leaves the COST cap to selection — right for
185
+ * the auto path, wrong for a pin. The user's own request (2026-10-06): "if I
186
+ * select a specific model it should leverage my selection AND honor the cost /
187
+ * token controls set in the admin panel". An explicit pin bypasses
188
+ * `autoRouter.resolve`, where `routing.quota` and `maxCostUsd` are enforced, so
189
+ * today a pinned run is the one path that can spend past the budget the user
190
+ * declared in the dashboard's 💰 Daily Budget panel.
191
+ *
192
+ * This gate closes that hole WITHOUT substituting another model (a pin must
193
+ * still run the model the user chose): it either allows the pin or REFUSES it
194
+ * with a message naming the control, so the outcome is honest rather than a
195
+ * silent over-budget run. Two controls, both user-declared:
196
+ *
197
+ * 1. `routing.quota.<provider>` — a configured window budget (tokens and/or
198
+ * requests) already consumed. Read via `isOverConfiguredLimit`, which
199
+ * deliberately IGNORES transient rate-limit parks: a 429 that clears in
200
+ * seconds is not a budget, and refusing a pin for it would be wrong.
201
+ * 2. `governance.maxCostUsd` / `routing.maxCostUsd` — the stricter of the two
202
+ * admin caps, compared against the provider's typical call cost (the same
203
+ * basis the router uses). Absent → no cost gate, unchanged behaviour.
204
+ *
205
+ * No budget configured → `{ allowed: true }`, so every existing setup is
206
+ * byte-for-byte unchanged. Best-effort: an unreadable config never blocks.
207
+ */
208
+ export interface AdminBudgetVerdict {
209
+ allowed: boolean;
210
+ reason?: string;
211
+ control?: 'quota' | 'cost';
212
+ }
213
+ export declare function adminBudgetVerdict(configManager: ConfigManager | undefined, provider: string, opts?: {
214
+ model?: string;
215
+ }): AdminBudgetVerdict;
163
216
  /** Options for a single resolve() call. */
164
217
  export interface AutoRouterOptions {
165
218
  /**
@@ -411,6 +464,25 @@ export interface AutoRouteResult {
411
464
  model: string;
412
465
  /** Composite score of the selected provider (0–1) */
413
466
  score: number;
467
+ /**
468
+ * A1 — may the FINAL routed model hold an agentic software task? Computed
469
+ * with the SAME shared predicate (`isAgenticCapableModel`) the capability
470
+ * floor and the model-first override use, so the recorded verdict can never
471
+ * disagree with the routing that produced it. This is the fact the failed
472
+ * Tauri turn could not see about itself: it was routed to `local/gemma4:e4b`
473
+ * and nothing in the turn, trace, or console said so.
474
+ */
475
+ agenticCapable: boolean;
476
+ /**
477
+ * A1 — how the model-first override affected the FINAL pick:
478
+ * - `none` — the override did not change the provider/model;
479
+ * - `model-first` — it replaced the deterministic pick with a model-first
480
+ * candidate (still agentic-capable when the task was agentic);
481
+ * - `model-first-blocked` — it had candidates but the agentic capability
482
+ * floor removed ALL of them, so the deterministic pick stood (the shape
483
+ * of the original bug: the override was constrained by the floor).
484
+ */
485
+ overrideReason: 'none' | 'model-first' | 'model-first-blocked';
414
486
  /** Effective dimension weights used for this decision */
415
487
  weights: Record<RoutingDimension, number>;
416
488
  /** All scored providers, ranked best-first */
@@ -589,6 +661,23 @@ export declare function isAutoModel(model?: string | null): boolean;
589
661
  * Check whether a provider value means "Auto routing".
590
662
  */
591
663
  export declare function isAutoProvider(provider?: string | null): boolean;
664
+ /**
665
+ * A CONCRETE provider pinned with the `auto` model sentinel means THAT
666
+ * provider's OWN auto routing — an OmniRoute gateway combo, say — not
667
+ * agent-nuvira's provider/model selection.
668
+ *
669
+ * This is the distinction behind the `-p omniroute -m auto` collision: the
670
+ * sentinel was read as the agent's auto-route EVERYWHERE, so the request was
671
+ * re-routed by our router and never reached the gateway that was named. The
672
+ * sentinel is provider-owned ONLY when the provider is named and is not itself
673
+ * the `auto` directive; `-m auto` with no provider (or `-p auto`) stays our
674
+ * auto-route exactly as before.
675
+ */
676
+ export declare function isProviderOwnAuto(provider?: string | null, model?: string | null): boolean;
677
+ /** Agent-nuvira's OWN auto routing: the `auto` directive on either axis, minus
678
+ * the provider-owned case — use this where a decision would otherwise
679
+ * re-route a concretely pinned provider. */
680
+ export declare function isAgentAutoRoute(provider?: string | null, model?: string | null): boolean;
592
681
  /**
593
682
  * Compute the effective dimension weights for a task.
594
683
  * Combines complexity baseline + preference-mode adjustments + user overrides,
@@ -1 +1 @@
1
- {"version":3,"file":"auto-router.d.ts","sourceRoot":"","sources":["../../src/learning/auto-router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-router.d.ts","sourceRoot":"","sources":["../../src/learning/auto-router.ts"],"names":[],"mappings":"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"}
@@ -49,7 +49,7 @@ import { getModelRegistry } from './model-registry.js';
49
49
  // R4: the agentic capability floor needs the same "too small to hold a tool
50
50
  // loop" judgement the harness uses. model-harness.ts imports nothing, so this
51
51
  // adds no cycle risk to the router.
52
- import { isTinyModel } from './model-harness.js';
52
+ import { isTinyModel, isAgenticCapableModel } from './model-harness.js';
53
53
  import { estimateTokens } from './cost-tracker.js';
54
54
  import { preferredModelsFor, PROVIDER_CONTEXT_WINDOWS } from './model-selection.js';
55
55
  import { isNonChatModel } from '../inference/model-catalog.js';
@@ -62,6 +62,7 @@ import { CATALOG_PROVIDER_IDS, getCatalogProvider, getDefaultModel, isCatalogKey
62
62
  import { isContentArtifactAsk } from '../nlu/intent.js';
63
63
  import { ProviderFactory } from '../inference/factory.js';
64
64
  import { logger } from '../utils/logger.js';
65
+ import { getQuotaLedger } from './quota-ledger.js';
65
66
  // ─── Constants ──────────────────────────────────────────────────────────────
66
67
  /** The special model value that triggers automatic per-task routing. */
67
68
  export const AUTO_MODEL = 'auto';
@@ -74,6 +75,31 @@ export const AUTO_MODEL = 'auto';
74
75
  export const FALLBACK_MODELS_PER_PROVIDER = 3;
75
76
  /** The special provider value stored in active-model state for Auto mode. */
76
77
  export const AUTO_PROVIDER = 'auto';
78
+ /**
79
+ * The software intents whose NON-TRIVIAL asks need an agentic-capable model.
80
+ * Writing/creative and plain chat are deliberately excluded: there a small
81
+ * model is a legitimate choice.
82
+ */
83
+ export const SOFTWARE_INTENTS = new Set([
84
+ 'coding', 'debugging', 'verification', 'migration', 'architecture', 'security',
85
+ ]);
86
+ /**
87
+ * Is this complexity/intent profile an AGENTIC ask — one that needs a model
88
+ * able to hold a tool loop across turns and report truthfully what it observed?
89
+ *
90
+ * Exported so the router's capability floor and the shared post-route gate
91
+ * (`assertAgenticRoute`) can never disagree about what counts as agentic — the
92
+ * same reason `isAgenticCapableModel` is shared across both seams. A software
93
+ * build ask is agentic at ANY non-trivial complexity; a trivial one-shot
94
+ * ("format this code") and non-software asks are not.
95
+ */
96
+ export function isAgenticTask(complexity, taskProfile) {
97
+ const softwareIntent = SOFTWARE_INTENTS.has(String(taskProfile.intent ?? ''));
98
+ return (complexity === 'complex' ||
99
+ complexity === 'critical' ||
100
+ taskProfile.requiresVerification === true ||
101
+ (softwareIntent && complexity !== 'trivial'));
102
+ }
77
103
  /** Human labels for each dimension (used in explanations). */
78
104
  export const DIMENSION_LABELS = {
79
105
  reasoning: 'reasoning',
@@ -217,6 +243,48 @@ export function governanceVerdict(configManager, provider, opts = {}) {
217
243
  }
218
244
  return { allowed: true };
219
245
  }
246
+ export function adminBudgetVerdict(configManager, provider, opts = {}) {
247
+ if (!configManager)
248
+ return { allowed: true };
249
+ // 1. Declared window budget (tokens / requests).
250
+ try {
251
+ if (getQuotaLedger().isOverConfiguredLimit(configManager, provider)) {
252
+ return {
253
+ allowed: false,
254
+ control: 'quota',
255
+ reason: `'${provider}' is over the daily budget you set in ` +
256
+ `routing.quota.${provider} (tokens or requests for the current window). ` +
257
+ 'Raise the limit in the dashboard 💰 Daily Budget panel (or `nuvira model quota set`), ' +
258
+ 'or wait for the window to reset.',
259
+ };
260
+ }
261
+ }
262
+ catch {
263
+ // Best-effort — an unreadable ledger must never block a run.
264
+ }
265
+ // 2. Admin cost cap — strictest of the routing + governance caps.
266
+ try {
267
+ const routing = configManager.getAll?.()?.routing;
268
+ const caps = [routing?.maxCostUsd, routing?.governance?.maxCostUsd].filter((c) => c !== undefined);
269
+ if (caps.length > 0) {
270
+ const cap = Math.min(...caps);
271
+ const typical = estimateCallCostUsd(provider);
272
+ if (typical > cap) {
273
+ return {
274
+ allowed: false,
275
+ control: 'cost',
276
+ reason: `'${provider}' costs ~$${typical}/call, over the admin cap of $${cap} per call ` +
277
+ '(routing.maxCostUsd / routing.governance.maxCostUsd). ' +
278
+ 'Raise the cap in the dashboard Budget panel, or pick a cheaper provider.',
279
+ };
280
+ }
281
+ }
282
+ }
283
+ catch {
284
+ // Best-effort.
285
+ }
286
+ return { allowed: true };
287
+ }
220
288
  // ─── Provider Capability Profiles ───────────────────────────────────────────
221
289
  //
222
290
  // Static baseline profiles for the built-in providers. These encode the
@@ -531,6 +599,36 @@ export function isAutoModel(model) {
531
599
  export function isAutoProvider(provider) {
532
600
  return provider === AUTO_PROVIDER;
533
601
  }
602
+ /**
603
+ * A CONCRETE provider pinned with the `auto` model sentinel means THAT
604
+ * provider's OWN auto routing — an OmniRoute gateway combo, say — not
605
+ * agent-nuvira's provider/model selection.
606
+ *
607
+ * This is the distinction behind the `-p omniroute -m auto` collision: the
608
+ * sentinel was read as the agent's auto-route EVERYWHERE, so the request was
609
+ * re-routed by our router and never reached the gateway that was named. The
610
+ * sentinel is provider-owned ONLY when the provider is named and is not itself
611
+ * the `auto` directive; `-m auto` with no provider (or `-p auto`) stays our
612
+ * auto-route exactly as before.
613
+ */
614
+ export function isProviderOwnAuto(provider, model) {
615
+ if (!provider || isAutoProvider(provider) || !isAutoModel(model))
616
+ return false;
617
+ // …and the provider must ACTUALLY expose its own `auto`. The first cut returned
618
+ // true for ANY concrete provider (`-p groq -m auto`, `-p local -m auto`, …),
619
+ // which left the sentinel unresolved and handed the literal string `auto` to a
620
+ // provider that has no such model — a live 400 waiting to happen, and the cause
621
+ // of a verify-probe + real call (the same request paid for twice). Only a
622
+ // gateway whose catalog default IS `auto` (OmniRoute, and anything configured
623
+ // the same way) owns the sentinel; every other provider gets a real model id.
624
+ return getDefaultModel(provider) === 'auto';
625
+ }
626
+ /** Agent-nuvira's OWN auto routing: the `auto` directive on either axis, minus
627
+ * the provider-owned case — use this where a decision would otherwise
628
+ * re-route a concretely pinned provider. */
629
+ export function isAgentAutoRoute(provider, model) {
630
+ return !isProviderOwnAuto(provider, model) && (isAutoProvider(provider) || isAutoModel(model));
631
+ }
534
632
  /**
535
633
  * Compute the effective dimension weights for a task.
536
634
  * Combines complexity baseline + preference-mode adjustments + user overrides,
@@ -1028,6 +1126,11 @@ export class AutoModelRouter {
1028
1126
  fallbackChain: [],
1029
1127
  explanation: `Routing rule '${rule.name}' matched task → ${provider}/${model}`,
1030
1128
  routedBy: 'rule',
1129
+ // A1 — a forced rule bypasses scoring and the model-first override
1130
+ // entirely, but the verdict on the FINAL pair is still recorded so
1131
+ // the trace/console can warn when a rule pins a weak model.
1132
+ agenticCapable: isAgenticCapableModel(model, provider),
1133
+ overrideReason: 'none',
1031
1134
  };
1032
1135
  }
1033
1136
  }
@@ -1407,6 +1510,29 @@ export class AutoModelRouter {
1407
1510
  // not an admin policy. Keep the full ranking so the caller still gets
1408
1511
  // a decision instead of erroring.
1409
1512
  governanceBlocked = blockedHere;
1513
+ // CAPABILITY-AWARE RESTORE (2026-10-04). Restoring the RAW ranking is
1514
+ // what let `max` mode (minReasoning 0.7) hand a real Tauri build task to
1515
+ // a LOCAL 4-bit model: every cloud candidate sat below the floor, the
1516
+ // fallback fired, and `performance-first` scoring then favoured the
1517
+ // free, "fast" local entry (score 0.71 vs gemini's 0.40 — measured in
1518
+ // `trace-1791118414038-wdmliw`). The floor's INTENT is "require a strong
1519
+ // served model", so when it must be relaxed, relax it in that SAME
1520
+ // direction: order by served-model REASONING, strongest first, so the
1521
+ // least-weak candidate wins rather than the cheapest. Only applied when
1522
+ // a reasoning floor was actually set — a balanced-mode ask is left
1523
+ // byte-identical.
1524
+ if (options.minReasoning !== undefined) {
1525
+ const reasoningOf = (s) => {
1526
+ try {
1527
+ const served = this.resolveModel(s.provider, agentType, configManager, taskDescription);
1528
+ return this.getModelCapabilities(s.provider, served).reasoning;
1529
+ }
1530
+ catch {
1531
+ return 0;
1532
+ }
1533
+ };
1534
+ scored = [...scored].sort((a, b) => reasoningOf(b) - reasoningOf(a));
1535
+ }
1410
1536
  if (options.verbose) {
1411
1537
  logger.warn(' ⚠️ Governance/hard constraints eliminated every provider — falling back to full ranking');
1412
1538
  }
@@ -1437,9 +1563,23 @@ export class AutoModelRouter {
1437
1563
  // JSON-contract transport still gives it a way to act);
1438
1564
  // - if the floor would eliminate everyone, the ranking is left alone rather
1439
1565
  // than returning no route at all. Auto must never dead-end.
1440
- const agenticTask = complexity === 'complex' ||
1441
- complexity === 'critical' ||
1442
- taskProfile.requiresVerification === true;
1566
+ // INTENT WIDENING (2026-10-04). The floor used to fire only on
1567
+ // complex/critical/verification asks, so a MODERATE software ask (measured:
1568
+ // "create mac od gui app", complexity 🟡 moderate) skipped it entirely and
1569
+ // `max` mode's performance-first score handed the build to a LOCAL 4-bit
1570
+ // model (`trace-1791118414038-wdmliw` → local/gemma4:e4b, then
1571
+ // trace-1791118650644-d73hyr failed over to local/qwen2.5:0.5b, which
1572
+ // FABRICATED `[Tool result][Success]` output). A software build ask is
1573
+ // agentic at ANY complexity — it needs a model that can hold a tool loop
1574
+ // across turns and truthfully report what it observed. Writing/creative and
1575
+ // plain chat are deliberately NOT included: there, a small/free model is a
1576
+ // legitimate choice (the user's own rule — "complex tasks to reasoning
1577
+ // models, chat/writing to whatever is available").
1578
+ // Widen to software intents ONLY above `trivial`: a trivial one-shot
1579
+ // ("format this code") is exactly what a small local model is for — free,
1580
+ // fast, offline — and the existing contract keeps it available there. The
1581
+ // failure we are closing was a MODERATE build ask, not a one-liner.
1582
+ const agenticTask = isAgenticTask(complexity, taskProfile);
1443
1583
  if (agenticTask) {
1444
1584
  const capable = scored.filter((s) => {
1445
1585
  let servedModel;
@@ -1449,7 +1589,10 @@ export class AutoModelRouter {
1449
1589
  catch {
1450
1590
  servedModel = undefined;
1451
1591
  }
1452
- return servedModel === undefined || !isTinyModel(servedModel);
1592
+ // The shared predicate owns the rule (tiny tag out; local placeholder
1593
+ // out; unknown kept) so the model-first override below can re-apply the
1594
+ // SAME test and can never resurrect a model this floor just removed.
1595
+ return isAgenticCapableModel(servedModel, s.provider);
1453
1596
  });
1454
1597
  if (capable.length > 0) {
1455
1598
  scored = capable;
@@ -1595,6 +1738,9 @@ export class AutoModelRouter {
1595
1738
  : scored.find((s) => !s.inCooldown && !s.quotaParked) || scored[0];
1596
1739
  let provider = selected.provider;
1597
1740
  let model = this.resolveModel(provider, agentType, configManager, taskDescription);
1741
+ // A1 — record what the model-first override did to the final pick, so the
1742
+ // result carries a verdict and not just a pair (see `overrideReason`).
1743
+ let overrideReason = 'none';
1598
1744
  // ── MODEL-FIRST ROUTING: override provider pick with model-level scoring ──
1599
1745
  // Instead of picking a provider then a model, score ALL models across ALL
1600
1746
  // providers and pick the BEST model. This ensures cost-per-million-token,
@@ -1624,13 +1770,32 @@ export class AutoModelRouter {
1624
1770
  const modelFirstEnabled = options.useModelFirst ?? (hasRealData && !userHasPinnedModel && !escalatedProvider);
1625
1771
  if (modelFirstEnabled && taskDescription) {
1626
1772
  const modelCandidates = buildModelCandidates(taskDescription, complexity, configManager, allowed);
1627
- if (modelCandidates.length > 0) {
1628
- const bestModel = modelCandidates[0];
1773
+ // AGENTIC SAFETY (2026-10-04). This override runs AFTER the agentic
1774
+ // capability floor above, so without re-applying that floor it could
1775
+ // hand an agentic software ask to the very model the floor removed.
1776
+ // Measured: a Tauri build ask (intent 'coding', moderate) overrode the
1777
+ // deterministic groq winner with `local/gemma4:e4b` (a ≤4B model), and
1778
+ // chat then fabricated `[Tool result] ✅ succeeded` output. Filter with
1779
+ // the SAME predicate the floor uses (tiny served model, or a local
1780
+ // placeholder id we cannot judge); take the best surviving candidate so
1781
+ // the override still fires when a capable model-first pick exists.
1782
+ const eligibleCandidates = agenticTask
1783
+ ? modelCandidates.filter((c) => isAgenticCapableModel(c.model, c.provider))
1784
+ : modelCandidates;
1785
+ // A1 — a non-empty candidate set emptied BY THE FLOOR is the exact
1786
+ // shape of the original bug; record it as `model-first-blocked` so the
1787
+ // trace does not have to infer it from a missing log line.
1788
+ if (agenticTask && modelCandidates.length > 0 && eligibleCandidates.length === 0) {
1789
+ overrideReason = 'model-first-blocked';
1790
+ }
1791
+ if (eligibleCandidates.length > 0) {
1792
+ const bestModel = eligibleCandidates[0];
1629
1793
  // Only override if the model-first pick is significantly better
1630
1794
  // (at least 10% higher score) to avoid thrashing on marginal gains
1631
1795
  if (bestModel.score > selected.score * 1.1 || selected.score < 0.3) {
1632
1796
  provider = bestModel.provider;
1633
1797
  model = bestModel.model;
1798
+ overrideReason = 'model-first';
1634
1799
  if (options.verbose) {
1635
1800
  logger.info(` 🎯 Model-first override: ${provider}/${model} (score ${bestModel.score.toFixed(3)} vs provider ${selected.score.toFixed(3)})`);
1636
1801
  }
@@ -1775,7 +1940,20 @@ export class AutoModelRouter {
1775
1940
  }
1776
1941
  scored = [winner, ...scored.filter((s) => s.provider !== provider)];
1777
1942
  const decisionScore = winner.score;
1778
- const explanation = this.buildExplanation(agentType, complexity, taskType, provider, decisionScore, mode, model, weights, taskProfile) + (routedBy === 'bandit' ? ' | bandit-learned' : '') +
1943
+ // WEAK-MODEL WARNING (2026-10-04). When a software/agentic ask STILL lands
1944
+ // on a tiny or placeholder local model, the floor had to be relaxed because
1945
+ // nothing capable was available — which is a real risk the user should hear
1946
+ // about, not a silent surprise (the failed Tauri turn looked identical to a
1947
+ // normal one). Never fires for writing/chat, where a small model is fine.
1948
+ const weakModelForAgenticAsk = agenticTask &&
1949
+ (isTinyModel(String(model)) ||
1950
+ (provider === 'local' && /^(?:default|unknown)$/i.test(String(model).trim())));
1951
+ if (weakModelForAgenticAsk) {
1952
+ logger.warn(` ⚠️ Routing a software task to a weak/local model (${provider}/${model}) — no capable provider was available. Expect it to struggle; the run may need a retry once a stronger model is free.`);
1953
+ }
1954
+ const explanation = this.buildExplanation(agentType, complexity, taskType, provider, decisionScore, mode, model, weights, taskProfile) +
1955
+ (weakModelForAgenticAsk ? ' | ⚠ weak-model fallback (no capable provider free)' : '') +
1956
+ (routedBy === 'bandit' ? ' | bandit-learned' : '') +
1779
1957
  (banditEscalation ? ' | escalated: winner unlearned' : '') +
1780
1958
  // ISSUE-002 explanation transparency: cite the registry data that
1781
1959
  // excluded providers from the candidate pool, so auto routing proves
@@ -1826,6 +2004,8 @@ export class AutoModelRouter {
1826
2004
  fallbackChain,
1827
2005
  explanation,
1828
2006
  routedBy,
2007
+ agenticCapable: isAgenticCapableModel(model, provider),
2008
+ overrideReason,
1829
2009
  banditEscalation,
1830
2010
  governanceBlocked,
1831
2011
  registryExcluded,