@miller-tech/uap 1.0.0

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 (660) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +888 -0
  3. package/dist/analyzers/index.d.ts +3 -0
  4. package/dist/analyzers/index.d.ts.map +1 -0
  5. package/dist/analyzers/index.js +684 -0
  6. package/dist/analyzers/index.js.map +1 -0
  7. package/dist/benchmarks/agents/naive-agent.d.ts +60 -0
  8. package/dist/benchmarks/agents/naive-agent.d.ts.map +1 -0
  9. package/dist/benchmarks/agents/naive-agent.js +144 -0
  10. package/dist/benchmarks/agents/naive-agent.js.map +1 -0
  11. package/dist/benchmarks/agents/uap-agent.d.ts +167 -0
  12. package/dist/benchmarks/agents/uap-agent.d.ts.map +1 -0
  13. package/dist/benchmarks/agents/uap-agent.js +437 -0
  14. package/dist/benchmarks/agents/uap-agent.js.map +1 -0
  15. package/dist/benchmarks/benchmark.d.ts +328 -0
  16. package/dist/benchmarks/benchmark.d.ts.map +1 -0
  17. package/dist/benchmarks/benchmark.js +112 -0
  18. package/dist/benchmarks/benchmark.js.map +1 -0
  19. package/dist/benchmarks/execution-verifier.d.ts +41 -0
  20. package/dist/benchmarks/execution-verifier.d.ts.map +1 -0
  21. package/dist/benchmarks/execution-verifier.js +340 -0
  22. package/dist/benchmarks/execution-verifier.js.map +1 -0
  23. package/dist/benchmarks/hierarchical-prompting.d.ts +37 -0
  24. package/dist/benchmarks/hierarchical-prompting.d.ts.map +1 -0
  25. package/dist/benchmarks/hierarchical-prompting.js +246 -0
  26. package/dist/benchmarks/hierarchical-prompting.js.map +1 -0
  27. package/dist/benchmarks/improved-benchmark.d.ts +89 -0
  28. package/dist/benchmarks/improved-benchmark.d.ts.map +1 -0
  29. package/dist/benchmarks/improved-benchmark.js +585 -0
  30. package/dist/benchmarks/improved-benchmark.js.map +1 -0
  31. package/dist/benchmarks/index.d.ts +11 -0
  32. package/dist/benchmarks/index.d.ts.map +1 -0
  33. package/dist/benchmarks/index.js +11 -0
  34. package/dist/benchmarks/index.js.map +1 -0
  35. package/dist/benchmarks/model-integration.d.ts +111 -0
  36. package/dist/benchmarks/model-integration.d.ts.map +1 -0
  37. package/dist/benchmarks/model-integration.js +904 -0
  38. package/dist/benchmarks/model-integration.js.map +1 -0
  39. package/dist/benchmarks/multi-turn-agent.d.ts +44 -0
  40. package/dist/benchmarks/multi-turn-agent.d.ts.map +1 -0
  41. package/dist/benchmarks/multi-turn-agent.js +254 -0
  42. package/dist/benchmarks/multi-turn-agent.js.map +1 -0
  43. package/dist/benchmarks/multi-turn-loop.d.ts +57 -0
  44. package/dist/benchmarks/multi-turn-loop.d.ts.map +1 -0
  45. package/dist/benchmarks/multi-turn-loop.js +167 -0
  46. package/dist/benchmarks/multi-turn-loop.js.map +1 -0
  47. package/dist/benchmarks/tasks.d.ts +19 -0
  48. package/dist/benchmarks/tasks.d.ts.map +1 -0
  49. package/dist/benchmarks/tasks.js +435 -0
  50. package/dist/benchmarks/tasks.js.map +1 -0
  51. package/dist/bin/cli.d.ts +3 -0
  52. package/dist/bin/cli.d.ts.map +1 -0
  53. package/dist/bin/cli.js +546 -0
  54. package/dist/bin/cli.js.map +1 -0
  55. package/dist/bin/llama-server-optimize.d.ts +18 -0
  56. package/dist/bin/llama-server-optimize.d.ts.map +1 -0
  57. package/dist/bin/llama-server-optimize.js +708 -0
  58. package/dist/bin/llama-server-optimize.js.map +1 -0
  59. package/dist/bin/policy.d.ts +3 -0
  60. package/dist/bin/policy.d.ts.map +1 -0
  61. package/dist/bin/policy.js +143 -0
  62. package/dist/bin/policy.js.map +1 -0
  63. package/dist/bin/tool-calls.d.ts +3 -0
  64. package/dist/bin/tool-calls.d.ts.map +1 -0
  65. package/dist/bin/tool-calls.js +4 -0
  66. package/dist/bin/tool-calls.js.map +1 -0
  67. package/dist/browser/index.d.ts +2 -0
  68. package/dist/browser/index.d.ts.map +1 -0
  69. package/dist/browser/index.js +2 -0
  70. package/dist/browser/index.js.map +1 -0
  71. package/dist/browser/web-browser.d.ts +30 -0
  72. package/dist/browser/web-browser.d.ts.map +1 -0
  73. package/dist/browser/web-browser.js +93 -0
  74. package/dist/browser/web-browser.js.map +1 -0
  75. package/dist/cli/agent.d.ts +20 -0
  76. package/dist/cli/agent.d.ts.map +1 -0
  77. package/dist/cli/agent.js +474 -0
  78. package/dist/cli/agent.js.map +1 -0
  79. package/dist/cli/analyze.d.ts +7 -0
  80. package/dist/cli/analyze.d.ts.map +1 -0
  81. package/dist/cli/analyze.js +103 -0
  82. package/dist/cli/analyze.js.map +1 -0
  83. package/dist/cli/completion-gates.d.ts +51 -0
  84. package/dist/cli/completion-gates.d.ts.map +1 -0
  85. package/dist/cli/completion-gates.js +201 -0
  86. package/dist/cli/completion-gates.js.map +1 -0
  87. package/dist/cli/compliance.d.ts +8 -0
  88. package/dist/cli/compliance.d.ts.map +1 -0
  89. package/dist/cli/compliance.js +509 -0
  90. package/dist/cli/compliance.js.map +1 -0
  91. package/dist/cli/coord.d.ts +7 -0
  92. package/dist/cli/coord.d.ts.map +1 -0
  93. package/dist/cli/coord.js +138 -0
  94. package/dist/cli/coord.js.map +1 -0
  95. package/dist/cli/dashboard.d.ts +21 -0
  96. package/dist/cli/dashboard.d.ts.map +1 -0
  97. package/dist/cli/dashboard.js +1508 -0
  98. package/dist/cli/dashboard.js.map +1 -0
  99. package/dist/cli/deploy.d.ts +19 -0
  100. package/dist/cli/deploy.d.ts.map +1 -0
  101. package/dist/cli/deploy.js +387 -0
  102. package/dist/cli/deploy.js.map +1 -0
  103. package/dist/cli/droids.d.ts +9 -0
  104. package/dist/cli/droids.d.ts.map +1 -0
  105. package/dist/cli/droids.js +227 -0
  106. package/dist/cli/droids.js.map +1 -0
  107. package/dist/cli/generate.d.ts +17 -0
  108. package/dist/cli/generate.d.ts.map +1 -0
  109. package/dist/cli/generate.js +432 -0
  110. package/dist/cli/generate.js.map +1 -0
  111. package/dist/cli/hooks.d.ts +9 -0
  112. package/dist/cli/hooks.d.ts.map +1 -0
  113. package/dist/cli/hooks.js +464 -0
  114. package/dist/cli/hooks.js.map +1 -0
  115. package/dist/cli/init.d.ts +12 -0
  116. package/dist/cli/init.d.ts.map +1 -0
  117. package/dist/cli/init.js +364 -0
  118. package/dist/cli/init.js.map +1 -0
  119. package/dist/cli/mcp-router.d.ts +16 -0
  120. package/dist/cli/mcp-router.d.ts.map +1 -0
  121. package/dist/cli/mcp-router.js +143 -0
  122. package/dist/cli/mcp-router.js.map +1 -0
  123. package/dist/cli/memory.d.ts +24 -0
  124. package/dist/cli/memory.d.ts.map +1 -0
  125. package/dist/cli/memory.js +885 -0
  126. package/dist/cli/memory.js.map +1 -0
  127. package/dist/cli/model.d.ts +15 -0
  128. package/dist/cli/model.d.ts.map +1 -0
  129. package/dist/cli/model.js +290 -0
  130. package/dist/cli/model.js.map +1 -0
  131. package/dist/cli/patterns.d.ts +26 -0
  132. package/dist/cli/patterns.d.ts.map +1 -0
  133. package/dist/cli/patterns.js +862 -0
  134. package/dist/cli/patterns.js.map +1 -0
  135. package/dist/cli/rtk-validation.d.ts +9 -0
  136. package/dist/cli/rtk-validation.d.ts.map +1 -0
  137. package/dist/cli/rtk-validation.js +9 -0
  138. package/dist/cli/rtk-validation.js.map +1 -0
  139. package/dist/cli/rtk.d.ts +34 -0
  140. package/dist/cli/rtk.d.ts.map +1 -0
  141. package/dist/cli/rtk.js +401 -0
  142. package/dist/cli/rtk.js.map +1 -0
  143. package/dist/cli/schema-diff.d.ts +7 -0
  144. package/dist/cli/schema-diff.d.ts.map +1 -0
  145. package/dist/cli/schema-diff.js +11 -0
  146. package/dist/cli/schema-diff.js.map +1 -0
  147. package/dist/cli/setup-mcp-router.d.ts +8 -0
  148. package/dist/cli/setup-mcp-router.d.ts.map +1 -0
  149. package/dist/cli/setup-mcp-router.js +163 -0
  150. package/dist/cli/setup-mcp-router.js.map +1 -0
  151. package/dist/cli/setup-wizard.d.ts +2 -0
  152. package/dist/cli/setup-wizard.d.ts.map +1 -0
  153. package/dist/cli/setup-wizard.js +806 -0
  154. package/dist/cli/setup-wizard.js.map +1 -0
  155. package/dist/cli/setup.d.ts +15 -0
  156. package/dist/cli/setup.d.ts.map +1 -0
  157. package/dist/cli/setup.js +154 -0
  158. package/dist/cli/setup.js.map +1 -0
  159. package/dist/cli/sync.d.ts +8 -0
  160. package/dist/cli/sync.d.ts.map +1 -0
  161. package/dist/cli/sync.js +395 -0
  162. package/dist/cli/sync.js.map +1 -0
  163. package/dist/cli/task.d.ts +33 -0
  164. package/dist/cli/task.d.ts.map +1 -0
  165. package/dist/cli/task.js +672 -0
  166. package/dist/cli/task.js.map +1 -0
  167. package/dist/cli/tool-calls.d.ts +20 -0
  168. package/dist/cli/tool-calls.d.ts.map +1 -0
  169. package/dist/cli/tool-calls.js +605 -0
  170. package/dist/cli/tool-calls.js.map +1 -0
  171. package/dist/cli/uap.d.ts +10 -0
  172. package/dist/cli/uap.d.ts.map +1 -0
  173. package/dist/cli/uap.js +398 -0
  174. package/dist/cli/uap.js.map +1 -0
  175. package/dist/cli/update.d.ts +10 -0
  176. package/dist/cli/update.d.ts.map +1 -0
  177. package/dist/cli/update.js +300 -0
  178. package/dist/cli/update.js.map +1 -0
  179. package/dist/cli/visualize.d.ts +77 -0
  180. package/dist/cli/visualize.d.ts.map +1 -0
  181. package/dist/cli/visualize.js +287 -0
  182. package/dist/cli/visualize.js.map +1 -0
  183. package/dist/cli/worktree.d.ts +9 -0
  184. package/dist/cli/worktree.d.ts.map +1 -0
  185. package/dist/cli/worktree.js +213 -0
  186. package/dist/cli/worktree.js.map +1 -0
  187. package/dist/coordination/adaptive-patterns.d.ts +65 -0
  188. package/dist/coordination/adaptive-patterns.d.ts.map +1 -0
  189. package/dist/coordination/adaptive-patterns.js +108 -0
  190. package/dist/coordination/adaptive-patterns.js.map +1 -0
  191. package/dist/coordination/auto-agent.d.ts +82 -0
  192. package/dist/coordination/auto-agent.d.ts.map +1 -0
  193. package/dist/coordination/auto-agent.js +145 -0
  194. package/dist/coordination/auto-agent.js.map +1 -0
  195. package/dist/coordination/capability-router.d.ts +79 -0
  196. package/dist/coordination/capability-router.d.ts.map +1 -0
  197. package/dist/coordination/capability-router.js +334 -0
  198. package/dist/coordination/capability-router.js.map +1 -0
  199. package/dist/coordination/database.d.ts +13 -0
  200. package/dist/coordination/database.d.ts.map +1 -0
  201. package/dist/coordination/database.js +136 -0
  202. package/dist/coordination/database.js.map +1 -0
  203. package/dist/coordination/deploy-batcher.d.ts +122 -0
  204. package/dist/coordination/deploy-batcher.d.ts.map +1 -0
  205. package/dist/coordination/deploy-batcher.js +718 -0
  206. package/dist/coordination/deploy-batcher.js.map +1 -0
  207. package/dist/coordination/droid-validator.d.ts +59 -0
  208. package/dist/coordination/droid-validator.d.ts.map +1 -0
  209. package/dist/coordination/droid-validator.js +142 -0
  210. package/dist/coordination/droid-validator.js.map +1 -0
  211. package/dist/coordination/index.d.ts +10 -0
  212. package/dist/coordination/index.d.ts.map +1 -0
  213. package/dist/coordination/index.js +10 -0
  214. package/dist/coordination/index.js.map +1 -0
  215. package/dist/coordination/pattern-router.d.ts +50 -0
  216. package/dist/coordination/pattern-router.d.ts.map +1 -0
  217. package/dist/coordination/pattern-router.js +118 -0
  218. package/dist/coordination/pattern-router.js.map +1 -0
  219. package/dist/coordination/service.d.ts +81 -0
  220. package/dist/coordination/service.d.ts.map +1 -0
  221. package/dist/coordination/service.js +619 -0
  222. package/dist/coordination/service.js.map +1 -0
  223. package/dist/coordination/worktree-enforcer.d.ts +22 -0
  224. package/dist/coordination/worktree-enforcer.d.ts.map +1 -0
  225. package/dist/coordination/worktree-enforcer.js +71 -0
  226. package/dist/coordination/worktree-enforcer.js.map +1 -0
  227. package/dist/generators/claude-md.d.ts +3 -0
  228. package/dist/generators/claude-md.d.ts.map +1 -0
  229. package/dist/generators/claude-md.js +1020 -0
  230. package/dist/generators/claude-md.js.map +1 -0
  231. package/dist/generators/template-loader.d.ts +105 -0
  232. package/dist/generators/template-loader.d.ts.map +1 -0
  233. package/dist/generators/template-loader.js +291 -0
  234. package/dist/generators/template-loader.js.map +1 -0
  235. package/dist/index.d.ts +49 -0
  236. package/dist/index.d.ts.map +1 -0
  237. package/dist/index.js +63 -0
  238. package/dist/index.js.map +1 -0
  239. package/dist/mcp-router/config/parser.d.ts +9 -0
  240. package/dist/mcp-router/config/parser.d.ts.map +1 -0
  241. package/dist/mcp-router/config/parser.js +174 -0
  242. package/dist/mcp-router/config/parser.js.map +1 -0
  243. package/dist/mcp-router/executor/client.d.ts +31 -0
  244. package/dist/mcp-router/executor/client.d.ts.map +1 -0
  245. package/dist/mcp-router/executor/client.js +189 -0
  246. package/dist/mcp-router/executor/client.js.map +1 -0
  247. package/dist/mcp-router/index.d.ts +22 -0
  248. package/dist/mcp-router/index.d.ts.map +1 -0
  249. package/dist/mcp-router/index.js +18 -0
  250. package/dist/mcp-router/index.js.map +1 -0
  251. package/dist/mcp-router/output-compressor.d.ts +26 -0
  252. package/dist/mcp-router/output-compressor.d.ts.map +1 -0
  253. package/dist/mcp-router/output-compressor.js +236 -0
  254. package/dist/mcp-router/output-compressor.js.map +1 -0
  255. package/dist/mcp-router/search/fuzzy.d.ts +26 -0
  256. package/dist/mcp-router/search/fuzzy.d.ts.map +1 -0
  257. package/dist/mcp-router/search/fuzzy.js +94 -0
  258. package/dist/mcp-router/search/fuzzy.js.map +1 -0
  259. package/dist/mcp-router/server.d.ts +50 -0
  260. package/dist/mcp-router/server.d.ts.map +1 -0
  261. package/dist/mcp-router/server.js +229 -0
  262. package/dist/mcp-router/server.js.map +1 -0
  263. package/dist/mcp-router/session-stats.d.ts +37 -0
  264. package/dist/mcp-router/session-stats.d.ts.map +1 -0
  265. package/dist/mcp-router/session-stats.js +56 -0
  266. package/dist/mcp-router/session-stats.js.map +1 -0
  267. package/dist/mcp-router/tools/discover.d.ts +37 -0
  268. package/dist/mcp-router/tools/discover.d.ts.map +1 -0
  269. package/dist/mcp-router/tools/discover.js +65 -0
  270. package/dist/mcp-router/tools/discover.js.map +1 -0
  271. package/dist/mcp-router/tools/execute.d.ts +43 -0
  272. package/dist/mcp-router/tools/execute.d.ts.map +1 -0
  273. package/dist/mcp-router/tools/execute.js +144 -0
  274. package/dist/mcp-router/tools/execute.js.map +1 -0
  275. package/dist/mcp-router/types.d.ts +62 -0
  276. package/dist/mcp-router/types.d.ts.map +1 -0
  277. package/dist/mcp-router/types.js +6 -0
  278. package/dist/mcp-router/types.js.map +1 -0
  279. package/dist/memory/adaptive-context.d.ts +149 -0
  280. package/dist/memory/adaptive-context.d.ts.map +1 -0
  281. package/dist/memory/adaptive-context.js +1095 -0
  282. package/dist/memory/adaptive-context.js.map +1 -0
  283. package/dist/memory/agent-scoped-memory.d.ts +67 -0
  284. package/dist/memory/agent-scoped-memory.d.ts.map +1 -0
  285. package/dist/memory/agent-scoped-memory.js +126 -0
  286. package/dist/memory/agent-scoped-memory.js.map +1 -0
  287. package/dist/memory/ambiguity-detector.d.ts +54 -0
  288. package/dist/memory/ambiguity-detector.d.ts.map +1 -0
  289. package/dist/memory/ambiguity-detector.js +401 -0
  290. package/dist/memory/ambiguity-detector.js.map +1 -0
  291. package/dist/memory/backends/base.d.ts +18 -0
  292. package/dist/memory/backends/base.d.ts.map +1 -0
  293. package/dist/memory/backends/base.js +2 -0
  294. package/dist/memory/backends/base.js.map +1 -0
  295. package/dist/memory/backends/factory.d.ts +4 -0
  296. package/dist/memory/backends/factory.d.ts.map +1 -0
  297. package/dist/memory/backends/factory.js +53 -0
  298. package/dist/memory/backends/factory.js.map +1 -0
  299. package/dist/memory/backends/github.d.ts +27 -0
  300. package/dist/memory/backends/github.d.ts.map +1 -0
  301. package/dist/memory/backends/github.js +134 -0
  302. package/dist/memory/backends/github.js.map +1 -0
  303. package/dist/memory/backends/qdrant-cloud.d.ts +32 -0
  304. package/dist/memory/backends/qdrant-cloud.d.ts.map +1 -0
  305. package/dist/memory/backends/qdrant-cloud.js +167 -0
  306. package/dist/memory/backends/qdrant-cloud.js.map +1 -0
  307. package/dist/memory/context-compressor.d.ts +116 -0
  308. package/dist/memory/context-compressor.d.ts.map +1 -0
  309. package/dist/memory/context-compressor.js +430 -0
  310. package/dist/memory/context-compressor.js.map +1 -0
  311. package/dist/memory/context-pruner.d.ts +55 -0
  312. package/dist/memory/context-pruner.d.ts.map +1 -0
  313. package/dist/memory/context-pruner.js +85 -0
  314. package/dist/memory/context-pruner.js.map +1 -0
  315. package/dist/memory/correction-propagator.d.ts +44 -0
  316. package/dist/memory/correction-propagator.d.ts.map +1 -0
  317. package/dist/memory/correction-propagator.js +156 -0
  318. package/dist/memory/correction-propagator.js.map +1 -0
  319. package/dist/memory/daily-log.d.ts +67 -0
  320. package/dist/memory/daily-log.d.ts.map +1 -0
  321. package/dist/memory/daily-log.js +143 -0
  322. package/dist/memory/daily-log.js.map +1 -0
  323. package/dist/memory/dynamic-retrieval.d.ts +112 -0
  324. package/dist/memory/dynamic-retrieval.d.ts.map +1 -0
  325. package/dist/memory/dynamic-retrieval.js +908 -0
  326. package/dist/memory/dynamic-retrieval.js.map +1 -0
  327. package/dist/memory/embeddings.d.ts +172 -0
  328. package/dist/memory/embeddings.d.ts.map +1 -0
  329. package/dist/memory/embeddings.js +780 -0
  330. package/dist/memory/embeddings.js.map +1 -0
  331. package/dist/memory/generic-uap-patterns.d.ts +7 -0
  332. package/dist/memory/generic-uap-patterns.d.ts.map +1 -0
  333. package/dist/memory/generic-uap-patterns.js +43 -0
  334. package/dist/memory/generic-uap-patterns.js.map +1 -0
  335. package/dist/memory/hierarchical-memory.d.ts +141 -0
  336. package/dist/memory/hierarchical-memory.d.ts.map +1 -0
  337. package/dist/memory/hierarchical-memory.js +485 -0
  338. package/dist/memory/hierarchical-memory.js.map +1 -0
  339. package/dist/memory/knowledge-graph.d.ts +98 -0
  340. package/dist/memory/knowledge-graph.d.ts.map +1 -0
  341. package/dist/memory/knowledge-graph.js +275 -0
  342. package/dist/memory/knowledge-graph.js.map +1 -0
  343. package/dist/memory/memory-consolidator.d.ts +124 -0
  344. package/dist/memory/memory-consolidator.d.ts.map +1 -0
  345. package/dist/memory/memory-consolidator.js +514 -0
  346. package/dist/memory/memory-consolidator.js.map +1 -0
  347. package/dist/memory/memory-maintenance.d.ts +39 -0
  348. package/dist/memory/memory-maintenance.d.ts.map +1 -0
  349. package/dist/memory/memory-maintenance.js +336 -0
  350. package/dist/memory/memory-maintenance.js.map +1 -0
  351. package/dist/memory/model-router.d.ts +105 -0
  352. package/dist/memory/model-router.d.ts.map +1 -0
  353. package/dist/memory/model-router.js +474 -0
  354. package/dist/memory/model-router.js.map +1 -0
  355. package/dist/memory/multi-view-memory.d.ts +134 -0
  356. package/dist/memory/multi-view-memory.d.ts.map +1 -0
  357. package/dist/memory/multi-view-memory.js +430 -0
  358. package/dist/memory/multi-view-memory.js.map +1 -0
  359. package/dist/memory/predictive-memory.d.ts +79 -0
  360. package/dist/memory/predictive-memory.d.ts.map +1 -0
  361. package/dist/memory/predictive-memory.js +294 -0
  362. package/dist/memory/predictive-memory.js.map +1 -0
  363. package/dist/memory/prepopulate.d.ts +76 -0
  364. package/dist/memory/prepopulate.d.ts.map +1 -0
  365. package/dist/memory/prepopulate.js +832 -0
  366. package/dist/memory/prepopulate.js.map +1 -0
  367. package/dist/memory/semantic-compression.d.ts +77 -0
  368. package/dist/memory/semantic-compression.d.ts.map +1 -0
  369. package/dist/memory/semantic-compression.js +359 -0
  370. package/dist/memory/semantic-compression.js.map +1 -0
  371. package/dist/memory/serverless-qdrant.d.ts +102 -0
  372. package/dist/memory/serverless-qdrant.d.ts.map +1 -0
  373. package/dist/memory/serverless-qdrant.js +369 -0
  374. package/dist/memory/serverless-qdrant.js.map +1 -0
  375. package/dist/memory/short-term/factory.d.ts +26 -0
  376. package/dist/memory/short-term/factory.d.ts.map +1 -0
  377. package/dist/memory/short-term/factory.js +28 -0
  378. package/dist/memory/short-term/factory.js.map +1 -0
  379. package/dist/memory/short-term/indexeddb.d.ts +25 -0
  380. package/dist/memory/short-term/indexeddb.d.ts.map +1 -0
  381. package/dist/memory/short-term/indexeddb.js +64 -0
  382. package/dist/memory/short-term/indexeddb.js.map +1 -0
  383. package/dist/memory/short-term/schema.d.ts +6 -0
  384. package/dist/memory/short-term/schema.d.ts.map +1 -0
  385. package/dist/memory/short-term/schema.js +141 -0
  386. package/dist/memory/short-term/schema.js.map +1 -0
  387. package/dist/memory/short-term/sqlite.d.ts +64 -0
  388. package/dist/memory/short-term/sqlite.d.ts.map +1 -0
  389. package/dist/memory/short-term/sqlite.js +274 -0
  390. package/dist/memory/short-term/sqlite.js.map +1 -0
  391. package/dist/memory/speculative-cache.d.ts +111 -0
  392. package/dist/memory/speculative-cache.d.ts.map +1 -0
  393. package/dist/memory/speculative-cache.js +457 -0
  394. package/dist/memory/speculative-cache.js.map +1 -0
  395. package/dist/memory/task-classifier.d.ts +40 -0
  396. package/dist/memory/task-classifier.d.ts.map +1 -0
  397. package/dist/memory/task-classifier.js +342 -0
  398. package/dist/memory/task-classifier.js.map +1 -0
  399. package/dist/memory/terminal-bench-knowledge.d.ts +48 -0
  400. package/dist/memory/terminal-bench-knowledge.d.ts.map +1 -0
  401. package/dist/memory/terminal-bench-knowledge.js +622 -0
  402. package/dist/memory/terminal-bench-knowledge.js.map +1 -0
  403. package/dist/memory/write-gate.d.ts +39 -0
  404. package/dist/memory/write-gate.d.ts.map +1 -0
  405. package/dist/memory/write-gate.js +190 -0
  406. package/dist/memory/write-gate.js.map +1 -0
  407. package/dist/models/api-client.d.ts +46 -0
  408. package/dist/models/api-client.d.ts.map +1 -0
  409. package/dist/models/api-client.js +182 -0
  410. package/dist/models/api-client.js.map +1 -0
  411. package/dist/models/execution-profiles.d.ts +64 -0
  412. package/dist/models/execution-profiles.d.ts.map +1 -0
  413. package/dist/models/execution-profiles.js +403 -0
  414. package/dist/models/execution-profiles.js.map +1 -0
  415. package/dist/models/executor.d.ts +130 -0
  416. package/dist/models/executor.d.ts.map +1 -0
  417. package/dist/models/executor.js +382 -0
  418. package/dist/models/executor.js.map +1 -0
  419. package/dist/models/index.d.ts +19 -0
  420. package/dist/models/index.d.ts.map +1 -0
  421. package/dist/models/index.js +23 -0
  422. package/dist/models/index.js.map +1 -0
  423. package/dist/models/plan-validator.d.ts +37 -0
  424. package/dist/models/plan-validator.d.ts.map +1 -0
  425. package/dist/models/plan-validator.js +179 -0
  426. package/dist/models/plan-validator.js.map +1 -0
  427. package/dist/models/planner.d.ts +73 -0
  428. package/dist/models/planner.d.ts.map +1 -0
  429. package/dist/models/planner.js +375 -0
  430. package/dist/models/planner.js.map +1 -0
  431. package/dist/models/router.d.ts +96 -0
  432. package/dist/models/router.d.ts.map +1 -0
  433. package/dist/models/router.js +523 -0
  434. package/dist/models/router.js.map +1 -0
  435. package/dist/models/types.d.ts +370 -0
  436. package/dist/models/types.d.ts.map +1 -0
  437. package/dist/models/types.js +232 -0
  438. package/dist/models/types.js.map +1 -0
  439. package/dist/models/unified-router.d.ts +152 -0
  440. package/dist/models/unified-router.d.ts.map +1 -0
  441. package/dist/models/unified-router.js +313 -0
  442. package/dist/models/unified-router.js.map +1 -0
  443. package/dist/policies/convert-policy-to-claude.d.ts +3 -0
  444. package/dist/policies/convert-policy-to-claude.d.ts.map +1 -0
  445. package/dist/policies/convert-policy-to-claude.js +87 -0
  446. package/dist/policies/convert-policy-to-claude.js.map +1 -0
  447. package/dist/policies/database-manager.d.ts +27 -0
  448. package/dist/policies/database-manager.d.ts.map +1 -0
  449. package/dist/policies/database-manager.js +198 -0
  450. package/dist/policies/database-manager.js.map +1 -0
  451. package/dist/policies/enforced-tool-router.d.ts +53 -0
  452. package/dist/policies/enforced-tool-router.d.ts.map +1 -0
  453. package/dist/policies/enforced-tool-router.js +80 -0
  454. package/dist/policies/enforced-tool-router.js.map +1 -0
  455. package/dist/policies/index.d.ts +10 -0
  456. package/dist/policies/index.d.ts.map +1 -0
  457. package/dist/policies/index.js +8 -0
  458. package/dist/policies/index.js.map +1 -0
  459. package/dist/policies/policy-gate.d.ts +59 -0
  460. package/dist/policies/policy-gate.d.ts.map +1 -0
  461. package/dist/policies/policy-gate.js +171 -0
  462. package/dist/policies/policy-gate.js.map +1 -0
  463. package/dist/policies/policy-memory.d.ts +18 -0
  464. package/dist/policies/policy-memory.d.ts.map +1 -0
  465. package/dist/policies/policy-memory.js +126 -0
  466. package/dist/policies/policy-memory.js.map +1 -0
  467. package/dist/policies/policy-tools.d.ts +11 -0
  468. package/dist/policies/policy-tools.d.ts.map +1 -0
  469. package/dist/policies/policy-tools.js +66 -0
  470. package/dist/policies/policy-tools.js.map +1 -0
  471. package/dist/policies/schemas/policy.d.ts +69 -0
  472. package/dist/policies/schemas/policy.d.ts.map +1 -0
  473. package/dist/policies/schemas/policy.js +31 -0
  474. package/dist/policies/schemas/policy.js.map +1 -0
  475. package/dist/tasks/coordination.d.ts +83 -0
  476. package/dist/tasks/coordination.d.ts.map +1 -0
  477. package/dist/tasks/coordination.js +291 -0
  478. package/dist/tasks/coordination.js.map +1 -0
  479. package/dist/tasks/database.d.ts +19 -0
  480. package/dist/tasks/database.d.ts.map +1 -0
  481. package/dist/tasks/database.js +149 -0
  482. package/dist/tasks/database.js.map +1 -0
  483. package/dist/tasks/decoder-gate.d.ts +64 -0
  484. package/dist/tasks/decoder-gate.d.ts.map +1 -0
  485. package/dist/tasks/decoder-gate.js +268 -0
  486. package/dist/tasks/decoder-gate.js.map +1 -0
  487. package/dist/tasks/index.d.ts +6 -0
  488. package/dist/tasks/index.d.ts.map +1 -0
  489. package/dist/tasks/index.js +6 -0
  490. package/dist/tasks/index.js.map +1 -0
  491. package/dist/tasks/service.d.ts +40 -0
  492. package/dist/tasks/service.d.ts.map +1 -0
  493. package/dist/tasks/service.js +671 -0
  494. package/dist/tasks/service.js.map +1 -0
  495. package/dist/tasks/types.d.ts +238 -0
  496. package/dist/tasks/types.d.ts.map +1 -0
  497. package/dist/tasks/types.js +74 -0
  498. package/dist/tasks/types.js.map +1 -0
  499. package/dist/telemetry/index.d.ts +2 -0
  500. package/dist/telemetry/index.d.ts.map +1 -0
  501. package/dist/telemetry/index.js +2 -0
  502. package/dist/telemetry/index.js.map +1 -0
  503. package/dist/telemetry/session-telemetry.d.ts +56 -0
  504. package/dist/telemetry/session-telemetry.d.ts.map +1 -0
  505. package/dist/telemetry/session-telemetry.js +807 -0
  506. package/dist/telemetry/session-telemetry.js.map +1 -0
  507. package/dist/types/analysis.d.ts +82 -0
  508. package/dist/types/analysis.d.ts.map +1 -0
  509. package/dist/types/analysis.js +2 -0
  510. package/dist/types/analysis.js.map +1 -0
  511. package/dist/types/config.d.ts +3324 -0
  512. package/dist/types/config.d.ts.map +1 -0
  513. package/dist/types/config.js +418 -0
  514. package/dist/types/config.js.map +1 -0
  515. package/dist/types/coordination.d.ts +240 -0
  516. package/dist/types/coordination.d.ts.map +1 -0
  517. package/dist/types/coordination.js +43 -0
  518. package/dist/types/coordination.js.map +1 -0
  519. package/dist/types/index.d.ts +4 -0
  520. package/dist/types/index.d.ts.map +1 -0
  521. package/dist/types/index.js +4 -0
  522. package/dist/types/index.js.map +1 -0
  523. package/dist/uap-droids-strict.d.ts +59 -0
  524. package/dist/uap-droids-strict.d.ts.map +1 -0
  525. package/dist/uap-droids-strict.js +200 -0
  526. package/dist/uap-droids-strict.js.map +1 -0
  527. package/dist/utils/config-manager.d.ts +30 -0
  528. package/dist/utils/config-manager.d.ts.map +1 -0
  529. package/dist/utils/config-manager.js +41 -0
  530. package/dist/utils/config-manager.js.map +1 -0
  531. package/dist/utils/fetch-with-retry.d.ts +5 -0
  532. package/dist/utils/fetch-with-retry.d.ts.map +1 -0
  533. package/dist/utils/fetch-with-retry.js +61 -0
  534. package/dist/utils/fetch-with-retry.js.map +1 -0
  535. package/dist/utils/merge-claude-md.d.ts +28 -0
  536. package/dist/utils/merge-claude-md.d.ts.map +1 -0
  537. package/dist/utils/merge-claude-md.js +342 -0
  538. package/dist/utils/merge-claude-md.js.map +1 -0
  539. package/dist/utils/rate-limiter.d.ts +58 -0
  540. package/dist/utils/rate-limiter.d.ts.map +1 -0
  541. package/dist/utils/rate-limiter.js +100 -0
  542. package/dist/utils/rate-limiter.js.map +1 -0
  543. package/dist/utils/string-similarity.d.ts +37 -0
  544. package/dist/utils/string-similarity.d.ts.map +1 -0
  545. package/dist/utils/string-similarity.js +114 -0
  546. package/dist/utils/string-similarity.js.map +1 -0
  547. package/dist/utils/validate-json.d.ts +51 -0
  548. package/dist/utils/validate-json.d.ts.map +1 -0
  549. package/dist/utils/validate-json.js +94 -0
  550. package/dist/utils/validate-json.js.map +1 -0
  551. package/docs/INDEX.md +66 -0
  552. package/docs/architecture/MULTI_MODEL.md +224 -0
  553. package/docs/architecture/SYSTEM_ANALYSIS.md +1117 -0
  554. package/docs/architecture/UAP_COMPLIANCE.md +217 -0
  555. package/docs/architecture/UAP_PROTOCOL.md +339 -0
  556. package/docs/architecture/UAP_STRICT_DROIDS.md +172 -0
  557. package/docs/archive/BALLS_MODE_SELF_ANALYSIS.md +260 -0
  558. package/docs/archive/FAILING_TASKS_SOLUTION_PLAN.md +668 -0
  559. package/docs/archive/JINJA2-SYSTEM-MESSAGE-FIX.md +209 -0
  560. package/docs/archive/NPM-PUBLISH-V0.9.1.md +240 -0
  561. package/docs/archive/OPTIMIZATION_OPTIONS.md +334 -0
  562. package/docs/archive/SETUP_IMPROVEMENTS.md +213 -0
  563. package/docs/archive/UAP_GENERIC_OPTIMIZATION_PLAN.md +270 -0
  564. package/docs/archive/UAP_V103_PATTERN_DESIGN.md +315 -0
  565. package/docs/archive/UAP_V104_COMPLIANCE_DESIGN.md +223 -0
  566. package/docs/archive/changelog/2026-03-10_uap-100-compliance.md +77 -0
  567. package/docs/archive/changelog/2026-03-10_uap-full-system-verification.md +109 -0
  568. package/docs/benchmarks/ACCURACY_ANALYSIS.md +471 -0
  569. package/docs/benchmarks/TOKEN_OPTIMIZATION.md +572 -0
  570. package/docs/benchmarks/VALIDATION_PLAN.md +568 -0
  571. package/docs/benchmarks/VALIDATION_RESULTS.md +161 -0
  572. package/docs/deployment/DEPLOYMENT.md +895 -0
  573. package/docs/deployment/DEPLOYMENT_STRATEGIES.md +518 -0
  574. package/docs/deployment/DEPLOY_BATCHER_ANALYSIS.md +856 -0
  575. package/docs/deployment/DEPLOY_BATCHING.md +273 -0
  576. package/docs/deployment/DEPLOY_BUCKETING_ANALYSIS.md +420 -0
  577. package/docs/deployment/QWEN35_LLAMA_CPP.md +265 -0
  578. package/docs/getting-started/INTEGRATION.md +449 -0
  579. package/docs/getting-started/OVERVIEW.md +344 -0
  580. package/docs/getting-started/SETUP.md +203 -0
  581. package/docs/integrations/MCP_ROUTER_SETUP.md +445 -0
  582. package/docs/integrations/RTK_INTEGRATION.md +468 -0
  583. package/docs/operations/TROUBLESHOOTING.md +660 -0
  584. package/docs/reference/API_REFERENCE.md +903 -0
  585. package/docs/reference/FEATURES.md +472 -0
  586. package/docs/reference/HARNESS-MATRIX.md +318 -0
  587. package/docs/reference/UAP_CLI_REFERENCE.md +600 -0
  588. package/docs/research/BEHAVIORAL_PATTERNS.md +228 -0
  589. package/docs/research/DOMAIN_STRATEGIES.md +316 -0
  590. package/docs/research/MEMORY_SYSTEMS_COMPARISON.md +812 -0
  591. package/docs/research/PATTERN_ANALYSIS_2026-01-18.md +436 -0
  592. package/docs/research/PERFORMANCE_ANALYSIS_2026-01-18.md +209 -0
  593. package/docs/research/PERFORMANCE_TEST_PLAN.md +383 -0
  594. package/docs/research/TERMINAL_BENCH_LEARNINGS.md +217 -0
  595. package/package.json +113 -0
  596. package/scripts/README.md +161 -0
  597. package/templates/CLAUDE.template.md +10 -0
  598. package/templates/CLAUDE_ARCHITECTURE.template.md +103 -0
  599. package/templates/CLAUDE_CODING.template.md +127 -0
  600. package/templates/CLAUDE_DROIDS.template.md +109 -0
  601. package/templates/CLAUDE_MEMORY.template.md +131 -0
  602. package/templates/CLAUDE_WORKFLOWS.template.md +139 -0
  603. package/templates/PROJECT.template.md +209 -0
  604. package/templates/SCHEMA.md +57 -0
  605. package/templates/archive/CLAUDE.template.root-v6.md +534 -0
  606. package/templates/archive/CLAUDE.template.v6.md +534 -0
  607. package/templates/hooks/forgecode/pre-compact.sh +68 -0
  608. package/templates/hooks/forgecode/session-start.sh +169 -0
  609. package/templates/hooks/forgecode.plugin.sh +128 -0
  610. package/templates/hooks/pre-compact.sh +74 -0
  611. package/templates/hooks/session-start.sh +366 -0
  612. package/tools/agents/README.md +224 -0
  613. package/tools/agents/UAP/README.md +386 -0
  614. package/tools/agents/UAP/__init__.py +9 -0
  615. package/tools/agents/UAP/cli.py +901 -0
  616. package/tools/agents/UAP/compliance_verify.sh +108 -0
  617. package/tools/agents/UAP/full_verification.sh +126 -0
  618. package/tools/agents/UAP/version.py +32 -0
  619. package/tools/agents/benchmarks/benchmark_memory_systems.py +730 -0
  620. package/tools/agents/benchmarks/results/benchmark_20260106_064817.json +170 -0
  621. package/tools/agents/benchmarks/results/benchmark_20260106_064817.md +51 -0
  622. package/tools/agents/config/chat_template.jinja +77 -0
  623. package/tools/agents/config/tool-call-schema.json +19 -0
  624. package/tools/agents/config/tool-call.gbnf +58 -0
  625. package/tools/agents/docker/Dockerfile.python +52 -0
  626. package/tools/agents/docker/Dockerfile.ubuntu +55 -0
  627. package/tools/agents/docker-compose.qdrant.yml +24 -0
  628. package/tools/agents/install-opencode-local.sh.j2 +135 -0
  629. package/tools/agents/migrations/apply.py +256 -0
  630. package/tools/agents/opencode_uap_agent.py +1505 -0
  631. package/tools/agents/plugin/README.md +91 -0
  632. package/tools/agents/plugin/index.ts +46 -0
  633. package/tools/agents/plugin/pre-compact.sh +68 -0
  634. package/tools/agents/plugin/session-start.sh +175 -0
  635. package/tools/agents/plugin/uap-commands.ts +45 -0
  636. package/tools/agents/plugin/uap-droids.ts +54 -0
  637. package/tools/agents/plugin/uap-patterns.ts +54 -0
  638. package/tools/agents/plugin/uap-skills.ts +52 -0
  639. package/tools/agents/plugins/uap-enforce.ts +314 -0
  640. package/tools/agents/scripts/__pycache__/tool_call_wrapper.cpython-313.pyc +0 -0
  641. package/tools/agents/scripts/chat_template_verifier.py +343 -0
  642. package/tools/agents/scripts/fix-qwen-template.js +38 -0
  643. package/tools/agents/scripts/fix_qwen_chat_template.py +316 -0
  644. package/tools/agents/scripts/generate_lora_training_data.py +412 -0
  645. package/tools/agents/scripts/init_qdrant.py +151 -0
  646. package/tools/agents/scripts/memory_migration.py +560 -0
  647. package/tools/agents/scripts/migrate_memory_to_qdrant.py +110 -0
  648. package/tools/agents/scripts/prepare_lora.sh +512 -0
  649. package/tools/agents/scripts/query_memory.py +200 -0
  650. package/tools/agents/scripts/qwen-tool-call-test.js +38 -0
  651. package/tools/agents/scripts/qwen-tool-call-wrapper.js +38 -0
  652. package/tools/agents/scripts/qwen_tool_call_test.py +464 -0
  653. package/tools/agents/scripts/qwen_tool_call_wrapper.py +686 -0
  654. package/tools/agents/scripts/start-services.sh +96 -0
  655. package/tools/agents/scripts/tool-choice-proxy.cjs +296 -0
  656. package/tools/agents/scripts/tool_call_test.py +656 -0
  657. package/tools/agents/scripts/tool_call_wrapper.py +799 -0
  658. package/tools/agents/tests/test_uap_compliance.py +257 -0
  659. package/tools/agents/uap_agent.py +122 -0
  660. package/tools/agents/uap_agent_install.sh +12 -0
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Unified Routing Service
3
+ *
4
+ * Bridges the two independent routing systems:
5
+ * 1. Rule-based ModelRouter (src/models/router.ts) - uses task complexity/type keywords, routing rules, role assignments
6
+ * 2. Benchmark-data ModelRouter (src/memory/model-router.ts) - uses MODEL_FINGERPRINTS with per-category success rates, SQLite persistence
7
+ *
8
+ * Combines both signals to produce a single routing decision with higher accuracy
9
+ * than either system alone. The benchmark-data router is weighted higher when it
10
+ * has sufficient data points (>=5) for the relevant category.
11
+ */
12
+ import { ModelRouter as RuleBasedRouter } from './router.js';
13
+ import { type ModelId, type RoutingDecision, type RoutingConfig } from '../memory/model-router.js';
14
+ import type { MultiModelConfig, TaskClassificationResult, TaskComplexity } from './types.js';
15
+ /**
16
+ * Result from the unified routing system.
17
+ */
18
+ export interface UnifiedRoutingResult {
19
+ /** The selected model ID (using rule-based router's naming convention) */
20
+ selectedModel: string;
21
+ /** Fallback model ID if the primary fails */
22
+ fallbackModel: string;
23
+ /** Which system's recommendation was used: 'rule-based', 'benchmark-data', or 'consensus' */
24
+ source: 'rule-based' | 'benchmark-data' | 'consensus';
25
+ /** Confidence score 0-1 reflecting how confident the unified system is */
26
+ confidence: number;
27
+ /** Human-readable reasoning explaining the decision */
28
+ reasoning: string;
29
+ /** The rule-based router's classification */
30
+ ruleBasedClassification: TaskClassificationResult;
31
+ /** The benchmark-data router's decision */
32
+ benchmarkDecision: RoutingDecision;
33
+ /** Whether the two systems agreed on the model */
34
+ systemsAgreed: boolean;
35
+ /** Number of benchmark data points for the relevant category */
36
+ benchmarkDataPoints: number;
37
+ }
38
+ /**
39
+ * Options for recording outcomes back to the benchmark-data router.
40
+ */
41
+ export interface OutcomeRecord {
42
+ /** The model that was actually used (rule-based router naming) */
43
+ modelUsed: string;
44
+ /** Whether the task succeeded */
45
+ success: boolean;
46
+ /** Latency in milliseconds */
47
+ latencyMs: number;
48
+ /** Optional task category for category-specific tracking */
49
+ taskCategory?: string;
50
+ }
51
+ /**
52
+ * Side-by-side analysis of both routing systems.
53
+ */
54
+ export interface RoutingAnalysis {
55
+ taskDescription: string;
56
+ ruleBasedResult: {
57
+ suggestedModel: string;
58
+ complexity: TaskComplexity;
59
+ taskType: string;
60
+ reasoning: string;
61
+ };
62
+ benchmarkResult: {
63
+ primaryModel: ModelId;
64
+ score: string;
65
+ estimatedSuccessRate: number;
66
+ estimatedLatencyMs: number;
67
+ estimatedCost: number;
68
+ reasoning: string;
69
+ };
70
+ unifiedResult: UnifiedRoutingResult;
71
+ modelComparison: Array<{
72
+ modelId: string;
73
+ benchmarkModelId: ModelId | null;
74
+ ruleBasedRole: string | null;
75
+ benchmarkSuccessRate: number | null;
76
+ benchmarkCategoryDataPoints: number | null;
77
+ }>;
78
+ }
79
+ /**
80
+ * Unified Routing Service that combines rule-based and benchmark-data routing.
81
+ */
82
+ export declare class UnifiedRoutingService {
83
+ private ruleRouter;
84
+ private benchmarkConfig;
85
+ /**
86
+ * @param config - MultiModelConfig for the rule-based router
87
+ * @param benchmarkConfig - Optional overrides for the benchmark-data router's RoutingConfig
88
+ */
89
+ constructor(config: MultiModelConfig, benchmarkConfig?: Partial<RoutingConfig>);
90
+ /**
91
+ * Route a task using both systems and combine their signals.
92
+ *
93
+ * Decision logic:
94
+ * - If both systems agree on the model → use that model (source: 'consensus')
95
+ * - If they disagree and benchmark has >=5 data points for the category → use benchmark (source: 'benchmark-data')
96
+ * - If they disagree and benchmark has <5 data points → use rule-based (source: 'rule-based')
97
+ */
98
+ route(taskDescription: string): UnifiedRoutingResult;
99
+ /**
100
+ * Record a task outcome, feeding back to the benchmark-data router for learning.
101
+ */
102
+ recordOutcome(outcome: OutcomeRecord): void;
103
+ /**
104
+ * Show both systems' recommendations side by side for analysis/debugging.
105
+ */
106
+ analyzeRouting(taskDescription: string): RoutingAnalysis;
107
+ /**
108
+ * Get the underlying rule-based router for advanced usage.
109
+ */
110
+ getRuleRouter(): RuleBasedRouter;
111
+ /**
112
+ * Get the number of benchmark data points for the most relevant category
113
+ * for a given task description, using the benchmark model's fingerprint.
114
+ */
115
+ private getCategoryDataPoints;
116
+ /**
117
+ * Same as getCategoryDataPoints but takes a fingerprint directly (no model lookup).
118
+ */
119
+ private getCategoryDataPointsFromFingerprint;
120
+ /**
121
+ * Get the maximum number of attempts across all categories for a fingerprint.
122
+ * This represents the most-exercised category and serves as a proxy for
123
+ * how much data we have for this model.
124
+ */
125
+ private getMaxCategoryAttempts;
126
+ /**
127
+ * Compute confidence when both systems agree.
128
+ * Higher confidence because consensus is a strong signal.
129
+ */
130
+ private computeConsensusConfidence;
131
+ /**
132
+ * Compute confidence when using the benchmark-data router (disagreement case).
133
+ */
134
+ private computeBenchmarkConfidence;
135
+ /**
136
+ * Compute confidence when using the rule-based router (disagreement, low benchmark data).
137
+ */
138
+ private computeRuleBasedConfidence;
139
+ /**
140
+ * Select the best fallback model from the two systems' recommendations.
141
+ */
142
+ private selectFallback;
143
+ /**
144
+ * Get the role assigned to a model in the rule-based router.
145
+ */
146
+ private getRoleForModel;
147
+ }
148
+ /**
149
+ * Create a UnifiedRoutingService with the given configuration.
150
+ */
151
+ export declare function createUnifiedRouter(config: MultiModelConfig, benchmarkConfig?: Partial<RoutingConfig>): UnifiedRoutingService;
152
+ //# sourceMappingURL=unified-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-router.d.ts","sourceRoot":"","sources":["../../src/models/unified-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,313 @@
1
+ /**
2
+ * Unified Routing Service
3
+ *
4
+ * Bridges the two independent routing systems:
5
+ * 1. Rule-based ModelRouter (src/models/router.ts) - uses task complexity/type keywords, routing rules, role assignments
6
+ * 2. Benchmark-data ModelRouter (src/memory/model-router.ts) - uses MODEL_FINGERPRINTS with per-category success rates, SQLite persistence
7
+ *
8
+ * Combines both signals to produce a single routing decision with higher accuracy
9
+ * than either system alone. The benchmark-data router is weighted higher when it
10
+ * has sufficient data points (>=5) for the relevant category.
11
+ */
12
+ import { ModelRouter as RuleBasedRouter } from './router.js';
13
+ import { routeTask as benchmarkRouteTask, recordTaskOutcome, getModelFingerprint, getAllModelFingerprints, } from '../memory/model-router.js';
14
+ /**
15
+ * Mapping from benchmark-data ModelId values to rule-based router model IDs.
16
+ * The benchmark router uses 'claude-opus-4.5' while the rule-based router uses 'opus-4.5'.
17
+ */
18
+ const BENCHMARK_TO_RULE_MODEL_MAP = {
19
+ 'claude-opus-4.5': 'opus-4.5',
20
+ 'gpt-5.2': 'gpt-5.2',
21
+ 'glm-4.7': 'glm-4.7',
22
+ 'gpt-5.2-codex': 'gpt-5.2',
23
+ };
24
+ const RULE_TO_BENCHMARK_MODEL_MAP = {
25
+ 'opus-4.5': 'claude-opus-4.5',
26
+ 'gpt-5.2': 'gpt-5.2',
27
+ 'glm-4.7': 'glm-4.7',
28
+ 'deepseek-v3.2': 'gpt-5.2', // No benchmark equivalent; map to closest general-purpose model
29
+ 'deepseek-v3.2-exp': 'gpt-5.2',
30
+ 'qwen35-a3b': 'glm-4.7',
31
+ };
32
+ /**
33
+ * Map rule-based TaskComplexity to benchmark difficulty levels.
34
+ */
35
+ function complexityToDifficulty(complexity) {
36
+ switch (complexity) {
37
+ case 'low':
38
+ return 'easy';
39
+ case 'medium':
40
+ return 'medium';
41
+ case 'high':
42
+ case 'critical':
43
+ return 'hard';
44
+ }
45
+ }
46
+ /**
47
+ * Unified Routing Service that combines rule-based and benchmark-data routing.
48
+ */
49
+ export class UnifiedRoutingService {
50
+ ruleRouter;
51
+ benchmarkConfig;
52
+ /**
53
+ * @param config - MultiModelConfig for the rule-based router
54
+ * @param benchmarkConfig - Optional overrides for the benchmark-data router's RoutingConfig
55
+ */
56
+ constructor(config, benchmarkConfig = {}) {
57
+ this.ruleRouter = new RuleBasedRouter(config);
58
+ this.benchmarkConfig = benchmarkConfig;
59
+ }
60
+ /**
61
+ * Route a task using both systems and combine their signals.
62
+ *
63
+ * Decision logic:
64
+ * - If both systems agree on the model → use that model (source: 'consensus')
65
+ * - If they disagree and benchmark has >=5 data points for the category → use benchmark (source: 'benchmark-data')
66
+ * - If they disagree and benchmark has <5 data points → use rule-based (source: 'rule-based')
67
+ */
68
+ route(taskDescription) {
69
+ // Step A: Classify via rule-based router
70
+ const ruleClassification = this.ruleRouter.classifyTask(taskDescription);
71
+ // Step B: Get benchmark-data recommendation
72
+ const difficulty = complexityToDifficulty(ruleClassification.complexity);
73
+ const benchmarkDecision = benchmarkRouteTask(taskDescription, difficulty, this.benchmarkConfig);
74
+ // Normalize model IDs so we can compare
75
+ const ruleModelId = ruleClassification.suggestedModel;
76
+ const benchmarkModelId = benchmarkDecision.primary;
77
+ const benchmarkAsRuleId = BENCHMARK_TO_RULE_MODEL_MAP[benchmarkModelId] ?? benchmarkModelId;
78
+ // Check benchmark data points for the relevant category
79
+ const benchmarkFingerprint = getModelFingerprint(benchmarkModelId);
80
+ const benchmarkDataPoints = this.getCategoryDataPoints(benchmarkFingerprint, taskDescription);
81
+ // Determine if the two systems agree
82
+ const systemsAgreed = ruleModelId === benchmarkAsRuleId;
83
+ let selectedModel;
84
+ let source;
85
+ let confidence;
86
+ let reasoning;
87
+ if (systemsAgreed) {
88
+ // Consensus: both systems agree
89
+ selectedModel = ruleModelId;
90
+ source = 'consensus';
91
+ confidence = this.computeConsensusConfidence(ruleClassification, benchmarkDecision, benchmarkDataPoints);
92
+ reasoning =
93
+ `Both routing systems agree on ${selectedModel}. ` +
94
+ `Rule-based: ${ruleClassification.reasoning}. ` +
95
+ `Benchmark: ${benchmarkDecision.reason}.`;
96
+ }
97
+ else if (benchmarkDataPoints >= 5) {
98
+ // Benchmark has enough data — trust it
99
+ selectedModel = benchmarkAsRuleId;
100
+ source = 'benchmark-data';
101
+ confidence = this.computeBenchmarkConfidence(benchmarkDecision, benchmarkDataPoints);
102
+ reasoning =
103
+ `Systems disagree (rule-based: ${ruleModelId}, benchmark: ${benchmarkAsRuleId}). ` +
104
+ `Benchmark router preferred with ${benchmarkDataPoints} data points for this category. ` +
105
+ `Benchmark: ${benchmarkDecision.reason}. ` +
106
+ `Rule-based: ${ruleClassification.reasoning}.`;
107
+ }
108
+ else {
109
+ // Not enough benchmark data — trust rule-based
110
+ selectedModel = ruleModelId;
111
+ source = 'rule-based';
112
+ confidence = this.computeRuleBasedConfidence(ruleClassification, benchmarkDataPoints);
113
+ reasoning =
114
+ `Systems disagree (rule-based: ${ruleModelId}, benchmark: ${benchmarkAsRuleId}). ` +
115
+ `Rule-based router preferred — benchmark has only ${benchmarkDataPoints} data points (< 5 threshold). ` +
116
+ `Rule-based: ${ruleClassification.reasoning}. ` +
117
+ `Benchmark: ${benchmarkDecision.reason}.`;
118
+ }
119
+ // Determine fallback
120
+ const fallbackModel = this.selectFallback(selectedModel, ruleClassification, benchmarkDecision);
121
+ return {
122
+ selectedModel,
123
+ fallbackModel,
124
+ source,
125
+ confidence,
126
+ reasoning,
127
+ ruleBasedClassification: ruleClassification,
128
+ benchmarkDecision,
129
+ systemsAgreed,
130
+ benchmarkDataPoints,
131
+ };
132
+ }
133
+ /**
134
+ * Record a task outcome, feeding back to the benchmark-data router for learning.
135
+ */
136
+ recordOutcome(outcome) {
137
+ const benchmarkModelId = RULE_TO_BENCHMARK_MODEL_MAP[outcome.modelUsed] ?? outcome.modelUsed;
138
+ // Only record if it's a valid benchmark model ID
139
+ if (getModelFingerprint(benchmarkModelId)) {
140
+ recordTaskOutcome(benchmarkModelId, outcome.success, outcome.latencyMs, outcome.taskCategory);
141
+ }
142
+ }
143
+ /**
144
+ * Show both systems' recommendations side by side for analysis/debugging.
145
+ */
146
+ analyzeRouting(taskDescription) {
147
+ const ruleClassification = this.ruleRouter.classifyTask(taskDescription);
148
+ const difficulty = complexityToDifficulty(ruleClassification.complexity);
149
+ const benchmarkDecision = benchmarkRouteTask(taskDescription, difficulty, this.benchmarkConfig);
150
+ const unifiedResult = this.route(taskDescription);
151
+ // Build model comparison across all known models
152
+ const allRuleModels = this.ruleRouter.getAllModels();
153
+ const allBenchmarkFingerprints = getAllModelFingerprints();
154
+ const modelComparison = allRuleModels.map((model) => {
155
+ const benchmarkId = RULE_TO_BENCHMARK_MODEL_MAP[model.id] ?? null;
156
+ const fp = benchmarkId ? (allBenchmarkFingerprints[benchmarkId] ?? null) : null;
157
+ // Find the category data points from the benchmark fingerprint
158
+ const categoryDataPoints = fp
159
+ ? this.getCategoryDataPointsFromFingerprint(fp, taskDescription)
160
+ : null;
161
+ return {
162
+ modelId: model.id,
163
+ benchmarkModelId: benchmarkId,
164
+ ruleBasedRole: this.getRoleForModel(model.id),
165
+ benchmarkSuccessRate: fp ? fp.successRate : null,
166
+ benchmarkCategoryDataPoints: categoryDataPoints,
167
+ };
168
+ });
169
+ return {
170
+ taskDescription,
171
+ ruleBasedResult: {
172
+ suggestedModel: ruleClassification.suggestedModel,
173
+ complexity: ruleClassification.complexity,
174
+ taskType: ruleClassification.taskType,
175
+ reasoning: ruleClassification.reasoning,
176
+ },
177
+ benchmarkResult: {
178
+ primaryModel: benchmarkDecision.primary,
179
+ score: `${benchmarkDecision.estimatedSuccessRate * 100}%`,
180
+ estimatedSuccessRate: benchmarkDecision.estimatedSuccessRate,
181
+ estimatedLatencyMs: benchmarkDecision.estimatedLatencyMs,
182
+ estimatedCost: benchmarkDecision.estimatedCost,
183
+ reasoning: benchmarkDecision.reason,
184
+ },
185
+ unifiedResult,
186
+ modelComparison,
187
+ };
188
+ }
189
+ /**
190
+ * Get the underlying rule-based router for advanced usage.
191
+ */
192
+ getRuleRouter() {
193
+ return this.ruleRouter;
194
+ }
195
+ // --- Private helpers ---
196
+ /**
197
+ * Get the number of benchmark data points for the most relevant category
198
+ * for a given task description, using the benchmark model's fingerprint.
199
+ */
200
+ getCategoryDataPoints(fingerprint, _taskDescription) {
201
+ if (!fingerprint?.categoryStats)
202
+ return 0;
203
+ return this.getMaxCategoryAttempts(fingerprint);
204
+ }
205
+ /**
206
+ * Same as getCategoryDataPoints but takes a fingerprint directly (no model lookup).
207
+ */
208
+ getCategoryDataPointsFromFingerprint(fingerprint, _taskDescription) {
209
+ if (!fingerprint.categoryStats)
210
+ return 0;
211
+ return this.getMaxCategoryAttempts(fingerprint);
212
+ }
213
+ /**
214
+ * Get the maximum number of attempts across all categories for a fingerprint.
215
+ * This represents the most-exercised category and serves as a proxy for
216
+ * how much data we have for this model.
217
+ */
218
+ getMaxCategoryAttempts(fingerprint) {
219
+ if (!fingerprint.categoryStats)
220
+ return 0;
221
+ let max = 0;
222
+ for (const stats of Object.values(fingerprint.categoryStats)) {
223
+ if (stats.attempts > max) {
224
+ max = stats.attempts;
225
+ }
226
+ }
227
+ return max;
228
+ }
229
+ /**
230
+ * Compute confidence when both systems agree.
231
+ * Higher confidence because consensus is a strong signal.
232
+ */
233
+ computeConsensusConfidence(ruleClassification, benchmarkDecision, dataPoints) {
234
+ // Base: 0.7 for consensus agreement
235
+ let confidence = 0.7;
236
+ // Boost from benchmark success rate
237
+ confidence += benchmarkDecision.estimatedSuccessRate * 0.15;
238
+ // Boost from data richness (max +0.1 at 10+ data points)
239
+ confidence += Math.min(dataPoints / 10, 1) * 0.1;
240
+ // Small boost if rule-based had high keyword match count
241
+ if (ruleClassification.keywords.length >= 3) {
242
+ confidence += 0.05;
243
+ }
244
+ return Math.min(confidence, 1.0);
245
+ }
246
+ /**
247
+ * Compute confidence when using the benchmark-data router (disagreement case).
248
+ */
249
+ computeBenchmarkConfidence(benchmarkDecision, dataPoints) {
250
+ // Base: 0.5 (disagreement lowers base)
251
+ let confidence = 0.5;
252
+ // Strong boost from benchmark success rate
253
+ confidence += benchmarkDecision.estimatedSuccessRate * 0.2;
254
+ // Data richness boost (max +0.15 at 15+ data points)
255
+ confidence += Math.min(dataPoints / 15, 1) * 0.15;
256
+ return Math.min(confidence, 1.0);
257
+ }
258
+ /**
259
+ * Compute confidence when using the rule-based router (disagreement, low benchmark data).
260
+ */
261
+ computeRuleBasedConfidence(ruleClassification, dataPoints) {
262
+ // Base: 0.5 (disagreement lowers base)
263
+ let confidence = 0.5;
264
+ // Boost from rule keyword matches
265
+ confidence += Math.min(ruleClassification.keywords.length / 5, 1) * 0.15;
266
+ // Planning requirement is a strong signal for using higher-capability model
267
+ if (ruleClassification.requiresPlanning) {
268
+ confidence += 0.1;
269
+ }
270
+ // Slight penalty if benchmark had some data (even if below threshold)
271
+ if (dataPoints > 0) {
272
+ confidence -= 0.05;
273
+ }
274
+ return Math.min(Math.max(confidence, 0.1), 1.0);
275
+ }
276
+ /**
277
+ * Select the best fallback model from the two systems' recommendations.
278
+ */
279
+ selectFallback(selectedModel, ruleClassification, benchmarkDecision) {
280
+ // Try rule-based fallback first
281
+ if (ruleClassification.fallbackModel && ruleClassification.fallbackModel !== selectedModel) {
282
+ return ruleClassification.fallbackModel;
283
+ }
284
+ // Try benchmark fallbacks
285
+ for (const fallbackId of benchmarkDecision.fallback) {
286
+ const asRuleId = BENCHMARK_TO_RULE_MODEL_MAP[fallbackId] ?? fallbackId;
287
+ if (asRuleId !== selectedModel) {
288
+ return asRuleId;
289
+ }
290
+ }
291
+ // Last resort: return rule-based fallback even if same (caller can handle)
292
+ return ruleClassification.fallbackModel;
293
+ }
294
+ /**
295
+ * Get the role assigned to a model in the rule-based router.
296
+ */
297
+ getRoleForModel(modelId) {
298
+ for (const role of ['planner', 'executor', 'reviewer', 'fallback']) {
299
+ const model = this.ruleRouter.getModelForRole(role);
300
+ if (model && model.id === modelId) {
301
+ return role;
302
+ }
303
+ }
304
+ return null;
305
+ }
306
+ }
307
+ /**
308
+ * Create a UnifiedRoutingService with the given configuration.
309
+ */
310
+ export function createUnifiedRouter(config, benchmarkConfig) {
311
+ return new UnifiedRoutingService(config, benchmarkConfig);
312
+ }
313
+ //# sourceMappingURL=unified-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-router.js","sourceRoot":"","sources":["../../src/models/unified-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env tsx
2
+ export declare function convertPolicyToClaude(rawMarkdown: string): string;
3
+ //# sourceMappingURL=convert-policy-to-claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-policy-to-claude.d.ts","sourceRoot":"","sources":["../../src/policies/convert-policy-to-claude.ts"],"names":[],"mappings":";AAIA,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA+EjE"}
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env tsx
2
+ import { readFileSync, writeFileSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ export function convertPolicyToClaude(rawMarkdown) {
5
+ const nameMatch = rawMarkdown.match(/^#\s+(.+)/m);
6
+ const name = nameMatch ? nameMatch[1].trim() : 'Untitled Policy';
7
+ const descMatch = rawMarkdown.match(/^#\s*.*\n\n(.*?)(?=\n-{3,}|##|$)/s);
8
+ const description = descMatch ? descMatch[1].trim() : '';
9
+ const rulesSection = rawMarkdown.match(/## Rules\n\n([\s\S]*?)(?=\n┌|## Enforcement|$)/);
10
+ const rules = [];
11
+ if (rulesSection) {
12
+ const ruleLines = rulesSection[1].split('\n');
13
+ let currentRule = null;
14
+ for (const line of ruleLines) {
15
+ const ruleMatch = line.match(/^(\d+)\.\s+\*\*(.+?)\*\*/);
16
+ if (ruleMatch) {
17
+ if (currentRule)
18
+ rules.push(currentRule);
19
+ currentRule = { title: ruleMatch[2], details: [] };
20
+ continue;
21
+ }
22
+ if (line.trim().startsWith('- ')) {
23
+ currentRule?.details.push(line.trim().substring(2));
24
+ }
25
+ else if (line.trim() && !line.startsWith('#')) {
26
+ currentRule?.details.push(line.trim());
27
+ }
28
+ }
29
+ if (currentRule)
30
+ rules.push(currentRule);
31
+ }
32
+ const tableMatch = rawMarkdown.match(/\| Rule[^|]+\| Prevents \|[\s\S]*?\n└────────.*\n/);
33
+ const preventionTable = [];
34
+ if (tableMatch) {
35
+ const rows = tableMatch[0].split('\n').filter((_, i) => i > 1 && !_.includes('---'));
36
+ for (const row of rows) {
37
+ const cells = row
38
+ .split('|')
39
+ .map((c) => c.trim())
40
+ .filter(Boolean);
41
+ if (cells.length >= 2) {
42
+ preventionTable.push({ rule: cells[0], prevents: cells[1] });
43
+ }
44
+ }
45
+ }
46
+ const levelMatch = rawMarkdown.match(/## Enforcement Level\s*\n\[(.+?)\]/);
47
+ const level = (levelMatch?.[1]?.toUpperCase() || 'RECOMMENDED');
48
+ const emoji = level === 'REQUIRED' ? '🚨' : level === 'RECOMMENDED' ? '⚠️' : 'ℹ️';
49
+ return `─────────────────────────────────────────────────────────────────────────────────────────────────
50
+ ${emoji} ${level} POLICY
51
+ # ${name}
52
+
53
+ ${description}
54
+
55
+ ─────────────────────────────────────────────────────────────────────────────────────────────────
56
+
57
+ ## Rules
58
+
59
+ ${rules
60
+ .map((rule, i) => `### ${i + 1}. ${rule.title}
61
+
62
+ ${rule.details.join('\n')}
63
+ `)
64
+ .join('')}
65
+
66
+ ## Prevention Matrix
67
+
68
+ | Rule | Prevents |
69
+ |------|----------|
70
+ ${preventionTable.map((t) => `| ${t.rule} | ${t.prevents} |`).join('\n')}
71
+
72
+ ─────────────────────────────────────────────────────────────────────────────────────────────────
73
+ `;
74
+ }
75
+ if (import.meta.url === `file://${process.argv[1]}`) {
76
+ const inputFile = process.argv[2];
77
+ const outputFile = process.argv[3] || 'converted-policy.md';
78
+ if (!inputFile) {
79
+ console.error('Usage: tsx convert-policy-to-claude.ts <input.md> [output.md]');
80
+ process.exit(1);
81
+ }
82
+ const rawPolicy = readFileSync(inputFile, 'utf-8');
83
+ const converted = convertPolicyToClaude(rawPolicy);
84
+ writeFileSync(outputFile, converted);
85
+ console.log(`✅ Converted ${join(process.cwd(), inputFile)} → ${outputFile}`);
86
+ }
87
+ //# sourceMappingURL=convert-policy-to-claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convert-policy-to-claude.js","sourceRoot":"","sources":["../../src/policies/convert-policy-to-claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export declare class DatabaseManager {
2
+ private db;
3
+ constructor(dbPath?: string);
4
+ private initialize;
5
+ private serialize;
6
+ private deserializeRow;
7
+ upsertPolicy(data: Record<string, unknown>): void;
8
+ findPolicies(where: Record<string, unknown>): Record<string, unknown>[];
9
+ findOnePolicy(where: Record<string, unknown>): Record<string, unknown> | null;
10
+ updatePolicy(where: Record<string, unknown>, updates: Record<string, unknown>): void;
11
+ getAllActivePolicies(): Record<string, unknown>[];
12
+ upsertExecutableTool(data: Record<string, unknown>): void;
13
+ findExecutableTools(policyId: string): Record<string, unknown>[];
14
+ findExecutableTool(policyId: string, toolName: string): Record<string, unknown> | null;
15
+ logExecution(data: {
16
+ policyId: string;
17
+ toolName: string;
18
+ operation: string;
19
+ args: Record<string, unknown>;
20
+ result: unknown;
21
+ allowed: boolean;
22
+ reason: string;
23
+ }): void;
24
+ getExecutionLog(policyId?: string, limit?: number): Record<string, unknown>[];
25
+ close(): void;
26
+ }
27
+ //# sourceMappingURL=database-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-manager.d.ts","sourceRoot":"","sources":["../../src/policies/database-manager.ts"],"names":[],"mappings":"AAIA,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAgC;gBAE9B,MAAM,CAAC,EAAE,MAAM;IAW3B,OAAO,CAAC,UAAU;IAoDlB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,cAAc;IAmCtB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAYjD,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IASvE,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAK7E,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAsBpF,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IASjD,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAOzD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAMhE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAStF,YAAY,CAAC,IAAI,EAAE;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9B,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI;IAgBR,eAAe,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAajF,KAAK,IAAI,IAAI;CAGd"}