swarm-engine 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 (431) hide show
  1. package/AGENTS.md +72 -0
  2. package/CLAUDE.md +89 -0
  3. package/LICENSE +21 -0
  4. package/README.md +235 -0
  5. package/agents/accessibility-reviewer.md +118 -0
  6. package/agents/api-contract-reviewer.md +99 -0
  7. package/agents/concurrency-reviewer.md +111 -0
  8. package/agents/data-integrity-reviewer.md +103 -0
  9. package/agents/debugger.md +99 -0
  10. package/agents/dependency-reviewer.md +115 -0
  11. package/agents/devils-advocate.md +94 -0
  12. package/agents/documentation-reviewer.md +114 -0
  13. package/agents/documenter.md +78 -0
  14. package/agents/error-handling-reviewer.md +113 -0
  15. package/agents/grounding.md +99 -0
  16. package/agents/guardian.md +87 -0
  17. package/agents/implementer.md +141 -0
  18. package/agents/integrator.md +95 -0
  19. package/agents/judge.md +79 -0
  20. package/agents/librarian.md +90 -0
  21. package/agents/orchestrator.md +331 -0
  22. package/agents/performance-reviewer.md +93 -0
  23. package/agents/planner.md +106 -0
  24. package/agents/refactorer.md +92 -0
  25. package/agents/researcher.md +97 -0
  26. package/agents/reviewer.md +117 -0
  27. package/agents/security-reviewer.md +107 -0
  28. package/agents/sentinel.md +92 -0
  29. package/agents/tester.md +93 -0
  30. package/agents/testing-reviewer.md +112 -0
  31. package/commands/diff-review.md +64 -0
  32. package/commands/fix-pr.md +78 -0
  33. package/commands/red-team.md +82 -0
  34. package/commands/research.md +59 -0
  35. package/commands/resume.md +80 -0
  36. package/commands/review-cycle.md +123 -0
  37. package/commands/swarm-setup.md +28 -0
  38. package/commands/swarm.md +126 -0
  39. package/commands/tdd.md +91 -0
  40. package/dist/cli/bin.d.ts +3 -0
  41. package/dist/cli/bin.d.ts.map +1 -0
  42. package/dist/cli/bin.js +3 -0
  43. package/dist/cli/bin.js.map +1 -0
  44. package/dist/cli/commands/acp.d.ts +3 -0
  45. package/dist/cli/commands/acp.d.ts.map +1 -0
  46. package/dist/cli/commands/acp.js +29 -0
  47. package/dist/cli/commands/acp.js.map +1 -0
  48. package/dist/cli/commands/agents.d.ts +3 -0
  49. package/dist/cli/commands/agents.d.ts.map +1 -0
  50. package/dist/cli/commands/agents.js +344 -0
  51. package/dist/cli/commands/agents.js.map +1 -0
  52. package/dist/cli/commands/backends.d.ts +3 -0
  53. package/dist/cli/commands/backends.d.ts.map +1 -0
  54. package/dist/cli/commands/backends.js +22 -0
  55. package/dist/cli/commands/backends.js.map +1 -0
  56. package/dist/cli/commands/completions.d.ts +3 -0
  57. package/dist/cli/commands/completions.d.ts.map +1 -0
  58. package/dist/cli/commands/completions.js +85 -0
  59. package/dist/cli/commands/completions.js.map +1 -0
  60. package/dist/cli/commands/compound.d.ts +3 -0
  61. package/dist/cli/commands/compound.d.ts.map +1 -0
  62. package/dist/cli/commands/compound.js +119 -0
  63. package/dist/cli/commands/compound.js.map +1 -0
  64. package/dist/cli/commands/configure.d.ts +3 -0
  65. package/dist/cli/commands/configure.d.ts.map +1 -0
  66. package/dist/cli/commands/configure.js +151 -0
  67. package/dist/cli/commands/configure.js.map +1 -0
  68. package/dist/cli/commands/convert.d.ts +15 -0
  69. package/dist/cli/commands/convert.d.ts.map +1 -0
  70. package/dist/cli/commands/convert.js +218 -0
  71. package/dist/cli/commands/convert.js.map +1 -0
  72. package/dist/cli/commands/doctor.d.ts +3 -0
  73. package/dist/cli/commands/doctor.d.ts.map +1 -0
  74. package/dist/cli/commands/doctor.js +96 -0
  75. package/dist/cli/commands/doctor.js.map +1 -0
  76. package/dist/cli/commands/init.d.ts +3 -0
  77. package/dist/cli/commands/init.d.ts.map +1 -0
  78. package/dist/cli/commands/init.js +154 -0
  79. package/dist/cli/commands/init.js.map +1 -0
  80. package/dist/cli/commands/learn.d.ts +3 -0
  81. package/dist/cli/commands/learn.d.ts.map +1 -0
  82. package/dist/cli/commands/learn.js +163 -0
  83. package/dist/cli/commands/learn.js.map +1 -0
  84. package/dist/cli/commands/mcp.d.ts +3 -0
  85. package/dist/cli/commands/mcp.d.ts.map +1 -0
  86. package/dist/cli/commands/mcp.js +89 -0
  87. package/dist/cli/commands/mcp.js.map +1 -0
  88. package/dist/cli/commands/memory.d.ts +3 -0
  89. package/dist/cli/commands/memory.d.ts.map +1 -0
  90. package/dist/cli/commands/memory.js +134 -0
  91. package/dist/cli/commands/memory.js.map +1 -0
  92. package/dist/cli/commands/orchestrate.d.ts +3 -0
  93. package/dist/cli/commands/orchestrate.d.ts.map +1 -0
  94. package/dist/cli/commands/orchestrate.js +237 -0
  95. package/dist/cli/commands/orchestrate.js.map +1 -0
  96. package/dist/cli/commands/patterns.d.ts +3 -0
  97. package/dist/cli/commands/patterns.d.ts.map +1 -0
  98. package/dist/cli/commands/patterns.js +25 -0
  99. package/dist/cli/commands/patterns.js.map +1 -0
  100. package/dist/cli/commands/plan.d.ts +3 -0
  101. package/dist/cli/commands/plan.d.ts.map +1 -0
  102. package/dist/cli/commands/plan.js +77 -0
  103. package/dist/cli/commands/plan.js.map +1 -0
  104. package/dist/cli/commands/plugin.d.ts +3 -0
  105. package/dist/cli/commands/plugin.d.ts.map +1 -0
  106. package/dist/cli/commands/plugin.js +124 -0
  107. package/dist/cli/commands/plugin.js.map +1 -0
  108. package/dist/cli/commands/resume.d.ts +3 -0
  109. package/dist/cli/commands/resume.d.ts.map +1 -0
  110. package/dist/cli/commands/resume.js +55 -0
  111. package/dist/cli/commands/resume.js.map +1 -0
  112. package/dist/cli/commands/run.d.ts +3 -0
  113. package/dist/cli/commands/run.d.ts.map +1 -0
  114. package/dist/cli/commands/run.js +78 -0
  115. package/dist/cli/commands/run.js.map +1 -0
  116. package/dist/cli/commands/share.d.ts +3 -0
  117. package/dist/cli/commands/share.d.ts.map +1 -0
  118. package/dist/cli/commands/share.js +34 -0
  119. package/dist/cli/commands/share.js.map +1 -0
  120. package/dist/cli/commands/status.d.ts +3 -0
  121. package/dist/cli/commands/status.d.ts.map +1 -0
  122. package/dist/cli/commands/status.js +148 -0
  123. package/dist/cli/commands/status.js.map +1 -0
  124. package/dist/cli/commands/template.d.ts +3 -0
  125. package/dist/cli/commands/template.d.ts.map +1 -0
  126. package/dist/cli/commands/template.js +213 -0
  127. package/dist/cli/commands/template.js.map +1 -0
  128. package/dist/cli/commands/vault.d.ts +3 -0
  129. package/dist/cli/commands/vault.d.ts.map +1 -0
  130. package/dist/cli/commands/vault.js +402 -0
  131. package/dist/cli/commands/vault.js.map +1 -0
  132. package/dist/cli/commands/verify.d.ts +3 -0
  133. package/dist/cli/commands/verify.d.ts.map +1 -0
  134. package/dist/cli/commands/verify.js +38 -0
  135. package/dist/cli/commands/verify.js.map +1 -0
  136. package/dist/cli/commands/version.d.ts +3 -0
  137. package/dist/cli/commands/version.d.ts.map +1 -0
  138. package/dist/cli/commands/version.js +19 -0
  139. package/dist/cli/commands/version.js.map +1 -0
  140. package/dist/cli/commands/watch.d.ts +3 -0
  141. package/dist/cli/commands/watch.d.ts.map +1 -0
  142. package/dist/cli/commands/watch.js +179 -0
  143. package/dist/cli/commands/watch.js.map +1 -0
  144. package/dist/cli/index.d.ts +3 -0
  145. package/dist/cli/index.d.ts.map +1 -0
  146. package/dist/cli/index.js +118 -0
  147. package/dist/cli/index.js.map +1 -0
  148. package/dist/core/checkpoint.d.ts +35 -0
  149. package/dist/core/checkpoint.d.ts.map +1 -0
  150. package/dist/core/checkpoint.js +80 -0
  151. package/dist/core/checkpoint.js.map +1 -0
  152. package/dist/core/event-bus.d.ts +41 -0
  153. package/dist/core/event-bus.d.ts.map +1 -0
  154. package/dist/core/event-bus.js +115 -0
  155. package/dist/core/event-bus.js.map +1 -0
  156. package/dist/core/lifecycle.d.ts +30 -0
  157. package/dist/core/lifecycle.d.ts.map +1 -0
  158. package/dist/core/lifecycle.js +72 -0
  159. package/dist/core/lifecycle.js.map +1 -0
  160. package/dist/core/patterns.d.ts +43 -0
  161. package/dist/core/patterns.d.ts.map +1 -0
  162. package/dist/core/patterns.js +372 -0
  163. package/dist/core/patterns.js.map +1 -0
  164. package/dist/core/permissions.d.ts +40 -0
  165. package/dist/core/permissions.d.ts.map +1 -0
  166. package/dist/core/permissions.js +113 -0
  167. package/dist/core/permissions.js.map +1 -0
  168. package/dist/core/registry.d.ts +80 -0
  169. package/dist/core/registry.d.ts.map +1 -0
  170. package/dist/core/registry.js +308 -0
  171. package/dist/core/registry.js.map +1 -0
  172. package/dist/core/snapshots.d.ts +20 -0
  173. package/dist/core/snapshots.d.ts.map +1 -0
  174. package/dist/core/snapshots.js +73 -0
  175. package/dist/core/snapshots.js.map +1 -0
  176. package/dist/core/types.d.ts +168 -0
  177. package/dist/core/types.d.ts.map +1 -0
  178. package/dist/core/types.js +33 -0
  179. package/dist/core/types.js.map +1 -0
  180. package/dist/hooks/cli.d.ts +11 -0
  181. package/dist/hooks/cli.d.ts.map +1 -0
  182. package/dist/hooks/cli.js +32 -0
  183. package/dist/hooks/cli.js.map +1 -0
  184. package/dist/hooks/index.d.ts +23 -0
  185. package/dist/hooks/index.d.ts.map +1 -0
  186. package/dist/hooks/index.js +58 -0
  187. package/dist/hooks/index.js.map +1 -0
  188. package/dist/index.d.ts +82 -0
  189. package/dist/index.d.ts.map +1 -0
  190. package/dist/index.js +49 -0
  191. package/dist/index.js.map +1 -0
  192. package/dist/memory/index.d.ts +105 -0
  193. package/dist/memory/index.d.ts.map +1 -0
  194. package/dist/memory/index.js +298 -0
  195. package/dist/memory/index.js.map +1 -0
  196. package/dist/memory/schema.d.ts +6 -0
  197. package/dist/memory/schema.d.ts.map +1 -0
  198. package/dist/memory/schema.js +71 -0
  199. package/dist/memory/schema.js.map +1 -0
  200. package/dist/plugin/index.d.ts +6 -0
  201. package/dist/plugin/index.d.ts.map +1 -0
  202. package/dist/plugin/index.js +182 -0
  203. package/dist/plugin/index.js.map +1 -0
  204. package/dist/runtime/acp.d.ts +41 -0
  205. package/dist/runtime/acp.d.ts.map +1 -0
  206. package/dist/runtime/acp.js +137 -0
  207. package/dist/runtime/acp.js.map +1 -0
  208. package/dist/runtime/adaptive.d.ts +34 -0
  209. package/dist/runtime/adaptive.d.ts.map +1 -0
  210. package/dist/runtime/adaptive.js +229 -0
  211. package/dist/runtime/adaptive.js.map +1 -0
  212. package/dist/runtime/autonomy.d.ts +21 -0
  213. package/dist/runtime/autonomy.d.ts.map +1 -0
  214. package/dist/runtime/autonomy.js +74 -0
  215. package/dist/runtime/autonomy.js.map +1 -0
  216. package/dist/runtime/backends/claude.d.ts +9 -0
  217. package/dist/runtime/backends/claude.d.ts.map +1 -0
  218. package/dist/runtime/backends/claude.js +134 -0
  219. package/dist/runtime/backends/claude.js.map +1 -0
  220. package/dist/runtime/backends/codex.d.ts +9 -0
  221. package/dist/runtime/backends/codex.d.ts.map +1 -0
  222. package/dist/runtime/backends/codex.js +132 -0
  223. package/dist/runtime/backends/codex.js.map +1 -0
  224. package/dist/runtime/backends/gemini.d.ts +9 -0
  225. package/dist/runtime/backends/gemini.d.ts.map +1 -0
  226. package/dist/runtime/backends/gemini.js +103 -0
  227. package/dist/runtime/backends/gemini.js.map +1 -0
  228. package/dist/runtime/backends/index.d.ts +17 -0
  229. package/dist/runtime/backends/index.d.ts.map +1 -0
  230. package/dist/runtime/backends/index.js +39 -0
  231. package/dist/runtime/backends/index.js.map +1 -0
  232. package/dist/runtime/backends/mock.d.ts +21 -0
  233. package/dist/runtime/backends/mock.d.ts.map +1 -0
  234. package/dist/runtime/backends/mock.js +46 -0
  235. package/dist/runtime/backends/mock.js.map +1 -0
  236. package/dist/runtime/backends/types.d.ts +34 -0
  237. package/dist/runtime/backends/types.d.ts.map +1 -0
  238. package/dist/runtime/backends/types.js +2 -0
  239. package/dist/runtime/backends/types.js.map +1 -0
  240. package/dist/runtime/backends/vercel-ai.d.ts +14 -0
  241. package/dist/runtime/backends/vercel-ai.d.ts.map +1 -0
  242. package/dist/runtime/backends/vercel-ai.js +137 -0
  243. package/dist/runtime/backends/vercel-ai.js.map +1 -0
  244. package/dist/runtime/cache-optimizer.d.ts +37 -0
  245. package/dist/runtime/cache-optimizer.d.ts.map +1 -0
  246. package/dist/runtime/cache-optimizer.js +54 -0
  247. package/dist/runtime/cache-optimizer.js.map +1 -0
  248. package/dist/runtime/cascade.d.ts +26 -0
  249. package/dist/runtime/cascade.d.ts.map +1 -0
  250. package/dist/runtime/cascade.js +54 -0
  251. package/dist/runtime/cascade.js.map +1 -0
  252. package/dist/runtime/chunker.d.ts +36 -0
  253. package/dist/runtime/chunker.d.ts.map +1 -0
  254. package/dist/runtime/chunker.js +210 -0
  255. package/dist/runtime/chunker.js.map +1 -0
  256. package/dist/runtime/compaction.d.ts +22 -0
  257. package/dist/runtime/compaction.d.ts.map +1 -0
  258. package/dist/runtime/compaction.js +36 -0
  259. package/dist/runtime/compaction.js.map +1 -0
  260. package/dist/runtime/compounder.d.ts +66 -0
  261. package/dist/runtime/compounder.d.ts.map +1 -0
  262. package/dist/runtime/compounder.js +276 -0
  263. package/dist/runtime/compounder.js.map +1 -0
  264. package/dist/runtime/cost-model.d.ts +24 -0
  265. package/dist/runtime/cost-model.d.ts.map +1 -0
  266. package/dist/runtime/cost-model.js +120 -0
  267. package/dist/runtime/cost-model.js.map +1 -0
  268. package/dist/runtime/distiller.d.ts +21 -0
  269. package/dist/runtime/distiller.d.ts.map +1 -0
  270. package/dist/runtime/distiller.js +70 -0
  271. package/dist/runtime/distiller.js.map +1 -0
  272. package/dist/runtime/engine.d.ts +123 -0
  273. package/dist/runtime/engine.d.ts.map +1 -0
  274. package/dist/runtime/engine.js +969 -0
  275. package/dist/runtime/engine.js.map +1 -0
  276. package/dist/runtime/executor.d.ts +71 -0
  277. package/dist/runtime/executor.d.ts.map +1 -0
  278. package/dist/runtime/executor.js +283 -0
  279. package/dist/runtime/executor.js.map +1 -0
  280. package/dist/runtime/heuristics.d.ts +33 -0
  281. package/dist/runtime/heuristics.d.ts.map +1 -0
  282. package/dist/runtime/heuristics.js +188 -0
  283. package/dist/runtime/heuristics.js.map +1 -0
  284. package/dist/runtime/living-spec.d.ts +34 -0
  285. package/dist/runtime/living-spec.d.ts.map +1 -0
  286. package/dist/runtime/living-spec.js +91 -0
  287. package/dist/runtime/living-spec.js.map +1 -0
  288. package/dist/runtime/lsp.d.ts +50 -0
  289. package/dist/runtime/lsp.d.ts.map +1 -0
  290. package/dist/runtime/lsp.js +110 -0
  291. package/dist/runtime/lsp.js.map +1 -0
  292. package/dist/runtime/mcp.d.ts +27 -0
  293. package/dist/runtime/mcp.d.ts.map +1 -0
  294. package/dist/runtime/mcp.js +154 -0
  295. package/dist/runtime/mcp.js.map +1 -0
  296. package/dist/runtime/model-router.d.ts +22 -0
  297. package/dist/runtime/model-router.d.ts.map +1 -0
  298. package/dist/runtime/model-router.js +94 -0
  299. package/dist/runtime/model-router.js.map +1 -0
  300. package/dist/runtime/panes.d.ts +76 -0
  301. package/dist/runtime/panes.d.ts.map +1 -0
  302. package/dist/runtime/panes.js +279 -0
  303. package/dist/runtime/panes.js.map +1 -0
  304. package/dist/runtime/plan-search.d.ts +41 -0
  305. package/dist/runtime/plan-search.d.ts.map +1 -0
  306. package/dist/runtime/plan-search.js +140 -0
  307. package/dist/runtime/plan-search.js.map +1 -0
  308. package/dist/runtime/plugins.d.ts +59 -0
  309. package/dist/runtime/plugins.d.ts.map +1 -0
  310. package/dist/runtime/plugins.js +121 -0
  311. package/dist/runtime/plugins.js.map +1 -0
  312. package/dist/runtime/reflexion.d.ts +22 -0
  313. package/dist/runtime/reflexion.d.ts.map +1 -0
  314. package/dist/runtime/reflexion.js +85 -0
  315. package/dist/runtime/reflexion.js.map +1 -0
  316. package/dist/runtime/review-schema.d.ts +75 -0
  317. package/dist/runtime/review-schema.d.ts.map +1 -0
  318. package/dist/runtime/review-schema.js +223 -0
  319. package/dist/runtime/review-schema.js.map +1 -0
  320. package/dist/runtime/rewriter.d.ts +8 -0
  321. package/dist/runtime/rewriter.d.ts.map +1 -0
  322. package/dist/runtime/rewriter.js +81 -0
  323. package/dist/runtime/rewriter.js.map +1 -0
  324. package/dist/runtime/sharing.d.ts +15 -0
  325. package/dist/runtime/sharing.d.ts.map +1 -0
  326. package/dist/runtime/sharing.js +48 -0
  327. package/dist/runtime/sharing.js.map +1 -0
  328. package/dist/runtime/stats.d.ts +53 -0
  329. package/dist/runtime/stats.d.ts.map +1 -0
  330. package/dist/runtime/stats.js +160 -0
  331. package/dist/runtime/stats.js.map +1 -0
  332. package/dist/runtime/templates.d.ts +77 -0
  333. package/dist/runtime/templates.d.ts.map +1 -0
  334. package/dist/runtime/templates.js +221 -0
  335. package/dist/runtime/templates.js.map +1 -0
  336. package/dist/runtime/traces.d.ts +60 -0
  337. package/dist/runtime/traces.d.ts.map +1 -0
  338. package/dist/runtime/traces.js +166 -0
  339. package/dist/runtime/traces.js.map +1 -0
  340. package/dist/runtime/verifier.d.ts +54 -0
  341. package/dist/runtime/verifier.d.ts.map +1 -0
  342. package/dist/runtime/verifier.js +172 -0
  343. package/dist/runtime/verifier.js.map +1 -0
  344. package/dist/runtime/worktree.d.ts +24 -0
  345. package/dist/runtime/worktree.d.ts.map +1 -0
  346. package/dist/runtime/worktree.js +82 -0
  347. package/dist/runtime/worktree.js.map +1 -0
  348. package/dist/tui/dashboard.d.ts +65 -0
  349. package/dist/tui/dashboard.d.ts.map +1 -0
  350. package/dist/tui/dashboard.js +496 -0
  351. package/dist/tui/dashboard.js.map +1 -0
  352. package/dist/tui/progress.d.ts +32 -0
  353. package/dist/tui/progress.d.ts.map +1 -0
  354. package/dist/tui/progress.js +257 -0
  355. package/dist/tui/progress.js.map +1 -0
  356. package/dist/tui/renderer.d.ts +72 -0
  357. package/dist/tui/renderer.d.ts.map +1 -0
  358. package/dist/tui/renderer.js +205 -0
  359. package/dist/tui/renderer.js.map +1 -0
  360. package/dist/utils/compact-format.d.ts +35 -0
  361. package/dist/utils/compact-format.d.ts.map +1 -0
  362. package/dist/utils/compact-format.js +106 -0
  363. package/dist/utils/compact-format.js.map +1 -0
  364. package/dist/utils/config.d.ts +73 -0
  365. package/dist/utils/config.d.ts.map +1 -0
  366. package/dist/utils/config.js +70 -0
  367. package/dist/utils/config.js.map +1 -0
  368. package/dist/utils/env.d.ts +6 -0
  369. package/dist/utils/env.d.ts.map +1 -0
  370. package/dist/utils/env.js +28 -0
  371. package/dist/utils/env.js.map +1 -0
  372. package/dist/utils/errors.d.ts +14 -0
  373. package/dist/utils/errors.d.ts.map +1 -0
  374. package/dist/utils/errors.js +120 -0
  375. package/dist/utils/errors.js.map +1 -0
  376. package/dist/utils/logger.d.ts +14 -0
  377. package/dist/utils/logger.d.ts.map +1 -0
  378. package/dist/utils/logger.js +56 -0
  379. package/dist/utils/logger.js.map +1 -0
  380. package/dist/utils/output.d.ts +10 -0
  381. package/dist/utils/output.d.ts.map +1 -0
  382. package/dist/utils/output.js +26 -0
  383. package/dist/utils/output.js.map +1 -0
  384. package/dist/utils/paths.d.ts +7 -0
  385. package/dist/utils/paths.d.ts.map +1 -0
  386. package/dist/utils/paths.js +16 -0
  387. package/dist/utils/paths.js.map +1 -0
  388. package/dist/utils/project-config.d.ts +18 -0
  389. package/dist/utils/project-config.d.ts.map +1 -0
  390. package/dist/utils/project-config.js +46 -0
  391. package/dist/utils/project-config.js.map +1 -0
  392. package/dist/utils/redact.d.ts +5 -0
  393. package/dist/utils/redact.d.ts.map +1 -0
  394. package/dist/utils/redact.js +25 -0
  395. package/dist/utils/redact.js.map +1 -0
  396. package/dist/utils/schemas.d.ts +109 -0
  397. package/dist/utils/schemas.d.ts.map +1 -0
  398. package/dist/utils/schemas.js +63 -0
  399. package/dist/utils/schemas.js.map +1 -0
  400. package/dist/utils/terminal.d.ts +33 -0
  401. package/dist/utils/terminal.d.ts.map +1 -0
  402. package/dist/utils/terminal.js +82 -0
  403. package/dist/utils/terminal.js.map +1 -0
  404. package/dist/utils/tokens.d.ts +9 -0
  405. package/dist/utils/tokens.d.ts.map +1 -0
  406. package/dist/utils/tokens.js +11 -0
  407. package/dist/utils/tokens.js.map +1 -0
  408. package/package.json +71 -0
  409. package/skills/design-system/SKILL.md +195 -0
  410. package/skills/orchestration-patterns/SKILL.md +81 -0
  411. package/skills/orchestration-patterns/examples/example-workflows.md +290 -0
  412. package/skills/orchestration-patterns/references/adversarial.md +51 -0
  413. package/skills/orchestration-patterns/references/batch.md +63 -0
  414. package/skills/orchestration-patterns/references/chaos.md +43 -0
  415. package/skills/orchestration-patterns/references/competitive.md +84 -0
  416. package/skills/orchestration-patterns/references/debate.md +44 -0
  417. package/skills/orchestration-patterns/references/emergence.md +50 -0
  418. package/skills/orchestration-patterns/references/fan-out-fan-in.md +74 -0
  419. package/skills/orchestration-patterns/references/iterative.md +99 -0
  420. package/skills/orchestration-patterns/references/pipeline.md +72 -0
  421. package/skills/swarm-output-style/SKILL.md +85 -0
  422. package/templates/add-endpoint.yml +44 -0
  423. package/templates/add-feature.yml +30 -0
  424. package/templates/agent-template.md +73 -0
  425. package/templates/bug-fix.yml +31 -0
  426. package/templates/explore.yml +21 -0
  427. package/templates/fix-pr.yml +30 -0
  428. package/templates/migration.yml +36 -0
  429. package/templates/refactor.yml +35 -0
  430. package/templates/security-audit.yml +27 -0
  431. package/templates/workflow-template.md +63 -0
@@ -0,0 +1,298 @@
1
+ import Database from 'better-sqlite3';
2
+ import { existsSync, mkdirSync, writeFileSync } from 'fs';
3
+ import { join, dirname } from 'path';
4
+ import { homedir } from 'os';
5
+ import { initializeSchema } from './schema.js';
6
+ import { redactSecrets } from '../utils/redact.js';
7
+ /**
8
+ * Swarm Memory — queryable knowledge base backed by SQLite.
9
+ *
10
+ * Replaces the flat markdown vault with:
11
+ * - Full-text search (FTS5)
12
+ * - Typed entries (decisions, patterns, learnings, context, outcomes)
13
+ * - Graph relations between entries
14
+ * - Per-repo filtering
15
+ */
16
+ export class SwarmMemory {
17
+ db;
18
+ vaultDir;
19
+ constructor(dbPath, vaultDir) {
20
+ const path = dbPath ?? join(homedir(), '.swarm', 'data', 'memory.db');
21
+ const dir = dirname(path);
22
+ if (!existsSync(dir)) {
23
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
24
+ }
25
+ this.db = new Database(path);
26
+ initializeSchema(this.db);
27
+ // Vault write-through: sync entries to Obsidian vault for cross-machine access
28
+ const vault = vaultDir ?? process.env.SWARM_VAULT ?? join(homedir(), 'swarm-vault');
29
+ this.vaultDir = existsSync(vault) ? vault : null;
30
+ }
31
+ // --- Write ---------------------------------------------------------------
32
+ /**
33
+ * Store a new knowledge entry.
34
+ */
35
+ store(entry) {
36
+ const stmt = this.db.prepare(`
37
+ INSERT INTO entries (type, title, content, tags, repo, source)
38
+ VALUES (?, ?, ?, ?, ?, ?)
39
+ `);
40
+ const result = stmt.run(entry.type, entry.title, redactSecrets(entry.content), JSON.stringify(entry.tags ?? []), entry.repo ?? null, entry.source ?? null);
41
+ const id = result.lastInsertRowid;
42
+ // Write-through to Obsidian vault for cross-machine sync (use redacted content)
43
+ this.syncToVault({ ...entry, content: redactSecrets(entry.content) }, id);
44
+ return id;
45
+ }
46
+ /**
47
+ * Update an existing entry.
48
+ */
49
+ update(id, updates) {
50
+ const fields = [];
51
+ const values = [];
52
+ if (updates.title !== undefined) {
53
+ fields.push('title = ?');
54
+ values.push(updates.title);
55
+ }
56
+ if (updates.content !== undefined) {
57
+ fields.push('content = ?');
58
+ values.push(redactSecrets(updates.content));
59
+ }
60
+ if (updates.tags !== undefined) {
61
+ fields.push('tags = ?');
62
+ values.push(JSON.stringify(updates.tags));
63
+ }
64
+ if (updates.repo !== undefined) {
65
+ fields.push('repo = ?');
66
+ values.push(updates.repo);
67
+ }
68
+ if (fields.length === 0)
69
+ return;
70
+ fields.push("updated_at = datetime('now')");
71
+ values.push(id);
72
+ this.db.prepare(`UPDATE entries SET ${fields.join(', ')} WHERE id = ?`).run(...values);
73
+ }
74
+ /**
75
+ * Delete an entry.
76
+ */
77
+ delete(id) {
78
+ this.db.prepare('DELETE FROM entries WHERE id = ?').run(id);
79
+ }
80
+ // --- Vault Sync ----------------------------------------------------------
81
+ /**
82
+ * Write-through to Obsidian vault. Every entry stored in SQLite is also
83
+ * written as a markdown file to ~/swarm-vault/ for:
84
+ * - Cross-machine sync via Obsidian Sync
85
+ * - Human browsing in Obsidian
86
+ * - Backward compatibility with vault scripts
87
+ */
88
+ syncToVault(entry, id) {
89
+ if (!this.vaultDir)
90
+ return;
91
+ try {
92
+ // Map entry type to vault directory
93
+ const dirMap = {
94
+ decision: 'decisions',
95
+ pattern: 'patterns',
96
+ learning: 'learnings',
97
+ context: 'context',
98
+ outcome: 'learnings', // outcomes go to learnings
99
+ };
100
+ const subDir = dirMap[entry.type] ?? 'learnings';
101
+ const vaultSubDir = entry.repo
102
+ ? join(this.vaultDir, 'repos', this.slugify(entry.repo))
103
+ : join(this.vaultDir, subDir);
104
+ if (!existsSync(vaultSubDir)) {
105
+ mkdirSync(vaultSubDir, { recursive: true });
106
+ }
107
+ // Generate filename
108
+ const date = new Date().toISOString().split('T')[0];
109
+ const slug = this.slugify(entry.title);
110
+ const filename = entry.repo
111
+ ? `${slug}.md` // repo entries: no date prefix
112
+ : `${date}-${slug}.md`; // shared entries: date prefix
113
+ const filePath = join(vaultSubDir, filename);
114
+ // Write markdown with YAML frontmatter
115
+ const tags = entry.tags?.length ? `[${entry.tags.join(', ')}]` : '[]';
116
+ const content = `---
117
+ title: ${entry.title}
118
+ type: ${entry.type}
119
+ tags: ${tags}
120
+ ${entry.repo ? `repo: ${entry.repo}\n` : ''}created: ${date}
121
+ updated: ${date}
122
+ source: swarm-engine
123
+ id: ${id}
124
+ ---
125
+
126
+ ${entry.content}
127
+ `;
128
+ writeFileSync(filePath, content);
129
+ }
130
+ catch {
131
+ // Don't fail the store if vault write fails — SQLite is the source of truth
132
+ }
133
+ }
134
+ slugify(text) {
135
+ return text
136
+ .toLowerCase()
137
+ .replace(/[^a-z0-9]+/g, '-')
138
+ .replace(/^-|-$/g, '')
139
+ .slice(0, 60);
140
+ }
141
+ // --- Search --------------------------------------------------------------
142
+ /**
143
+ * Full-text search across all entries.
144
+ */
145
+ search(query, options) {
146
+ const limit = options?.limit ?? 10;
147
+ const safeQuery = '"' + query.replace(/"/g, '').slice(0, 500) + '"';
148
+ let sql = `
149
+ SELECT
150
+ e.id, e.type, e.title, e.content, e.tags, e.repo,
151
+ e.created_at, e.updated_at,
152
+ rank,
153
+ snippet(entries_fts, 1, '>>>', '<<<', '...', 32) as snippet
154
+ FROM entries_fts
155
+ JOIN entries e ON e.id = entries_fts.rowid
156
+ WHERE entries_fts MATCH ?
157
+ `;
158
+ const params = [safeQuery];
159
+ if (options?.type) {
160
+ sql += ' AND e.type = ?';
161
+ params.push(options.type);
162
+ }
163
+ if (options?.repo) {
164
+ sql += ' AND e.repo = ?';
165
+ params.push(options.repo);
166
+ }
167
+ sql += ' ORDER BY rank LIMIT ?';
168
+ params.push(limit);
169
+ try {
170
+ const rows = this.db.prepare(sql).all(...params);
171
+ return rows.map(row => ({
172
+ id: row.id,
173
+ type: row.type,
174
+ title: row.title,
175
+ content: row.content,
176
+ tags: JSON.parse(row.tags ?? '[]'),
177
+ repo: row.repo,
178
+ rank: row.rank,
179
+ snippet: row.snippet,
180
+ created_at: row.created_at,
181
+ updated_at: row.updated_at,
182
+ }));
183
+ }
184
+ catch (error) {
185
+ if (String(error).includes('fts5')) {
186
+ return []; // Malformed FTS query, return empty
187
+ }
188
+ throw error;
189
+ }
190
+ }
191
+ /**
192
+ * Get an entry by ID.
193
+ */
194
+ get(id) {
195
+ const row = this.db.prepare('SELECT * FROM entries WHERE id = ?').get(id);
196
+ if (!row)
197
+ return null;
198
+ return {
199
+ id: row.id,
200
+ type: row.type,
201
+ title: row.title,
202
+ content: row.content,
203
+ tags: JSON.parse(row.tags ?? '[]'),
204
+ repo: row.repo,
205
+ source: row.source,
206
+ };
207
+ }
208
+ /**
209
+ * List entries by type and/or repo.
210
+ */
211
+ list(options) {
212
+ let sql = 'SELECT * FROM entries WHERE 1=1';
213
+ const params = [];
214
+ if (options?.type) {
215
+ sql += ' AND type = ?';
216
+ params.push(options.type);
217
+ }
218
+ if (options?.repo) {
219
+ sql += ' AND repo = ?';
220
+ params.push(options.repo);
221
+ }
222
+ sql += ' ORDER BY updated_at DESC';
223
+ if (options?.limit) {
224
+ sql += ' LIMIT ?';
225
+ params.push(options.limit);
226
+ }
227
+ const rows = this.db.prepare(sql).all(...params);
228
+ return rows.map(row => ({
229
+ id: row.id,
230
+ type: row.type,
231
+ title: row.title,
232
+ content: row.content,
233
+ tags: JSON.parse(row.tags ?? '[]'),
234
+ repo: row.repo,
235
+ source: row.source,
236
+ }));
237
+ }
238
+ // --- Relations -----------------------------------------------------------
239
+ /**
240
+ * Add a relation between two entries.
241
+ */
242
+ relate(fromId, toId, type) {
243
+ this.db.prepare('INSERT INTO relations (from_id, to_id, relation_type) VALUES (?, ?, ?)').run(fromId, toId, type);
244
+ }
245
+ /**
246
+ * Get related entries.
247
+ */
248
+ getRelated(id, type) {
249
+ let sql = `
250
+ SELECT e.*, r.relation_type
251
+ FROM relations r
252
+ JOIN entries e ON e.id = r.to_id
253
+ WHERE r.from_id = ?
254
+ `;
255
+ const params = [id];
256
+ if (type) {
257
+ sql += ' AND r.relation_type = ?';
258
+ params.push(type);
259
+ }
260
+ const rows = this.db.prepare(sql).all(...params);
261
+ return rows.map(row => ({
262
+ entry: {
263
+ id: row.id,
264
+ type: row.type,
265
+ title: row.title,
266
+ content: row.content,
267
+ tags: JSON.parse(row.tags ?? '[]'),
268
+ repo: row.repo,
269
+ },
270
+ relation: row.relation_type,
271
+ }));
272
+ }
273
+ // --- Stats ---------------------------------------------------------------
274
+ /**
275
+ * Get memory statistics.
276
+ */
277
+ stats() {
278
+ const total = this.db.prepare('SELECT COUNT(*) as count FROM entries').get().count;
279
+ const byType = {};
280
+ const typeRows = this.db.prepare('SELECT type, COUNT(*) as count FROM entries GROUP BY type').all();
281
+ for (const row of typeRows) {
282
+ byType[row.type] = row.count;
283
+ }
284
+ const byRepo = {};
285
+ const repoRows = this.db.prepare('SELECT repo, COUNT(*) as count FROM entries WHERE repo IS NOT NULL GROUP BY repo').all();
286
+ for (const row of repoRows) {
287
+ byRepo[row.repo] = row.count;
288
+ }
289
+ return { total, byType, byRepo };
290
+ }
291
+ /**
292
+ * Close the database.
293
+ */
294
+ close() {
295
+ this.db.close();
296
+ }
297
+ }
298
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import Database from 'better-sqlite3';
2
+ /**
3
+ * Initialize the memory database with all tables.
4
+ */
5
+ export declare function initializeSchema(db: Database.Database): void;
6
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/memory/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAyE5D"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Initialize the memory database with all tables.
3
+ */
4
+ export function initializeSchema(db) {
5
+ db.pragma('journal_mode = WAL');
6
+ db.pragma('busy_timeout = 5000');
7
+ db.pragma('foreign_keys = ON');
8
+ // Knowledge entries (replaces vault .md files)
9
+ db.exec(`
10
+ CREATE TABLE IF NOT EXISTS entries (
11
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
12
+ type TEXT NOT NULL CHECK(type IN ('decision', 'pattern', 'learning', 'context', 'outcome')),
13
+ title TEXT NOT NULL,
14
+ content TEXT NOT NULL,
15
+ tags TEXT DEFAULT '[]',
16
+ repo TEXT,
17
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
18
+ updated_at TEXT NOT NULL DEFAULT (datetime('now')),
19
+ superseded_by INTEGER REFERENCES entries(id),
20
+ source TEXT
21
+ )
22
+ `);
23
+ // Full-text search index
24
+ db.exec(`
25
+ CREATE VIRTUAL TABLE IF NOT EXISTS entries_fts USING fts5(
26
+ title, content, tags,
27
+ content='entries',
28
+ content_rowid='id'
29
+ )
30
+ `);
31
+ // Keep FTS in sync via triggers
32
+ db.exec(`
33
+ CREATE TRIGGER IF NOT EXISTS entries_ai AFTER INSERT ON entries BEGIN
34
+ INSERT INTO entries_fts(rowid, title, content, tags)
35
+ VALUES (new.id, new.title, new.content, new.tags);
36
+ END
37
+ `);
38
+ db.exec(`
39
+ CREATE TRIGGER IF NOT EXISTS entries_ad AFTER DELETE ON entries BEGIN
40
+ INSERT INTO entries_fts(entries_fts, rowid, title, content, tags)
41
+ VALUES ('delete', old.id, old.title, old.content, old.tags);
42
+ END
43
+ `);
44
+ db.exec(`
45
+ CREATE TRIGGER IF NOT EXISTS entries_au AFTER UPDATE ON entries BEGIN
46
+ INSERT INTO entries_fts(entries_fts, rowid, title, content, tags)
47
+ VALUES ('delete', old.id, old.title, old.content, old.tags);
48
+ INSERT INTO entries_fts(rowid, title, content, tags)
49
+ VALUES (new.id, new.title, new.content, new.tags);
50
+ END
51
+ `);
52
+ // Relations between entries (graph edges)
53
+ db.exec(`
54
+ CREATE TABLE IF NOT EXISTS relations (
55
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
56
+ from_id INTEGER NOT NULL REFERENCES entries(id) ON DELETE CASCADE,
57
+ to_id INTEGER NOT NULL REFERENCES entries(id) ON DELETE CASCADE,
58
+ relation_type TEXT NOT NULL,
59
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
60
+ )
61
+ `);
62
+ // Indexes
63
+ db.exec(`
64
+ CREATE INDEX IF NOT EXISTS idx_entries_type ON entries(type);
65
+ CREATE INDEX IF NOT EXISTS idx_entries_repo ON entries(repo);
66
+ CREATE INDEX IF NOT EXISTS idx_entries_updated ON entries(updated_at);
67
+ CREATE INDEX IF NOT EXISTS idx_relations_from ON relations(from_id);
68
+ CREATE INDEX IF NOT EXISTS idx_relations_to ON relations(to_id);
69
+ `);
70
+ }
71
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/memory/schema.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAqB;IACpD,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACjC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE/B,+CAA+C;IAC/C,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;GAaP,CAAC,CAAC;IAEH,yBAAyB;IACzB,EAAE,CAAC,IAAI,CAAC;;;;;;GAMP,CAAC,CAAC;IAEH,gCAAgC;IAChC,EAAE,CAAC,IAAI,CAAC;;;;;GAKP,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;;;;;GAKP,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;;;;;;;GAOP,CAAC,CAAC;IAEH,0CAA0C;IAC1C,EAAE,CAAC,IAAI,CAAC;;;;;;;;GAQP,CAAC,CAAC;IAEH,UAAU;IACV,EAAE,CAAC,IAAI,CAAC;;;;;;GAMP,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Generate Claude Code plugin files that bridge to the swarm-engine.
3
+ * These .md files are the interface between Claude Code and the TypeScript engine.
4
+ */
5
+ export declare function generatePlugin(outputDir: string): void;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAiCtD"}
@@ -0,0 +1,182 @@
1
+ import { writeFileSync, mkdirSync, existsSync, readFileSync, readdirSync } from 'fs';
2
+ import { join } from 'path';
3
+ import { getBuiltinAgentsDir } from '../utils/paths.js';
4
+ /**
5
+ * Generate Claude Code plugin files that bridge to the swarm-engine.
6
+ * These .md files are the interface between Claude Code and the TypeScript engine.
7
+ */
8
+ export function generatePlugin(outputDir) {
9
+ const pluginDir = join(outputDir, '.claude-plugin');
10
+ const commandsDir = join(outputDir, 'commands');
11
+ const agentsDir = join(outputDir, 'agents');
12
+ const skillsDir = join(outputDir, 'skills');
13
+ // Create directories
14
+ for (const dir of [pluginDir, commandsDir, agentsDir, skillsDir]) {
15
+ mkdirSync(dir, { recursive: true });
16
+ }
17
+ // Plugin manifest
18
+ writeFileSync(join(pluginDir, 'plugin.json'), JSON.stringify({
19
+ name: 'swarm-engine',
20
+ version: '1.0.0',
21
+ description: 'Swarm Engine: Multi-agent orchestration for Claude Code',
22
+ author: 'Simon Coombes',
23
+ }, null, 2));
24
+ // Generate commands that bridge to engine
25
+ generateEngineCommands(commandsDir);
26
+ // Generate the CLAUDE.md snippet
27
+ generateSnippet(outputDir);
28
+ // Copy agent definitions
29
+ const agentsSrcDir = getBuiltinAgentsDir();
30
+ if (existsSync(agentsSrcDir)) {
31
+ for (const file of readdirSync(agentsSrcDir).filter((f) => f.endsWith('.md'))) {
32
+ const content = readFileSync(join(agentsSrcDir, file), 'utf-8');
33
+ writeFileSync(join(agentsDir, file), content);
34
+ }
35
+ }
36
+ }
37
+ function generateEngineCommands(dir) {
38
+ // Main orchestrate command — bridges to engine
39
+ writeFileSync(join(dir, 'orchestrate.md'), `---
40
+ description: "Run a multi-phase orchestration using the Swarm Engine"
41
+ argument-hint: "<task description>"
42
+ ---
43
+
44
+ You are orchestrating a task using the Swarm Engine.
45
+
46
+ ## Task
47
+ $ARGUMENTS
48
+
49
+ ## How to Execute
50
+
51
+ The Swarm Engine provides formal orchestration patterns. To use it:
52
+
53
+ 1. **Check memory** for relevant context:
54
+ \`\`\`bash
55
+ swarm memory search "<relevant keywords>"
56
+ \`\`\`
57
+
58
+ 2. **Choose a pattern** based on the task:
59
+ - \`hybrid\` — Research → Implement → Review (default for most tasks)
60
+ - \`research\` — Parallel fan-out research
61
+ - \`review-cycle\` — Implement → Challenge → Review (iterative quality gate)
62
+ - \`tdd\` — Test-first → Implement → Verify → Review
63
+ - \`spike\` — Two approaches compete
64
+ - \`red-team\` — Build → Break → Harden
65
+ - \`discover\` — Hypothesize → Experiment → Implement winner
66
+
67
+ 3. **Execute the pattern** using the team protocol:
68
+ - Create a team with TeamCreate
69
+ - Decompose the task based on the chosen pattern's phases
70
+ - Dispatch agents in parallel/sequential per the pattern
71
+ - After each phase, record progress:
72
+ \`\`\`bash
73
+ swarm memory store outcome "<phase-result>" --repo "<repo>"
74
+ \`\`\`
75
+ - After completion, record metrics
76
+
77
+ 4. **Follow the standard protocol**: TeamCreate → TaskCreate → Agent(team_name, name, run_in_background) → SendMessage shutdown → TeamDelete
78
+
79
+ ## Pattern Selection Guide
80
+
81
+ | Task Type | Pattern | Why |
82
+ |-----------|---------|-----|
83
+ | General feature | hybrid | Covers research + implement + review |
84
+ | Understanding code | research | Fan-out parallel exploration |
85
+ | Quality-critical | review-cycle | Iterative quality gate |
86
+ | New feature with tests | tdd | Test-first guarantees coverage |
87
+ | Uncertain approach | spike | Compare before committing |
88
+ | Security-sensitive | red-team | Adversarial hardening |
89
+ | Complex/novel problem | discover | Hypothesis-driven |
90
+
91
+ ## Rules
92
+ - All agents must use team protocol (TeamCreate → Agent → SendMessage shutdown → TeamDelete)
93
+ - Check engine memory before starting for relevant context
94
+ - Record outcomes to engine memory after completion
95
+ - Use the pattern that best fits the task, not always hybrid
96
+ `);
97
+ // Memory command
98
+ writeFileSync(join(dir, 'memory.md'), `---
99
+ description: "Search or store knowledge in the Swarm Engine memory"
100
+ argument-hint: "search <query> | store <type> <title>"
101
+ ---
102
+
103
+ You are managing the Swarm Engine knowledge base.
104
+
105
+ ## Task
106
+ $ARGUMENTS
107
+
108
+ ## How to Execute
109
+
110
+ The Swarm Engine has a SQLite-backed memory with full-text search.
111
+
112
+ ### Search:
113
+ \`\`\`bash
114
+ swarm memory search "$QUERY"
115
+ \`\`\`
116
+
117
+ ### Store:
118
+ \`\`\`bash
119
+ echo "$CONTENT" | swarm memory store $TYPE "$TITLE" --repo "$REPO"
120
+ \`\`\`
121
+
122
+ Types: decision, pattern, learning, context, outcome
123
+
124
+ ### List:
125
+ \`\`\`bash
126
+ swarm memory list
127
+ \`\`\`
128
+
129
+ ### Stats:
130
+ \`\`\`bash
131
+ swarm memory stats
132
+ \`\`\`
133
+ `);
134
+ // Patterns command
135
+ writeFileSync(join(dir, 'patterns.md'), `---
136
+ description: "List available orchestration patterns from the Swarm Engine"
137
+ argument-hint: ""
138
+ ---
139
+
140
+ Show the available orchestration patterns:
141
+
142
+ \`\`\`bash
143
+ swarm patterns
144
+ \`\`\`
145
+ `);
146
+ }
147
+ function generateSnippet(dir) {
148
+ writeFileSync(join(dir, 'claude-md-snippet.md'), `## Swarm Engine: Multi-Agent Orchestration
149
+
150
+ ### Team Protocol
151
+ Every agent must be spawned as a teammate in split panes:
152
+ 1. TeamCreate first (even for single agents)
153
+ 2. TaskCreate for the work
154
+ 3. Agent with team_name, name, run_in_background: true
155
+ 4. SendMessage shutdown_request when done
156
+ 5. TeamDelete to clean up
157
+
158
+ By default, all agents should use team protocol. The orchestrator may bypass teams for simple single-agent tasks under 2 minutes.
159
+
160
+ ### Orchestration Patterns
161
+ Use \`/orchestrate <task>\` for multi-phase orchestrations. Available patterns:
162
+
163
+ | Command | When to use |
164
+ |---------|-------------|
165
+ | \`/orchestrate <task>\` | Full orchestration with pattern selection |
166
+ | \`/memory search <query>\` | Search engine knowledge base |
167
+ | \`/memory store <type> <title>\` | Store knowledge |
168
+ | \`/patterns\` | List available patterns |
169
+
170
+ ### Engine Memory
171
+ Before starting work, check for relevant context:
172
+ \`\`\`bash
173
+ swarm memory search "<topic>"
174
+ \`\`\`
175
+
176
+ After completing work, store outcomes:
177
+ \`\`\`bash
178
+ echo "<content>" | swarm memory store outcome "<title>"
179
+ \`\`\`
180
+ `);
181
+ }
182
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AACrF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAE5C,qBAAqB;IACrB,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC;QACjE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,kBAAkB;IAClB,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;QAC3D,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,yDAAyD;QACtE,MAAM,EAAE,eAAe;KACxB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAEb,0CAA0C;IAC1C,sBAAsB,CAAC,WAAW,CAAC,CAAC;IAEpC,iCAAiC;IACjC,eAAe,CAAC,SAAS,CAAC,CAAC;IAE3B,yBAAyB;IACzB,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAC3C,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACtF,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;YAChE,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAW;IACzC,+CAA+C;IAC/C,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyD5C,CAAC,CAAC;IAED,iBAAiB;IACjB,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCvC,CAAC,CAAC;IAED,mBAAmB;IACnB,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE;;;;;;;;;;CAUzC,CAAC,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgClD,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,41 @@
1
+ import { AgentRegistry } from '../core/registry.js';
2
+ import { EventBus } from '../core/event-bus.js';
3
+ import { Logger } from '../utils/logger.js';
4
+ import type { SwarmEngine } from './engine.js';
5
+ export interface ACPSession {
6
+ id: string;
7
+ status: 'active' | 'completed' | 'failed';
8
+ messages: ACPMessage[];
9
+ createdAt: Date;
10
+ }
11
+ export interface ACPMessage {
12
+ role: 'user' | 'assistant';
13
+ content: string;
14
+ timestamp: Date;
15
+ }
16
+ export interface ACPServerOptions {
17
+ port?: number;
18
+ host?: string;
19
+ registry?: AgentRegistry;
20
+ bus?: EventBus;
21
+ logger?: Logger;
22
+ cwd?: string;
23
+ engine?: SwarmEngine;
24
+ }
25
+ export declare class ACPServer {
26
+ private server;
27
+ private sessions;
28
+ private registry;
29
+ private log;
30
+ private opts;
31
+ private engine;
32
+ private authToken;
33
+ constructor(opts: ACPServerOptions);
34
+ get token(): string;
35
+ start(): Promise<void>;
36
+ stop(): Promise<void>;
37
+ private handle;
38
+ private json;
39
+ private body;
40
+ }
41
+ //# sourceMappingURL=acp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/runtime/acp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,UAAU;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;IAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;CAAE;AAC/H,MAAM,WAAW,UAAU;IAAG,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;CAAE;AAC7F,MAAM,WAAW,gBAAgB;IAAG,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;IAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAAE;AAElK,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAgD;IAC9D,OAAO,CAAC,QAAQ,CAAsC;IACtD,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,IAAI,CAAmB;IAC/B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,gBAAgB;IASlC,IAAI,KAAK,IAAI,MAAM,CAA2B;IAExC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAWtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAEb,MAAM;IA8DpB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,IAAI;CAab"}