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,77 @@
1
+ import type { ExecutionTrace } from './traces.js';
2
+ export interface TemplateParameter {
3
+ type: 'string' | 'number' | 'boolean';
4
+ description: string;
5
+ required?: boolean;
6
+ default?: unknown;
7
+ enum?: string[];
8
+ example?: string;
9
+ }
10
+ export interface TemplateAgentOverride {
11
+ extra_rules?: string[];
12
+ model?: string;
13
+ backend?: string;
14
+ permissionProfile?: string;
15
+ }
16
+ export interface TemplateVerification {
17
+ name: string;
18
+ command: string;
19
+ optional?: boolean;
20
+ }
21
+ export interface TemplateConfig {
22
+ name: string;
23
+ description: string;
24
+ parameters: Record<string, TemplateParameter>;
25
+ pattern: string;
26
+ context_files?: string[];
27
+ agents?: Record<string, TemplateAgentOverride>;
28
+ verification?: TemplateVerification[];
29
+ success_criteria?: string[];
30
+ tags?: string[];
31
+ }
32
+ export declare class TemplateRegistry {
33
+ private templates;
34
+ register(config: TemplateConfig): void;
35
+ get(name: string): TemplateConfig | undefined;
36
+ list(): TemplateConfig[];
37
+ /**
38
+ * Load templates from a directory of .yml/.yaml files.
39
+ */
40
+ loadDirectory(dir: string): number;
41
+ /**
42
+ * Load templates with resolution chain: project → global → builtins.
43
+ */
44
+ loadWithResolution(cwd: string): number;
45
+ get count(): number;
46
+ }
47
+ export interface ValidationResult {
48
+ valid: boolean;
49
+ errors: string[];
50
+ resolved: Record<string, unknown>;
51
+ }
52
+ /**
53
+ * Validate and resolve template parameters.
54
+ */
55
+ export declare function validateParameters(template: TemplateConfig, provided: Record<string, unknown>): ValidationResult;
56
+ /**
57
+ * Convert a template + parameters into task prompt and pattern options
58
+ * that can be passed to engine.runPattern().
59
+ */
60
+ export declare function resolveTemplate(template: TemplateConfig, params: Record<string, unknown>): {
61
+ task: string;
62
+ pattern: string;
63
+ agentOverrides: Record<string, TemplateAgentOverride>;
64
+ contextFiles: string[];
65
+ verification: TemplateVerification[];
66
+ successCriteria: string[];
67
+ };
68
+ /**
69
+ * Extract a reusable template from a successful execution trace.
70
+ * Detects parameters from the task description and builds a template config.
71
+ */
72
+ export declare function extractTemplateFromTrace(trace: ExecutionTrace, name: string, description?: string): TemplateConfig;
73
+ /**
74
+ * Save a template to disk as a YAML file.
75
+ */
76
+ export declare function saveTemplate(template: TemplateConfig, dir: string): string;
77
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/runtime/templates.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAC/C,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAID,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAA0C;IAE3D,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAItC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAI7C,IAAI,IAAI,cAAc,EAAE;IAIxB;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IA2BlC;;OAEG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAWvC,IAAI,KAAK,IAAI,MAAM,CAElB;CACF;AAID,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,gBAAgB,CAqClB;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B;IACD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACtD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,oBAAoB,EAAE,CAAC;IACrC,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CAqCA;AAID;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,cAAc,EACrB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,GACnB,cAAc,CAkEhB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAO1E"}
@@ -0,0 +1,221 @@
1
+ import { existsSync, readFileSync, readdirSync, mkdirSync, writeFileSync } from 'fs';
2
+ import { join, extname } from 'path';
3
+ import { homedir } from 'os';
4
+ import yaml from 'js-yaml';
5
+ import { getBuiltinTemplatesDir } from '../utils/paths.js';
6
+ import { TemplateConfigSchema } from '../utils/schemas.js';
7
+ // ─── Template Registry ────────────────────────────────────────
8
+ export class TemplateRegistry {
9
+ templates = new Map();
10
+ register(config) {
11
+ this.templates.set(config.name, config);
12
+ }
13
+ get(name) {
14
+ return this.templates.get(name);
15
+ }
16
+ list() {
17
+ return [...this.templates.values()];
18
+ }
19
+ /**
20
+ * Load templates from a directory of .yml/.yaml files.
21
+ */
22
+ loadDirectory(dir) {
23
+ if (!existsSync(dir))
24
+ return 0;
25
+ let loaded = 0;
26
+ const files = readdirSync(dir).filter(f => ['.yml', '.yaml'].includes(extname(f)));
27
+ for (const file of files) {
28
+ try {
29
+ const content = readFileSync(join(dir, file), 'utf-8');
30
+ const parsed = yaml.load(content, { schema: yaml.DEFAULT_SCHEMA });
31
+ // Validate template against schema (advisory — warns but doesn't block)
32
+ const validation = TemplateConfigSchema.safeParse(parsed);
33
+ if (!validation.success) {
34
+ const errors = validation.error.issues.map(i => `${i.path.join('.')}: ${i.message}`).join(', ');
35
+ console.warn(`Warning: Template ${file}: ${errors}`);
36
+ }
37
+ if (parsed && typeof parsed === 'object' && parsed.name) {
38
+ this.register(parsed);
39
+ loaded++;
40
+ }
41
+ }
42
+ catch {
43
+ console.warn(`Warning: Failed to load template ${file}`);
44
+ }
45
+ }
46
+ return loaded;
47
+ }
48
+ /**
49
+ * Load templates with resolution chain: project → global → builtins.
50
+ */
51
+ loadWithResolution(cwd) {
52
+ let loaded = 0;
53
+ // Project templates (highest priority)
54
+ loaded += this.loadDirectory(join(cwd, '.swarm', 'templates'));
55
+ // Global templates
56
+ loaded += this.loadDirectory(join(homedir(), '.swarm', 'templates'));
57
+ // Built-in templates
58
+ loaded += this.loadDirectory(getBuiltinTemplatesDir());
59
+ return loaded;
60
+ }
61
+ get count() {
62
+ return this.templates.size;
63
+ }
64
+ }
65
+ /**
66
+ * Validate and resolve template parameters.
67
+ */
68
+ export function validateParameters(template, provided) {
69
+ const errors = [];
70
+ const resolved = {};
71
+ for (const [key, spec] of Object.entries(template.parameters)) {
72
+ const value = provided[key];
73
+ if (value === undefined || value === null || value === '') {
74
+ if (spec.required !== false && spec.default === undefined) {
75
+ errors.push(`Missing required parameter: ${key} — ${spec.description}`);
76
+ continue;
77
+ }
78
+ resolved[key] = spec.default;
79
+ continue;
80
+ }
81
+ // Type validation
82
+ if (spec.type === 'number' && typeof value !== 'number') {
83
+ const parsed = Number(value);
84
+ if (isNaN(parsed)) {
85
+ errors.push(`Parameter ${key} must be a number`);
86
+ continue;
87
+ }
88
+ resolved[key] = parsed;
89
+ }
90
+ else if (spec.type === 'boolean' && typeof value !== 'boolean') {
91
+ resolved[key] = value === 'true' || value === '1' || value === 'yes';
92
+ }
93
+ else {
94
+ resolved[key] = value;
95
+ }
96
+ // Enum validation
97
+ if (spec.enum && !spec.enum.includes(String(resolved[key]))) {
98
+ errors.push(`Parameter ${key} must be one of: ${spec.enum.join(', ')}`);
99
+ }
100
+ }
101
+ return { valid: errors.length === 0, errors, resolved };
102
+ }
103
+ // ─── Template → Orchestration Conversion ──────────────────────
104
+ /**
105
+ * Convert a template + parameters into task prompt and pattern options
106
+ * that can be passed to engine.runPattern().
107
+ */
108
+ export function resolveTemplate(template, params) {
109
+ // Build the task prompt from template description + parameters
110
+ const paramLines = Object.entries(params)
111
+ .filter(([, v]) => v !== undefined && v !== null)
112
+ .map(([k, v]) => `- ${k}: ${v}`)
113
+ .join('\n');
114
+ // Substitute ${param} in success criteria and agent rules
115
+ const substitute = (text) => {
116
+ let result = text;
117
+ for (const [key, value] of Object.entries(params)) {
118
+ const placeholder = '${' + key + '}';
119
+ result = result.split(placeholder).join(String(value));
120
+ }
121
+ return result;
122
+ };
123
+ const task = `## Template: ${template.name}\n${template.description}\n\n## Parameters\n${paramLines}`;
124
+ const agentOverrides = {};
125
+ if (template.agents) {
126
+ for (const [agent, override] of Object.entries(template.agents)) {
127
+ agentOverrides[agent] = {
128
+ ...override,
129
+ extra_rules: override.extra_rules?.map(substitute),
130
+ };
131
+ }
132
+ }
133
+ return {
134
+ task,
135
+ pattern: template.pattern,
136
+ agentOverrides,
137
+ contextFiles: template.context_files ?? [],
138
+ verification: template.verification ?? [],
139
+ successCriteria: (template.success_criteria ?? []).map(substitute),
140
+ };
141
+ }
142
+ // ─── Trace → Template Extraction ──────────────────────────────
143
+ /**
144
+ * Extract a reusable template from a successful execution trace.
145
+ * Detects parameters from the task description and builds a template config.
146
+ */
147
+ export function extractTemplateFromTrace(trace, name, description) {
148
+ // Detect potential parameters from the task
149
+ // Look for quoted strings, file paths, specific values that vary between runs
150
+ const detectedParams = {};
151
+ // Extract quoted strings as potential parameters
152
+ const quotedStrings = trace.task.match(/"([^"]+)"|'([^']+)'/g);
153
+ if (quotedStrings) {
154
+ for (let i = 0; i < quotedStrings.length; i++) {
155
+ const value = quotedStrings[i].replace(/["']/g, '');
156
+ const key = `param${i + 1}`;
157
+ detectedParams[key] = {
158
+ type: 'string',
159
+ description: `Detected from task: "${value}"`,
160
+ required: true,
161
+ example: value,
162
+ };
163
+ }
164
+ }
165
+ // Extract file paths as potential scope parameters
166
+ const filePaths = trace.task.match(/(?:[\w./]+\.(?:ts|js|py|go|rs|java|rb|md))/g);
167
+ if (filePaths && filePaths.length > 0) {
168
+ detectedParams['target_file'] = {
169
+ type: 'string',
170
+ description: 'Target file or directory',
171
+ required: false,
172
+ example: filePaths[0],
173
+ };
174
+ }
175
+ // Build agent overrides from trace phase data
176
+ const agentOverrides = {};
177
+ for (const phase of trace.phases) {
178
+ // If a phase used specific agents, capture their type
179
+ if (phase.confidence === 'high') {
180
+ // This was a successful agent config — worth preserving
181
+ }
182
+ }
183
+ // Build context_files from files mentioned in reflections
184
+ const contextFiles = [];
185
+ for (const reflection of trace.reflections) {
186
+ const paths = reflection.match(/(?:[\w./]+\/[\w./]+\.(?:ts|js|py|go|rs))/g);
187
+ if (paths)
188
+ contextFiles.push(...paths);
189
+ }
190
+ // Build verification from the pattern
191
+ const verification = [];
192
+ // Auto-detect based on what we know about the project
193
+ // These would ideally come from the verifier's detected commands
194
+ return {
195
+ name,
196
+ description: description ?? `Template extracted from: ${trace.task.slice(0, 80)}`,
197
+ parameters: detectedParams,
198
+ pattern: trace.pattern,
199
+ context_files: [...new Set(contextFiles)].slice(0, 10),
200
+ agents: Object.keys(agentOverrides).length > 0 ? agentOverrides : undefined,
201
+ verification: verification.length > 0 ? verification : undefined,
202
+ success_criteria: [
203
+ `Orchestration completes successfully using ${trace.pattern} pattern`,
204
+ `All verification checks pass`,
205
+ ],
206
+ tags: [trace.pattern, 'auto-extracted'],
207
+ };
208
+ }
209
+ /**
210
+ * Save a template to disk as a YAML file.
211
+ */
212
+ export function saveTemplate(template, dir) {
213
+ if (!existsSync(dir))
214
+ mkdirSync(dir, { recursive: true });
215
+ const safeName = template.name.replace(/[^a-zA-Z0-9._-]/g, '-');
216
+ const filePath = join(dir, `${safeName}.yml`);
217
+ const content = yaml.dump(template, { lineWidth: 120, noRefs: true });
218
+ writeFileSync(filePath, content);
219
+ return filePath;
220
+ }
221
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/runtime/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACrF,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,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAuC3D,iEAAiE;AAEjE,MAAM,OAAO,gBAAgB;IACnB,SAAS,GAAgC,IAAI,GAAG,EAAE,CAAC;IAE3D,QAAQ,CAAC,MAAsB;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,GAAW;QACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;gBAEnE,wEAAwE;gBACxE,MAAM,UAAU,GAAG,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC1D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;oBACxB,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;oBAChG,OAAO,CAAC,IAAI,CAAC,qBAAqB,IAAI,KAAK,MAAM,EAAE,CAAC,CAAC;gBACvD,CAAC;gBAED,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAK,MAAc,CAAC,IAAI,EAAE,CAAC;oBACjE,IAAI,CAAC,QAAQ,CAAC,MAAwB,CAAC,CAAC;oBACxC,MAAM,EAAE,CAAC;gBACX,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,GAAW;QAC5B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,uCAAuC;QACvC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;QAC/D,mBAAmB;QACnB,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;QACrE,qBAAqB;QACrB,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC7B,CAAC;CACF;AAUD;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAwB,EACxB,QAAiC;IAEjC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YAC1D,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,+BAA+B,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBACxE,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,mBAAmB,CAAC,CAAC;gBACjD,SAAS;YACX,CAAC;YACD,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QACzB,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;YACjE,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,KAAK,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;QAED,kBAAkB;QAClB,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,oBAAoB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC1D,CAAC;AAED,iEAAiE;AAEjE;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAwB,EACxB,MAA+B;IAS/B,+DAA+D;IAC/D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACtC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC;SAChD,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;SAC/B,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,0DAA0D;IAC1D,MAAM,UAAU,GAAG,CAAC,IAAY,EAAU,EAAE;QAC1C,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,MAAM,WAAW,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC;YACrC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,gBAAgB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,WAAW,sBAAsB,UAAU,EAAE,CAAC;IAEtG,MAAM,cAAc,GAA0C,EAAE,CAAC;IACjE,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAChE,cAAc,CAAC,KAAK,CAAC,GAAG;gBACtB,GAAG,QAAQ;gBACX,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,UAAU,CAAC;aACnD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,cAAc;QACd,YAAY,EAAE,QAAQ,CAAC,aAAa,IAAI,EAAE;QAC1C,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,EAAE;QACzC,eAAe,EAAE,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,iEAAiE;AAEjE;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAqB,EACrB,IAAY,EACZ,WAAoB;IAEpB,4CAA4C;IAC5C,8EAA8E;IAC9E,MAAM,cAAc,GAAsC,EAAE,CAAC;IAE7D,iDAAiD;IACjD,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC/D,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,cAAc,CAAC,GAAG,CAAC,GAAG;gBACpB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wBAAwB,KAAK,GAAG;gBAC7C,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAClF,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,cAAc,CAAC,aAAa,CAAC,GAAG;YAC9B,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,0BAA0B;YACvC,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;SACtB,CAAC;IACJ,CAAC;IAED,8CAA8C;IAC9C,MAAM,cAAc,GAA0C,EAAE,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,sDAAsD;QACtD,IAAI,KAAK,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YAChC,wDAAwD;QAC1D,CAAC;IACH,CAAC;IAED,0DAA0D;IAC1D,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC5E,IAAI,KAAK;YAAE,YAAY,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,sCAAsC;IACtC,MAAM,YAAY,GAA2B,EAAE,CAAC;IAChD,sDAAsD;IACtD,iEAAiE;IAEjE,OAAO;QACL,IAAI;QACJ,WAAW,EAAE,WAAW,IAAI,4BAA4B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QACjF,UAAU,EAAE,cAAc;QAC1B,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,aAAa,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACtD,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;QAC3E,YAAY,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QAChE,gBAAgB,EAAE;YAChB,8CAA8C,KAAK,CAAC,OAAO,UAAU;YACrE,8BAA8B;SAC/B;QACD,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC;KACxC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,QAAwB,EAAE,GAAW;IAChE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,MAAM,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,60 @@
1
+ export interface ExecutionTrace {
2
+ id?: number;
3
+ orchestrationId: string;
4
+ task: string;
5
+ pattern: string;
6
+ status: 'completed' | 'failed' | 'cancelled';
7
+ totalTokens: number;
8
+ costUsd: number;
9
+ durationMs: number;
10
+ phaseCount: number;
11
+ agentCount: number;
12
+ phases: TracePhase[];
13
+ reflections: string[];
14
+ createdAt?: string;
15
+ }
16
+ export interface TracePhase {
17
+ name: string;
18
+ status: string;
19
+ agentCount: number;
20
+ tokens: number;
21
+ durationMs: number;
22
+ confidence: string;
23
+ }
24
+ export declare class TraceStore {
25
+ private db;
26
+ constructor(dbPath?: string);
27
+ private initSchema;
28
+ /** Store a completed orchestration trace */
29
+ store(trace: ExecutionTrace): number;
30
+ /** Find similar past traces using FTS5 */
31
+ findSimilar(task: string, limit?: number): ExecutionTrace[];
32
+ /** Get most recent traces regardless of pattern */
33
+ getRecent(limit?: number): ExecutionTrace[];
34
+ /** Get traces by pattern */
35
+ getByPattern(pattern: string, limit?: number): ExecutionTrace[];
36
+ /** Get success rate for a pattern */
37
+ getPatternSuccessRate(pattern: string): {
38
+ total: number;
39
+ succeeded: number;
40
+ rate: number;
41
+ };
42
+ /** Get overall stats */
43
+ stats(): {
44
+ totalTraces: number;
45
+ byPattern: Record<string, number>;
46
+ avgTokens: number;
47
+ avgDuration: number;
48
+ };
49
+ close(): void;
50
+ private rowToTrace;
51
+ }
52
+ /**
53
+ * Extract key learnings from an execution trace and format as memory entries.
54
+ */
55
+ export declare function traceToMemoryEntries(trace: ExecutionTrace): Array<{
56
+ type: 'decision' | 'learning' | 'outcome';
57
+ title: string;
58
+ content: string;
59
+ }>;
60
+ //# sourceMappingURL=traces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traces.d.ts","sourceRoot":"","sources":["../../src/runtime/traces.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAAoB;gBAElB,MAAM,CAAC,EAAE,MAAM;IAW3B,OAAO,CAAC,UAAU;IAwBlB,4CAA4C;IAC5C,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM;IAapC,0CAA0C;IAC1C,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,cAAc,EAAE;IAkB9D,mDAAmD;IACnD,SAAS,CAAC,KAAK,GAAE,MAAW,GAAG,cAAc,EAAE;IAQ/C,4BAA4B;IAC5B,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,cAAc,EAAE;IAQnE,qCAAqC;IACrC,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAa1F,wBAAwB;IACxB,KAAK,IAAI;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE;IAiB3G,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,UAAU;CAiBnB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,CAAC;IACjE,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAqCD"}
@@ -0,0 +1,166 @@
1
+ import Database from 'better-sqlite3';
2
+ import { existsSync, mkdirSync } from 'fs';
3
+ import { join, dirname } from 'path';
4
+ import { homedir } from 'os';
5
+ import { redactSecrets } from '../utils/redact.js';
6
+ export class TraceStore {
7
+ db;
8
+ constructor(dbPath) {
9
+ const path = dbPath ?? join(homedir(), '.swarm', 'data', 'traces.db');
10
+ const dir = dirname(path);
11
+ if (!existsSync(dir))
12
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
13
+ this.db = new Database(path);
14
+ this.db.pragma('journal_mode = WAL');
15
+ this.db.pragma('busy_timeout = 5000');
16
+ this.initSchema();
17
+ }
18
+ initSchema() {
19
+ this.db.exec(`
20
+ CREATE TABLE IF NOT EXISTS traces (
21
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
22
+ orchestration_id TEXT NOT NULL,
23
+ task TEXT NOT NULL,
24
+ pattern TEXT NOT NULL,
25
+ status TEXT NOT NULL,
26
+ total_tokens INTEGER DEFAULT 0,
27
+ cost_usd REAL DEFAULT 0,
28
+ duration_ms INTEGER DEFAULT 0,
29
+ phase_count INTEGER DEFAULT 0,
30
+ agent_count INTEGER DEFAULT 0,
31
+ phases_json TEXT,
32
+ reflections_json TEXT,
33
+ created_at TEXT DEFAULT (datetime('now'))
34
+ );
35
+ CREATE VIRTUAL TABLE IF NOT EXISTS traces_fts USING fts5(task, pattern, content=traces, content_rowid=id);
36
+ CREATE TRIGGER IF NOT EXISTS traces_ai AFTER INSERT ON traces BEGIN
37
+ INSERT INTO traces_fts(rowid, task, pattern) VALUES (new.id, new.task, new.pattern);
38
+ END;
39
+ `);
40
+ }
41
+ /** Store a completed orchestration trace */
42
+ store(trace) {
43
+ const result = this.db.prepare(`
44
+ INSERT INTO traces (orchestration_id, task, pattern, status, total_tokens, cost_usd, duration_ms, phase_count, agent_count, phases_json, reflections_json)
45
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
46
+ `).run(trace.orchestrationId, redactSecrets(trace.task), trace.pattern, trace.status, trace.totalTokens, trace.costUsd, trace.durationMs, trace.phaseCount, trace.agentCount, JSON.stringify(trace.phases), JSON.stringify(trace.reflections.map(r => redactSecrets(r))));
47
+ return result.lastInsertRowid;
48
+ }
49
+ /** Find similar past traces using FTS5 */
50
+ findSimilar(task, limit = 5) {
51
+ try {
52
+ const safeQuery = '"' + task.replace(/"/g, '').slice(0, 500) + '"';
53
+ const rows = this.db.prepare(`
54
+ SELECT t.*, rank
55
+ FROM traces_fts fts
56
+ JOIN traces t ON t.id = fts.rowid
57
+ WHERE traces_fts MATCH ?
58
+ ORDER BY rank
59
+ LIMIT ?
60
+ `).all(safeQuery, limit);
61
+ return rows.map(r => this.rowToTrace(r));
62
+ }
63
+ catch {
64
+ return []; // Malformed FTS query
65
+ }
66
+ }
67
+ /** Get most recent traces regardless of pattern */
68
+ getRecent(limit = 10) {
69
+ const rows = this.db.prepare(`
70
+ SELECT * FROM traces ORDER BY created_at DESC LIMIT ?
71
+ `).all(limit);
72
+ return rows.map(r => this.rowToTrace(r));
73
+ }
74
+ /** Get traces by pattern */
75
+ getByPattern(pattern, limit = 10) {
76
+ const rows = this.db.prepare(`
77
+ SELECT * FROM traces WHERE pattern = ? ORDER BY created_at DESC LIMIT ?
78
+ `).all(pattern, limit);
79
+ return rows.map(r => this.rowToTrace(r));
80
+ }
81
+ /** Get success rate for a pattern */
82
+ getPatternSuccessRate(pattern) {
83
+ const row = this.db.prepare(`
84
+ SELECT COUNT(*) as total, SUM(CASE WHEN status = 'completed' THEN 1 ELSE 0 END) as succeeded
85
+ FROM traces WHERE pattern = ?
86
+ `).get(pattern);
87
+ return {
88
+ total: row.total,
89
+ succeeded: row.succeeded,
90
+ rate: row.total > 0 ? row.succeeded / row.total : 0,
91
+ };
92
+ }
93
+ /** Get overall stats */
94
+ stats() {
95
+ const total = this.db.prepare('SELECT COUNT(*) as count FROM traces').get().count;
96
+ const byPattern = {};
97
+ const patternRows = this.db.prepare('SELECT pattern, COUNT(*) as count FROM traces GROUP BY pattern').all();
98
+ for (const r of patternRows)
99
+ byPattern[r.pattern] = r.count;
100
+ const avgs = this.db.prepare('SELECT AVG(total_tokens) as avg_tokens, AVG(duration_ms) as avg_duration FROM traces').get();
101
+ return {
102
+ totalTraces: total,
103
+ byPattern,
104
+ avgTokens: Math.round(avgs.avg_tokens ?? 0),
105
+ avgDuration: Math.round(avgs.avg_duration ?? 0),
106
+ };
107
+ }
108
+ close() {
109
+ this.db.close();
110
+ }
111
+ rowToTrace(row) {
112
+ return {
113
+ id: row.id,
114
+ orchestrationId: row.orchestration_id,
115
+ task: row.task,
116
+ pattern: row.pattern,
117
+ status: row.status,
118
+ totalTokens: row.total_tokens,
119
+ costUsd: row.cost_usd,
120
+ durationMs: row.duration_ms,
121
+ phaseCount: row.phase_count,
122
+ agentCount: row.agent_count,
123
+ phases: JSON.parse(row.phases_json ?? '[]'),
124
+ reflections: JSON.parse(row.reflections_json ?? '[]'),
125
+ createdAt: row.created_at,
126
+ };
127
+ }
128
+ }
129
+ /**
130
+ * Extract key learnings from an execution trace and format as memory entries.
131
+ */
132
+ export function traceToMemoryEntries(trace) {
133
+ const entries = [];
134
+ // Outcome: what happened
135
+ entries.push({
136
+ type: 'outcome',
137
+ title: redactSecrets(`${trace.pattern}: ${trace.task.slice(0, 60)}`),
138
+ content: [
139
+ `Pattern: ${trace.pattern}`,
140
+ `Status: ${trace.status}`,
141
+ `Agents: ${trace.agentCount}, Phases: ${trace.phaseCount}`,
142
+ `Tokens: ${trace.totalTokens}, Cost: $${trace.costUsd.toFixed(4)}, Duration: ${Math.round(trace.durationMs / 1000)}s`,
143
+ '',
144
+ ...trace.phases.map(p => `- ${p.name}: ${p.status} (${p.agentCount} agents, ${p.tokens} tokens, ${p.confidence} confidence)`),
145
+ ].join('\n'),
146
+ });
147
+ // Learning from reflections
148
+ if (trace.reflections.length > 0) {
149
+ entries.push({
150
+ type: 'learning',
151
+ title: `Lessons from ${trace.pattern}: ${trace.task.slice(0, 40)}`,
152
+ content: trace.reflections.join('\n\n'),
153
+ });
154
+ }
155
+ // Decision: which pattern worked/failed
156
+ if (trace.status === 'failed') {
157
+ const failedPhases = trace.phases.filter(p => p.status === 'failed');
158
+ entries.push({
159
+ type: 'decision',
160
+ title: `Pattern ${trace.pattern} failed for: ${trace.task.slice(0, 40)}`,
161
+ content: `Failed at phase(s): ${failedPhases.map(p => p.name).join(', ')}. Consider a different pattern or approach for similar tasks.`,
162
+ });
163
+ }
164
+ return entries;
165
+ }
166
+ //# sourceMappingURL=traces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"traces.js","sourceRoot":"","sources":["../../src/runtime/traces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { EventBus } from '../core/event-bus.js';
2
+ export interface VerificationResult {
3
+ step: string;
4
+ passed: boolean;
5
+ output: string;
6
+ durationMs: number;
7
+ }
8
+ export interface VerifierConfig {
9
+ enabled: boolean;
10
+ commands: VerificationCommand[];
11
+ timeout: number;
12
+ }
13
+ export interface VerificationCommand {
14
+ name: string;
15
+ command: string;
16
+ args: string[];
17
+ optional?: boolean;
18
+ }
19
+ export declare const DEFAULT_VERIFIER: VerifierConfig;
20
+ export declare class Verifier {
21
+ private config;
22
+ private cwd;
23
+ constructor(cwd: string, config?: Partial<VerifierConfig>);
24
+ /** Run all verification commands and return results */
25
+ verify(): Promise<VerificationResult[]>;
26
+ /** Check if all verifications passed */
27
+ isGreen(): Promise<boolean>;
28
+ /** Get a summary string of verification results */
29
+ static summarize(results: VerificationResult[]): string;
30
+ /** Auto-detect verification commands from project files */
31
+ private detectCommands;
32
+ /** Get configured commands */
33
+ getCommands(): VerificationCommand[];
34
+ }
35
+ /**
36
+ * Continuous verification — runs checks after file changes with debounce.
37
+ * Like Aider's auto lint+test, but integrated with the event bus.
38
+ */
39
+ export declare class ContinuousVerifier {
40
+ private verifier;
41
+ private bus;
42
+ private debounceTimer;
43
+ private debounceMs;
44
+ private lastResults;
45
+ constructor(verifier: Verifier, bus: EventBus, debounceMs?: number);
46
+ /** Start monitoring for file changes */
47
+ start(): void;
48
+ /** Stop monitoring */
49
+ stop(): void;
50
+ /** Get last verification results */
51
+ getLastResults(): VerificationResult[];
52
+ private scheduleVerification;
53
+ }
54
+ //# sourceMappingURL=verifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../../src/runtime/verifier.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIhD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,gBAAgB,EAAE,cAI9B,CAAC;AAEF,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,GAAG,CAAS;gBAER,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAUzD,uDAAuD;IACjD,MAAM,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAkC7C,wCAAwC;IAClC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAKjC,mDAAmD;IACnD,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,MAAM;IAOvD,2DAA2D;IAC3D,OAAO,CAAC,cAAc;IAiDtB,8BAA8B;IAC9B,WAAW,IAAI,mBAAmB,EAAE;CAGrC;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAA4B;gBAEnC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,GAAE,MAAa;IAMxE,wCAAwC;IACxC,KAAK,IAAI,IAAI;IAYb,sBAAsB;IACtB,IAAI,IAAI,IAAI;IAOZ,oCAAoC;IACpC,cAAc,IAAI,kBAAkB,EAAE;IAItC,OAAO,CAAC,oBAAoB;CAoB7B"}