agent-nuvira 3.3.13 → 3.3.15

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 (398) hide show
  1. package/README.md +67 -1
  2. package/dist/agents/agents/planner.d.ts.map +1 -1
  3. package/dist/agents/agents/planner.js +9 -0
  4. package/dist/agents/agents/planner.js.map +1 -1
  5. package/dist/agents/orchestrator.d.ts +31 -0
  6. package/dist/agents/orchestrator.d.ts.map +1 -1
  7. package/dist/agents/orchestrator.js +74 -126
  8. package/dist/agents/orchestrator.js.map +1 -1
  9. package/dist/cli/chat.d.ts +89 -0
  10. package/dist/cli/chat.d.ts.map +1 -1
  11. package/dist/cli/chat.js +765 -33
  12. package/dist/cli/chat.js.map +1 -1
  13. package/dist/cli/cli-program.d.ts.map +1 -1
  14. package/dist/cli/cli-program.js +12 -0
  15. package/dist/cli/cli-program.js.map +1 -1
  16. package/dist/cli/config.d.ts +12 -0
  17. package/dist/cli/config.d.ts.map +1 -1
  18. package/dist/cli/config.js +86 -0
  19. package/dist/cli/config.js.map +1 -1
  20. package/dist/cli/decisions.d.ts +28 -0
  21. package/dist/cli/decisions.d.ts.map +1 -0
  22. package/dist/cli/decisions.js +140 -0
  23. package/dist/cli/decisions.js.map +1 -0
  24. package/dist/cli/doctor.d.ts +6 -0
  25. package/dist/cli/doctor.d.ts.map +1 -1
  26. package/dist/cli/doctor.js +46 -0
  27. package/dist/cli/doctor.js.map +1 -1
  28. package/dist/cli/failover-runner.d.ts.map +1 -1
  29. package/dist/cli/failover-runner.js +19 -1
  30. package/dist/cli/failover-runner.js.map +1 -1
  31. package/dist/cli/feedback.d.ts.map +1 -1
  32. package/dist/cli/feedback.js +5 -1
  33. package/dist/cli/feedback.js.map +1 -1
  34. package/dist/cli/hooks.d.ts +30 -0
  35. package/dist/cli/hooks.d.ts.map +1 -0
  36. package/dist/cli/hooks.js +224 -0
  37. package/dist/cli/hooks.js.map +1 -0
  38. package/dist/cli/knowledge.d.ts +9 -1
  39. package/dist/cli/knowledge.d.ts.map +1 -1
  40. package/dist/cli/knowledge.js +93 -2
  41. package/dist/cli/knowledge.js.map +1 -1
  42. package/dist/cli/loop-executor.d.ts.map +1 -1
  43. package/dist/cli/loop-executor.js +47 -12
  44. package/dist/cli/loop-executor.js.map +1 -1
  45. package/dist/cli/model.d.ts +20 -0
  46. package/dist/cli/model.d.ts.map +1 -1
  47. package/dist/cli/model.js +294 -14
  48. package/dist/cli/model.js.map +1 -1
  49. package/dist/cli/rate.d.ts +78 -0
  50. package/dist/cli/rate.d.ts.map +1 -0
  51. package/dist/cli/rate.js +294 -0
  52. package/dist/cli/rate.js.map +1 -0
  53. package/dist/config/process-env.d.ts.map +1 -1
  54. package/dist/config/process-env.js +10 -0
  55. package/dist/config/process-env.js.map +1 -1
  56. package/dist/enterprise/vault.d.ts.map +1 -1
  57. package/dist/enterprise/vault.js +5 -21
  58. package/dist/enterprise/vault.js.map +1 -1
  59. package/dist/gateway/hook-contract.d.ts +33 -0
  60. package/dist/gateway/hook-contract.d.ts.map +1 -1
  61. package/dist/gateway/hook-contract.js +97 -0
  62. package/dist/gateway/hook-contract.js.map +1 -1
  63. package/dist/inference/gemini-adapter.d.ts.map +1 -1
  64. package/dist/inference/gemini-adapter.js +4 -0
  65. package/dist/inference/gemini-adapter.js.map +1 -1
  66. package/dist/inference/interface.d.ts +37 -0
  67. package/dist/inference/interface.d.ts.map +1 -1
  68. package/dist/inference/native-tools.d.ts +16 -1
  69. package/dist/inference/native-tools.d.ts.map +1 -1
  70. package/dist/inference/native-tools.js +34 -10
  71. package/dist/inference/native-tools.js.map +1 -1
  72. package/dist/inference/route-resolver.d.ts +30 -0
  73. package/dist/inference/route-resolver.d.ts.map +1 -1
  74. package/dist/inference/route-resolver.js +158 -1
  75. package/dist/inference/route-resolver.js.map +1 -1
  76. package/dist/inference/tools.d.ts +16 -1
  77. package/dist/inference/tools.d.ts.map +1 -1
  78. package/dist/inference/tools.js +51 -18
  79. package/dist/inference/tools.js.map +1 -1
  80. package/dist/learning/acceptance-model.d.ts +247 -0
  81. package/dist/learning/acceptance-model.d.ts.map +1 -0
  82. package/dist/learning/acceptance-model.js +708 -0
  83. package/dist/learning/acceptance-model.js.map +1 -0
  84. package/dist/learning/auto-router.d.ts +68 -24
  85. package/dist/learning/auto-router.d.ts.map +1 -1
  86. package/dist/learning/auto-router.js +301 -96
  87. package/dist/learning/auto-router.js.map +1 -1
  88. package/dist/learning/autonomy-policy.d.ts +12 -16
  89. package/dist/learning/autonomy-policy.d.ts.map +1 -1
  90. package/dist/learning/autonomy-policy.js +50 -48
  91. package/dist/learning/autonomy-policy.js.map +1 -1
  92. package/dist/learning/behavioural-labels.d.ts +86 -0
  93. package/dist/learning/behavioural-labels.d.ts.map +1 -0
  94. package/dist/learning/behavioural-labels.js +166 -0
  95. package/dist/learning/behavioural-labels.js.map +1 -0
  96. package/dist/learning/capability-evidence.d.ts +167 -0
  97. package/dist/learning/capability-evidence.d.ts.map +1 -0
  98. package/dist/learning/capability-evidence.js +210 -0
  99. package/dist/learning/capability-evidence.js.map +1 -0
  100. package/dist/learning/capability-readiness.d.ts +64 -0
  101. package/dist/learning/capability-readiness.d.ts.map +1 -0
  102. package/dist/learning/capability-readiness.js +74 -0
  103. package/dist/learning/capability-readiness.js.map +1 -0
  104. package/dist/learning/capability-types.d.ts +169 -0
  105. package/dist/learning/capability-types.d.ts.map +1 -0
  106. package/dist/learning/capability-types.js +20 -0
  107. package/dist/learning/capability-types.js.map +1 -0
  108. package/dist/learning/catalog-feed.d.ts +89 -0
  109. package/dist/learning/catalog-feed.d.ts.map +1 -0
  110. package/dist/learning/catalog-feed.js +211 -0
  111. package/dist/learning/catalog-feed.js.map +1 -0
  112. package/dist/learning/cli-intent-effects.d.ts +60 -0
  113. package/dist/learning/cli-intent-effects.d.ts.map +1 -0
  114. package/dist/learning/cli-intent-effects.js +153 -0
  115. package/dist/learning/cli-intent-effects.js.map +1 -0
  116. package/dist/learning/command-adaptation.d.ts +41 -0
  117. package/dist/learning/command-adaptation.d.ts.map +1 -0
  118. package/dist/learning/command-adaptation.js +122 -0
  119. package/dist/learning/command-adaptation.js.map +1 -0
  120. package/dist/learning/consent-picture.d.ts +42 -0
  121. package/dist/learning/consent-picture.d.ts.map +1 -0
  122. package/dist/learning/consent-picture.js +53 -0
  123. package/dist/learning/consent-picture.js.map +1 -0
  124. package/dist/learning/context-budget.d.ts +37 -6
  125. package/dist/learning/context-budget.d.ts.map +1 -1
  126. package/dist/learning/context-budget.js +38 -9
  127. package/dist/learning/context-budget.js.map +1 -1
  128. package/dist/learning/decision-log.d.ts +114 -0
  129. package/dist/learning/decision-log.d.ts.map +1 -0
  130. package/dist/learning/decision-log.js +296 -0
  131. package/dist/learning/decision-log.js.map +1 -0
  132. package/dist/learning/deliverable-class.d.ts.map +1 -1
  133. package/dist/learning/deliverable-class.js +19 -0
  134. package/dist/learning/deliverable-class.js.map +1 -1
  135. package/dist/learning/deliverable-corpus.d.ts +117 -0
  136. package/dist/learning/deliverable-corpus.d.ts.map +1 -0
  137. package/dist/learning/deliverable-corpus.js +176 -0
  138. package/dist/learning/deliverable-corpus.js.map +1 -0
  139. package/dist/learning/error-repair.d.ts +22 -1
  140. package/dist/learning/error-repair.d.ts.map +1 -1
  141. package/dist/learning/error-repair.js +37 -0
  142. package/dist/learning/error-repair.js.map +1 -1
  143. package/dist/learning/exhaustion-report.d.ts +136 -0
  144. package/dist/learning/exhaustion-report.d.ts.map +1 -0
  145. package/dist/learning/exhaustion-report.js +239 -0
  146. package/dist/learning/exhaustion-report.js.map +1 -0
  147. package/dist/learning/failure-bookkeeping.d.ts +16 -0
  148. package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
  149. package/dist/learning/failure-bookkeeping.js +51 -5
  150. package/dist/learning/failure-bookkeeping.js.map +1 -1
  151. package/dist/learning/gate-friction.d.ts +39 -0
  152. package/dist/learning/gate-friction.d.ts.map +1 -0
  153. package/dist/learning/gate-friction.js +91 -0
  154. package/dist/learning/gate-friction.js.map +1 -0
  155. package/dist/learning/harness-narration.d.ts +34 -0
  156. package/dist/learning/harness-narration.d.ts.map +1 -0
  157. package/dist/learning/harness-narration.js +58 -0
  158. package/dist/learning/harness-narration.js.map +1 -0
  159. package/dist/learning/hub-skill-catalog.d.ts.map +1 -1
  160. package/dist/learning/hub-skill-catalog.js +1 -2
  161. package/dist/learning/hub-skill-catalog.js.map +1 -1
  162. package/dist/learning/hybrid-router.d.ts +65 -0
  163. package/dist/learning/hybrid-router.d.ts.map +1 -1
  164. package/dist/learning/hybrid-router.js +186 -0
  165. package/dist/learning/hybrid-router.js.map +1 -1
  166. package/dist/learning/knowledge-base.d.ts +229 -3
  167. package/dist/learning/knowledge-base.d.ts.map +1 -1
  168. package/dist/learning/knowledge-base.js +603 -25
  169. package/dist/learning/knowledge-base.js.map +1 -1
  170. package/dist/learning/knowledge-eval.d.ts +171 -0
  171. package/dist/learning/knowledge-eval.d.ts.map +1 -0
  172. package/dist/learning/knowledge-eval.js +196 -0
  173. package/dist/learning/knowledge-eval.js.map +1 -0
  174. package/dist/learning/knowledge-turn.d.ts +92 -0
  175. package/dist/learning/knowledge-turn.d.ts.map +1 -0
  176. package/dist/learning/knowledge-turn.js +190 -0
  177. package/dist/learning/knowledge-turn.js.map +1 -0
  178. package/dist/learning/learned-commands.d.ts +64 -0
  179. package/dist/learning/learned-commands.d.ts.map +1 -0
  180. package/dist/learning/learned-commands.js +108 -0
  181. package/dist/learning/learned-commands.js.map +1 -0
  182. package/dist/learning/lexical-search.d.ts +50 -0
  183. package/dist/learning/lexical-search.d.ts.map +1 -0
  184. package/dist/learning/lexical-search.js +111 -0
  185. package/dist/learning/lexical-search.js.map +1 -0
  186. package/dist/learning/machine-facts.d.ts +71 -0
  187. package/dist/learning/machine-facts.d.ts.map +1 -0
  188. package/dist/learning/machine-facts.js +164 -0
  189. package/dist/learning/machine-facts.js.map +1 -0
  190. package/dist/learning/markdown-outline.d.ts +73 -0
  191. package/dist/learning/markdown-outline.d.ts.map +1 -0
  192. package/dist/learning/markdown-outline.js +136 -0
  193. package/dist/learning/markdown-outline.js.map +1 -0
  194. package/dist/learning/model-first-router.d.ts +33 -1
  195. package/dist/learning/model-first-router.d.ts.map +1 -1
  196. package/dist/learning/model-first-router.js +123 -9
  197. package/dist/learning/model-first-router.js.map +1 -1
  198. package/dist/learning/model-identity.d.ts +80 -0
  199. package/dist/learning/model-identity.d.ts.map +1 -0
  200. package/dist/learning/model-identity.js +115 -0
  201. package/dist/learning/model-identity.js.map +1 -0
  202. package/dist/learning/model-registry.d.ts +141 -2
  203. package/dist/learning/model-registry.d.ts.map +1 -1
  204. package/dist/learning/model-registry.js +324 -38
  205. package/dist/learning/model-registry.js.map +1 -1
  206. package/dist/learning/model-scoring.d.ts.map +1 -1
  207. package/dist/learning/model-scoring.js +8 -1
  208. package/dist/learning/model-scoring.js.map +1 -1
  209. package/dist/learning/model-selection.d.ts.map +1 -1
  210. package/dist/learning/model-selection.js +41 -0
  211. package/dist/learning/model-selection.js.map +1 -1
  212. package/dist/learning/outcome-observation.d.ts +49 -0
  213. package/dist/learning/outcome-observation.d.ts.map +1 -0
  214. package/dist/learning/outcome-observation.js +95 -0
  215. package/dist/learning/outcome-observation.js.map +1 -0
  216. package/dist/learning/pair-entitlement.d.ts +184 -0
  217. package/dist/learning/pair-entitlement.d.ts.map +1 -0
  218. package/dist/learning/pair-entitlement.js +214 -0
  219. package/dist/learning/pair-entitlement.js.map +1 -0
  220. package/dist/learning/provider-fallback.d.ts +23 -1
  221. package/dist/learning/provider-fallback.d.ts.map +1 -1
  222. package/dist/learning/provider-fallback.js +24 -0
  223. package/dist/learning/provider-fallback.js.map +1 -1
  224. package/dist/learning/reasoning-trace.d.ts +65 -1
  225. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  226. package/dist/learning/reasoning-trace.js +123 -1
  227. package/dist/learning/reasoning-trace.js.map +1 -1
  228. package/dist/learning/requirement-probe.d.ts +55 -0
  229. package/dist/learning/requirement-probe.d.ts.map +1 -0
  230. package/dist/learning/requirement-probe.js +77 -0
  231. package/dist/learning/requirement-probe.js.map +1 -0
  232. package/dist/learning/resilient-call.d.ts +20 -1
  233. package/dist/learning/resilient-call.d.ts.map +1 -1
  234. package/dist/learning/resilient-call.js +42 -4
  235. package/dist/learning/resilient-call.js.map +1 -1
  236. package/dist/learning/response-usability.d.ts +85 -0
  237. package/dist/learning/response-usability.d.ts.map +1 -0
  238. package/dist/learning/response-usability.js +135 -0
  239. package/dist/learning/response-usability.js.map +1 -0
  240. package/dist/learning/router-bandit.d.ts +132 -0
  241. package/dist/learning/router-bandit.d.ts.map +1 -1
  242. package/dist/learning/router-bandit.js +253 -0
  243. package/dist/learning/router-bandit.js.map +1 -1
  244. package/dist/learning/routing-history.d.ts +41 -2
  245. package/dist/learning/routing-history.d.ts.map +1 -1
  246. package/dist/learning/routing-history.js.map +1 -1
  247. package/dist/learning/run-trace.d.ts +21 -0
  248. package/dist/learning/run-trace.d.ts.map +1 -1
  249. package/dist/learning/run-trace.js +38 -0
  250. package/dist/learning/run-trace.js.map +1 -1
  251. package/dist/learning/session-grant.d.ts +75 -0
  252. package/dist/learning/session-grant.d.ts.map +1 -0
  253. package/dist/learning/session-grant.js +112 -0
  254. package/dist/learning/session-grant.js.map +1 -0
  255. package/dist/learning/task-model-continuity.d.ts +73 -0
  256. package/dist/learning/task-model-continuity.d.ts.map +1 -0
  257. package/dist/learning/task-model-continuity.js +87 -0
  258. package/dist/learning/task-model-continuity.js.map +1 -0
  259. package/dist/learning/turn-feedback.d.ts +93 -0
  260. package/dist/learning/turn-feedback.d.ts.map +1 -0
  261. package/dist/learning/turn-feedback.js +127 -0
  262. package/dist/learning/turn-feedback.js.map +1 -0
  263. package/dist/learning/turn-report.d.ts +104 -2
  264. package/dist/learning/turn-report.d.ts.map +1 -1
  265. package/dist/learning/turn-report.js +161 -6
  266. package/dist/learning/turn-report.js.map +1 -1
  267. package/dist/learning/verdict-routing.d.ts +51 -0
  268. package/dist/learning/verdict-routing.d.ts.map +1 -0
  269. package/dist/learning/verdict-routing.js +122 -0
  270. package/dist/learning/verdict-routing.js.map +1 -0
  271. package/dist/mcp/client.d.ts.map +1 -1
  272. package/dist/mcp/client.js +5 -0
  273. package/dist/mcp/client.js.map +1 -1
  274. package/dist/mcp/manager.d.ts +10 -0
  275. package/dist/mcp/manager.d.ts.map +1 -1
  276. package/dist/mcp/manager.js +20 -0
  277. package/dist/mcp/manager.js.map +1 -1
  278. package/dist/mcp/mcp-discovery.d.ts +34 -0
  279. package/dist/mcp/mcp-discovery.d.ts.map +1 -0
  280. package/dist/mcp/mcp-discovery.js +71 -0
  281. package/dist/mcp/mcp-discovery.js.map +1 -0
  282. package/dist/mcp/mcp-schema-cache.d.ts +17 -0
  283. package/dist/mcp/mcp-schema-cache.d.ts.map +1 -1
  284. package/dist/mcp/mcp-schema-cache.js +47 -3
  285. package/dist/mcp/mcp-schema-cache.js.map +1 -1
  286. package/dist/mcp/types.d.ts +28 -0
  287. package/dist/mcp/types.d.ts.map +1 -1
  288. package/dist/mcp/types.js.map +1 -1
  289. package/dist/parity/drivers.d.ts.map +1 -1
  290. package/dist/parity/drivers.js +3 -0
  291. package/dist/parity/drivers.js.map +1 -1
  292. package/dist/parity/observation.d.ts +12 -0
  293. package/dist/parity/observation.d.ts.map +1 -1
  294. package/dist/parity/observation.js +14 -0
  295. package/dist/parity/observation.js.map +1 -1
  296. package/dist/tools/ask-user.d.ts.map +1 -1
  297. package/dist/tools/ask-user.js +4 -0
  298. package/dist/tools/ask-user.js.map +1 -1
  299. package/dist/tools/capability-registry.d.ts +150 -0
  300. package/dist/tools/capability-registry.d.ts.map +1 -0
  301. package/dist/tools/capability-registry.js +400 -0
  302. package/dist/tools/capability-registry.js.map +1 -0
  303. package/dist/tools/child-agent-runtime.d.ts.map +1 -1
  304. package/dist/tools/child-agent-runtime.js +19 -5
  305. package/dist/tools/child-agent-runtime.js.map +1 -1
  306. package/dist/tools/coding-tools.d.ts +17 -5
  307. package/dist/tools/coding-tools.d.ts.map +1 -1
  308. package/dist/tools/coding-tools.js +80 -11
  309. package/dist/tools/coding-tools.js.map +1 -1
  310. package/dist/tools/command-memo.d.ts +116 -0
  311. package/dist/tools/command-memo.d.ts.map +1 -0
  312. package/dist/tools/command-memo.js +202 -0
  313. package/dist/tools/command-memo.js.map +1 -0
  314. package/dist/tools/git-tool.d.ts.map +1 -1
  315. package/dist/tools/git-tool.js +13 -3
  316. package/dist/tools/git-tool.js.map +1 -1
  317. package/dist/tools/harness-directive.d.ts +42 -0
  318. package/dist/tools/harness-directive.d.ts.map +1 -0
  319. package/dist/tools/harness-directive.js +45 -0
  320. package/dist/tools/harness-directive.js.map +1 -0
  321. package/dist/tools/loop-skill-hint.d.ts +74 -174
  322. package/dist/tools/loop-skill-hint.d.ts.map +1 -1
  323. package/dist/tools/loop-skill-hint.js +110 -536
  324. package/dist/tools/loop-skill-hint.js.map +1 -1
  325. package/dist/tools/mcp-client-tool.d.ts +2 -0
  326. package/dist/tools/mcp-client-tool.d.ts.map +1 -1
  327. package/dist/tools/mcp-client-tool.js +3 -0
  328. package/dist/tools/mcp-client-tool.js.map +1 -1
  329. package/dist/tools/modality/shared.d.ts +1 -4
  330. package/dist/tools/modality/shared.d.ts.map +1 -1
  331. package/dist/tools/modality/shared.js +7 -22
  332. package/dist/tools/modality/shared.js.map +1 -1
  333. package/dist/tools/plan-store.d.ts +20 -2
  334. package/dist/tools/plan-store.d.ts.map +1 -1
  335. package/dist/tools/plan-store.js +51 -7
  336. package/dist/tools/plan-store.js.map +1 -1
  337. package/dist/tools/registry.d.ts +76 -3
  338. package/dist/tools/registry.d.ts.map +1 -1
  339. package/dist/tools/registry.js +486 -26
  340. package/dist/tools/registry.js.map +1 -1
  341. package/dist/tools/remediation-ladder.d.ts.map +1 -1
  342. package/dist/tools/remediation-ladder.js +8 -0
  343. package/dist/tools/remediation-ladder.js.map +1 -1
  344. package/dist/tools/run-cli.d.ts.map +1 -1
  345. package/dist/tools/run-cli.js +29 -4
  346. package/dist/tools/run-cli.js.map +1 -1
  347. package/dist/tools/run-terminal.d.ts +11 -0
  348. package/dist/tools/run-terminal.d.ts.map +1 -1
  349. package/dist/tools/run-terminal.js +265 -10
  350. package/dist/tools/run-terminal.js.map +1 -1
  351. package/dist/tools/tool-loop.d.ts +321 -13
  352. package/dist/tools/tool-loop.d.ts.map +1 -1
  353. package/dist/tools/tool-loop.js +867 -66
  354. package/dist/tools/tool-loop.js.map +1 -1
  355. package/dist/utils/atomic-store.d.ts +53 -0
  356. package/dist/utils/atomic-store.d.ts.map +1 -0
  357. package/dist/utils/atomic-store.js +178 -0
  358. package/dist/utils/atomic-store.js.map +1 -0
  359. package/dist/utils/binary-probe.d.ts +25 -0
  360. package/dist/utils/binary-probe.d.ts.map +1 -0
  361. package/dist/utils/binary-probe.js +48 -0
  362. package/dist/utils/binary-probe.js.map +1 -0
  363. package/dist/utils/workspace-path.d.ts +50 -0
  364. package/dist/utils/workspace-path.d.ts.map +1 -0
  365. package/dist/utils/workspace-path.js +86 -0
  366. package/dist/utils/workspace-path.js.map +1 -0
  367. package/dist/web-dashboard/chat-console.d.ts +24 -0
  368. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  369. package/dist/web-dashboard/chat-console.js +38 -0
  370. package/dist/web-dashboard/chat-console.js.map +1 -1
  371. package/dist/web-dashboard/project-context.d.ts +27 -2
  372. package/dist/web-dashboard/project-context.d.ts.map +1 -1
  373. package/dist/web-dashboard/project-context.js +32 -2
  374. package/dist/web-dashboard/project-context.js.map +1 -1
  375. package/dist/web-dashboard/server.d.ts +11 -0
  376. package/dist/web-dashboard/server.d.ts.map +1 -1
  377. package/dist/web-dashboard/server.js +362 -11
  378. package/dist/web-dashboard/server.js.map +1 -1
  379. package/dist/web-dashboard/src/types.d.ts +170 -1
  380. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  381. package/dist/web-dashboard/workspace-guard.d.ts +11 -2
  382. package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
  383. package/dist/web-dashboard/workspace-guard.js +24 -12
  384. package/dist/web-dashboard/workspace-guard.js.map +1 -1
  385. package/dist/web-dashboard/workspace-resolution.d.ts +87 -0
  386. package/dist/web-dashboard/workspace-resolution.d.ts.map +1 -0
  387. package/dist/web-dashboard/workspace-resolution.js +105 -0
  388. package/dist/web-dashboard/workspace-resolution.js.map +1 -0
  389. package/package.json +1 -1
  390. package/src/web-dashboard/public/assets/index-zjbdJnO-.js +210 -0
  391. package/src/web-dashboard/public/assets/index-zjbdJnO-.js.map +1 -0
  392. package/src/web-dashboard/public/index.html +1 -1
  393. package/dist/agents/nvda-addon.d.ts +0 -14
  394. package/dist/agents/nvda-addon.js +0 -52
  395. package/dist/forwarded.d.ts +0 -2
  396. package/dist/forwarded.js +0 -2
  397. package/src/web-dashboard/public/assets/index-DhiuR4S2.js +0 -210
  398. package/src/web-dashboard/public/assets/index-DhiuR4S2.js.map +0 -1
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Machine facts — what THIS machine is, detected once per run.
3
+ *
4
+ * WHY. The agent reasons about "how do I do X here" constantly, and the honest
5
+ * inputs to that reasoning are facts about the host: which OS and release, which
6
+ * architecture, which shell, and — the one that actually decides the command —
7
+ * WHICH PACKAGE MANAGERS ARE INSTALLED. A model that assumes `apt` on a machine
8
+ * that only has `dnf`, or `brew` on Windows, produces a command that cannot run.
9
+ * The harness should hand it the facts once rather than let it guess per turn.
10
+ *
11
+ * THE ASYMMETRY WITH THE PER-OS COMMAND MAP (Bundle 47). That map declares the
12
+ * command for the two verbs where the OS DETERMINES it and a wrong guess is
13
+ * expensive. This module is the opposite side: it detects what is PRESENT on the
14
+ * host, from the same `which`/`where` resolver the shell uses (`binary-probe`).
15
+ * Presence is a fact, not a declaration, so it cannot drift — and it is the input
16
+ * that lets the model derive a command for anything the map does not cover,
17
+ * instead of the map having to enumerate the world.
18
+ *
19
+ * DETECTED ONCE. The whole result is memoized for the process (OS and installed
20
+ * tools cannot change mid-run), and `binary-probe` is memoized a second time per
21
+ * name, so the ~25 lookups are paid once. `resetMachineFactsCache()` exists for
22
+ * test isolation.
23
+ *
24
+ * INPUTS ARE INJECTABLE. A test can pass a platform and a fake `binary` probe;
25
+ * the real call uses `process.platform`, `process.env` and `binaryOnPath`.
26
+ */
27
+ import * as os from 'node:os';
28
+ import { existsSync, readFileSync } from 'node:fs';
29
+ import { binaryOnPath } from '../utils/binary-probe.js';
30
+ /**
31
+ * The catalog we probe, grouped by ecosystem. Not a per-OS mapping — a union,
32
+ * probed for presence on whatever host this is, because presence is the fact.
33
+ * The ORDER decides suggestion order: the OS-native managers first, then the
34
+ * JS/Python/build ecosystems.
35
+ */
36
+ const NATIVE_BY_OS = {
37
+ windows: ['winget', 'choco', 'scoop'],
38
+ macos: ['brew', 'port'],
39
+ linux: ['apt', 'apt-get', 'dnf', 'yum', 'pacman', 'zypper', 'apk', 'snap', 'flatpak'],
40
+ other: [],
41
+ };
42
+ const ECOSYSTEM_MANAGERS = [
43
+ // JS
44
+ 'bun', 'pnpm', 'yarn', 'npm',
45
+ // Python
46
+ 'uv', 'poetry', 'pip3', 'pip',
47
+ // Build / language
48
+ 'cargo', 'go', 'gem', 'composer', 'dotnet',
49
+ ];
50
+ let cached = null;
51
+ /** Clear the memo (test isolation). */
52
+ export function resetMachineFactsCache() {
53
+ cached = null;
54
+ }
55
+ /** Best-effort Linux distro from /etc/os-release. Never throws. */
56
+ function readLinuxDistro() {
57
+ try {
58
+ if (!existsSync('/etc/os-release'))
59
+ return { id: null, pretty: null };
60
+ const text = readFileSync('/etc/os-release', 'utf-8');
61
+ const id = /^ID="?([^"\n]+)"?/m.exec(text)?.[1]?.trim() ?? null;
62
+ const pretty = /^PRETTY_NAME="?([^"\n]+)"?/m.exec(text)?.[1]?.trim() ?? null;
63
+ return { id, pretty };
64
+ }
65
+ catch {
66
+ return { id: null, pretty: null };
67
+ }
68
+ }
69
+ function osLabel(platform) {
70
+ if (platform === 'win32')
71
+ return { os: 'windows', osName: `Windows ${os.release()}`, distro: null };
72
+ if (platform === 'darwin')
73
+ return { os: 'macos', osName: `macOS (Darwin ${os.release()})`, distro: null };
74
+ if (platform === 'linux') {
75
+ const d = readLinuxDistro();
76
+ return { os: 'linux', osName: d.pretty ?? `Linux ${os.release()}`, distro: d.id };
77
+ }
78
+ return { os: 'other', osName: `${os.type()} ${os.release()}`, distro: null };
79
+ }
80
+ function resolveShell(platform, env) {
81
+ const shellPath = platform === 'win32'
82
+ ? env.ComSpec ?? env.COMSPEC ?? null
83
+ : env.SHELL ?? null;
84
+ if (!shellPath)
85
+ return { shell: null, shellName: null };
86
+ // Split on BOTH separators: a Windows path must basename correctly even when
87
+ // this code runs on POSIX (the platform is injectable, and `dirname`/`basename`
88
+ // follow the HOST's rules, not the injected platform's).
89
+ const base = shellPath.split(/[\\/]/).pop() ?? shellPath;
90
+ return { shell: shellPath, shellName: base.replace(/\.exe$/i, '') };
91
+ }
92
+ /**
93
+ * Detect this machine's facts. Memoized for the process when called with no
94
+ * overrides (the real path); an override call (a test) always computes fresh.
95
+ */
96
+ export function detectMachineFacts(probe = {}) {
97
+ if (!probe.platform && !probe.binary && !probe.env && cached)
98
+ return cached;
99
+ const platform = probe.platform ?? process.platform;
100
+ const env = probe.env ?? process.env;
101
+ const isBinary = probe.binary ?? binaryOnPath;
102
+ const { os: osNameKey, osName, distro } = osLabel(platform);
103
+ const { shell, shellName } = resolveShell(platform, env);
104
+ const ordered = [...NATIVE_BY_OS[osNameKey], ...ECOSYSTEM_MANAGERS];
105
+ const seen = new Set();
106
+ const packageManagers = [];
107
+ for (const name of ordered) {
108
+ if (seen.has(name))
109
+ continue;
110
+ seen.add(name);
111
+ try {
112
+ if (isBinary(name))
113
+ packageManagers.push(name);
114
+ }
115
+ catch {
116
+ // A probe failure is "unknown", and unknown is not "present".
117
+ }
118
+ }
119
+ const facts = {
120
+ detectedAt: Date.now(),
121
+ platform,
122
+ os: osNameKey,
123
+ osName,
124
+ distro,
125
+ arch: os.arch(),
126
+ shell,
127
+ shellName,
128
+ packageManagers,
129
+ };
130
+ if (!probe.platform && !probe.binary && !probe.env)
131
+ cached = facts;
132
+ return facts;
133
+ }
134
+ /** One bounded line the model reads — the machine, stated, not assumed. */
135
+ export function buildMachineFactsBlock(facts = detectMachineFacts()) {
136
+ const present = facts.packageManagers.length > 0 ? facts.packageManagers.join(', ') : '(none detected)';
137
+ return [
138
+ '',
139
+ '## This machine',
140
+ `OS: ${facts.osName} · arch ${facts.arch} · shell ${facts.shellName ?? 'unknown'}`,
141
+ `Package managers / toolchains present: ${present}`,
142
+ 'Choose commands for THIS machine from these facts. A tool not listed is not installed — do not assume one, and do not hardcode the OS it "usually" is.',
143
+ ].join('\n');
144
+ }
145
+ /**
146
+ * The machine facts as a discoverable capability, so the SAME facts the prompt
147
+ * carries are reachable through a capability search (and so readiness can reason
148
+ * about what is present). Read-only, no requirements, no grant.
149
+ */
150
+ export function machineFactsCapability(facts = detectMachineFacts()) {
151
+ const pms = facts.packageManagers;
152
+ return {
153
+ id: 'action:machine-facts',
154
+ kind: 'action',
155
+ ref: 'machine-facts',
156
+ name: 'This machine',
157
+ oneLiner: `${facts.osName} · arch ${facts.arch} · shell ${facts.shellName ?? 'unknown'} · present: ${pms.length > 0 ? pms.join(', ') : 'none detected'}`,
158
+ effectClass: 'read',
159
+ reversible: true,
160
+ requires: {},
161
+ tags: ['machine', 'environment', 'os', 'platform', 'arch', facts.os, facts.arch, ...pms],
162
+ };
163
+ }
164
+ //# sourceMappingURL=machine-facts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"machine-facts.js","sourceRoot":"","sources":["../../src/learning/machine-facts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Markdown outline (`src/learning/markdown-outline.ts`) — heading structure for
3
+ * document retrieval.
4
+ *
5
+ * WHY THIS EXISTS. Paragraph chunking treats a design document as a bag of
6
+ * paragraphs, which loses the one thing that makes a document navigable: the
7
+ * section a passage belongs to. A passage inside "Token refresh > Failure modes"
8
+ * is a different claim from the same words appearing in an unrelated appendix,
9
+ * and a reader asking "what does the spec say about token refresh?" needs the
10
+ * section, not a floating 512-token block.
11
+ *
12
+ * Two consumers, one parse:
13
+ * - CHUNKING tags every chunk with its heading path, so retrieval can rank on
14
+ * structure and a citation can name the section;
15
+ * - the whole-document read (`readKnowledgeDocument`) walks the same outline to
16
+ * serve one section verbatim.
17
+ *
18
+ * THE BREADCRUMB TRICK. A chunk is EMBEDDED with its heading path prepended but
19
+ * STORED without it. The path is context that belongs in the vector (a passage
20
+ * under "Refunds" should answer refund questions even when it never repeats the
21
+ * word), but it is not part of the passage, and storing it would corrupt both the
22
+ * citation and any faithful quote of the document.
23
+ *
24
+ * WHAT THIS DOES NOT DO. Setext headings (`Title\n=====`) and headings implied by
25
+ * layout in extracted PDF text are not detected — there is no reliable signal for
26
+ * either, and guessing would invent structure the document does not have. Text
27
+ * without `#` headings yields exactly one section and chunks exactly as before,
28
+ * so a non-Markdown document is unaffected.
29
+ */
30
+ export interface OutlineSection {
31
+ /** Heading text alone, or `(preamble)` for content before the first heading. */
32
+ title: string;
33
+ /**
34
+ * The full ancestor chain, ` > `-joined, EXCLUDING the section's own heading —
35
+ * e.g. `Auth Design > Token refresh` for a section titled `Failure modes`.
36
+ * Empty for a preamble or an unheaded document.
37
+ */
38
+ headingPath: string;
39
+ /** Heading depth (1–6), or 0 for a preamble. */
40
+ level: number;
41
+ /** The section's text, heading line included when it has one. */
42
+ text: string;
43
+ }
44
+ /**
45
+ * Split Markdown into heading-delimited sections, tracking the ancestor chain.
46
+ * Deterministic and total: every character of the input lands in exactly one
47
+ * section, and a document with no headings comes back as one section.
48
+ */
49
+ export declare function parseMarkdownOutline(text: string): OutlineSection[];
50
+ export interface StructuredChunk {
51
+ /** `<label>#<i>` — sequential across the WHOLE document, so re-ingest overwrites. */
52
+ id: string;
53
+ chunkIndex: number;
54
+ /** The passage as it appears in the document — what gets stored and quoted. */
55
+ text: string;
56
+ /** What gets EMBEDDED: the heading breadcrumb, then the passage. */
57
+ embedText: string;
58
+ /** Ancestor chain, ` > `-joined (may be empty). */
59
+ headingPath: string;
60
+ /** The section's own title, when the chunk came from a titled section. */
61
+ title: string;
62
+ tokenCount: number;
63
+ }
64
+ /**
65
+ * Chunk a document along its heading structure.
66
+ *
67
+ * Each section is chunked on its own (so a passage never straddles two headings),
68
+ * and every chunk carries the section's heading path. Numbering is global and
69
+ * sequential because the ids are the overwrite/delete keys: a per-section index
70
+ * would collide across sections and break the retired-tail delete on re-ingest.
71
+ */
72
+ export declare function chunkMarkdown(text: string, label: string, chunkTokens?: number, overlapTokens?: number): StructuredChunk[];
73
+ //# sourceMappingURL=markdown-outline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-outline.d.ts","sourceRoot":"","sources":["../../src/learning/markdown-outline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAOH,MAAM,WAAW,cAAc;IAC7B,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,CA+CnE;AAED,MAAM,WAAW,eAAe;IAC9B,qFAAqF;IACrF,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAUD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,GAAE,MAA6B,EAC1C,aAAa,GAAE,MAA+B,GAC7C,eAAe,EAAE,CAuCnB"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Markdown outline (`src/learning/markdown-outline.ts`) — heading structure for
3
+ * document retrieval.
4
+ *
5
+ * WHY THIS EXISTS. Paragraph chunking treats a design document as a bag of
6
+ * paragraphs, which loses the one thing that makes a document navigable: the
7
+ * section a passage belongs to. A passage inside "Token refresh > Failure modes"
8
+ * is a different claim from the same words appearing in an unrelated appendix,
9
+ * and a reader asking "what does the spec say about token refresh?" needs the
10
+ * section, not a floating 512-token block.
11
+ *
12
+ * Two consumers, one parse:
13
+ * - CHUNKING tags every chunk with its heading path, so retrieval can rank on
14
+ * structure and a citation can name the section;
15
+ * - the whole-document read (`readKnowledgeDocument`) walks the same outline to
16
+ * serve one section verbatim.
17
+ *
18
+ * THE BREADCRUMB TRICK. A chunk is EMBEDDED with its heading path prepended but
19
+ * STORED without it. The path is context that belongs in the vector (a passage
20
+ * under "Refunds" should answer refund questions even when it never repeats the
21
+ * word), but it is not part of the passage, and storing it would corrupt both the
22
+ * citation and any faithful quote of the document.
23
+ *
24
+ * WHAT THIS DOES NOT DO. Setext headings (`Title\n=====`) and headings implied by
25
+ * layout in extracted PDF text are not detected — there is no reliable signal for
26
+ * either, and guessing would invent structure the document does not have. Text
27
+ * without `#` headings yields exactly one section and chunks exactly as before,
28
+ * so a non-Markdown document is unaffected.
29
+ */
30
+ import { chunkText, DEFAULT_CHUNK_TOKENS, DEFAULT_OVERLAP_TOKENS } from './retrieval.js';
31
+ /** `## Heading`, optional trailing hashes. */
32
+ const HEADING_RE = /^(#{1,6})\s+(.+?)\s*#*\s*$/;
33
+ /**
34
+ * Split Markdown into heading-delimited sections, tracking the ancestor chain.
35
+ * Deterministic and total: every character of the input lands in exactly one
36
+ * section, and a document with no headings comes back as one section.
37
+ */
38
+ export function parseMarkdownOutline(text) {
39
+ const lines = text.split('\n');
40
+ const sections = [];
41
+ /** Ancestors by level; index = level - 1. */
42
+ const trail = [];
43
+ // The section currently being accumulated. It starts as the preamble, which
44
+ // only survives if any content actually precedes the first heading.
45
+ let title = '(preamble)';
46
+ let headingPath = '';
47
+ let level = 0;
48
+ let buffer = [];
49
+ const flush = () => {
50
+ const body = buffer.join('\n');
51
+ // A preamble with no content is not a section; every later section is, even
52
+ // an empty one (a heading with nothing under it is still a section).
53
+ if (sections.length > 0 || body.trim()) {
54
+ sections.push({ title, headingPath, level, text: body });
55
+ }
56
+ buffer = [];
57
+ };
58
+ for (const line of lines) {
59
+ const match = HEADING_RE.exec(line);
60
+ if (!match) {
61
+ buffer.push(line);
62
+ continue;
63
+ }
64
+ flush();
65
+ level = match[1].length;
66
+ title = match[2].trim();
67
+ // Everything at or below this level is no longer an ancestor.
68
+ trail.length = Math.max(0, level - 1);
69
+ headingPath = trail.filter(Boolean).join(' > ');
70
+ trail[level - 1] = title;
71
+ buffer = [line];
72
+ }
73
+ flush();
74
+ // A document with no headings at all is not "all preamble" — it simply has no
75
+ // structure, and saying so is more honest than implying something came before
76
+ // a heading that does not exist.
77
+ if (sections.length === 1 && sections[0].level === 0) {
78
+ return [{ ...sections[0], title: '(document)' }];
79
+ }
80
+ return sections.length > 0 ? sections : [{ title: '(document)', headingPath: '', level: 0, text }];
81
+ }
82
+ /** A chunk's heading label: the section title, prefixed by its ancestors. */
83
+ function crumb(section) {
84
+ if (!section.title || section.title === '(preamble)' || section.title === '(document)') {
85
+ return section.headingPath;
86
+ }
87
+ return section.headingPath ? `${section.headingPath} > ${section.title}` : section.title;
88
+ }
89
+ /**
90
+ * Chunk a document along its heading structure.
91
+ *
92
+ * Each section is chunked on its own (so a passage never straddles two headings),
93
+ * and every chunk carries the section's heading path. Numbering is global and
94
+ * sequential because the ids are the overwrite/delete keys: a per-section index
95
+ * would collide across sections and break the retired-tail delete on re-ingest.
96
+ */
97
+ export function chunkMarkdown(text, label, chunkTokens = DEFAULT_CHUNK_TOKENS, overlapTokens = DEFAULT_OVERLAP_TOKENS) {
98
+ const sections = parseMarkdownOutline(text);
99
+ const chunks = [];
100
+ sections.forEach((section, sectionIndex) => {
101
+ const headingLabel = crumb(section);
102
+ const body = section.text.trim();
103
+ if (!body)
104
+ return;
105
+ // Per-section labels keep `chunkText`'s ids unique within the call; they are
106
+ // replaced with the document-wide index below.
107
+ const parts = chunkText(body, `${label}~s${sectionIndex}`, chunkTokens, overlapTokens);
108
+ for (const part of parts) {
109
+ const chunkIndex = chunks.length;
110
+ chunks.push({
111
+ id: `${label}#${chunkIndex}`,
112
+ chunkIndex,
113
+ text: part.text,
114
+ embedText: headingLabel ? `${headingLabel}\n\n${part.text}` : part.text,
115
+ headingPath: headingLabel,
116
+ title: section.title,
117
+ tokenCount: part.tokenCount,
118
+ });
119
+ }
120
+ });
121
+ // An empty document still needs its one (empty) chunk, so a re-ingest of a
122
+ // blanked file deletes the previous content rather than leaving the tail.
123
+ if (chunks.length === 0) {
124
+ chunks.push({
125
+ id: `${label}#0`,
126
+ chunkIndex: 0,
127
+ text: '',
128
+ embedText: '',
129
+ headingPath: '',
130
+ title: '(empty)',
131
+ tokenCount: 0,
132
+ });
133
+ }
134
+ return chunks;
135
+ }
136
+ //# sourceMappingURL=markdown-outline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-outline.js","sourceRoot":"","sources":["../../src/learning/markdown-outline.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@
16
16
  * then picked a model within the winning provider.
17
17
  */
18
18
  import { type ModelRegistryEntry } from './model-registry.js';
19
+ import { type PairEntitlement } from './pair-entitlement.js';
19
20
  import { type CatalogProviderEntry } from '../inference/provider-catalog.js';
20
21
  import { type ComplexityLevel } from './hybrid-router.js';
21
22
  import type { ConfigManager } from '../config/manager.js';
@@ -46,6 +47,13 @@ export interface ModelCandidate {
46
47
  };
47
48
  /** Human-readable explanation. */
48
49
  reason: string;
50
+ /**
51
+ * Whether the router MAY call this pair — read from this pair's OWN registry
52
+ * row (see `learning/pair-entitlement.ts`). Scored dimensions rank a model;
53
+ * this one says whether the call can happen at all. Kept on the candidate so
54
+ * the pool can be ordered by it and so `model explain` can print it.
55
+ */
56
+ entitlement?: PairEntitlement;
49
57
  /** Registry entry for additional metadata. */
50
58
  entry?: ModelRegistryEntry;
51
59
  /** Catalog entry for pricing/context. */
@@ -63,6 +71,30 @@ export interface TaskRequirements {
63
71
  * Estimate task requirements from description and complexity.
64
72
  */
65
73
  export declare function estimateTaskRequirements(taskDescription: string, complexity: ComplexityLevel, estimatedInputTokens?: number): TaskRequirements;
74
+ /**
75
+ * P6 (fix_model_routing) — POOL HYGIENE: could this provider really serve this
76
+ * model id?
77
+ *
78
+ * The registry can hold pairs that are syntactically fine and physically
79
+ * impossible, and a `verified` status on one of them is worse than useless — it
80
+ * spends a fallback slot, a round trip, and (as an "eligible model") credibility
81
+ * on a call that cannot succeed. Observed on disk: `gemini/qwen2.5:0.5b` and
82
+ * `groq/wire-stub-model` marked verified.
83
+ *
84
+ * Deliberately CONSERVATIVE — only two rules, both of which are decidable from
85
+ * the id alone:
86
+ *
87
+ * 1. An Ollama-style TAGGED id (`name:tag`) is a LOCAL runner's naming
88
+ * scheme. A hosted provider does not serve `qwen2.5:0.5b`; the `:tag` form
89
+ * belongs to the local-ops providers (see KEYLESS_PROVIDERS).
90
+ * 2. Stub/fixture ids (`wire-stub-model`, `test-…`, `…-stub`) come from test
91
+ * harnesses and must never be routed to.
92
+ *
93
+ * Anything needing a catalog to adjudicate (a vendor that does not serve a
94
+ * family) is NOT guessed at here: a wrong exclusion silently removes a working
95
+ * model, which is the more expensive mistake.
96
+ */
97
+ export declare function isPairPlausible(provider: string, model: string): boolean;
66
98
  /**
67
99
  * Build the full model candidate list across all providers.
68
100
  * This is the core of model-first routing: instead of scoring providers,
@@ -87,7 +119,7 @@ export declare function pickBestModelCandidate(taskDescription: string, complexi
87
119
  * pairs + non-chat models excluded) — the report can never disagree with what
88
120
  * routing would actually consider.
89
121
  */
90
- export declare function countEligibleModels(allowedProviders?: string[]): {
122
+ export declare function countEligibleModels(allowedProviders?: string[], configManager?: ConfigManager): {
91
123
  models: number;
92
124
  providers: number;
93
125
  };
@@ -1 +1 @@
1
- {"version":3,"file":"model-first-router.d.ts","sourceRoot":"","sources":["../../src/learning/model-first-router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-first-router.d.ts","sourceRoot":"","sources":["../../src/learning/model-first-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAoB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,EAA+C,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAsB,KAAK,oBAAoB,EAAwB,MAAM,kCAAkC,CAAC;AACvH,OAAO,EAAkC,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAK1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI1D,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,UAAU,EAAE;QACV,iDAAiD;QACjD,aAAa,EAAE,MAAM,CAAC;QACtB,yCAAyC;QACzC,SAAS,EAAE,MAAM,CAAC;QAClB,yCAAyC;QACzC,aAAa,EAAE,MAAM,CAAC;QACtB,gDAAgD;QAChD,MAAM,EAAE,MAAM,CAAC;QACf,0DAA0D;QAC1D,iBAAiB,EAAE,MAAM,CAAC;QAC1B,kCAAkC;QAClC,aAAa,EAAE,MAAM,CAAC;QACtB,iCAAiC;QACjC,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf;;;;;OAKG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,8CAA8C;IAC9C,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,yCAAyC;IACzC,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAED,6DAA6D;AAC7D,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACzC,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAID;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,eAAe,EAC3B,oBAAoB,CAAC,EAAE,MAAM,GAC5B,gBAAgB,CAwClB;AA+JD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAWxE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,eAAe,EAC3B,aAAa,CAAC,EAAE,aAAa,EAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAC1B,cAAc,EAAE,CAuIlB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,eAAe,EAC3B,aAAa,CAAC,EAAE,aAAa,EAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAC1B,cAAc,GAAG,SAAS,CAG5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAC3B,aAAa,CAAC,EAAE,aAAa,GAC5B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAiBvC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,eAAe,EAC3B,CAAC,GAAE,MAAW,EACd,aAAa,CAAC,EAAE,aAAa,EAC7B,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAC1B,cAAc,EAAE,CAGlB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,cAAc,EAC7B,aAAa,EAAE,cAAc,EAAE,GAC9B,cAAc,EAAE,CAgBlB;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,CAAC;AAEjE;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,cAAc,GAAG,cAAc,CAOtE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAgBvE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,cAAc,EAC7B,aAAa,EAAE,cAAc,EAAE,GAC9B,YAAY,EAAE,CA2GhB;AAED,oCAAoC;AACpC,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,GAAG,OAAO,GAAG,WAAW,CAAC;IACvF,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B"}