@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,619 @@
1
+ import { randomUUID } from 'crypto';
2
+ import { CoordinationDatabase, getDefaultCoordinationDbPath } from './database.js';
3
+ export class CoordinationService {
4
+ db;
5
+ sessionId;
6
+ heartbeatIntervalMs;
7
+ claimExpiryMs;
8
+ constructor(config = {}) {
9
+ const dbPath = config.dbPath || getDefaultCoordinationDbPath();
10
+ this.db = CoordinationDatabase.getInstance(dbPath).getDatabase();
11
+ this.sessionId = config.sessionId || randomUUID();
12
+ this.heartbeatIntervalMs = config.heartbeatIntervalMs || 30000;
13
+ this.claimExpiryMs = config.claimExpiryMs || 300000; // 5 minutes
14
+ }
15
+ // ==================== Agent Lifecycle ====================
16
+ register(name, capabilities, worktreeBranch) {
17
+ const id = randomUUID();
18
+ const now = new Date().toISOString();
19
+ const stmt = this.db.prepare(`
20
+ INSERT INTO agent_registry (id, name, session_id, status, worktree_branch, started_at, last_heartbeat, capabilities)
21
+ VALUES (?, ?, ?, 'active', ?, ?, ?, ?)
22
+ `);
23
+ stmt.run(id, name, this.sessionId, worktreeBranch || null, now, now, capabilities ? JSON.stringify(capabilities) : null);
24
+ return id;
25
+ }
26
+ heartbeat(agentId) {
27
+ const stmt = this.db.prepare(`
28
+ UPDATE agent_registry
29
+ SET last_heartbeat = ?
30
+ WHERE id = ?
31
+ `);
32
+ stmt.run(new Date().toISOString(), agentId);
33
+ }
34
+ updateStatus(agentId, status, currentTask) {
35
+ const stmt = this.db.prepare(`
36
+ UPDATE agent_registry
37
+ SET status = ?, current_task = ?, last_heartbeat = ?
38
+ WHERE id = ?
39
+ `);
40
+ stmt.run(status, currentTask || null, new Date().toISOString(), agentId);
41
+ }
42
+ deregister(agentId) {
43
+ // Release all claims
44
+ this.releaseAllClaims(agentId);
45
+ // Update status
46
+ const stmt = this.db.prepare(`
47
+ UPDATE agent_registry
48
+ SET status = 'completed'
49
+ WHERE id = ?
50
+ `);
51
+ stmt.run(agentId);
52
+ }
53
+ getAgent(agentId) {
54
+ const stmt = this.db.prepare(`
55
+ SELECT id, name, session_id as sessionId, status, current_task as currentTask,
56
+ worktree_branch as worktreeBranch, started_at as startedAt,
57
+ last_heartbeat as lastHeartbeat, capabilities
58
+ FROM agent_registry
59
+ WHERE id = ?
60
+ `);
61
+ const row = stmt.get(agentId);
62
+ if (!row)
63
+ return null;
64
+ return {
65
+ ...row,
66
+ capabilities: row.capabilities ? JSON.parse(row.capabilities) : undefined,
67
+ };
68
+ }
69
+ getActiveAgents() {
70
+ const stmt = this.db.prepare(`
71
+ SELECT id, name, session_id as sessionId, status, current_task as currentTask,
72
+ worktree_branch as worktreeBranch, started_at as startedAt,
73
+ last_heartbeat as lastHeartbeat, capabilities
74
+ FROM agent_registry
75
+ WHERE status IN ('active', 'idle')
76
+ ORDER BY started_at DESC
77
+ `);
78
+ const rows = stmt.all();
79
+ return rows.map((row) => ({
80
+ ...row,
81
+ capabilities: row.capabilities ? JSON.parse(row.capabilities) : undefined,
82
+ }));
83
+ }
84
+ // Cleanup stale agents (no heartbeat for too long)
85
+ cleanupStaleAgents() {
86
+ const cutoff = new Date(Date.now() - this.heartbeatIntervalMs * 3).toISOString();
87
+ return this.cleanupAgentsOlderThan(cutoff);
88
+ }
89
+ // Cleanup agents with heartbeat older than a specific duration in hours
90
+ cleanupStaleAgentsByTime(hours = 24) {
91
+ const cutoff = new Date(Date.now() - hours * 60 * 60 * 1000).toISOString();
92
+ return this.cleanupAgentsOlderThan(cutoff);
93
+ }
94
+ cleanupAgentsOlderThan(cutoff) {
95
+ // Get stale agents
96
+ const staleStmt = this.db.prepare(`
97
+ SELECT id FROM agent_registry
98
+ WHERE status IN ('active', 'idle') AND last_heartbeat < ?
99
+ `);
100
+ const staleAgents = staleStmt.all(cutoff);
101
+ // Release their claims and complete their announcements
102
+ for (const agent of staleAgents) {
103
+ this.releaseAllClaims(agent.id);
104
+ this.db
105
+ .prepare(`
106
+ UPDATE work_announcements SET completed_at = ?
107
+ WHERE agent_id = ? AND completed_at IS NULL
108
+ `)
109
+ .run(new Date().toISOString(), agent.id);
110
+ }
111
+ // Mark as failed
112
+ const updateStmt = this.db.prepare(`
113
+ UPDATE agent_registry
114
+ SET status = 'failed'
115
+ WHERE status IN ('active', 'idle') AND last_heartbeat < ?
116
+ `);
117
+ const result = updateStmt.run(cutoff);
118
+ return result.changes;
119
+ }
120
+ // ==================== Work Claims ====================
121
+ claimResource(agentId, resource, claimType = 'exclusive') {
122
+ const now = new Date().toISOString();
123
+ const expiresAt = new Date(Date.now() + this.claimExpiryMs).toISOString();
124
+ // Wrap check-then-insert in a transaction to prevent race conditions
125
+ // where two agents could simultaneously acquire "exclusive" claims
126
+ const claimTransaction = this.db.transaction(() => {
127
+ // Check for existing active claims on this resource
128
+ const checkStmt = this.db.prepare(`
129
+ SELECT agent_id, claim_type FROM work_claims
130
+ WHERE resource = ? AND (expires_at IS NULL OR expires_at > ?)
131
+ `);
132
+ const existing = checkStmt.get(resource, now);
133
+ if (existing) {
134
+ if (existing.claim_type === 'exclusive') {
135
+ return false; // Resource already exclusively claimed
136
+ }
137
+ if (claimType === 'exclusive') {
138
+ return false; // Can't get exclusive claim when shared claims exist
139
+ }
140
+ }
141
+ const stmt = this.db.prepare(`
142
+ INSERT INTO work_claims (resource, agent_id, claim_type, claimed_at, expires_at)
143
+ VALUES (?, ?, ?, ?, ?)
144
+ `);
145
+ stmt.run(resource, agentId, claimType, now, expiresAt);
146
+ return true;
147
+ });
148
+ try {
149
+ return claimTransaction();
150
+ }
151
+ catch {
152
+ return false; // Constraint violation or transaction conflict
153
+ }
154
+ }
155
+ releaseResource(agentId, resource) {
156
+ const stmt = this.db.prepare(`
157
+ DELETE FROM work_claims
158
+ WHERE agent_id = ? AND resource = ?
159
+ `);
160
+ stmt.run(agentId, resource);
161
+ }
162
+ releaseAllClaims(agentId) {
163
+ const stmt = this.db.prepare(`
164
+ DELETE FROM work_claims
165
+ WHERE agent_id = ?
166
+ `);
167
+ stmt.run(agentId);
168
+ }
169
+ isResourceClaimed(resource) {
170
+ const now = new Date().toISOString();
171
+ const stmt = this.db.prepare(`
172
+ SELECT agent_id FROM work_claims
173
+ WHERE resource = ? AND claim_type = 'exclusive'
174
+ AND (expires_at IS NULL OR expires_at > ?)
175
+ `);
176
+ const row = stmt.get(resource, now);
177
+ return row?.agent_id || null;
178
+ }
179
+ getResourceClaims(resource) {
180
+ const now = new Date().toISOString();
181
+ const stmt = this.db.prepare(`
182
+ SELECT id, resource, agent_id as agentId, claim_type as claimType,
183
+ claimed_at as claimedAt, expires_at as expiresAt
184
+ FROM work_claims
185
+ WHERE resource = ? AND (expires_at IS NULL OR expires_at > ?)
186
+ `);
187
+ return stmt.all(resource, now);
188
+ }
189
+ getAgentClaims(agentId) {
190
+ const stmt = this.db.prepare(`
191
+ SELECT id, resource, agent_id as agentId, claim_type as claimType,
192
+ claimed_at as claimedAt, expires_at as expiresAt
193
+ FROM work_claims
194
+ WHERE agent_id = ?
195
+ `);
196
+ return stmt.all(agentId);
197
+ }
198
+ // ==================== Work Announcements (Collaborative) ====================
199
+ // NOTE: Agents work in isolated git worktrees, so they don't NEED to claim resources.
200
+ // Announcements are informational - they help optimize velocity and minimize merge conflicts.
201
+ /**
202
+ * Announce intent to work on a resource. Does NOT lock - just informs other agents.
203
+ * Returns overlap info if other agents are also working on related resources.
204
+ */
205
+ announceWork(agentId, resource, intentType, options = {}) {
206
+ const agent = this.getAgent(agentId);
207
+ const now = new Date().toISOString();
208
+ const estimatedCompletion = options.estimatedMinutes
209
+ ? new Date(Date.now() + options.estimatedMinutes * 60000).toISOString()
210
+ : null;
211
+ const stmt = this.db.prepare(`
212
+ INSERT INTO work_announcements
213
+ (agent_id, agent_name, worktree_branch, intent_type, resource, description, files_affected, estimated_completion, announced_at)
214
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
215
+ `);
216
+ const result = stmt.run(agentId, agent?.name || null, agent?.worktreeBranch || null, intentType, resource, options.description || null, options.filesAffected ? JSON.stringify(options.filesAffected) : null, estimatedCompletion, now);
217
+ const announcement = {
218
+ id: result.lastInsertRowid,
219
+ agentId,
220
+ agentName: agent?.name,
221
+ worktreeBranch: agent?.worktreeBranch,
222
+ intentType,
223
+ resource,
224
+ description: options.description,
225
+ filesAffected: options.filesAffected,
226
+ estimatedCompletion: estimatedCompletion || undefined,
227
+ announcedAt: now,
228
+ };
229
+ // Detect overlaps and generate suggestions
230
+ const overlaps = this.detectOverlaps(resource, agentId);
231
+ const suggestions = this.generateCollaborationSuggestions(agentId, resource, overlaps);
232
+ // Broadcast to other agents about potential overlap
233
+ if (overlaps.length > 0) {
234
+ this.broadcast(agentId, 'coordination', {
235
+ action: 'work_overlap_detected',
236
+ resource,
237
+ data: { overlaps, suggestions },
238
+ });
239
+ }
240
+ return { announcement, overlaps, suggestions };
241
+ }
242
+ /**
243
+ * Mark work as complete on a resource.
244
+ */
245
+ completeWork(agentId, resource) {
246
+ const stmt = this.db.prepare(`
247
+ UPDATE work_announcements
248
+ SET completed_at = ?
249
+ WHERE agent_id = ? AND resource = ? AND completed_at IS NULL
250
+ `);
251
+ stmt.run(new Date().toISOString(), agentId, resource);
252
+ // Broadcast completion so others know merge order
253
+ this.broadcast(agentId, 'coordination', {
254
+ action: 'work_completed',
255
+ resource,
256
+ });
257
+ }
258
+ /**
259
+ * Get all active work announcements (not completed).
260
+ */
261
+ getActiveWork() {
262
+ const stmt = this.db.prepare(`
263
+ SELECT
264
+ wa.id, wa.agent_id as agentId, wa.agent_name as agentName,
265
+ wa.worktree_branch as worktreeBranch, wa.intent_type as intentType,
266
+ wa.resource, wa.description, wa.files_affected as filesAffected,
267
+ wa.estimated_completion as estimatedCompletion, wa.announced_at as announcedAt
268
+ FROM work_announcements wa
269
+ JOIN agent_registry ar ON wa.agent_id = ar.id
270
+ WHERE wa.completed_at IS NULL AND ar.status IN ('active', 'idle')
271
+ ORDER BY wa.announced_at DESC
272
+ `);
273
+ const rows = stmt.all();
274
+ return rows.map((row) => ({
275
+ ...row,
276
+ filesAffected: row.filesAffected ? JSON.parse(row.filesAffected) : undefined,
277
+ }));
278
+ }
279
+ /**
280
+ * Get work announcements for a specific resource.
281
+ */
282
+ getWorkOnResource(resource) {
283
+ const stmt = this.db.prepare(`
284
+ SELECT
285
+ wa.id, wa.agent_id as agentId, wa.agent_name as agentName,
286
+ wa.worktree_branch as worktreeBranch, wa.intent_type as intentType,
287
+ wa.resource, wa.description, wa.files_affected as filesAffected,
288
+ wa.estimated_completion as estimatedCompletion, wa.announced_at as announcedAt
289
+ FROM work_announcements wa
290
+ JOIN agent_registry ar ON wa.agent_id = ar.id
291
+ WHERE wa.resource LIKE ? AND wa.completed_at IS NULL AND ar.status IN ('active', 'idle')
292
+ ORDER BY wa.announced_at DESC
293
+ `);
294
+ const rows = stmt.all(`%${resource}%`);
295
+ return rows.map((row) => ({
296
+ ...row,
297
+ filesAffected: row.filesAffected ? JSON.parse(row.filesAffected) : undefined,
298
+ }));
299
+ }
300
+ /**
301
+ * Detect overlapping work that might cause merge conflicts.
302
+ */
303
+ detectOverlaps(resource, excludeAgentId) {
304
+ const activeWork = this.getActiveWork();
305
+ const overlaps = [];
306
+ // Group by resource pattern (file, directory, or module)
307
+ const resourceParts = resource.split('/');
308
+ const directory = resourceParts.slice(0, -1).join('/');
309
+ // Find work on same file
310
+ const sameFile = activeWork.filter((w) => w.agentId !== excludeAgentId && w.resource === resource);
311
+ // Find work on same directory
312
+ const sameDirectory = activeWork.filter((w) => w.agentId !== excludeAgentId &&
313
+ w.resource !== resource &&
314
+ w.resource.startsWith(directory + '/'));
315
+ // Find work with overlapping files
316
+ const overlappingFiles = activeWork.filter((w) => {
317
+ if (w.agentId === excludeAgentId)
318
+ return false;
319
+ if (!w.filesAffected)
320
+ return false;
321
+ return w.filesAffected.some((f) => f === resource || resource.includes(f) || f.includes(resource));
322
+ });
323
+ if (sameFile.length > 0) {
324
+ overlaps.push({
325
+ resource,
326
+ agents: sameFile.map((w) => ({
327
+ id: w.agentId,
328
+ name: w.agentName || 'unknown',
329
+ intentType: w.intentType,
330
+ worktreeBranch: w.worktreeBranch,
331
+ description: w.description,
332
+ })),
333
+ conflictRisk: this.assessConflictRisk(sameFile),
334
+ suggestion: this.generateOverlapSuggestion(sameFile, 'same_file'),
335
+ });
336
+ }
337
+ if (sameDirectory.length > 0) {
338
+ overlaps.push({
339
+ resource: directory,
340
+ agents: sameDirectory.map((w) => ({
341
+ id: w.agentId,
342
+ name: w.agentName || 'unknown',
343
+ intentType: w.intentType,
344
+ worktreeBranch: w.worktreeBranch,
345
+ description: w.description,
346
+ })),
347
+ conflictRisk: this.assessConflictRisk(sameDirectory, 'directory'),
348
+ suggestion: this.generateOverlapSuggestion(sameDirectory, 'same_directory'),
349
+ });
350
+ }
351
+ if (overlappingFiles.length > 0) {
352
+ overlaps.push({
353
+ resource: 'files_overlap',
354
+ agents: overlappingFiles.map((w) => ({
355
+ id: w.agentId,
356
+ name: w.agentName || 'unknown',
357
+ intentType: w.intentType,
358
+ worktreeBranch: w.worktreeBranch,
359
+ description: w.description,
360
+ })),
361
+ conflictRisk: 'medium',
362
+ suggestion: this.generateOverlapSuggestion(overlappingFiles, 'files_overlap'),
363
+ });
364
+ }
365
+ return overlaps;
366
+ }
367
+ assessConflictRisk(work, type = 'file') {
368
+ if (work.length === 0)
369
+ return 'none';
370
+ // Multiple agents editing same file = high risk
371
+ const editors = work.filter((w) => w.intentType === 'editing' || w.intentType === 'refactoring');
372
+ if (editors.length >= 2)
373
+ return 'critical';
374
+ if (editors.length === 1 && work.length > 1)
375
+ return 'high';
376
+ // Refactoring has higher conflict potential
377
+ if (work.some((w) => w.intentType === 'refactoring'))
378
+ return 'high';
379
+ // Directory-level work is lower risk
380
+ if (type === 'directory')
381
+ return 'medium';
382
+ // Review/test/document are low risk
383
+ const lowRiskTypes = ['reviewing', 'testing', 'documenting'];
384
+ if (work.every((w) => lowRiskTypes.includes(w.intentType)))
385
+ return 'low';
386
+ return 'medium';
387
+ }
388
+ generateOverlapSuggestion(work, type) {
389
+ const agentNames = work.map((w) => w.agentName || w.agentId.slice(0, 8)).join(', ');
390
+ switch (type) {
391
+ case 'same_file':
392
+ return (`Multiple agents (${agentNames}) working on same file. Consider: ` +
393
+ `1) Coordinate merge order - who finishes first should merge first, ` +
394
+ `2) Split into non-overlapping sections, ` +
395
+ `3) One agent waits for other to complete.`);
396
+ case 'same_directory':
397
+ return (`Agents (${agentNames}) working in same directory. Usually safe with worktrees, ` +
398
+ `but watch for: import changes, shared types/interfaces, barrel files (index.ts).`);
399
+ case 'files_overlap':
400
+ return (`Agents (${agentNames}) have overlapping file changes. Review affected files ` +
401
+ `and coordinate merge order to minimize conflicts.`);
402
+ default:
403
+ return `Overlap detected with ${agentNames}. Coordinate to optimize velocity.`;
404
+ }
405
+ }
406
+ /**
407
+ * Generate collaboration suggestions based on overlaps.
408
+ */
409
+ generateCollaborationSuggestions(agentId, _resource, overlaps) {
410
+ const suggestions = [];
411
+ for (const overlap of overlaps) {
412
+ const allAgents = [agentId, ...overlap.agents.map((a) => a.id)];
413
+ // Critical/High risk: suggest sequential work
414
+ if (overlap.conflictRisk === 'critical' || overlap.conflictRisk === 'high') {
415
+ suggestions.push({
416
+ type: 'sequence',
417
+ agents: allAgents,
418
+ reason: `High merge conflict risk on ${overlap.resource}. Sequential work recommended.`,
419
+ suggestedOrder: this.suggestMergeOrder(overlap),
420
+ estimatedMergeComplexity: overlap.conflictRisk,
421
+ });
422
+ }
423
+ // Medium risk: suggest merge order
424
+ if (overlap.conflictRisk === 'medium') {
425
+ suggestions.push({
426
+ type: 'merge_order',
427
+ agents: allAgents,
428
+ reason: `Medium conflict risk. Agree on merge order to avoid rebase pain.`,
429
+ suggestedOrder: this.suggestMergeOrder(overlap),
430
+ estimatedMergeComplexity: 'medium',
431
+ });
432
+ }
433
+ // Low risk: parallel is fine
434
+ if (overlap.conflictRisk === 'low') {
435
+ suggestions.push({
436
+ type: 'parallel',
437
+ agents: allAgents,
438
+ reason: `Low conflict risk. Parallel work is safe. Watch for shared imports.`,
439
+ estimatedMergeComplexity: 'low',
440
+ });
441
+ }
442
+ }
443
+ return suggestions;
444
+ }
445
+ suggestMergeOrder(overlap) {
446
+ // Prefer: review/test first, then docs, then edits, then refactoring
447
+ const priorityOrder = [
448
+ 'reviewing',
449
+ 'testing',
450
+ 'documenting',
451
+ 'editing',
452
+ 'refactoring',
453
+ ];
454
+ return overlap.agents
455
+ .sort((a, b) => {
456
+ const aPriority = priorityOrder.indexOf(a.intentType);
457
+ const bPriority = priorityOrder.indexOf(b.intentType);
458
+ return aPriority - bPriority;
459
+ })
460
+ .map((a) => a.name || a.id);
461
+ }
462
+ // ==================== Messaging ====================
463
+ broadcast(fromAgent, channel, payload, priority = 5) {
464
+ this.sendMessage(fromAgent, undefined, channel, 'notification', payload, priority);
465
+ }
466
+ send(fromAgent, toAgent, payload, priority = 5) {
467
+ this.sendMessage(fromAgent, toAgent, 'direct', 'request', payload, priority);
468
+ }
469
+ sendMessage(fromAgent, toAgent, channel, type, payload, priority) {
470
+ const stmt = this.db.prepare(`
471
+ INSERT INTO agent_messages (channel, from_agent, to_agent, type, payload, priority, created_at)
472
+ VALUES (?, ?, ?, ?, ?, ?, ?)
473
+ `);
474
+ stmt.run(channel, fromAgent, toAgent, type, JSON.stringify(payload), priority, new Date().toISOString());
475
+ }
476
+ receive(agentId, channel, markAsRead = true) {
477
+ let sql = `
478
+ SELECT id, channel, from_agent as fromAgent, to_agent as toAgent, type,
479
+ payload, priority, created_at as createdAt, read_at as readAt, expires_at as expiresAt
480
+ FROM agent_messages
481
+ WHERE (to_agent = ? OR (to_agent IS NULL AND channel != 'direct'))
482
+ AND read_at IS NULL
483
+ AND (expires_at IS NULL OR expires_at > ?)
484
+ `;
485
+ const params = [agentId, new Date().toISOString()];
486
+ if (channel) {
487
+ sql += ' AND channel = ?';
488
+ params.push(channel);
489
+ }
490
+ sql += ' ORDER BY priority DESC, created_at ASC';
491
+ const stmt = this.db.prepare(sql);
492
+ const rows = stmt.all(...params);
493
+ const messages = rows.map((row) => ({
494
+ ...row,
495
+ payload: JSON.parse(row.payload),
496
+ }));
497
+ if (markAsRead && messages.length > 0) {
498
+ const ids = messages.map((m) => m.id);
499
+ const updateStmt = this.db.prepare(`
500
+ UPDATE agent_messages
501
+ SET read_at = ?
502
+ WHERE id IN (${ids.map(() => '?').join(',')})
503
+ `);
504
+ updateStmt.run(new Date().toISOString(), ...ids);
505
+ }
506
+ return messages;
507
+ }
508
+ getPendingMessages(agentId) {
509
+ const stmt = this.db.prepare(`
510
+ SELECT COUNT(*) as count
511
+ FROM agent_messages
512
+ WHERE (to_agent = ? OR (to_agent IS NULL AND channel != 'direct'))
513
+ AND read_at IS NULL
514
+ AND (expires_at IS NULL OR expires_at > ?)
515
+ `);
516
+ const row = stmt.get(agentId, new Date().toISOString());
517
+ return row.count;
518
+ }
519
+ // ==================== Deploy Queue ====================
520
+ queueDeploy(agentId, actionType, target, payload, options = {}) {
521
+ const now = new Date().toISOString();
522
+ const executeAfter = options.executeAfter?.toISOString() || new Date(Date.now() + 30000).toISOString(); // Default 30s delay for batching
523
+ const stmt = this.db.prepare(`
524
+ INSERT INTO deploy_queue (agent_id, action_type, target, payload, status, queued_at, execute_after, priority, dependencies)
525
+ VALUES (?, ?, ?, ?, 'pending', ?, ?, ?, ?)
526
+ `);
527
+ const result = stmt.run(agentId, actionType, target, payload ? JSON.stringify(payload) : null, now, executeAfter, options.priority || 5, options.dependencies ? JSON.stringify(options.dependencies) : null);
528
+ return result.lastInsertRowid;
529
+ }
530
+ getPendingDeploys() {
531
+ const stmt = this.db.prepare(`
532
+ SELECT id, agent_id as agentId, action_type as actionType, target, payload,
533
+ status, batch_id as batchId, queued_at as queuedAt,
534
+ execute_after as executeAfter, priority, dependencies
535
+ FROM deploy_queue
536
+ WHERE status = 'pending'
537
+ ORDER BY priority DESC, queued_at ASC
538
+ `);
539
+ const rows = stmt.all();
540
+ return rows.map((row) => ({
541
+ ...row,
542
+ payload: row.payload ? JSON.parse(row.payload) : undefined,
543
+ dependencies: row.dependencies ? JSON.parse(row.dependencies) : undefined,
544
+ }));
545
+ }
546
+ getReadyDeploys() {
547
+ const now = new Date().toISOString();
548
+ const stmt = this.db.prepare(`
549
+ SELECT id, agent_id as agentId, action_type as actionType, target, payload,
550
+ status, batch_id as batchId, queued_at as queuedAt,
551
+ execute_after as executeAfter, priority, dependencies
552
+ FROM deploy_queue
553
+ WHERE status = 'pending' AND execute_after <= ?
554
+ ORDER BY priority DESC, queued_at ASC
555
+ `);
556
+ const rows = stmt.all(now);
557
+ return rows.map((row) => ({
558
+ ...row,
559
+ payload: row.payload ? JSON.parse(row.payload) : undefined,
560
+ dependencies: row.dependencies ? JSON.parse(row.dependencies) : undefined,
561
+ }));
562
+ }
563
+ updateDeployStatus(deployId, status, batchId) {
564
+ const stmt = this.db.prepare(`
565
+ UPDATE deploy_queue
566
+ SET status = ?, batch_id = ?
567
+ WHERE id = ?
568
+ `);
569
+ stmt.run(status, batchId || null, deployId);
570
+ }
571
+ // ==================== Status ====================
572
+ getStatus() {
573
+ const activeAgents = this.getActiveAgents();
574
+ const claimsStmt = this.db.prepare(`
575
+ SELECT id, resource, agent_id as agentId, claim_type as claimType,
576
+ claimed_at as claimedAt, expires_at as expiresAt
577
+ FROM work_claims
578
+ WHERE expires_at IS NULL OR expires_at > ?
579
+ `);
580
+ const activeClaims = claimsStmt.all(new Date().toISOString());
581
+ const pendingDeploys = this.getPendingDeploys();
582
+ // Count pending messages (broadcast + unclaimed)
583
+ const msgStmt = this.db.prepare(`
584
+ SELECT COUNT(*) as count
585
+ FROM agent_messages
586
+ WHERE read_at IS NULL AND (expires_at IS NULL OR expires_at > ?)
587
+ `);
588
+ const msgRow = msgStmt.get(new Date().toISOString());
589
+ return {
590
+ activeAgents,
591
+ activeClaims,
592
+ pendingDeploys,
593
+ pendingMessages: msgRow.count,
594
+ };
595
+ }
596
+ // ==================== Cleanup ====================
597
+ cleanup() {
598
+ const cutoff = new Date(Date.now() - 86400000).toISOString(); // 24 hours ago
599
+ // Clean old messages
600
+ this.db.prepare(`DELETE FROM agent_messages WHERE created_at < ?`).run(cutoff);
601
+ // Clean expired claims
602
+ this.db.prepare(`DELETE FROM work_claims WHERE expires_at < ?`).run(new Date().toISOString());
603
+ // Clean old completed agents
604
+ this.db
605
+ .prepare(`
606
+ DELETE FROM agent_registry
607
+ WHERE status IN ('completed', 'failed') AND started_at < ?
608
+ `)
609
+ .run(cutoff);
610
+ // Clean old completed deploys
611
+ this.db
612
+ .prepare(`
613
+ DELETE FROM deploy_queue
614
+ WHERE status IN ('completed', 'failed') AND queued_at < ?
615
+ `)
616
+ .run(cutoff);
617
+ }
618
+ }
619
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/coordination/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Worktree Enforcer
3
+ *
4
+ * Ensures agents operate within dedicated git worktrees for isolation.
5
+ * Uses `git worktree list` to verify worktree existence.
6
+ */
7
+ export interface WorktreeStatus {
8
+ exists: boolean;
9
+ path: string | null;
10
+ branch: string | null;
11
+ }
12
+ export interface WorktreeEnforcerOptions {
13
+ requireWorktree?: boolean;
14
+ }
15
+ /**
16
+ * Check if a git worktree exists for the given agent.
17
+ *
18
+ * Looks for a worktree whose path or branch name contains the agentId.
19
+ * If `requireWorktree` is true and no matching worktree is found, returns `exists: false`.
20
+ */
21
+ export declare function ensureWorktree(agentId: string, options?: WorktreeEnforcerOptions): Promise<WorktreeStatus>;
22
+ //# sourceMappingURL=worktree-enforcer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-enforcer.d.ts","sourceRoot":"","sources":["../../src/coordination/worktree-enforcer.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AAEH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAsCD;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,cAAc,CAAC,CAoCzB"}