agent-nuvira 3.3.12 → 3.3.14

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 (458) 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/agents/reasoner.d.ts.map +1 -1
  6. package/dist/agents/agents/reasoner.js +13 -0
  7. package/dist/agents/agents/reasoner.js.map +1 -1
  8. package/dist/agents/orchestrator.d.ts +31 -0
  9. package/dist/agents/orchestrator.d.ts.map +1 -1
  10. package/dist/agents/orchestrator.js +103 -135
  11. package/dist/agents/orchestrator.js.map +1 -1
  12. package/dist/cli/chat.d.ts +89 -0
  13. package/dist/cli/chat.d.ts.map +1 -1
  14. package/dist/cli/chat.js +798 -39
  15. package/dist/cli/chat.js.map +1 -1
  16. package/dist/cli/cli-program.d.ts.map +1 -1
  17. package/dist/cli/cli-program.js +20 -0
  18. package/dist/cli/cli-program.js.map +1 -1
  19. package/dist/cli/config.d.ts +12 -0
  20. package/dist/cli/config.d.ts.map +1 -1
  21. package/dist/cli/config.js +107 -3
  22. package/dist/cli/config.js.map +1 -1
  23. package/dist/cli/decisions.d.ts +28 -0
  24. package/dist/cli/decisions.d.ts.map +1 -0
  25. package/dist/cli/decisions.js +140 -0
  26. package/dist/cli/decisions.js.map +1 -0
  27. package/dist/cli/doctor.d.ts +6 -0
  28. package/dist/cli/doctor.d.ts.map +1 -1
  29. package/dist/cli/doctor.js +46 -0
  30. package/dist/cli/doctor.js.map +1 -1
  31. package/dist/cli/execute.d.ts.map +1 -1
  32. package/dist/cli/execute.js +6 -0
  33. package/dist/cli/execute.js.map +1 -1
  34. package/dist/cli/failover-runner.d.ts.map +1 -1
  35. package/dist/cli/failover-runner.js +19 -1
  36. package/dist/cli/failover-runner.js.map +1 -1
  37. package/dist/cli/feedback.d.ts.map +1 -1
  38. package/dist/cli/feedback.js +5 -1
  39. package/dist/cli/feedback.js.map +1 -1
  40. package/dist/cli/hooks.d.ts +30 -0
  41. package/dist/cli/hooks.d.ts.map +1 -0
  42. package/dist/cli/hooks.js +224 -0
  43. package/dist/cli/hooks.js.map +1 -0
  44. package/dist/cli/knowledge.d.ts +31 -0
  45. package/dist/cli/knowledge.d.ts.map +1 -0
  46. package/dist/cli/knowledge.js +223 -0
  47. package/dist/cli/knowledge.js.map +1 -0
  48. package/dist/cli/loop-executor.d.ts.map +1 -1
  49. package/dist/cli/loop-executor.js +92 -18
  50. package/dist/cli/loop-executor.js.map +1 -1
  51. package/dist/cli/model.d.ts +20 -0
  52. package/dist/cli/model.d.ts.map +1 -1
  53. package/dist/cli/model.js +294 -14
  54. package/dist/cli/model.js.map +1 -1
  55. package/dist/cli/omniroute-control.d.ts +88 -0
  56. package/dist/cli/omniroute-control.d.ts.map +1 -0
  57. package/dist/cli/omniroute-control.js +179 -0
  58. package/dist/cli/omniroute-control.js.map +1 -0
  59. package/dist/cli/omniroute.d.ts +21 -0
  60. package/dist/cli/omniroute.d.ts.map +1 -0
  61. package/dist/cli/omniroute.js +67 -0
  62. package/dist/cli/omniroute.js.map +1 -0
  63. package/dist/cli/rate.d.ts +78 -0
  64. package/dist/cli/rate.d.ts.map +1 -0
  65. package/dist/cli/rate.js +294 -0
  66. package/dist/cli/rate.js.map +1 -0
  67. package/dist/config/process-env.d.ts.map +1 -1
  68. package/dist/config/process-env.js +10 -0
  69. package/dist/config/process-env.js.map +1 -1
  70. package/dist/config/types.d.ts +8 -0
  71. package/dist/config/types.d.ts.map +1 -1
  72. package/dist/context/history.d.ts +21 -0
  73. package/dist/context/history.d.ts.map +1 -1
  74. package/dist/context/history.js +50 -0
  75. package/dist/context/history.js.map +1 -1
  76. package/dist/enterprise/vault.d.ts.map +1 -1
  77. package/dist/enterprise/vault.js +5 -21
  78. package/dist/enterprise/vault.js.map +1 -1
  79. package/dist/gateway/hook-contract.d.ts +206 -0
  80. package/dist/gateway/hook-contract.d.ts.map +1 -0
  81. package/dist/gateway/hook-contract.js +449 -0
  82. package/dist/gateway/hook-contract.js.map +1 -0
  83. package/dist/gateway/hooks.d.ts.map +1 -1
  84. package/dist/gateway/hooks.js +14 -0
  85. package/dist/gateway/hooks.js.map +1 -1
  86. package/dist/inference/gemini-adapter.d.ts.map +1 -1
  87. package/dist/inference/gemini-adapter.js +4 -0
  88. package/dist/inference/gemini-adapter.js.map +1 -1
  89. package/dist/inference/interface.d.ts +54 -0
  90. package/dist/inference/interface.d.ts.map +1 -1
  91. package/dist/inference/model-id-validation.d.ts +57 -0
  92. package/dist/inference/model-id-validation.d.ts.map +1 -0
  93. package/dist/inference/model-id-validation.js +127 -0
  94. package/dist/inference/model-id-validation.js.map +1 -0
  95. package/dist/inference/native-tools.d.ts +16 -1
  96. package/dist/inference/native-tools.d.ts.map +1 -1
  97. package/dist/inference/native-tools.js +34 -10
  98. package/dist/inference/native-tools.js.map +1 -1
  99. package/dist/inference/openai-compat-adapter.d.ts.map +1 -1
  100. package/dist/inference/openai-compat-adapter.js +12 -1
  101. package/dist/inference/openai-compat-adapter.js.map +1 -1
  102. package/dist/inference/provider-catalog.d.ts +11 -0
  103. package/dist/inference/provider-catalog.d.ts.map +1 -1
  104. package/dist/inference/provider-catalog.js +80 -0
  105. package/dist/inference/provider-catalog.js.map +1 -1
  106. package/dist/inference/route-resolver.d.ts +32 -8
  107. package/dist/inference/route-resolver.d.ts.map +1 -1
  108. package/dist/inference/route-resolver.js +175 -1
  109. package/dist/inference/route-resolver.js.map +1 -1
  110. package/dist/inference/tool-call-utils.d.ts.map +1 -1
  111. package/dist/inference/tool-call-utils.js +10 -8
  112. package/dist/inference/tool-call-utils.js.map +1 -1
  113. package/dist/inference/tools.d.ts +17 -1
  114. package/dist/inference/tools.d.ts.map +1 -1
  115. package/dist/inference/tools.js +69 -19
  116. package/dist/inference/tools.js.map +1 -1
  117. package/dist/learning/acceptance-model.d.ts +247 -0
  118. package/dist/learning/acceptance-model.d.ts.map +1 -0
  119. package/dist/learning/acceptance-model.js +708 -0
  120. package/dist/learning/acceptance-model.js.map +1 -0
  121. package/dist/learning/auto-router.d.ts +121 -24
  122. package/dist/learning/auto-router.d.ts.map +1 -1
  123. package/dist/learning/auto-router.js +374 -96
  124. package/dist/learning/auto-router.js.map +1 -1
  125. package/dist/learning/autonomy-policy.d.ts +12 -16
  126. package/dist/learning/autonomy-policy.d.ts.map +1 -1
  127. package/dist/learning/autonomy-policy.js +50 -48
  128. package/dist/learning/autonomy-policy.js.map +1 -1
  129. package/dist/learning/behavioural-labels.d.ts +86 -0
  130. package/dist/learning/behavioural-labels.d.ts.map +1 -0
  131. package/dist/learning/behavioural-labels.js +166 -0
  132. package/dist/learning/behavioural-labels.js.map +1 -0
  133. package/dist/learning/capability-evidence.d.ts +167 -0
  134. package/dist/learning/capability-evidence.d.ts.map +1 -0
  135. package/dist/learning/capability-evidence.js +210 -0
  136. package/dist/learning/capability-evidence.js.map +1 -0
  137. package/dist/learning/capability-readiness.d.ts +64 -0
  138. package/dist/learning/capability-readiness.d.ts.map +1 -0
  139. package/dist/learning/capability-readiness.js +74 -0
  140. package/dist/learning/capability-readiness.js.map +1 -0
  141. package/dist/learning/capability-types.d.ts +169 -0
  142. package/dist/learning/capability-types.d.ts.map +1 -0
  143. package/dist/learning/capability-types.js +20 -0
  144. package/dist/learning/capability-types.js.map +1 -0
  145. package/dist/learning/catalog-feed.d.ts +89 -0
  146. package/dist/learning/catalog-feed.d.ts.map +1 -0
  147. package/dist/learning/catalog-feed.js +211 -0
  148. package/dist/learning/catalog-feed.js.map +1 -0
  149. package/dist/learning/cli-intent-effects.d.ts +60 -0
  150. package/dist/learning/cli-intent-effects.d.ts.map +1 -0
  151. package/dist/learning/cli-intent-effects.js +153 -0
  152. package/dist/learning/cli-intent-effects.js.map +1 -0
  153. package/dist/learning/command-adaptation.d.ts +41 -0
  154. package/dist/learning/command-adaptation.d.ts.map +1 -0
  155. package/dist/learning/command-adaptation.js +122 -0
  156. package/dist/learning/command-adaptation.js.map +1 -0
  157. package/dist/learning/consent-picture.d.ts +42 -0
  158. package/dist/learning/consent-picture.d.ts.map +1 -0
  159. package/dist/learning/consent-picture.js +53 -0
  160. package/dist/learning/consent-picture.js.map +1 -0
  161. package/dist/learning/context-budget.d.ts +37 -6
  162. package/dist/learning/context-budget.d.ts.map +1 -1
  163. package/dist/learning/context-budget.js +38 -9
  164. package/dist/learning/context-budget.js.map +1 -1
  165. package/dist/learning/decision-log.d.ts +114 -0
  166. package/dist/learning/decision-log.d.ts.map +1 -0
  167. package/dist/learning/decision-log.js +296 -0
  168. package/dist/learning/decision-log.js.map +1 -0
  169. package/dist/learning/deliverable-class.d.ts.map +1 -1
  170. package/dist/learning/deliverable-class.js +19 -0
  171. package/dist/learning/deliverable-class.js.map +1 -1
  172. package/dist/learning/deliverable-corpus.d.ts +117 -0
  173. package/dist/learning/deliverable-corpus.d.ts.map +1 -0
  174. package/dist/learning/deliverable-corpus.js +176 -0
  175. package/dist/learning/deliverable-corpus.js.map +1 -0
  176. package/dist/learning/error-repair.d.ts +45 -2
  177. package/dist/learning/error-repair.d.ts.map +1 -1
  178. package/dist/learning/error-repair.js +95 -0
  179. package/dist/learning/error-repair.js.map +1 -1
  180. package/dist/learning/exhaustion-report.d.ts +136 -0
  181. package/dist/learning/exhaustion-report.d.ts.map +1 -0
  182. package/dist/learning/exhaustion-report.js +239 -0
  183. package/dist/learning/exhaustion-report.js.map +1 -0
  184. package/dist/learning/failure-bookkeeping.d.ts +16 -0
  185. package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
  186. package/dist/learning/failure-bookkeeping.js +51 -5
  187. package/dist/learning/failure-bookkeeping.js.map +1 -1
  188. package/dist/learning/gate-friction.d.ts +39 -0
  189. package/dist/learning/gate-friction.d.ts.map +1 -0
  190. package/dist/learning/gate-friction.js +91 -0
  191. package/dist/learning/gate-friction.js.map +1 -0
  192. package/dist/learning/harness-narration.d.ts +34 -0
  193. package/dist/learning/harness-narration.d.ts.map +1 -0
  194. package/dist/learning/harness-narration.js +58 -0
  195. package/dist/learning/harness-narration.js.map +1 -0
  196. package/dist/learning/hub-skill-catalog.d.ts.map +1 -1
  197. package/dist/learning/hub-skill-catalog.js +1 -2
  198. package/dist/learning/hub-skill-catalog.js.map +1 -1
  199. package/dist/learning/hybrid-router.d.ts +65 -0
  200. package/dist/learning/hybrid-router.d.ts.map +1 -1
  201. package/dist/learning/hybrid-router.js +186 -0
  202. package/dist/learning/hybrid-router.js.map +1 -1
  203. package/dist/learning/knowledge-base.d.ts +350 -0
  204. package/dist/learning/knowledge-base.d.ts.map +1 -0
  205. package/dist/learning/knowledge-base.js +906 -0
  206. package/dist/learning/knowledge-base.js.map +1 -0
  207. package/dist/learning/knowledge-eval.d.ts +171 -0
  208. package/dist/learning/knowledge-eval.d.ts.map +1 -0
  209. package/dist/learning/knowledge-eval.js +196 -0
  210. package/dist/learning/knowledge-eval.js.map +1 -0
  211. package/dist/learning/knowledge-turn.d.ts +92 -0
  212. package/dist/learning/knowledge-turn.d.ts.map +1 -0
  213. package/dist/learning/knowledge-turn.js +190 -0
  214. package/dist/learning/knowledge-turn.js.map +1 -0
  215. package/dist/learning/learned-commands.d.ts +64 -0
  216. package/dist/learning/learned-commands.d.ts.map +1 -0
  217. package/dist/learning/learned-commands.js +108 -0
  218. package/dist/learning/learned-commands.js.map +1 -0
  219. package/dist/learning/lexical-search.d.ts +50 -0
  220. package/dist/learning/lexical-search.d.ts.map +1 -0
  221. package/dist/learning/lexical-search.js +111 -0
  222. package/dist/learning/lexical-search.js.map +1 -0
  223. package/dist/learning/machine-facts.d.ts +71 -0
  224. package/dist/learning/machine-facts.d.ts.map +1 -0
  225. package/dist/learning/machine-facts.js +164 -0
  226. package/dist/learning/machine-facts.js.map +1 -0
  227. package/dist/learning/markdown-outline.d.ts +73 -0
  228. package/dist/learning/markdown-outline.d.ts.map +1 -0
  229. package/dist/learning/markdown-outline.js +136 -0
  230. package/dist/learning/markdown-outline.js.map +1 -0
  231. package/dist/learning/model-first-router.d.ts +33 -1
  232. package/dist/learning/model-first-router.d.ts.map +1 -1
  233. package/dist/learning/model-first-router.js +123 -9
  234. package/dist/learning/model-first-router.js.map +1 -1
  235. package/dist/learning/model-identity.d.ts +80 -0
  236. package/dist/learning/model-identity.d.ts.map +1 -0
  237. package/dist/learning/model-identity.js +115 -0
  238. package/dist/learning/model-identity.js.map +1 -0
  239. package/dist/learning/model-registry.d.ts +141 -2
  240. package/dist/learning/model-registry.d.ts.map +1 -1
  241. package/dist/learning/model-registry.js +324 -38
  242. package/dist/learning/model-registry.js.map +1 -1
  243. package/dist/learning/model-scoring.d.ts.map +1 -1
  244. package/dist/learning/model-scoring.js +8 -1
  245. package/dist/learning/model-scoring.js.map +1 -1
  246. package/dist/learning/model-selection.d.ts +2 -1
  247. package/dist/learning/model-selection.d.ts.map +1 -1
  248. package/dist/learning/model-selection.js +76 -2
  249. package/dist/learning/model-selection.js.map +1 -1
  250. package/dist/learning/outcome-observation.d.ts +49 -0
  251. package/dist/learning/outcome-observation.d.ts.map +1 -0
  252. package/dist/learning/outcome-observation.js +95 -0
  253. package/dist/learning/outcome-observation.js.map +1 -0
  254. package/dist/learning/pair-entitlement.d.ts +184 -0
  255. package/dist/learning/pair-entitlement.d.ts.map +1 -0
  256. package/dist/learning/pair-entitlement.js +214 -0
  257. package/dist/learning/pair-entitlement.js.map +1 -0
  258. package/dist/learning/project-docs.d.ts +83 -0
  259. package/dist/learning/project-docs.d.ts.map +1 -0
  260. package/dist/learning/project-docs.js +132 -0
  261. package/dist/learning/project-docs.js.map +1 -0
  262. package/dist/learning/provider-fallback.d.ts +23 -1
  263. package/dist/learning/provider-fallback.d.ts.map +1 -1
  264. package/dist/learning/provider-fallback.js +24 -0
  265. package/dist/learning/provider-fallback.js.map +1 -1
  266. package/dist/learning/quota-ledger.d.ts +13 -0
  267. package/dist/learning/quota-ledger.d.ts.map +1 -1
  268. package/dist/learning/quota-ledger.js +28 -0
  269. package/dist/learning/quota-ledger.js.map +1 -1
  270. package/dist/learning/reasoning-trace.d.ts +65 -1
  271. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  272. package/dist/learning/reasoning-trace.js +123 -1
  273. package/dist/learning/reasoning-trace.js.map +1 -1
  274. package/dist/learning/requirement-probe.d.ts +55 -0
  275. package/dist/learning/requirement-probe.d.ts.map +1 -0
  276. package/dist/learning/requirement-probe.js +77 -0
  277. package/dist/learning/requirement-probe.js.map +1 -0
  278. package/dist/learning/resilient-call.d.ts +20 -1
  279. package/dist/learning/resilient-call.d.ts.map +1 -1
  280. package/dist/learning/resilient-call.js +42 -4
  281. package/dist/learning/resilient-call.js.map +1 -1
  282. package/dist/learning/response-usability.d.ts +85 -0
  283. package/dist/learning/response-usability.d.ts.map +1 -0
  284. package/dist/learning/response-usability.js +135 -0
  285. package/dist/learning/response-usability.js.map +1 -0
  286. package/dist/learning/router-bandit.d.ts +132 -0
  287. package/dist/learning/router-bandit.d.ts.map +1 -1
  288. package/dist/learning/router-bandit.js +253 -0
  289. package/dist/learning/router-bandit.js.map +1 -1
  290. package/dist/learning/routing-history.d.ts +41 -2
  291. package/dist/learning/routing-history.d.ts.map +1 -1
  292. package/dist/learning/routing-history.js.map +1 -1
  293. package/dist/learning/run-trace.d.ts +21 -0
  294. package/dist/learning/run-trace.d.ts.map +1 -1
  295. package/dist/learning/run-trace.js +38 -0
  296. package/dist/learning/run-trace.js.map +1 -1
  297. package/dist/learning/seeded-benchmark.d.ts +14 -0
  298. package/dist/learning/seeded-benchmark.d.ts.map +1 -1
  299. package/dist/learning/seeded-benchmark.js +43 -4
  300. package/dist/learning/seeded-benchmark.js.map +1 -1
  301. package/dist/learning/session-grant.d.ts +75 -0
  302. package/dist/learning/session-grant.d.ts.map +1 -0
  303. package/dist/learning/session-grant.js +112 -0
  304. package/dist/learning/session-grant.js.map +1 -0
  305. package/dist/learning/task-model-continuity.d.ts +73 -0
  306. package/dist/learning/task-model-continuity.d.ts.map +1 -0
  307. package/dist/learning/task-model-continuity.js +87 -0
  308. package/dist/learning/task-model-continuity.js.map +1 -0
  309. package/dist/learning/turn-feedback.d.ts +93 -0
  310. package/dist/learning/turn-feedback.d.ts.map +1 -0
  311. package/dist/learning/turn-feedback.js +127 -0
  312. package/dist/learning/turn-feedback.js.map +1 -0
  313. package/dist/learning/turn-report.d.ts +104 -2
  314. package/dist/learning/turn-report.d.ts.map +1 -1
  315. package/dist/learning/turn-report.js +161 -6
  316. package/dist/learning/turn-report.js.map +1 -1
  317. package/dist/learning/verdict-routing.d.ts +51 -0
  318. package/dist/learning/verdict-routing.d.ts.map +1 -0
  319. package/dist/learning/verdict-routing.js +122 -0
  320. package/dist/learning/verdict-routing.js.map +1 -0
  321. package/dist/mcp/client.d.ts.map +1 -1
  322. package/dist/mcp/client.js +5 -0
  323. package/dist/mcp/client.js.map +1 -1
  324. package/dist/mcp/manager.d.ts +10 -0
  325. package/dist/mcp/manager.d.ts.map +1 -1
  326. package/dist/mcp/manager.js +20 -0
  327. package/dist/mcp/manager.js.map +1 -1
  328. package/dist/mcp/mcp-discovery.d.ts +34 -0
  329. package/dist/mcp/mcp-discovery.d.ts.map +1 -0
  330. package/dist/mcp/mcp-discovery.js +71 -0
  331. package/dist/mcp/mcp-discovery.js.map +1 -0
  332. package/dist/mcp/mcp-schema-cache.d.ts +17 -0
  333. package/dist/mcp/mcp-schema-cache.d.ts.map +1 -1
  334. package/dist/mcp/mcp-schema-cache.js +47 -3
  335. package/dist/mcp/mcp-schema-cache.js.map +1 -1
  336. package/dist/mcp/types.d.ts +28 -0
  337. package/dist/mcp/types.d.ts.map +1 -1
  338. package/dist/mcp/types.js.map +1 -1
  339. package/dist/security/secret-scan.d.ts +156 -0
  340. package/dist/security/secret-scan.d.ts.map +1 -0
  341. package/dist/security/secret-scan.js +525 -0
  342. package/dist/security/secret-scan.js.map +1 -0
  343. package/dist/tools/ask-user.d.ts.map +1 -1
  344. package/dist/tools/ask-user.js +4 -0
  345. package/dist/tools/ask-user.js.map +1 -1
  346. package/dist/tools/capability-registry.d.ts +150 -0
  347. package/dist/tools/capability-registry.d.ts.map +1 -0
  348. package/dist/tools/capability-registry.js +400 -0
  349. package/dist/tools/capability-registry.js.map +1 -0
  350. package/dist/tools/child-agent-runtime.d.ts.map +1 -1
  351. package/dist/tools/child-agent-runtime.js +19 -5
  352. package/dist/tools/child-agent-runtime.js.map +1 -1
  353. package/dist/tools/coding-tools.d.ts +17 -5
  354. package/dist/tools/coding-tools.d.ts.map +1 -1
  355. package/dist/tools/coding-tools.js +80 -11
  356. package/dist/tools/coding-tools.js.map +1 -1
  357. package/dist/tools/command-memo.d.ts +116 -0
  358. package/dist/tools/command-memo.d.ts.map +1 -0
  359. package/dist/tools/command-memo.js +202 -0
  360. package/dist/tools/command-memo.js.map +1 -0
  361. package/dist/tools/git-tool.d.ts.map +1 -1
  362. package/dist/tools/git-tool.js +13 -3
  363. package/dist/tools/git-tool.js.map +1 -1
  364. package/dist/tools/harness-directive.d.ts +42 -0
  365. package/dist/tools/harness-directive.d.ts.map +1 -0
  366. package/dist/tools/harness-directive.js +45 -0
  367. package/dist/tools/harness-directive.js.map +1 -0
  368. package/dist/tools/loop-skill-hint.d.ts +74 -174
  369. package/dist/tools/loop-skill-hint.d.ts.map +1 -1
  370. package/dist/tools/loop-skill-hint.js +110 -536
  371. package/dist/tools/loop-skill-hint.js.map +1 -1
  372. package/dist/tools/mcp-client-tool.d.ts +2 -0
  373. package/dist/tools/mcp-client-tool.d.ts.map +1 -1
  374. package/dist/tools/mcp-client-tool.js +3 -0
  375. package/dist/tools/mcp-client-tool.js.map +1 -1
  376. package/dist/tools/modality/shared.d.ts +1 -4
  377. package/dist/tools/modality/shared.d.ts.map +1 -1
  378. package/dist/tools/modality/shared.js +7 -22
  379. package/dist/tools/modality/shared.js.map +1 -1
  380. package/dist/tools/plan-store.d.ts +44 -4
  381. package/dist/tools/plan-store.d.ts.map +1 -1
  382. package/dist/tools/plan-store.js +93 -9
  383. package/dist/tools/plan-store.js.map +1 -1
  384. package/dist/tools/registry.d.ts +76 -3
  385. package/dist/tools/registry.d.ts.map +1 -1
  386. package/dist/tools/registry.js +623 -15
  387. package/dist/tools/registry.js.map +1 -1
  388. package/dist/tools/remediation-ladder.d.ts +91 -0
  389. package/dist/tools/remediation-ladder.d.ts.map +1 -0
  390. package/dist/tools/remediation-ladder.js +316 -0
  391. package/dist/tools/remediation-ladder.js.map +1 -0
  392. package/dist/tools/run-cli.d.ts.map +1 -1
  393. package/dist/tools/run-cli.js +29 -4
  394. package/dist/tools/run-cli.js.map +1 -1
  395. package/dist/tools/run-terminal.d.ts +11 -0
  396. package/dist/tools/run-terminal.d.ts.map +1 -1
  397. package/dist/tools/run-terminal.js +289 -10
  398. package/dist/tools/run-terminal.js.map +1 -1
  399. package/dist/tools/skills-hub.d.ts +7 -0
  400. package/dist/tools/skills-hub.d.ts.map +1 -1
  401. package/dist/tools/skills-hub.js +11 -2
  402. package/dist/tools/skills-hub.js.map +1 -1
  403. package/dist/tools/step-artifact.d.ts +35 -0
  404. package/dist/tools/step-artifact.d.ts.map +1 -0
  405. package/dist/tools/step-artifact.js +154 -0
  406. package/dist/tools/step-artifact.js.map +1 -0
  407. package/dist/tools/tool-loop.d.ts +327 -13
  408. package/dist/tools/tool-loop.d.ts.map +1 -1
  409. package/dist/tools/tool-loop.js +891 -66
  410. package/dist/tools/tool-loop.js.map +1 -1
  411. package/dist/tools/toolsets.js +4 -4
  412. package/dist/tools/toolsets.js.map +1 -1
  413. package/dist/tools/worktree.d.ts +11 -2
  414. package/dist/tools/worktree.d.ts.map +1 -1
  415. package/dist/tools/worktree.js +11 -2
  416. package/dist/tools/worktree.js.map +1 -1
  417. package/dist/utils/atomic-store.d.ts +53 -0
  418. package/dist/utils/atomic-store.d.ts.map +1 -0
  419. package/dist/utils/atomic-store.js +178 -0
  420. package/dist/utils/atomic-store.js.map +1 -0
  421. package/dist/utils/binary-probe.d.ts +25 -0
  422. package/dist/utils/binary-probe.d.ts.map +1 -0
  423. package/dist/utils/binary-probe.js +48 -0
  424. package/dist/utils/binary-probe.js.map +1 -0
  425. package/dist/utils/workspace-path.d.ts +50 -0
  426. package/dist/utils/workspace-path.d.ts.map +1 -0
  427. package/dist/utils/workspace-path.js +86 -0
  428. package/dist/utils/workspace-path.js.map +1 -0
  429. package/dist/web-dashboard/chat-console.d.ts +24 -0
  430. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  431. package/dist/web-dashboard/chat-console.js +38 -0
  432. package/dist/web-dashboard/chat-console.js.map +1 -1
  433. package/dist/web-dashboard/project-context.d.ts +27 -2
  434. package/dist/web-dashboard/project-context.d.ts.map +1 -1
  435. package/dist/web-dashboard/project-context.js +32 -2
  436. package/dist/web-dashboard/project-context.js.map +1 -1
  437. package/dist/web-dashboard/server.d.ts +40 -0
  438. package/dist/web-dashboard/server.d.ts.map +1 -1
  439. package/dist/web-dashboard/server.js +733 -15
  440. package/dist/web-dashboard/server.js.map +1 -1
  441. package/dist/web-dashboard/src/types.d.ts +236 -1
  442. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  443. package/dist/web-dashboard/workspace-guard.d.ts +18 -2
  444. package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
  445. package/dist/web-dashboard/workspace-guard.js +94 -12
  446. package/dist/web-dashboard/workspace-guard.js.map +1 -1
  447. package/dist/web-dashboard/workspace-resolution.d.ts +87 -0
  448. package/dist/web-dashboard/workspace-resolution.d.ts.map +1 -0
  449. package/dist/web-dashboard/workspace-resolution.js +105 -0
  450. package/dist/web-dashboard/workspace-resolution.js.map +1 -0
  451. package/package.json +1 -1
  452. package/src/web-dashboard/public/assets/index-tK8Y2qHB.css +1 -0
  453. package/src/web-dashboard/public/assets/index-zjbdJnO-.js +210 -0
  454. package/src/web-dashboard/public/assets/index-zjbdJnO-.js.map +1 -0
  455. package/src/web-dashboard/public/index.html +2 -2
  456. package/src/web-dashboard/public/assets/index-BrZcYhy6.js +0 -207
  457. package/src/web-dashboard/public/assets/index-BrZcYhy6.js.map +0 -1
  458. package/src/web-dashboard/public/assets/index-DsWczTa6.css +0 -1
@@ -16,7 +16,10 @@
16
16
  * then picked a model within the winning provider.
17
17
  */
18
18
  import { getModelRegistry } from './model-registry.js';
19
+ import { classifyPairEntitlement, orderByEntitlement } from './pair-entitlement.js';
19
20
  import { getCatalogProvider, CATALOG_PROVIDER_IDS } from '../inference/provider-catalog.js';
21
+ import { isSmallTalk } from './hybrid-router.js';
22
+ import { hasCredentials, KEYLESS_PROVIDERS } from './model-selection.js';
20
23
  import { isNonChatModel } from '../inference/model-catalog.js';
21
24
  // ─── Task Analysis ──────────────────────────────────────────────────────────
22
25
  /**
@@ -43,7 +46,11 @@ export function estimateTaskRequirements(taskDescription, complexity, estimatedI
43
46
  if (desc.includes('security') || desc.includes('audit') || desc.includes('vulnerability')) {
44
47
  reasoningNeed = 'high';
45
48
  }
46
- if (desc.includes('hello') || desc.includes('hi') || desc.includes('greeting')) {
49
+ // B2 — a greeting is a WHOLE WORD and the WHOLE MESSAGE. The old substring
50
+ // test (`desc.includes('hi')`) matched `this`/`which`/`anything`, which is how
51
+ // 81 of 160 recorded tasks ended up on `reasoningNeed: 'low'` and how a
52
+ // multi-provider engineering ask got ranked a 4B-active model first.
53
+ if (isSmallTalk(taskDescription)) {
47
54
  reasoningNeed = 'low';
48
55
  }
49
56
  const speedPriority = desc.includes('quick') || desc.includes('fast') || desc.includes('urgent')
@@ -113,30 +120,43 @@ function scoreModelOnProvider(model, provider, entry, catalog, requirements, pro
113
120
  return { costPerMToken: 0, costScore: 0, capabilityFit: 0, health: 0, quotaAvailability: 0, providerSpeed: 0, verification: 0 };
114
121
  // 2. Capability fit — score by model SIZE relative to task complexity
115
122
  let capabilityFit = 0.5;
116
- // Detect model size from name (b = billion parameters)
123
+ // Detect model size from name (b = billion parameters).
124
+ //
125
+ // P6 (fix_model_routing) — MOE ACTIVE PARAMETERS COUNT, NOT TOTAL ONES. A
126
+ // mixture-of-experts name like `gemma-4-26b-a4b-it` holds 26B parameters but
127
+ // routes each token through ~4B of them, and it is the ACTIVE width that
128
+ // decides whether a model can hold a multi-step agentic task — which is why
129
+ // the tag is in the name at all. The naive parse read `26b` and ranked it as a
130
+ // MEDIUM model with capabilityFit 1.0, measured live as the #1 pick (0.87)
131
+ // above `gemini-3.1-flash-lite`, during the very run that then returned five
132
+ // empty responses in a row. Reading the active width is not a heuristics
133
+ // rewrite: it is reading the number the provider published.
117
134
  const sizeMatch = modelLower.match(/(\d+\.?\d*)b/);
118
135
  const sizeB = sizeMatch ? parseFloat(sizeMatch[1]) : 0;
136
+ const activeMatch = modelLower.match(/a(\d+\.?\d*)b/);
137
+ const activeB = activeMatch ? parseFloat(activeMatch[1]) : 0;
138
+ const effectiveB = activeB > 0 && (sizeB === 0 || activeB < sizeB) ? activeB : sizeB;
119
139
  // Per-model pricing that depends on size detection
120
140
  if (modelLower.includes('qwen') && sizeB >= 70)
121
141
  costPerMToken = 0.0009;
122
142
  else if (modelLower.includes('qwen') && sizeB > 0)
123
143
  costPerMToken = 0.0001;
124
144
  // Known large models (70B+ params or known high-capability closed models)
125
- const isLargeModel = sizeB >= 70
145
+ const isLargeModel = effectiveB >= 70
126
146
  || modelLower.includes('gpt-4o') && !modelLower.includes('mini')
127
147
  || modelLower.includes('claude-3') && !modelLower.includes('haiku')
128
148
  || modelLower.includes('sonnet') || modelLower.includes('opus')
129
149
  || modelLower.includes('o1') || modelLower.includes('o3') || modelLower.includes('o4')
130
150
  || (modelLower.includes('gemini') && (modelLower.includes('pro') && !modelLower.includes('nano')));
131
151
  // Known medium models (8B-70B or known mid-tier closed models)
132
- const isMediumModel = (sizeB >= 8 && sizeB < 70)
152
+ const isMediumModel = (effectiveB >= 8 && effectiveB < 70)
133
153
  || modelLower.includes('gpt-4o-mini') || modelLower.includes('gpt-4o-nano')
134
154
  || modelLower.includes('haiku') || modelLower.includes('flash')
135
155
  || (modelLower.includes('gemini') && (modelLower.includes('flash') || modelLower.includes('lite')))
136
156
  || modelLower.includes('mistral-small') || modelLower.includes('mistral-medium')
137
157
  || modelLower.includes('command-r') && !modelLower.includes('plus');
138
158
  // Known small models (<8B or known lightweight)
139
- const isSmallModel = (sizeB > 0 && sizeB < 8)
159
+ const isSmallModel = (effectiveB > 0 && effectiveB < 8)
140
160
  || modelLower.includes('nano') || modelLower.includes('0.5b') || modelLower.includes('micro')
141
161
  || modelLower.includes('turbo') && !modelLower.includes('gpt')
142
162
  || modelLower.includes('lite') || modelLower.includes('tiny') || modelLower.includes('mini') && sizeB > 0;
@@ -165,6 +185,16 @@ function scoreModelOnProvider(model, provider, entry, catalog, requirements, pro
165
185
  else if (isLargeModel)
166
186
  capabilityFit = 0.5; // Overkill
167
187
  }
188
+ // P6 — EVIDENCE, not a name. A pair the registry has already judged
189
+ // `unavailable` (repeated real failures — including the empty-response park
190
+ // the routing fixes now record) must not keep presenting itself as a
191
+ // capability match for the task. `isCandidateAvailable` filters such an entry
192
+ // out of the tiered chain, but SCORING still ranked it as if it were healthy,
193
+ // so any caller that reads the ranking (or the report derived from it) saw an
194
+ // unfit model near the top. Capability is the dimension that claims "can do
195
+ // this" — it is exactly the one an availability ruling must limit.
196
+ if (entry?.status === 'unavailable')
197
+ capabilityFit = Math.min(capabilityFit, 0.2);
168
198
  // 3. Health (latency + error rate)
169
199
  let health = 0.7; // Default
170
200
  if (entry) {
@@ -203,6 +233,44 @@ function scoreModelOnProvider(model, provider, entry, catalog, requirements, pro
203
233
  verification,
204
234
  };
205
235
  }
236
+ /**
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.
258
+ */
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
+ }
206
274
  /**
207
275
  * Build the full model candidate list across all providers.
208
276
  * This is the core of model-first routing: instead of scoring providers,
@@ -215,6 +283,20 @@ export function buildModelCandidates(taskDescription, complexity, configManager,
215
283
  // Determine which providers to consider
216
284
  const providers = allowedProviders || CATALOG_PROVIDER_IDS;
217
285
  for (const providerId of providers) {
286
+ // ── P5 (fix_model_routing) — A CREDENTIAL GATE, so the pool is CALLABLE ──
287
+ // Without this the candidate list (and every count derived from it) included
288
+ // providers the user has NO credential for. Measured on this machine: the
289
+ // pool claimed 538 models across 23 "providers" — openai, anthropic, xai,
290
+ // perplexity, bedrock, omniroute… all keyless here — while only 17 pairs had
291
+ // ever been verified. A report that can say "538 models are available"
292
+ // cannot be trusted when it says "no model can do this", and the ranking it
293
+ // produces is dominated by providers that would 401. Gated only when a
294
+ // ConfigManager is supplied (every real routing path passes one); callers
295
+ // that deliberately want the raw catalog — a probe sweep, a test — still get
296
+ // the unfiltered list, and `countEligibleModels` keeps its old behaviour
297
+ // rather than silently changing the meaning of an existing number.
298
+ if (configManager && !hasCredentials(configManager, providerId))
299
+ continue;
218
300
  const catalog = getCatalogProvider(providerId);
219
301
  const providerSpeed = catalog?.capabilities.speed || 0.5;
220
302
  // Get ALL models for this provider from the registry
@@ -242,6 +324,12 @@ export function buildModelCandidates(taskDescription, complexity, configManager,
242
324
  // serve a Google model) on every walk until this filter existed.
243
325
  if (registry.isDeadPair(providerId, modelEntry.model))
244
326
  continue;
327
+ // P6 — a pair that CANNOT exist is not a candidate: an Ollama-tagged id on
328
+ // a hosted provider, or a test fixture. Same class as the dead-pair filter
329
+ // above, decided from the id instead of from a past 404 (see
330
+ // `isPairPlausible`).
331
+ if (!isPairPlausible(providerId, modelEntry.model))
332
+ continue;
245
333
  // Skip speech/audio/video/image/research models early
246
334
  const modelLower = modelEntry.model.toLowerCase();
247
335
  if (modelLower.includes('whisper') || modelLower.includes('tts') || modelLower.includes('speech')
@@ -290,15 +378,27 @@ export function buildModelCandidates(taskDescription, complexity, configManager,
290
378
  provider: providerId,
291
379
  score,
292
380
  dimensions: dims,
381
+ entitlement: classifyPairEntitlement(modelEntry),
293
382
  reason: reasons.length > 0 ? reasons.join(', ') : 'default',
294
383
  entry: modelEntry,
295
384
  catalog: catalog || undefined,
296
385
  });
297
386
  }
298
387
  }
299
- // Sort by score (best first)
388
+ // Sort by score (best first)…
300
389
  candidates.sort((a, b) => b.score - a.score);
301
- return candidates;
390
+ // …then, and ONLY then, let PAIR ENTITLEMENT reorder the pool.
391
+ //
392
+ // WHY AFTER THE SCORE SORT. The scored dimensions answer "which model is the
393
+ // better choice"; entitlement answers "may this account be called at all".
394
+ // Folding entitlement INTO the score would let a large enough capability or
395
+ // cost advantage buy a call the registry already knows is refused — measured:
396
+ // the run-D pin was refused and the same model was funded on another provider
397
+ // 6 seconds later. As a stable PARTITION it cannot: every funded pair precedes
398
+ // every refused one, while equal-entitlement candidates keep the score order
399
+ // the weights produced. Nothing is removed, so "reject only when nothing is
400
+ // left" still holds — the refused twins are simply the last thing tried.
401
+ return orderByEntitlement(candidates, (c) => c.entitlement ?? 'unknown');
302
402
  }
303
403
  /**
304
404
  * Pick the best model candidate for a task.
@@ -321,11 +421,17 @@ export function pickBestModelCandidate(taskDescription, complexity, configManage
321
421
  * pairs + non-chat models excluded) — the report can never disagree with what
322
422
  * routing would actually consider.
323
423
  */
324
- export function countEligibleModels(allowedProviders) {
424
+ export function countEligibleModels(allowedProviders, configManager) {
325
425
  try {
326
426
  // A neutral, class-agnostic description: we want the SIZE of the pool, not
327
427
  // a ranking. Complexity only shifts score weights, never eligibility.
328
- const candidates = buildModelCandidates('general task', 'moderate', undefined, allowedProviders);
428
+ //
429
+ // P5: when a ConfigManager is supplied the count is CREDENTIALED — it is the
430
+ // set routing would actually try, not the catalog. Without it the count is
431
+ // the legacy filter-only number, which must never be used to justify a
432
+ // shortage claim ("no model is available") — it counts models this machine
433
+ // has no key for.
434
+ const candidates = buildModelCandidates('general task', 'moderate', configManager, allowedProviders);
329
435
  const providers = new Set();
330
436
  for (const c of candidates)
331
437
  providers.add(c.provider);
@@ -377,6 +483,14 @@ export function isCandidateAvailable(candidate) {
377
483
  if (candidate.entry) {
378
484
  if (candidate.entry.quotaParkedUntil > Date.now())
379
485
  return false;
486
+ // A REFUSED pair (the account cannot serve it: credit-exhausted / auth /
487
+ // billing, or the id does not exist there) is not available — retrying it
488
+ // buys a guaranteed failed round trip. `status === 'unavailable'` alone did
489
+ // not catch it, because the registry deliberately does NOT demote a
490
+ // `verified` entry on a later entitlement refusal (a top-up repairs it), so
491
+ // such a pair reads `verified` with a `402` in `lastError`.
492
+ if (classifyPairEntitlement(candidate.entry) === 'refused')
493
+ return false;
380
494
  if (candidate.entry.status === 'unavailable')
381
495
  return false;
382
496
  }
@@ -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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"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * MODEL IDENTITY (A1) — when two provider × model rows are the SAME MODEL.
3
+ *
4
+ * THE DEFECT. The registry keys everything by `provider × model`, so two rows for
5
+ * one model are unrelated. Measured on this machine:
6
+ *
7
+ * | Row | Status |
8
+ * |---|---|
9
+ * | `openrouter / deepseek/deepseek-v4.1-flash` | `unavailable` (`credit-exhausted`) |
10
+ * | `deepseek / deepseek-flash` | `verified` |
11
+ *
12
+ * Nothing in the system could say "these are the same model", so the system could
13
+ * not tell an operator that the model they pinned is available on another
14
+ * provider, and the capability knowledge collected on one row could never inform
15
+ * the other.
16
+ *
17
+ * WHY A DECLARED TABLE, NOT A GUESS. `deepseek-flash` and
18
+ * `deepseek/deepseek-v4.1-flash` look similar and are the same model — but
19
+ * `deepseek-v4-flash` and `deepseek-v4.1-flash` also look similar and are NOT.
20
+ * Deciding identity from the spelling is the same name-based judgement this
21
+ * programme removes from capability scoring, so identity here is **data**: a small
22
+ * hand-maintained table, each entry carrying the date it was declared and the
23
+ * evidence it rests on. An id in no entry simply gets its own bare-id group
24
+ * (which is the pre-A1 behaviour), so an undeclared model is never grouped with
25
+ * the wrong one — the failure mode of a table is "unknown", not "wrong".
26
+ *
27
+ * ─── THE ONE RULE THAT MUST NOT BREAK ──────────────────────────────────────
28
+ *
29
+ * **Identity groups CAPABILITY, never ROUTABILITY.** Two providers are two
30
+ * ACCOUNTS with two independent truths: `openrouter`'s exhausted credits say
31
+ * nothing about `deepseek`'s funded account. So a verdict is NEVER copied across
32
+ * twins — not an availability verdict (that is defect F6: "the model works"
33
+ * masquerading as "this provider will serve it"), and not an error rate either.
34
+ * What identity buys is the QUESTION — "is the same model served by a provider
35
+ * that can serve it?" — and every candidate the question produces is then judged
36
+ * on its OWN registry row. `learning/pair-entitlement.ts` implements that
37
+ * judgement; this module only answers what a model IS.
38
+ */
39
+ /** One hand-declared model, and the provider-specific ids it is served under. */
40
+ export interface DeclaredAlias {
41
+ /** The id this model is known as internally. */
42
+ canonical: string;
43
+ /**
44
+ * Every provider-specific id it is served under. The canonical id itself is
45
+ * implicitly a member (see `memberMatches`), so a provider serving the
46
+ * canonical spelling needs no separate entry.
47
+ */
48
+ members: string[];
49
+ /** `YYYY-MM-DD` the entry was declared — printed wherever it is used. */
50
+ declaredAt: string;
51
+ /** What the declaration rests on. An assertion without a basis is a guess. */
52
+ note: string;
53
+ }
54
+ /**
55
+ * The declared aliases.
56
+ *
57
+ * Deliberately tiny and hand-checked: every entry is an ASSERTION, and a wrong one
58
+ * groups two different models. Entries are added from observed registry rows (a
59
+ * `verified` row on one provider beside an `unavailable` row on another for the
60
+ * same model is exactly how the first one was found), never from similarity.
61
+ */
62
+ export declare const DECLARED_MODEL_ALIASES: DeclaredAlias[];
63
+ /**
64
+ * The identity key two ids must share to be treated as the same model.
65
+ *
66
+ * Prefixed (`canonical:` / `bare:`) so a canonical name can never collide with a
67
+ * model that happens to be called the same thing without being declared.
68
+ */
69
+ export declare function identityKey(model: string | undefined | null): string;
70
+ /** Are these two ids the same model? Empty ids are never the same as anything. */
71
+ export declare function sameModel(a: string | undefined | null, b: string | undefined | null): boolean;
72
+ /** The declared entry that grouped this id, for printing WHERE identity came from. */
73
+ export declare function declaredAliasFor(model: string | undefined | null): DeclaredAlias | undefined;
74
+ /**
75
+ * One line naming the provenance of a grouping, or `undefined` when the grouping
76
+ * is the bare-id rule. `model explain` prints it, so a reader can always tell a
77
+ * declared fact from a derived one.
78
+ */
79
+ export declare function identityProvenance(model: string | undefined | null): string | undefined;
80
+ //# sourceMappingURL=model-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-identity.d.ts","sourceRoot":"","sources":["../../src/learning/model-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAAa,EAWjD,CAAC;AAuBF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CASpE;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAI7F;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,SAAS,CAM5F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAGvF"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * MODEL IDENTITY (A1) — when two provider × model rows are the SAME MODEL.
3
+ *
4
+ * THE DEFECT. The registry keys everything by `provider × model`, so two rows for
5
+ * one model are unrelated. Measured on this machine:
6
+ *
7
+ * | Row | Status |
8
+ * |---|---|
9
+ * | `openrouter / deepseek/deepseek-v4.1-flash` | `unavailable` (`credit-exhausted`) |
10
+ * | `deepseek / deepseek-flash` | `verified` |
11
+ *
12
+ * Nothing in the system could say "these are the same model", so the system could
13
+ * not tell an operator that the model they pinned is available on another
14
+ * provider, and the capability knowledge collected on one row could never inform
15
+ * the other.
16
+ *
17
+ * WHY A DECLARED TABLE, NOT A GUESS. `deepseek-flash` and
18
+ * `deepseek/deepseek-v4.1-flash` look similar and are the same model — but
19
+ * `deepseek-v4-flash` and `deepseek-v4.1-flash` also look similar and are NOT.
20
+ * Deciding identity from the spelling is the same name-based judgement this
21
+ * programme removes from capability scoring, so identity here is **data**: a small
22
+ * hand-maintained table, each entry carrying the date it was declared and the
23
+ * evidence it rests on. An id in no entry simply gets its own bare-id group
24
+ * (which is the pre-A1 behaviour), so an undeclared model is never grouped with
25
+ * the wrong one — the failure mode of a table is "unknown", not "wrong".
26
+ *
27
+ * ─── THE ONE RULE THAT MUST NOT BREAK ──────────────────────────────────────
28
+ *
29
+ * **Identity groups CAPABILITY, never ROUTABILITY.** Two providers are two
30
+ * ACCOUNTS with two independent truths: `openrouter`'s exhausted credits say
31
+ * nothing about `deepseek`'s funded account. So a verdict is NEVER copied across
32
+ * twins — not an availability verdict (that is defect F6: "the model works"
33
+ * masquerading as "this provider will serve it"), and not an error rate either.
34
+ * What identity buys is the QUESTION — "is the same model served by a provider
35
+ * that can serve it?" — and every candidate the question produces is then judged
36
+ * on its OWN registry row. `learning/pair-entitlement.ts` implements that
37
+ * judgement; this module only answers what a model IS.
38
+ */
39
+ /**
40
+ * The declared aliases.
41
+ *
42
+ * Deliberately tiny and hand-checked: every entry is an ASSERTION, and a wrong one
43
+ * groups two different models. Entries are added from observed registry rows (a
44
+ * `verified` row on one provider beside an `unavailable` row on another for the
45
+ * same model is exactly how the first one was found), never from similarity.
46
+ */
47
+ export const DECLARED_MODEL_ALIASES = [
48
+ {
49
+ canonical: 'deepseek-v4.1-flash',
50
+ members: ['deepseek-flash', 'deepseek/deepseek-v4.1-flash'],
51
+ declaredAt: '2026-10-07',
52
+ note: "DeepSeek's own API serves this model as `deepseek-flash`; OpenRouter's catalogue lists it as " +
53
+ '`deepseek/deepseek-v4.1-flash`. Declared from this machine\'s registry, where ' +
54
+ '`deepseek|deepseek-flash` was `verified` while `openrouter|deepseek/deepseek-v4.1-flash` was ' +
55
+ '`credit-exhausted` — the pair the programme could not previously relate.',
56
+ },
57
+ ];
58
+ /** Lower-case, trimmed, and with the provider alias marker `~` stripped. */
59
+ function normalize(model) {
60
+ return (model ?? '').trim().toLowerCase().replace(/^~/, '');
61
+ }
62
+ /** Everything after the last `/` — the model's name without its vendor prefix. */
63
+ function bareId(id) {
64
+ const slash = id.lastIndexOf('/');
65
+ return slash >= 0 ? id.slice(slash + 1) : id;
66
+ }
67
+ /**
68
+ * Does this id name the declared member — exactly, or after dropping the vendor
69
+ * prefix? The same EXACT rule as before (`deepseek-flash` ≡
70
+ * `deepseek/deepseek-flash`), applied to each declared spelling.
71
+ */
72
+ function memberMatches(member, id) {
73
+ const m = normalize(member);
74
+ return m === id || bareId(m) === bareId(id);
75
+ }
76
+ /**
77
+ * The identity key two ids must share to be treated as the same model.
78
+ *
79
+ * Prefixed (`canonical:` / `bare:`) so a canonical name can never collide with a
80
+ * model that happens to be called the same thing without being declared.
81
+ */
82
+ export function identityKey(model) {
83
+ const id = normalize(model);
84
+ if (!id)
85
+ return '';
86
+ for (const alias of DECLARED_MODEL_ALIASES) {
87
+ if (memberMatches(alias.canonical, id) || alias.members.some((m) => memberMatches(m, id))) {
88
+ return `canonical:${normalize(alias.canonical)}`;
89
+ }
90
+ }
91
+ return `bare:${bareId(id)}`;
92
+ }
93
+ /** Are these two ids the same model? Empty ids are never the same as anything. */
94
+ export function sameModel(a, b) {
95
+ const ka = identityKey(a);
96
+ const kb = identityKey(b);
97
+ return !!ka && ka === kb;
98
+ }
99
+ /** The declared entry that grouped this id, for printing WHERE identity came from. */
100
+ export function declaredAliasFor(model) {
101
+ const id = normalize(model);
102
+ if (!id)
103
+ return undefined;
104
+ return DECLARED_MODEL_ALIASES.find((alias) => memberMatches(alias.canonical, id) || alias.members.some((m) => memberMatches(m, id)));
105
+ }
106
+ /**
107
+ * One line naming the provenance of a grouping, or `undefined` when the grouping
108
+ * is the bare-id rule. `model explain` prints it, so a reader can always tell a
109
+ * declared fact from a derived one.
110
+ */
111
+ export function identityProvenance(model) {
112
+ const alias = declaredAliasFor(model);
113
+ return alias ? `declared alias → '${alias.canonical}' (table, ${alias.declaredAt})` : undefined;
114
+ }
115
+ //# sourceMappingURL=model-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-identity.js","sourceRoot":"","sources":["../../src/learning/model-identity.ts"],"names":[],"mappings":"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"}