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 @@
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/core/permissions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import { AgentConfig, AgentInstance, AgentStatus } from './types.js';
2
+ import { EventBus } from './event-bus.js';
3
+ /**
4
+ * Manages agent definitions and instances.
5
+ */
6
+ export declare class AgentRegistry {
7
+ private configs;
8
+ private instances;
9
+ private bus;
10
+ constructor(bus: EventBus);
11
+ /**
12
+ * Register an agent from code config.
13
+ */
14
+ register(config: AgentConfig): void;
15
+ /**
16
+ * Register an agent from a markdown file.
17
+ * Parses YAML frontmatter for config, uses body as prompt.
18
+ */
19
+ registerFromFile(filePath: string): void;
20
+ /**
21
+ * Load all .md agent files from a directory.
22
+ */
23
+ loadDirectory(dirPath: string): number;
24
+ /**
25
+ * Load agents with resolution chain: project → global → builtin.
26
+ * First registration wins (project overrides global overrides builtin).
27
+ */
28
+ loadWithResolution(cwd: string): number;
29
+ /**
30
+ * Resolve agent inheritance after all agents are loaded.
31
+ * Agents with `_extends` field merge parent config as defaults.
32
+ */
33
+ resolveInheritance(): void;
34
+ /**
35
+ * Create a new agent instance from a registered config.
36
+ */
37
+ spawn(type: string, overrides?: Partial<AgentConfig>): AgentInstance;
38
+ /**
39
+ * Update an agent instance's status.
40
+ */
41
+ updateStatus(id: string, status: AgentStatus): void;
42
+ /**
43
+ * Get a registered agent config by name.
44
+ */
45
+ getConfig(name: string): AgentConfig | undefined;
46
+ /**
47
+ * Get all registered agent configs.
48
+ */
49
+ getAllConfigs(): AgentConfig[];
50
+ /**
51
+ * Get an agent instance by ID.
52
+ */
53
+ getInstance(id: string): AgentInstance | undefined;
54
+ /**
55
+ * Get all active (non-terminal) agent instances.
56
+ */
57
+ getActiveInstances(): AgentInstance[];
58
+ /**
59
+ * Get all instances by status.
60
+ */
61
+ getInstancesByStatus(status: AgentStatus): AgentInstance[];
62
+ /**
63
+ * Get registered agent count.
64
+ */
65
+ get registeredCount(): number;
66
+ /**
67
+ * Get active instance count.
68
+ */
69
+ get activeCount(): number;
70
+ /**
71
+ * Prune terminal instances (shutdown, error, timeout) to free memory.
72
+ */
73
+ pruneTerminalInstances(): void;
74
+ /**
75
+ * Parse an agent markdown file into an AgentConfig.
76
+ * Extracts YAML frontmatter and uses the body as the prompt.
77
+ */
78
+ private parseAgentMarkdown;
79
+ }
80
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,WAAW,EACX,aAAa,EACb,WAAW,EAKZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,SAAS,CAAyE;IAC1F,OAAO,CAAC,GAAG,CAAW;gBAEV,GAAG,EAAE,QAAQ;IAMzB;;OAEG;IACH,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAMnC;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUxC;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAkBtC;;;OAGG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IA4BvC;;;OAGG;IACH,kBAAkB,IAAI,IAAI;IAyB1B;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,aAAa;IAkCpE;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI;IAqBnD;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIhD;;OAEG;IACH,aAAa,IAAI,WAAW,EAAE;IAI9B;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIlD;;OAEG;IACH,kBAAkB,IAAI,aAAa,EAAE;IAIrC;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,EAAE;IAI1D;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,sBAAsB,IAAI,IAAI;IAU9B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CA0F3B"}
@@ -0,0 +1,308 @@
1
+ import { readFileSync, existsSync, readdirSync } from 'fs';
2
+ import { join, extname } from 'path';
3
+ import { homedir } from 'os';
4
+ import yaml from 'js-yaml';
5
+ import { getBuiltinAgentsDir } from '../utils/paths.js';
6
+ import { AgentFrontmatterSchema } from '../utils/schemas.js';
7
+ import { emptyUsageStats, generateId, } from './types.js';
8
+ import { AgentLifecycle } from './lifecycle.js';
9
+ /**
10
+ * Manages agent definitions and instances.
11
+ */
12
+ export class AgentRegistry {
13
+ configs = new Map();
14
+ instances = new Map();
15
+ bus;
16
+ constructor(bus) {
17
+ this.bus = bus;
18
+ }
19
+ // ─── Registration ──────────────────────────────────────────────
20
+ /**
21
+ * Register an agent from code config.
22
+ */
23
+ register(config) {
24
+ if (this.configs.has(config.name))
25
+ return; // First wins (project > global > builtin)
26
+ this.configs.set(config.name, config);
27
+ this.bus.emit('system:warning', { message: `Agent registered: ${config.name}` }, 'registry');
28
+ }
29
+ /**
30
+ * Register an agent from a markdown file.
31
+ * Parses YAML frontmatter for config, uses body as prompt.
32
+ */
33
+ registerFromFile(filePath) {
34
+ if (!existsSync(filePath)) {
35
+ throw new Error(`Agent file not found: ${filePath}`);
36
+ }
37
+ const content = readFileSync(filePath, 'utf-8');
38
+ const config = this.parseAgentMarkdown(content, filePath);
39
+ this.register(config);
40
+ }
41
+ /**
42
+ * Load all .md agent files from a directory.
43
+ */
44
+ loadDirectory(dirPath) {
45
+ if (!existsSync(dirPath))
46
+ return 0;
47
+ let loaded = 0;
48
+ const files = readdirSync(dirPath).filter(f => extname(f) === '.md');
49
+ for (const file of files) {
50
+ try {
51
+ this.registerFromFile(join(dirPath, file));
52
+ loaded++;
53
+ }
54
+ catch (error) {
55
+ console.warn(`Warning: Failed to load ${file}: ${error instanceof Error ? error.message : error}`);
56
+ }
57
+ }
58
+ return loaded;
59
+ }
60
+ /**
61
+ * Load agents with resolution chain: project → global → builtin.
62
+ * First registration wins (project overrides global overrides builtin).
63
+ */
64
+ loadWithResolution(cwd) {
65
+ const builtinDir = getBuiltinAgentsDir();
66
+ const globalDir = join(homedir(), '.swarm', 'agents');
67
+ const packsDir = join(homedir(), '.swarm', 'agents', 'packs');
68
+ const projectDir = join(cwd, '.swarm', 'agents');
69
+ let loaded = 0;
70
+ // Project overrides first (highest priority)
71
+ loaded += this.loadDirectory(projectDir);
72
+ // Then global user agents
73
+ loaded += this.loadDirectory(globalDir);
74
+ // Then installed packs
75
+ if (existsSync(packsDir)) {
76
+ for (const pack of readdirSync(packsDir, { withFileTypes: true })) {
77
+ if (pack.isDirectory()) {
78
+ loaded += this.loadDirectory(join(packsDir, pack.name));
79
+ }
80
+ }
81
+ }
82
+ // Then builtins (lowest priority)
83
+ loaded += this.loadDirectory(builtinDir);
84
+ // Resolve agent inheritance after all sources are loaded
85
+ this.resolveInheritance();
86
+ return loaded;
87
+ }
88
+ /**
89
+ * Resolve agent inheritance after all agents are loaded.
90
+ * Agents with `_extends` field merge parent config as defaults.
91
+ */
92
+ resolveInheritance() {
93
+ for (const [name, config] of this.configs) {
94
+ const extendsName = config._extends;
95
+ if (!extendsName)
96
+ continue;
97
+ const parent = this.configs.get(extendsName);
98
+ if (!parent)
99
+ continue;
100
+ // Merge: child overrides parent
101
+ const merged = {
102
+ ...parent,
103
+ ...config,
104
+ name: config.name,
105
+ prompt: parent.prompt + '\n\n' + config.prompt,
106
+ tools: config.tools ?? parent.tools,
107
+ disallowedTools: config.disallowedTools ?? parent.disallowedTools,
108
+ tags: [...(parent.tags ?? []), ...(config.tags ?? [])],
109
+ };
110
+ delete merged._extends;
111
+ this.configs.set(name, merged);
112
+ }
113
+ }
114
+ // ─── Instance Management ───────────────────────────────────────
115
+ /**
116
+ * Create a new agent instance from a registered config.
117
+ */
118
+ spawn(type, overrides) {
119
+ const baseConfig = this.configs.get(type);
120
+ if (!baseConfig) {
121
+ throw new Error(`Unknown agent type: ${type}. Registered: ${[...this.configs.keys()].join(', ')}`);
122
+ }
123
+ const config = { ...baseConfig, ...overrides };
124
+ const id = `${config.name}-${generateId()}`;
125
+ const lifecycle = new AgentLifecycle();
126
+ const instance = {
127
+ id,
128
+ config,
129
+ status: 'registered',
130
+ usage: emptyUsageStats(),
131
+ lifecycle,
132
+ };
133
+ this.instances.set(id, instance);
134
+ // Transition to spawning
135
+ lifecycle.transition('spawning');
136
+ instance.status = 'spawning';
137
+ instance.startedAt = new Date();
138
+ this.bus.emit('agent:spawning', {
139
+ agentId: id,
140
+ agentType: type,
141
+ model: config.model,
142
+ }, id);
143
+ return instance;
144
+ }
145
+ /**
146
+ * Update an agent instance's status.
147
+ */
148
+ updateStatus(id, status) {
149
+ const instance = this.instances.get(id);
150
+ if (!instance)
151
+ throw new Error(`Unknown agent instance: ${id}`);
152
+ instance.lifecycle.transition(status);
153
+ instance.status = status;
154
+ if (instance.lifecycle.isTerminal) {
155
+ instance.completedAt = new Date();
156
+ instance.usage.durationMs = instance.lifecycle.totalDuration;
157
+ }
158
+ this.bus.emit(`agent:${status}`, {
159
+ agentId: id,
160
+ agentType: instance.config.name,
161
+ status,
162
+ }, id);
163
+ }
164
+ // ─── Queries ───────────────────────────────────────────────────
165
+ /**
166
+ * Get a registered agent config by name.
167
+ */
168
+ getConfig(name) {
169
+ return this.configs.get(name);
170
+ }
171
+ /**
172
+ * Get all registered agent configs.
173
+ */
174
+ getAllConfigs() {
175
+ return [...this.configs.values()];
176
+ }
177
+ /**
178
+ * Get an agent instance by ID.
179
+ */
180
+ getInstance(id) {
181
+ return this.instances.get(id);
182
+ }
183
+ /**
184
+ * Get all active (non-terminal) agent instances.
185
+ */
186
+ getActiveInstances() {
187
+ return [...this.instances.values()].filter(i => i.lifecycle.isActive);
188
+ }
189
+ /**
190
+ * Get all instances by status.
191
+ */
192
+ getInstancesByStatus(status) {
193
+ return [...this.instances.values()].filter(i => i.status === status);
194
+ }
195
+ /**
196
+ * Get registered agent count.
197
+ */
198
+ get registeredCount() {
199
+ return this.configs.size;
200
+ }
201
+ /**
202
+ * Get active instance count.
203
+ */
204
+ get activeCount() {
205
+ return this.getActiveInstances().length;
206
+ }
207
+ /**
208
+ * Prune terminal instances (shutdown, error, timeout) to free memory.
209
+ */
210
+ pruneTerminalInstances() {
211
+ for (const [id, instance] of this.instances) {
212
+ if (instance.status === 'shutdown' || instance.status === 'error' || instance.status === 'timeout') {
213
+ this.instances.delete(id);
214
+ }
215
+ }
216
+ }
217
+ // ─── Markdown Parsing ──────────────────────────────────────────
218
+ /**
219
+ * Parse an agent markdown file into an AgentConfig.
220
+ * Extracts YAML frontmatter and uses the body as the prompt.
221
+ */
222
+ parseAgentMarkdown(content, filePath) {
223
+ const lines = content.split('\n');
224
+ let inFrontmatter = false;
225
+ let frontmatterEnd = 0;
226
+ const frontmatterLines = [];
227
+ for (let i = 0; i < lines.length; i++) {
228
+ const line = lines[i].trim();
229
+ if (line === '---') {
230
+ if (!inFrontmatter) {
231
+ inFrontmatter = true;
232
+ continue;
233
+ }
234
+ else {
235
+ frontmatterEnd = i + 1;
236
+ break;
237
+ }
238
+ }
239
+ if (inFrontmatter) {
240
+ frontmatterLines.push(lines[i]);
241
+ }
242
+ }
243
+ // Parse YAML frontmatter properly
244
+ let meta = {};
245
+ try {
246
+ const parsed = yaml.load(frontmatterLines.join('\n'), { schema: yaml.DEFAULT_SCHEMA });
247
+ if (parsed && typeof parsed === 'object') {
248
+ meta = parsed;
249
+ }
250
+ }
251
+ catch {
252
+ // Fall back to filename-based config if YAML is malformed
253
+ }
254
+ // Validate frontmatter against schema (advisory — warns but doesn't block)
255
+ const validation = AgentFrontmatterSchema.safeParse(meta);
256
+ if (!validation.success) {
257
+ const errors = validation.error.issues.map(i => `${i.path.join('.')}: ${i.message}`).join(', ');
258
+ console.warn(`Warning: Agent ${filePath}: ${errors}`);
259
+ }
260
+ const name = String(meta['name'] ?? filePath.split('/').pop()?.replace('.md', '') ?? 'unknown');
261
+ const model = (String(meta['model'] ?? 'sonnet'));
262
+ const prompt = lines.slice(frontmatterEnd).join('\n').trim();
263
+ // Handle tools — can be string (comma-separated) or array
264
+ let tools;
265
+ if (meta['tools']) {
266
+ if (Array.isArray(meta['tools'])) {
267
+ tools = meta['tools'].map(String);
268
+ }
269
+ else {
270
+ tools = String(meta['tools']).split(',').map(t => t.trim());
271
+ }
272
+ }
273
+ let disallowedTools;
274
+ if (meta['disallowedTools']) {
275
+ if (Array.isArray(meta['disallowedTools'])) {
276
+ disallowedTools = meta['disallowedTools'].map(String);
277
+ }
278
+ else {
279
+ disallowedTools = String(meta['disallowedTools']).split(',').map(t => t.trim());
280
+ }
281
+ }
282
+ const result = {
283
+ name,
284
+ description: String(meta['description'] ?? ''),
285
+ prompt,
286
+ model,
287
+ backend: meta['backend'] ? String(meta['backend']) : undefined,
288
+ backendModel: meta['backendModel'] ? String(meta['backendModel']) : undefined,
289
+ permissionProfile: meta['permissionProfile'] ? String(meta['permissionProfile']) : undefined,
290
+ mcp: Array.isArray(meta['mcp']) ? meta['mcp'].map(String) : undefined,
291
+ worktree: meta['worktree'] === true || meta['worktree'] === 'true' ? true : undefined,
292
+ tools,
293
+ disallowedTools,
294
+ maxTurns: meta['maxTurns'] ? Number(meta['maxTurns']) : undefined,
295
+ timeout: meta['timeout'] ? Number(meta['timeout']) : undefined,
296
+ costBudget: meta['costBudget'] ? Number(meta['costBudget']) : undefined,
297
+ tags: Array.isArray(meta['tags']) ? meta['tags'].map(String) : [],
298
+ promptTier: meta['promptTier'] ? String(meta['promptTier']) : undefined,
299
+ outputFormat: meta['outputFormat'] ? String(meta['outputFormat']) : undefined,
300
+ };
301
+ // Capture extends for inheritance resolution
302
+ if (meta['extends']) {
303
+ result._extends = String(meta['extends']);
304
+ }
305
+ return result;
306
+ }
307
+ }
308
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAML,eAAe,EACf,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD;;GAEG;AACH,MAAM,OAAO,aAAa;IAChB,OAAO,GAA6B,IAAI,GAAG,EAAE,CAAC;IAC9C,SAAS,GAA+D,IAAI,GAAG,EAAE,CAAC;IAClF,GAAG,CAAW;IAEtB,YAAY,GAAa;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,kEAAkE;IAElE;;OAEG;IACH,QAAQ,CAAC,MAAmB;QAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,0CAA0C;QACrF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,qBAAqB,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;IAC/F,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,QAAgB;QAC/B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAe;QAC3B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,CAAC;QAEnC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;QAErE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC3C,MAAM,EAAE,CAAC;YACX,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,2BAA2B,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACrG,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,kBAAkB,CAAC,GAAW;QAC5B,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEjD,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,6CAA6C;QAC7C,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACzC,0BAA0B;QAC1B,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACxC,uBAAuB;QACvB,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;gBAClE,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACvB,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;QACD,kCAAkC;QAClC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAEzC,yDAAyD;QACzD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,kBAAkB;QAChB,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1C,MAAM,WAAW,GAAI,MAAc,CAAC,QAAQ,CAAC;YAC7C,IAAI,CAAC,WAAW;gBAAE,SAAS;YAE3B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAC7C,IAAI,CAAC,MAAM;gBAAE,SAAS;YAEtB,gCAAgC;YAChC,MAAM,MAAM,GAAgB;gBAC1B,GAAG,MAAM;gBACT,GAAG,MAAM;gBACT,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM;gBAC9C,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;gBACnC,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe;gBACjE,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;aACvD,CAAC;YACF,OAAQ,MAAc,CAAC,QAAQ,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,kEAAkE;IAElE;;OAEG;IACH,KAAK,CAAC,IAAY,EAAE,SAAgC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,iBAAiB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrG,CAAC;QAED,MAAM,MAAM,GAAgB,EAAE,GAAG,UAAU,EAAE,GAAG,SAAS,EAAE,CAAC;QAC5D,MAAM,EAAE,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,UAAU,EAAE,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QAEvC,MAAM,QAAQ,GAAkD;YAC9D,EAAE;YACF,MAAM;YACN,MAAM,EAAE,YAAY;YACpB,KAAK,EAAE,eAAe,EAAE;YACxB,SAAS;SACV,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAEjC,yBAAyB;QACzB,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACjC,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;QAC7B,QAAQ,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAEhC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC9B,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,EAAU,EAAE,MAAmB;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;QAEhE,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QAEzB,IAAI,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;YAClC,QAAQ,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YAClC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,CAAC,aAAa,CAAC;QAC/D,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,MAAM,EAAS,EAAE;YACtC,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI;YAC/B,MAAM;SACP,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,kEAAkE;IAElE;;OAEG;IACH,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,EAAU;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAAmB;QACtC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5C,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACnG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED,kEAAkE;IAElE;;;OAGG;IACK,kBAAkB,CAAC,OAAe,EAAE,QAAgB;QAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,MAAM,gBAAgB,GAAa,EAAE,CAAC;QAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;YAC9B,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,aAAa,GAAG,IAAI,CAAC;oBACrB,SAAS;gBACX,CAAC;qBAAM,CAAC;oBACN,cAAc,GAAG,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,aAAa,EAAE,CAAC;gBAClB,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,IAAI,IAAI,GAA4B,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YACvF,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACzC,IAAI,GAAG,MAAiC,CAAC;YAC3C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0DAA0D;QAC5D,CAAC;QAED,2EAA2E;QAC3E,MAAM,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChG,OAAO,CAAC,IAAI,CAAC,kBAAkB,QAAQ,KAAK,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC;QAChG,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,CAAc,CAAC;QAC/D,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAE7D,0DAA0D;QAC1D,IAAI,KAA2B,CAAC;QAChC,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;gBACjC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QAED,IAAI,eAAqC,CAAC;QAC1C,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC;gBAC3C,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAClF,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAgB;YAC1B,IAAI;YACJ,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAC9C,MAAM;YACN,KAAK;YACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC9D,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC7E,iBAAiB,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC5F,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;YACrE,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACrF,KAAK;YACL,eAAe;YACf,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACjE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YAC9D,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACvE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YACjE,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAQ,CAAC,CAAC,CAAC,SAAS;YAC9E,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAQ,CAAC,CAAC,CAAC,SAAS;SACrF,CAAC;QAEF,6CAA6C;QAC7C,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACnB,MAAc,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ export interface Snapshot {
2
+ id: string;
3
+ agentId: string;
4
+ agentName: string;
5
+ cwd: string;
6
+ createdAt: Date;
7
+ description: string;
8
+ method: 'git-stash' | 'copy';
9
+ ref?: string;
10
+ }
11
+ export declare class SnapshotManager {
12
+ private snapshots;
13
+ capture(agentId: string, agentName: string, cwd: string, description?: string): Snapshot;
14
+ rollback(snapshotId: string): boolean;
15
+ discard(id: string): void;
16
+ list(): Snapshot[];
17
+ get(id: string): Snapshot | undefined;
18
+ private isGitRepo;
19
+ }
20
+ //# sourceMappingURL=snapshots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshots.d.ts","sourceRoot":"","sources":["../../src/core/snapshots.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAAoC;IAErD,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ;IAkBxF,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAkBrC,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAgBzB,IAAI,IAAI,QAAQ,EAAE;IAClB,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAErC,OAAO,CAAC,SAAS;CAGlB"}
@@ -0,0 +1,73 @@
1
+ import { execFileSync } from 'child_process';
2
+ import { randomUUID } from 'crypto';
3
+ export class SnapshotManager {
4
+ snapshots = new Map();
5
+ capture(agentId, agentName, cwd, description) {
6
+ const id = randomUUID();
7
+ const snapshot = {
8
+ id, agentId, agentName, cwd, createdAt: new Date(),
9
+ description: description ?? `pre-${agentName}`,
10
+ method: this.isGitRepo(cwd) ? 'git-stash' : 'copy',
11
+ };
12
+ if (snapshot.method === 'git-stash') {
13
+ try {
14
+ const msg = `swarm-snapshot-${id}`;
15
+ execFileSync('git', ['stash', 'push', '-m', msg, '--include-untracked', '--keep-index'], { cwd });
16
+ snapshot.ref = msg;
17
+ }
18
+ catch { /* nothing to stash */ }
19
+ }
20
+ this.snapshots.set(id, snapshot);
21
+ return snapshot;
22
+ }
23
+ rollback(snapshotId) {
24
+ const s = this.snapshots.get(snapshotId);
25
+ if (!s || s.method !== 'git-stash' || !s.ref)
26
+ return false;
27
+ try {
28
+ execFileSync('git', ['checkout', '.'], { cwd: s.cwd });
29
+ execFileSync('git', ['clean', '-fd'], { cwd: s.cwd });
30
+ const list = execFileSync('git', ['stash', 'list'], { cwd: s.cwd, encoding: 'utf-8' });
31
+ const lines = list.split('\n');
32
+ for (let i = 0; i < lines.length; i++) {
33
+ if (lines[i].includes(s.ref)) {
34
+ execFileSync('git', ['stash', 'pop', `stash@{${i}}`], { cwd: s.cwd });
35
+ break;
36
+ }
37
+ }
38
+ return true;
39
+ }
40
+ catch {
41
+ return false;
42
+ }
43
+ }
44
+ discard(id) {
45
+ const snapshot = this.snapshots.get(id);
46
+ if (snapshot?.method === 'git-stash' && snapshot.ref) {
47
+ try {
48
+ const list = execFileSync('git', ['stash', 'list'], { cwd: snapshot.cwd, encoding: 'utf-8' });
49
+ const lines = list.split('\n');
50
+ for (let i = 0; i < lines.length; i++) {
51
+ if (lines[i].includes(snapshot.ref)) {
52
+ execFileSync('git', ['stash', 'drop', `stash@{${i}}`], { cwd: snapshot.cwd });
53
+ break;
54
+ }
55
+ }
56
+ }
57
+ catch { /* stash may already be gone */ }
58
+ }
59
+ this.snapshots.delete(id);
60
+ }
61
+ list() { return [...this.snapshots.values()]; }
62
+ get(id) { return this.snapshots.get(id); }
63
+ isGitRepo(cwd) {
64
+ try {
65
+ execFileSync('git', ['rev-parse', '--is-inside-work-tree'], { cwd });
66
+ return true;
67
+ }
68
+ catch {
69
+ return false;
70
+ }
71
+ }
72
+ }
73
+ //# sourceMappingURL=snapshots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshots.js","sourceRoot":"","sources":["../../src/core/snapshots.ts"],"names":[],"mappings":"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"}