oh-my-claude-sisyphus 3.5.8 → 3.6.1

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 (399) hide show
  1. package/agents/executor-high.md +2 -0
  2. package/agents/executor-low.md +2 -0
  3. package/agents/executor.md +2 -0
  4. package/agents/templates/base-agent.md +9 -0
  5. package/commands/cancel.md +8 -8
  6. package/commands/omc-setup.md +3 -3
  7. package/commands/release.md +1 -1
  8. package/commands/swarm.md +350 -148
  9. package/dist/__tests__/analytics/transcript-scanner.test.js +69 -27
  10. package/dist/__tests__/analytics/transcript-scanner.test.js.map +1 -1
  11. package/dist/__tests__/hooks.test.js +10 -9
  12. package/dist/__tests__/hooks.test.js.map +1 -1
  13. package/dist/__tests__/installer.test.js +2 -1
  14. package/dist/__tests__/installer.test.js.map +1 -1
  15. package/dist/agents/preamble.d.ts +14 -0
  16. package/dist/agents/preamble.d.ts.map +1 -0
  17. package/dist/agents/preamble.js +26 -0
  18. package/dist/agents/preamble.js.map +1 -0
  19. package/dist/analytics/session-manager.d.ts +24 -0
  20. package/dist/analytics/session-manager.d.ts.map +1 -1
  21. package/dist/analytics/session-manager.js +98 -9
  22. package/dist/analytics/session-manager.js.map +1 -1
  23. package/dist/analytics/transcript-scanner.d.ts +9 -8
  24. package/dist/analytics/transcript-scanner.d.ts.map +1 -1
  25. package/dist/analytics/transcript-scanner.js +146 -16
  26. package/dist/analytics/transcript-scanner.js.map +1 -1
  27. package/dist/cli/analytics.js +0 -0
  28. package/dist/cli/index.js +0 -0
  29. package/dist/hooks/autopilot/__tests__/cancel.test.js +14 -4
  30. package/dist/hooks/autopilot/__tests__/cancel.test.js.map +1 -1
  31. package/dist/hooks/autopilot/__tests__/state.test.js +1 -0
  32. package/dist/hooks/autopilot/__tests__/state.test.js.map +1 -1
  33. package/dist/hooks/autopilot/__tests__/summary.test.js +38 -3
  34. package/dist/hooks/autopilot/__tests__/summary.test.js.map +1 -1
  35. package/dist/hooks/autopilot/state.d.ts +1 -1
  36. package/dist/hooks/autopilot/state.d.ts.map +1 -1
  37. package/dist/hooks/autopilot/state.js +15 -8
  38. package/dist/hooks/autopilot/state.js.map +1 -1
  39. package/dist/hooks/empty-message-sanitizer/__tests__/index.test.d.ts +2 -0
  40. package/dist/hooks/empty-message-sanitizer/__tests__/index.test.d.ts.map +1 -0
  41. package/dist/hooks/empty-message-sanitizer/__tests__/index.test.js +416 -0
  42. package/dist/hooks/empty-message-sanitizer/__tests__/index.test.js.map +1 -0
  43. package/dist/hooks/index.d.ts +2 -0
  44. package/dist/hooks/index.d.ts.map +1 -1
  45. package/dist/hooks/index.js +7 -0
  46. package/dist/hooks/index.js.map +1 -1
  47. package/dist/hooks/keyword-detector/__tests__/index.test.d.ts +2 -0
  48. package/dist/hooks/keyword-detector/__tests__/index.test.d.ts.map +1 -0
  49. package/dist/hooks/keyword-detector/__tests__/index.test.js +427 -0
  50. package/dist/hooks/keyword-detector/__tests__/index.test.js.map +1 -0
  51. package/dist/hooks/mode-registry/index.d.ts +135 -0
  52. package/dist/hooks/mode-registry/index.d.ts.map +1 -0
  53. package/dist/hooks/mode-registry/index.js +445 -0
  54. package/dist/hooks/mode-registry/index.js.map +1 -0
  55. package/dist/hooks/mode-registry/types.d.ts +31 -0
  56. package/dist/hooks/mode-registry/types.d.ts.map +1 -0
  57. package/dist/hooks/mode-registry/types.js +7 -0
  58. package/dist/hooks/mode-registry/types.js.map +1 -0
  59. package/dist/hooks/ralph/loop.js +6 -6
  60. package/dist/hooks/ralph/loop.js.map +1 -1
  61. package/dist/hooks/swarm/__tests__/claiming.test.d.ts +2 -0
  62. package/dist/hooks/swarm/__tests__/claiming.test.d.ts.map +1 -0
  63. package/dist/hooks/swarm/__tests__/claiming.test.js +170 -0
  64. package/dist/hooks/swarm/__tests__/claiming.test.js.map +1 -0
  65. package/dist/hooks/swarm/__tests__/index.test.d.ts +2 -0
  66. package/dist/hooks/swarm/__tests__/index.test.d.ts.map +1 -0
  67. package/dist/hooks/swarm/__tests__/index.test.js +157 -0
  68. package/dist/hooks/swarm/__tests__/index.test.js.map +1 -0
  69. package/dist/hooks/swarm/__tests__/mode-registry.test.d.ts +2 -0
  70. package/dist/hooks/swarm/__tests__/mode-registry.test.d.ts.map +1 -0
  71. package/dist/hooks/swarm/__tests__/mode-registry.test.js +177 -0
  72. package/dist/hooks/swarm/__tests__/mode-registry.test.js.map +1 -0
  73. package/dist/hooks/swarm/claiming.d.ts +101 -0
  74. package/dist/hooks/swarm/claiming.d.ts.map +1 -0
  75. package/dist/hooks/swarm/claiming.js +460 -0
  76. package/dist/hooks/swarm/claiming.js.map +1 -0
  77. package/dist/hooks/swarm/index.d.ts +221 -0
  78. package/dist/hooks/swarm/index.d.ts.map +1 -0
  79. package/dist/hooks/swarm/index.js +413 -0
  80. package/dist/hooks/swarm/index.js.map +1 -0
  81. package/dist/hooks/swarm/state.d.ts +94 -0
  82. package/dist/hooks/swarm/state.d.ts.map +1 -0
  83. package/dist/hooks/swarm/state.js +530 -0
  84. package/dist/hooks/swarm/state.js.map +1 -0
  85. package/dist/hooks/swarm/types.d.ts +116 -0
  86. package/dist/hooks/swarm/types.d.ts.map +1 -0
  87. package/dist/hooks/swarm/types.js +22 -0
  88. package/dist/hooks/swarm/types.js.map +1 -0
  89. package/dist/hooks/think-mode/__tests__/index.test.d.ts +2 -0
  90. package/dist/hooks/think-mode/__tests__/index.test.d.ts.map +1 -0
  91. package/dist/hooks/think-mode/__tests__/index.test.js +556 -0
  92. package/dist/hooks/think-mode/__tests__/index.test.js.map +1 -0
  93. package/dist/hooks/ultrapilot/decomposer.d.ts +141 -0
  94. package/dist/hooks/ultrapilot/decomposer.d.ts.map +1 -0
  95. package/dist/hooks/ultrapilot/decomposer.js +377 -0
  96. package/dist/hooks/ultrapilot/decomposer.js.map +1 -0
  97. package/dist/hooks/ultrapilot/index.d.ts +31 -0
  98. package/dist/hooks/ultrapilot/index.d.ts.map +1 -1
  99. package/dist/hooks/ultrapilot/index.js +43 -2
  100. package/dist/hooks/ultrapilot/index.js.map +1 -1
  101. package/dist/hooks/ultrapilot/state.d.ts +1 -1
  102. package/dist/hooks/ultrapilot/state.d.ts.map +1 -1
  103. package/dist/hooks/ultrapilot/state.js +7 -0
  104. package/dist/hooks/ultrapilot/state.js.map +1 -1
  105. package/dist/hooks/ultraqa/index.js +5 -5
  106. package/dist/hooks/ultraqa/index.js.map +1 -1
  107. package/dist/hooks/ultrawork/index.js +3 -3
  108. package/dist/hooks/ultrawork/index.js.map +1 -1
  109. package/dist/installer/index.d.ts.map +1 -1
  110. package/dist/installer/index.js +8 -0
  111. package/dist/installer/index.js.map +1 -1
  112. package/package.json +3 -1
  113. package/skills/autopilot/SKILL.md +18 -0
  114. package/skills/cancel/SKILL.md +166 -141
  115. package/skills/ecomode/SKILL.md +14 -0
  116. package/skills/omc-setup/SKILL.md +27 -3
  117. package/skills/pipeline/SKILL.md +13 -0
  118. package/skills/ralph/SKILL.md +22 -1
  119. package/skills/release/SKILL.md +1 -1
  120. package/skills/swarm/SKILL.md +521 -197
  121. package/skills/ultrapilot/SKILL.md +82 -13
  122. package/skills/ultraqa/SKILL.md +13 -0
  123. package/skills/ultrawork/SKILL.md +14 -0
  124. package/dist/__tests__/analytics/analytics-summary.test.d.ts +0 -2
  125. package/dist/__tests__/analytics/analytics-summary.test.d.ts.map +0 -1
  126. package/dist/__tests__/analytics/analytics-summary.test.js +0 -267
  127. package/dist/__tests__/analytics/analytics-summary.test.js.map +0 -1
  128. package/dist/__tests__/analytics/cost-estimator.test.d.ts +0 -2
  129. package/dist/__tests__/analytics/cost-estimator.test.d.ts.map +0 -1
  130. package/dist/__tests__/analytics/cost-estimator.test.js +0 -212
  131. package/dist/__tests__/analytics/cost-estimator.test.js.map +0 -1
  132. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +0 -7
  133. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +0 -1
  134. package/dist/__tests__/hooks/auto-slash-command/executor.test.js +0 -374
  135. package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +0 -1
  136. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts +0 -2
  137. package/dist/__tests__/hud/auto-tracking.integration.test.d.ts.map +0 -1
  138. package/dist/__tests__/hud/auto-tracking.integration.test.js +0 -12
  139. package/dist/__tests__/hud/auto-tracking.integration.test.js.map +0 -1
  140. package/dist/__tests__/learned-skills/config.test.d.ts +0 -2
  141. package/dist/__tests__/learned-skills/config.test.d.ts.map +0 -1
  142. package/dist/__tests__/learned-skills/config.test.js +0 -37
  143. package/dist/__tests__/learned-skills/config.test.js.map +0 -1
  144. package/dist/__tests__/learned-skills/detector.test.d.ts +0 -2
  145. package/dist/__tests__/learned-skills/detector.test.d.ts.map +0 -1
  146. package/dist/__tests__/learned-skills/detector.test.js +0 -99
  147. package/dist/__tests__/learned-skills/detector.test.js.map +0 -1
  148. package/dist/__tests__/learned-skills/finder.test.d.ts +0 -2
  149. package/dist/__tests__/learned-skills/finder.test.d.ts.map +0 -1
  150. package/dist/__tests__/learned-skills/finder.test.js +0 -59
  151. package/dist/__tests__/learned-skills/finder.test.js.map +0 -1
  152. package/dist/__tests__/learned-skills/loader.test.d.ts +0 -2
  153. package/dist/__tests__/learned-skills/loader.test.d.ts.map +0 -1
  154. package/dist/__tests__/learned-skills/loader.test.js +0 -69
  155. package/dist/__tests__/learned-skills/loader.test.js.map +0 -1
  156. package/dist/__tests__/learned-skills/parser.test.d.ts +0 -2
  157. package/dist/__tests__/learned-skills/parser.test.d.ts.map +0 -1
  158. package/dist/__tests__/learned-skills/parser.test.js +0 -81
  159. package/dist/__tests__/learned-skills/parser.test.js.map +0 -1
  160. package/dist/__tests__/learned-skills/validator.test.d.ts +0 -2
  161. package/dist/__tests__/learned-skills/validator.test.d.ts.map +0 -1
  162. package/dist/__tests__/learned-skills/validator.test.js +0 -85
  163. package/dist/__tests__/learned-skills/validator.test.js.map +0 -1
  164. package/dist/agents/document-writer.d.ts +0 -11
  165. package/dist/agents/document-writer.d.ts.map +0 -1
  166. package/dist/agents/document-writer.js +0 -209
  167. package/dist/agents/document-writer.js.map +0 -1
  168. package/dist/agents/frontend-engineer.d.ts +0 -11
  169. package/dist/agents/frontend-engineer.d.ts.map +0 -1
  170. package/dist/agents/frontend-engineer.js +0 -115
  171. package/dist/agents/frontend-engineer.js.map +0 -1
  172. package/dist/agents/librarian.d.ts +0 -12
  173. package/dist/agents/librarian.d.ts.map +0 -1
  174. package/dist/agents/librarian.js +0 -103
  175. package/dist/agents/librarian.js.map +0 -1
  176. package/dist/agents/metis.d.ts +0 -12
  177. package/dist/agents/metis.d.ts.map +0 -1
  178. package/dist/agents/metis.js +0 -117
  179. package/dist/agents/metis.js.map +0 -1
  180. package/dist/agents/momus.d.ts +0 -12
  181. package/dist/agents/momus.d.ts.map +0 -1
  182. package/dist/agents/momus.js +0 -128
  183. package/dist/agents/momus.js.map +0 -1
  184. package/dist/agents/multimodal-looker.d.ts +0 -11
  185. package/dist/agents/multimodal-looker.d.ts.map +0 -1
  186. package/dist/agents/multimodal-looker.js +0 -70
  187. package/dist/agents/multimodal-looker.js.map +0 -1
  188. package/dist/agents/oracle.d.ts +0 -13
  189. package/dist/agents/oracle.d.ts.map +0 -1
  190. package/dist/agents/oracle.js +0 -191
  191. package/dist/agents/oracle.js.map +0 -1
  192. package/dist/agents/orchestrator-sisyphus.d.ts +0 -11
  193. package/dist/agents/orchestrator-sisyphus.d.ts.map +0 -1
  194. package/dist/agents/orchestrator-sisyphus.js +0 -115
  195. package/dist/agents/orchestrator-sisyphus.js.map +0 -1
  196. package/dist/agents/prometheus.d.ts +0 -12
  197. package/dist/agents/prometheus.d.ts.map +0 -1
  198. package/dist/agents/prometheus.js +0 -195
  199. package/dist/agents/prometheus.js.map +0 -1
  200. package/dist/agents/sisyphus-junior.d.ts +0 -12
  201. package/dist/agents/sisyphus-junior.d.ts.map +0 -1
  202. package/dist/agents/sisyphus-junior.js +0 -93
  203. package/dist/agents/sisyphus-junior.js.map +0 -1
  204. package/dist/cli/components/CostDashboard.d.ts +0 -15
  205. package/dist/cli/components/CostDashboard.d.ts.map +0 -1
  206. package/dist/cli/components/CostDashboard.js +0 -15
  207. package/dist/cli/components/CostDashboard.js.map +0 -1
  208. package/dist/cli/components/LiveStats.d.ts +0 -16
  209. package/dist/cli/components/LiveStats.d.ts.map +0 -1
  210. package/dist/cli/components/LiveStats.js +0 -16
  211. package/dist/cli/components/LiveStats.js.map +0 -1
  212. package/dist/cli/components/SessionBrowser.d.ts +0 -14
  213. package/dist/cli/components/SessionBrowser.d.ts.map +0 -1
  214. package/dist/cli/components/SessionBrowser.js +0 -14
  215. package/dist/cli/components/SessionBrowser.js.map +0 -1
  216. package/dist/cli/tui.d.ts +0 -21
  217. package/dist/cli/tui.d.ts.map +0 -1
  218. package/dist/cli/tui.js +0 -21
  219. package/dist/cli/tui.js.map +0 -1
  220. package/dist/hooks/autopilot/signals.d.ts +0 -20
  221. package/dist/hooks/autopilot/signals.d.ts.map +0 -1
  222. package/dist/hooks/autopilot/signals.js +0 -75
  223. package/dist/hooks/autopilot/signals.js.map +0 -1
  224. package/dist/hooks/autopilot/summary.d.ts +0 -27
  225. package/dist/hooks/autopilot/summary.d.ts.map +0 -1
  226. package/dist/hooks/autopilot/summary.js +0 -160
  227. package/dist/hooks/autopilot/summary.js.map +0 -1
  228. package/dist/hooks/autopilot/transition.d.ts +0 -39
  229. package/dist/hooks/autopilot/transition.d.ts.map +0 -1
  230. package/dist/hooks/autopilot/transition.js +0 -216
  231. package/dist/hooks/autopilot/transition.js.map +0 -1
  232. package/dist/hooks/context-window-limit-recovery/constants.d.ts +0 -28
  233. package/dist/hooks/context-window-limit-recovery/constants.d.ts.map +0 -1
  234. package/dist/hooks/context-window-limit-recovery/constants.js +0 -85
  235. package/dist/hooks/context-window-limit-recovery/constants.js.map +0 -1
  236. package/dist/hooks/context-window-limit-recovery/index.d.ts +0 -62
  237. package/dist/hooks/context-window-limit-recovery/index.d.ts.map +0 -1
  238. package/dist/hooks/context-window-limit-recovery/index.js +0 -201
  239. package/dist/hooks/context-window-limit-recovery/index.js.map +0 -1
  240. package/dist/hooks/context-window-limit-recovery/parser.d.ts +0 -31
  241. package/dist/hooks/context-window-limit-recovery/parser.d.ts.map +0 -1
  242. package/dist/hooks/context-window-limit-recovery/parser.js +0 -241
  243. package/dist/hooks/context-window-limit-recovery/parser.js.map +0 -1
  244. package/dist/hooks/context-window-limit-recovery/types.d.ts +0 -84
  245. package/dist/hooks/context-window-limit-recovery/types.d.ts.map +0 -1
  246. package/dist/hooks/context-window-limit-recovery/types.js +0 -34
  247. package/dist/hooks/context-window-limit-recovery/types.js.map +0 -1
  248. package/dist/hooks/edit-error-recovery/index.d.ts +0 -62
  249. package/dist/hooks/edit-error-recovery/index.d.ts.map +0 -1
  250. package/dist/hooks/edit-error-recovery/index.js +0 -89
  251. package/dist/hooks/edit-error-recovery/index.js.map +0 -1
  252. package/dist/hooks/learned-skills/config.d.ts +0 -53
  253. package/dist/hooks/learned-skills/config.d.ts.map +0 -1
  254. package/dist/hooks/learned-skills/config.js +0 -103
  255. package/dist/hooks/learned-skills/config.js.map +0 -1
  256. package/dist/hooks/learned-skills/constants.d.ts +0 -24
  257. package/dist/hooks/learned-skills/constants.d.ts.map +0 -1
  258. package/dist/hooks/learned-skills/constants.js +0 -26
  259. package/dist/hooks/learned-skills/constants.js.map +0 -1
  260. package/dist/hooks/learned-skills/detection-hook.d.ts +0 -39
  261. package/dist/hooks/learned-skills/detection-hook.d.ts.map +0 -1
  262. package/dist/hooks/learned-skills/detection-hook.js +0 -83
  263. package/dist/hooks/learned-skills/detection-hook.js.map +0 -1
  264. package/dist/hooks/learned-skills/detector.d.ts +0 -30
  265. package/dist/hooks/learned-skills/detector.d.ts.map +0 -1
  266. package/dist/hooks/learned-skills/detector.js +0 -150
  267. package/dist/hooks/learned-skills/detector.js.map +0 -1
  268. package/dist/hooks/learned-skills/finder.d.ts +0 -21
  269. package/dist/hooks/learned-skills/finder.d.ts.map +0 -1
  270. package/dist/hooks/learned-skills/finder.js +0 -117
  271. package/dist/hooks/learned-skills/finder.js.map +0 -1
  272. package/dist/hooks/learned-skills/index.d.ts +0 -62
  273. package/dist/hooks/learned-skills/index.d.ts.map +0 -1
  274. package/dist/hooks/learned-skills/index.js +0 -137
  275. package/dist/hooks/learned-skills/index.js.map +0 -1
  276. package/dist/hooks/learned-skills/loader.d.ts +0 -20
  277. package/dist/hooks/learned-skills/loader.d.ts.map +0 -1
  278. package/dist/hooks/learned-skills/loader.js +0 -107
  279. package/dist/hooks/learned-skills/loader.js.map +0 -1
  280. package/dist/hooks/learned-skills/parser.d.ts +0 -21
  281. package/dist/hooks/learned-skills/parser.d.ts.map +0 -1
  282. package/dist/hooks/learned-skills/parser.js +0 -190
  283. package/dist/hooks/learned-skills/parser.js.map +0 -1
  284. package/dist/hooks/learned-skills/promotion.d.ts +0 -29
  285. package/dist/hooks/learned-skills/promotion.d.ts.map +0 -1
  286. package/dist/hooks/learned-skills/promotion.js +0 -87
  287. package/dist/hooks/learned-skills/promotion.js.map +0 -1
  288. package/dist/hooks/learned-skills/types.d.ts +0 -109
  289. package/dist/hooks/learned-skills/types.d.ts.map +0 -1
  290. package/dist/hooks/learned-skills/types.js +0 -8
  291. package/dist/hooks/learned-skills/types.js.map +0 -1
  292. package/dist/hooks/learned-skills/validator.d.ts +0 -15
  293. package/dist/hooks/learned-skills/validator.d.ts.map +0 -1
  294. package/dist/hooks/learned-skills/validator.js +0 -87
  295. package/dist/hooks/learned-skills/validator.js.map +0 -1
  296. package/dist/hooks/learned-skills/writer.d.ts +0 -27
  297. package/dist/hooks/learned-skills/writer.d.ts.map +0 -1
  298. package/dist/hooks/learned-skills/writer.js +0 -126
  299. package/dist/hooks/learned-skills/writer.js.map +0 -1
  300. package/dist/hooks/mnemosyne/config.d.ts +0 -53
  301. package/dist/hooks/mnemosyne/config.d.ts.map +0 -1
  302. package/dist/hooks/mnemosyne/config.js +0 -103
  303. package/dist/hooks/mnemosyne/config.js.map +0 -1
  304. package/dist/hooks/mnemosyne/constants.d.ts +0 -24
  305. package/dist/hooks/mnemosyne/constants.d.ts.map +0 -1
  306. package/dist/hooks/mnemosyne/constants.js +0 -26
  307. package/dist/hooks/mnemosyne/constants.js.map +0 -1
  308. package/dist/hooks/mnemosyne/detection-hook.d.ts +0 -39
  309. package/dist/hooks/mnemosyne/detection-hook.d.ts.map +0 -1
  310. package/dist/hooks/mnemosyne/detection-hook.js +0 -83
  311. package/dist/hooks/mnemosyne/detection-hook.js.map +0 -1
  312. package/dist/hooks/mnemosyne/detector.d.ts +0 -30
  313. package/dist/hooks/mnemosyne/detector.d.ts.map +0 -1
  314. package/dist/hooks/mnemosyne/detector.js +0 -150
  315. package/dist/hooks/mnemosyne/detector.js.map +0 -1
  316. package/dist/hooks/mnemosyne/finder.d.ts +0 -21
  317. package/dist/hooks/mnemosyne/finder.d.ts.map +0 -1
  318. package/dist/hooks/mnemosyne/finder.js +0 -117
  319. package/dist/hooks/mnemosyne/finder.js.map +0 -1
  320. package/dist/hooks/mnemosyne/index.d.ts +0 -62
  321. package/dist/hooks/mnemosyne/index.d.ts.map +0 -1
  322. package/dist/hooks/mnemosyne/index.js +0 -137
  323. package/dist/hooks/mnemosyne/index.js.map +0 -1
  324. package/dist/hooks/mnemosyne/loader.d.ts +0 -20
  325. package/dist/hooks/mnemosyne/loader.d.ts.map +0 -1
  326. package/dist/hooks/mnemosyne/loader.js +0 -113
  327. package/dist/hooks/mnemosyne/loader.js.map +0 -1
  328. package/dist/hooks/mnemosyne/parser.d.ts +0 -21
  329. package/dist/hooks/mnemosyne/parser.d.ts.map +0 -1
  330. package/dist/hooks/mnemosyne/parser.js +0 -190
  331. package/dist/hooks/mnemosyne/parser.js.map +0 -1
  332. package/dist/hooks/mnemosyne/promotion.d.ts +0 -29
  333. package/dist/hooks/mnemosyne/promotion.d.ts.map +0 -1
  334. package/dist/hooks/mnemosyne/promotion.js +0 -87
  335. package/dist/hooks/mnemosyne/promotion.js.map +0 -1
  336. package/dist/hooks/mnemosyne/types.d.ts +0 -109
  337. package/dist/hooks/mnemosyne/types.d.ts.map +0 -1
  338. package/dist/hooks/mnemosyne/types.js +0 -8
  339. package/dist/hooks/mnemosyne/types.js.map +0 -1
  340. package/dist/hooks/mnemosyne/validator.d.ts +0 -15
  341. package/dist/hooks/mnemosyne/validator.d.ts.map +0 -1
  342. package/dist/hooks/mnemosyne/validator.js +0 -87
  343. package/dist/hooks/mnemosyne/validator.js.map +0 -1
  344. package/dist/hooks/mnemosyne/writer.d.ts +0 -27
  345. package/dist/hooks/mnemosyne/writer.d.ts.map +0 -1
  346. package/dist/hooks/mnemosyne/writer.js +0 -126
  347. package/dist/hooks/mnemosyne/writer.js.map +0 -1
  348. package/dist/hooks/ralph-loop/index.d.ts +0 -116
  349. package/dist/hooks/ralph-loop/index.d.ts.map +0 -1
  350. package/dist/hooks/ralph-loop/index.js +0 -322
  351. package/dist/hooks/ralph-loop/index.js.map +0 -1
  352. package/dist/hooks/ralph-prd/index.d.ts +0 -130
  353. package/dist/hooks/ralph-prd/index.d.ts.map +0 -1
  354. package/dist/hooks/ralph-prd/index.js +0 -310
  355. package/dist/hooks/ralph-prd/index.js.map +0 -1
  356. package/dist/hooks/ralph-progress/index.d.ts +0 -102
  357. package/dist/hooks/ralph-progress/index.d.ts.map +0 -1
  358. package/dist/hooks/ralph-progress/index.js +0 -408
  359. package/dist/hooks/ralph-progress/index.js.map +0 -1
  360. package/dist/hooks/ralph-verifier/index.d.ts +0 -72
  361. package/dist/hooks/ralph-verifier/index.d.ts.map +0 -1
  362. package/dist/hooks/ralph-verifier/index.js +0 -223
  363. package/dist/hooks/ralph-verifier/index.js.map +0 -1
  364. package/dist/hooks/session-recovery/constants.d.ts +0 -56
  365. package/dist/hooks/session-recovery/constants.d.ts.map +0 -1
  366. package/dist/hooks/session-recovery/constants.js +0 -78
  367. package/dist/hooks/session-recovery/constants.js.map +0 -1
  368. package/dist/hooks/session-recovery/index.d.ts +0 -53
  369. package/dist/hooks/session-recovery/index.d.ts.map +0 -1
  370. package/dist/hooks/session-recovery/index.js +0 -321
  371. package/dist/hooks/session-recovery/index.js.map +0 -1
  372. package/dist/hooks/session-recovery/storage.d.ts +0 -76
  373. package/dist/hooks/session-recovery/storage.d.ts.map +0 -1
  374. package/dist/hooks/session-recovery/storage.js +0 -383
  375. package/dist/hooks/session-recovery/storage.js.map +0 -1
  376. package/dist/hooks/session-recovery/types.d.ts +0 -145
  377. package/dist/hooks/session-recovery/types.d.ts.map +0 -1
  378. package/dist/hooks/session-recovery/types.js +0 -8
  379. package/dist/hooks/session-recovery/types.js.map +0 -1
  380. package/dist/hooks/sisyphus-orchestrator/constants.d.ts +0 -23
  381. package/dist/hooks/sisyphus-orchestrator/constants.d.ts.map +0 -1
  382. package/dist/hooks/sisyphus-orchestrator/constants.js +0 -142
  383. package/dist/hooks/sisyphus-orchestrator/constants.js.map +0 -1
  384. package/dist/hooks/sisyphus-orchestrator/index.d.ts +0 -113
  385. package/dist/hooks/sisyphus-orchestrator/index.d.ts.map +0 -1
  386. package/dist/hooks/sisyphus-orchestrator/index.js +0 -309
  387. package/dist/hooks/sisyphus-orchestrator/index.js.map +0 -1
  388. package/dist/hooks/ultraqa-loop/index.d.ts +0 -94
  389. package/dist/hooks/ultraqa-loop/index.d.ts.map +0 -1
  390. package/dist/hooks/ultraqa-loop/index.js +0 -216
  391. package/dist/hooks/ultraqa-loop/index.js.map +0 -1
  392. package/dist/hooks/ultrawork-state/index.d.ts +0 -62
  393. package/dist/hooks/ultrawork-state/index.d.ts.map +0 -1
  394. package/dist/hooks/ultrawork-state/index.js +0 -208
  395. package/dist/hooks/ultrawork-state/index.js.map +0 -1
  396. package/dist/hud/sisyphus-state.d.ts +0 -31
  397. package/dist/hud/sisyphus-state.d.ts.map +0 -1
  398. package/dist/hud/sisyphus-state.js +0 -163
  399. package/dist/hud/sisyphus-state.js.map +0 -1
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Swarm Coordination System
3
+ *
4
+ * SQLite-based multi-agent task coordination.
5
+ * Enables N agents to claim and work on tasks from a shared pool
6
+ * with atomic claiming, lease-based ownership, and heartbeat monitoring.
7
+ *
8
+ * Usage:
9
+ * ```typescript
10
+ * import { startSwarm, claimTask, completeTask, stopSwarm } from './swarm';
11
+ *
12
+ * // Initialize swarm with tasks
13
+ * await startSwarm({
14
+ * agentCount: 5,
15
+ * tasks: ['fix error in auth.ts', 'add tests for api.ts', ...],
16
+ * cwd: process.cwd()
17
+ * });
18
+ *
19
+ * // Each agent claims and works on tasks
20
+ * const claim = claimTask('agent-1');
21
+ * if (claim.success) {
22
+ * // Do work...
23
+ * completeTask('agent-1', claim.taskId!, 'Fixed the bug');
24
+ * }
25
+ *
26
+ * // Check status
27
+ * const status = getSwarmStatus();
28
+ *
29
+ * // Clean up when done
30
+ * stopSwarm();
31
+ * ```
32
+ */
33
+ import type { SwarmConfig, SwarmState, SwarmTask, SwarmStats, ClaimResult, AgentHeartbeat } from './types.js';
34
+ /**
35
+ * Start a new swarm session
36
+ *
37
+ * Initializes the SQLite database, creates the task pool,
38
+ * and starts the stale claim cleanup timer.
39
+ *
40
+ * @param config - Swarm configuration
41
+ * @returns true if swarm was started successfully
42
+ */
43
+ export declare function startSwarm(config: SwarmConfig): Promise<boolean>;
44
+ /**
45
+ * Stop the swarm and clean up resources
46
+ *
47
+ * Stops the cleanup timer and optionally deletes the database.
48
+ *
49
+ * @param deleteDatabase - Whether to delete the database file (default: false)
50
+ * @returns true if swarm was stopped successfully
51
+ */
52
+ export declare function stopSwarm(deleteDatabase?: boolean): boolean;
53
+ /**
54
+ * Get the current swarm status
55
+ *
56
+ * @returns SwarmState or null if swarm is not active
57
+ */
58
+ export declare function getSwarmStatus(): SwarmState | null;
59
+ /**
60
+ * Get swarm statistics
61
+ *
62
+ * @returns SwarmStats with task counts and timing info
63
+ */
64
+ export declare function getSwarmStats(): SwarmStats | null;
65
+ /**
66
+ * Claim the next available task
67
+ *
68
+ * @param agentId - Unique identifier for the claiming agent
69
+ * @returns ClaimResult with success status and task details
70
+ */
71
+ export declare function claimTask(agentId: string): ClaimResult;
72
+ /**
73
+ * Release a claimed task back to the pool
74
+ *
75
+ * @param agentId - Agent releasing the task
76
+ * @param taskId - Task to release
77
+ * @returns true if release was successful
78
+ */
79
+ export declare function releaseTask(agentId: string, taskId: string): boolean;
80
+ /**
81
+ * Mark a task as completed
82
+ *
83
+ * @param agentId - Agent that completed the task
84
+ * @param taskId - Completed task ID
85
+ * @param result - Optional result/output from the task
86
+ * @returns true if completion was recorded
87
+ */
88
+ export declare function completeTask(agentId: string, taskId: string, result?: string): boolean;
89
+ /**
90
+ * Mark a task as failed
91
+ *
92
+ * @param agentId - Agent that failed the task
93
+ * @param taskId - Failed task ID
94
+ * @param error - Error message/reason for failure
95
+ * @returns true if failure was recorded
96
+ */
97
+ export declare function failTask(agentId: string, taskId: string, error: string): boolean;
98
+ /**
99
+ * Send a heartbeat to indicate the agent is still alive
100
+ *
101
+ * Agents should call this every 60 seconds while working on tasks.
102
+ *
103
+ * @param agentId - Agent sending heartbeat
104
+ * @returns true if heartbeat was recorded
105
+ */
106
+ export declare function heartbeat(agentId: string): boolean;
107
+ /**
108
+ * Clean up stale claims from dead agents
109
+ *
110
+ * Called automatically by the cleanup timer, but can also be called manually.
111
+ *
112
+ * @param leaseTimeout - Lease timeout in milliseconds (default: 5 minutes)
113
+ * @returns Number of tasks released
114
+ */
115
+ export declare function cleanupStaleClaims(leaseTimeout?: number): number;
116
+ /**
117
+ * Check if there are pending tasks
118
+ *
119
+ * @returns true if there are tasks waiting to be claimed
120
+ */
121
+ export declare function hasPendingWork(): boolean;
122
+ /**
123
+ * Check if all tasks are complete
124
+ *
125
+ * @returns true if all tasks are done or failed
126
+ */
127
+ export declare function isSwarmComplete(): boolean;
128
+ /**
129
+ * Get the number of active agents
130
+ *
131
+ * @returns Number of agents with recent heartbeats
132
+ */
133
+ export declare function getActiveAgents(): number;
134
+ /**
135
+ * Get all tasks
136
+ *
137
+ * @returns Array of all tasks in the swarm
138
+ */
139
+ export declare function getAllTasks(): SwarmTask[];
140
+ /**
141
+ * Get tasks by status
142
+ *
143
+ * @param status - Task status to filter by
144
+ * @returns Array of tasks with the given status
145
+ */
146
+ export declare function getTasksWithStatus(status: SwarmTask['status']): SwarmTask[];
147
+ /**
148
+ * Get a specific task
149
+ *
150
+ * @param taskId - Task ID to retrieve
151
+ * @returns Task or null if not found
152
+ */
153
+ export declare function getTaskById(taskId: string): SwarmTask | null;
154
+ /**
155
+ * Get tasks claimed by a specific agent
156
+ *
157
+ * @param agentId - Agent to query
158
+ * @returns Array of tasks claimed by the agent
159
+ */
160
+ export declare function getAgentTasks(agentId: string): SwarmTask[];
161
+ /**
162
+ * Get all agent heartbeats
163
+ *
164
+ * @returns Array of agent heartbeat records
165
+ */
166
+ export declare function getAllHeartbeats(): AgentHeartbeat[];
167
+ /**
168
+ * Retry a failed task
169
+ *
170
+ * @param agentId - Agent attempting to retry
171
+ * @param taskId - Failed task to retry
172
+ * @returns ClaimResult
173
+ */
174
+ export declare function retryTask(agentId: string, taskId: string): ClaimResult;
175
+ /**
176
+ * Check if swarm database is initialized
177
+ *
178
+ * @returns true if database is ready
179
+ */
180
+ export declare function isSwarmReady(): boolean;
181
+ /**
182
+ * Initialize database without starting a swarm
183
+ *
184
+ * Useful for agents that join an existing swarm.
185
+ *
186
+ * @param cwd - Working directory
187
+ * @returns true if database was initialized
188
+ */
189
+ export declare function connectToSwarm(cwd: string): Promise<boolean>;
190
+ /**
191
+ * Disconnect from swarm without stopping it
192
+ *
193
+ * @returns true if disconnected successfully
194
+ */
195
+ export declare function disconnectFromSwarm(): boolean;
196
+ /**
197
+ * Check if swarm is currently active
198
+ *
199
+ * Used by cancel skill to detect active swarm.
200
+ * Checks if database exists and session is active.
201
+ *
202
+ * @param cwd - Working directory to check
203
+ * @returns true if swarm is active
204
+ */
205
+ export declare function isSwarmActive(cwd: string): boolean;
206
+ /**
207
+ * Cancel active swarm
208
+ *
209
+ * Used by cancel skill to stop swarm cleanly.
210
+ *
211
+ * @param cwd - Working directory
212
+ * @returns CancelResult with success status and message
213
+ */
214
+ export declare function cancelSwarm(cwd: string): Promise<{
215
+ success: boolean;
216
+ message: string;
217
+ stats?: SwarmStats | null;
218
+ }>;
219
+ export type { SwarmTask, SwarmState, SwarmConfig, SwarmStats, ClaimResult, AgentHeartbeat } from './types.js';
220
+ export { DEFAULT_SWARM_CONFIG } from './types.js';
221
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/swarm/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,413 @@
1
+ /**
2
+ * Swarm Coordination System
3
+ *
4
+ * SQLite-based multi-agent task coordination.
5
+ * Enables N agents to claim and work on tasks from a shared pool
6
+ * with atomic claiming, lease-based ownership, and heartbeat monitoring.
7
+ *
8
+ * Usage:
9
+ * ```typescript
10
+ * import { startSwarm, claimTask, completeTask, stopSwarm } from './swarm';
11
+ *
12
+ * // Initialize swarm with tasks
13
+ * await startSwarm({
14
+ * agentCount: 5,
15
+ * tasks: ['fix error in auth.ts', 'add tests for api.ts', ...],
16
+ * cwd: process.cwd()
17
+ * });
18
+ *
19
+ * // Each agent claims and works on tasks
20
+ * const claim = claimTask('agent-1');
21
+ * if (claim.success) {
22
+ * // Do work...
23
+ * completeTask('agent-1', claim.taskId!, 'Fixed the bug');
24
+ * }
25
+ *
26
+ * // Check status
27
+ * const status = getSwarmStatus();
28
+ *
29
+ * // Clean up when done
30
+ * stopSwarm();
31
+ * ```
32
+ */
33
+ import { randomUUID } from 'crypto';
34
+ import { existsSync, statSync } from 'fs';
35
+ import { join } from 'path';
36
+ import { DEFAULT_SWARM_CONFIG } from './types.js';
37
+ import { initDb, closeDb, deleteDb, isDbInitialized, initSession, loadState, saveState, addTasks, getTasks, getTasksByStatus, getTask, getStats, getHeartbeats, clearAllData } from './state.js';
38
+ import { claimTask as claimTaskInternal, releaseTask as releaseTaskInternal, completeTask as completeTaskInternal, failTask as failTaskInternal, heartbeat as heartbeatInternal, cleanupStaleClaims as cleanupStaleClaimsInternal, getTasksClaimedBy, hasPendingTasks, allTasksComplete, getActiveAgentCount, reclaimFailedTask } from './claiming.js';
39
+ import { canStartMode, createModeMarker, removeModeMarker } from '../mode-registry/index.js';
40
+ // Current working directory for the swarm
41
+ let currentCwd = null;
42
+ // Cleanup interval handle
43
+ let cleanupIntervalHandle = null;
44
+ /**
45
+ * Clean up resources on initialization failure
46
+ * Called when startSwarm fails after partial initialization
47
+ */
48
+ function cleanupOnFailure(cwd) {
49
+ // Stop cleanup timer if started
50
+ if (cleanupIntervalHandle) {
51
+ clearInterval(cleanupIntervalHandle);
52
+ cleanupIntervalHandle = null;
53
+ }
54
+ // Close database
55
+ closeDb();
56
+ // Remove marker file
57
+ removeModeMarker('swarm', cwd);
58
+ // Reset state
59
+ currentCwd = null;
60
+ }
61
+ /**
62
+ * Start a new swarm session
63
+ *
64
+ * Initializes the SQLite database, creates the task pool,
65
+ * and starts the stale claim cleanup timer.
66
+ *
67
+ * @param config - Swarm configuration
68
+ * @returns true if swarm was started successfully
69
+ */
70
+ export async function startSwarm(config) {
71
+ const { agentCount, tasks, cwd = process.cwd(), leaseTimeout = DEFAULT_SWARM_CONFIG.leaseTimeout } = config;
72
+ if (tasks.length === 0) {
73
+ console.error('Cannot start swarm with no tasks');
74
+ return false;
75
+ }
76
+ if (agentCount < 1) {
77
+ console.error('Agent count must be at least 1');
78
+ return false;
79
+ }
80
+ // Mutual exclusion check via mode-registry
81
+ const canStart = canStartMode('swarm', cwd);
82
+ if (!canStart.allowed) {
83
+ console.error(canStart.message);
84
+ return false;
85
+ }
86
+ // Initialize database
87
+ const dbInitialized = await initDb(cwd);
88
+ if (!dbInitialized) {
89
+ console.error('Failed to initialize swarm database');
90
+ return false;
91
+ }
92
+ // Create marker file to indicate swarm is active
93
+ createModeMarker('swarm', cwd, {
94
+ agentCount,
95
+ taskCount: tasks.length
96
+ });
97
+ currentCwd = cwd;
98
+ // Clear any existing data
99
+ clearAllData();
100
+ // Create session
101
+ const sessionId = randomUUID();
102
+ if (!initSession(sessionId, agentCount)) {
103
+ console.error('Failed to initialize swarm session');
104
+ cleanupOnFailure(cwd);
105
+ return false;
106
+ }
107
+ // Add tasks to pool
108
+ const taskRecords = tasks.map((description, index) => ({
109
+ id: `task-${index + 1}`,
110
+ description
111
+ }));
112
+ if (!addTasks(taskRecords)) {
113
+ console.error('Failed to add tasks to pool');
114
+ cleanupOnFailure(cwd);
115
+ return false;
116
+ }
117
+ // Start cleanup timer (runs every minute)
118
+ cleanupIntervalHandle = setInterval(() => {
119
+ cleanupStaleClaimsInternal(leaseTimeout);
120
+ }, 60 * 1000);
121
+ return true;
122
+ }
123
+ /**
124
+ * Stop the swarm and clean up resources
125
+ *
126
+ * Stops the cleanup timer and optionally deletes the database.
127
+ *
128
+ * @param deleteDatabase - Whether to delete the database file (default: false)
129
+ * @returns true if swarm was stopped successfully
130
+ */
131
+ export function stopSwarm(deleteDatabase = false) {
132
+ // Stop cleanup timer
133
+ if (cleanupIntervalHandle) {
134
+ clearInterval(cleanupIntervalHandle);
135
+ cleanupIntervalHandle = null;
136
+ }
137
+ // Mark session as inactive
138
+ saveState({ active: false, completedAt: Date.now() });
139
+ // Close database
140
+ closeDb();
141
+ // Optionally delete database
142
+ if (deleteDatabase && currentCwd) {
143
+ deleteDb(currentCwd);
144
+ }
145
+ // Remove marker file
146
+ if (currentCwd) {
147
+ removeModeMarker('swarm', currentCwd);
148
+ }
149
+ currentCwd = null;
150
+ return true;
151
+ }
152
+ /**
153
+ * Get the current swarm status
154
+ *
155
+ * @returns SwarmState or null if swarm is not active
156
+ */
157
+ export function getSwarmStatus() {
158
+ return loadState();
159
+ }
160
+ /**
161
+ * Get swarm statistics
162
+ *
163
+ * @returns SwarmStats with task counts and timing info
164
+ */
165
+ export function getSwarmStats() {
166
+ return getStats();
167
+ }
168
+ /**
169
+ * Claim the next available task
170
+ *
171
+ * @param agentId - Unique identifier for the claiming agent
172
+ * @returns ClaimResult with success status and task details
173
+ */
174
+ export function claimTask(agentId) {
175
+ return claimTaskInternal(agentId);
176
+ }
177
+ /**
178
+ * Release a claimed task back to the pool
179
+ *
180
+ * @param agentId - Agent releasing the task
181
+ * @param taskId - Task to release
182
+ * @returns true if release was successful
183
+ */
184
+ export function releaseTask(agentId, taskId) {
185
+ return releaseTaskInternal(agentId, taskId);
186
+ }
187
+ /**
188
+ * Mark a task as completed
189
+ *
190
+ * @param agentId - Agent that completed the task
191
+ * @param taskId - Completed task ID
192
+ * @param result - Optional result/output from the task
193
+ * @returns true if completion was recorded
194
+ */
195
+ export function completeTask(agentId, taskId, result) {
196
+ const success = completeTaskInternal(agentId, taskId, result);
197
+ // Check if all tasks are complete
198
+ if (success && allTasksComplete()) {
199
+ saveState({ completedAt: Date.now() });
200
+ }
201
+ return success;
202
+ }
203
+ /**
204
+ * Mark a task as failed
205
+ *
206
+ * @param agentId - Agent that failed the task
207
+ * @param taskId - Failed task ID
208
+ * @param error - Error message/reason for failure
209
+ * @returns true if failure was recorded
210
+ */
211
+ export function failTask(agentId, taskId, error) {
212
+ return failTaskInternal(agentId, taskId, error);
213
+ }
214
+ /**
215
+ * Send a heartbeat to indicate the agent is still alive
216
+ *
217
+ * Agents should call this every 60 seconds while working on tasks.
218
+ *
219
+ * @param agentId - Agent sending heartbeat
220
+ * @returns true if heartbeat was recorded
221
+ */
222
+ export function heartbeat(agentId) {
223
+ return heartbeatInternal(agentId);
224
+ }
225
+ /**
226
+ * Clean up stale claims from dead agents
227
+ *
228
+ * Called automatically by the cleanup timer, but can also be called manually.
229
+ *
230
+ * @param leaseTimeout - Lease timeout in milliseconds (default: 5 minutes)
231
+ * @returns Number of tasks released
232
+ */
233
+ export function cleanupStaleClaims(leaseTimeout) {
234
+ return cleanupStaleClaimsInternal(leaseTimeout);
235
+ }
236
+ /**
237
+ * Check if there are pending tasks
238
+ *
239
+ * @returns true if there are tasks waiting to be claimed
240
+ */
241
+ export function hasPendingWork() {
242
+ return hasPendingTasks();
243
+ }
244
+ /**
245
+ * Check if all tasks are complete
246
+ *
247
+ * @returns true if all tasks are done or failed
248
+ */
249
+ export function isSwarmComplete() {
250
+ return allTasksComplete();
251
+ }
252
+ /**
253
+ * Get the number of active agents
254
+ *
255
+ * @returns Number of agents with recent heartbeats
256
+ */
257
+ export function getActiveAgents() {
258
+ return getActiveAgentCount();
259
+ }
260
+ /**
261
+ * Get all tasks
262
+ *
263
+ * @returns Array of all tasks in the swarm
264
+ */
265
+ export function getAllTasks() {
266
+ return getTasks();
267
+ }
268
+ /**
269
+ * Get tasks by status
270
+ *
271
+ * @param status - Task status to filter by
272
+ * @returns Array of tasks with the given status
273
+ */
274
+ export function getTasksWithStatus(status) {
275
+ return getTasksByStatus(status);
276
+ }
277
+ /**
278
+ * Get a specific task
279
+ *
280
+ * @param taskId - Task ID to retrieve
281
+ * @returns Task or null if not found
282
+ */
283
+ export function getTaskById(taskId) {
284
+ return getTask(taskId);
285
+ }
286
+ /**
287
+ * Get tasks claimed by a specific agent
288
+ *
289
+ * @param agentId - Agent to query
290
+ * @returns Array of tasks claimed by the agent
291
+ */
292
+ export function getAgentTasks(agentId) {
293
+ return getTasksClaimedBy(agentId);
294
+ }
295
+ /**
296
+ * Get all agent heartbeats
297
+ *
298
+ * @returns Array of agent heartbeat records
299
+ */
300
+ export function getAllHeartbeats() {
301
+ return getHeartbeats();
302
+ }
303
+ /**
304
+ * Retry a failed task
305
+ *
306
+ * @param agentId - Agent attempting to retry
307
+ * @param taskId - Failed task to retry
308
+ * @returns ClaimResult
309
+ */
310
+ export function retryTask(agentId, taskId) {
311
+ return reclaimFailedTask(agentId, taskId);
312
+ }
313
+ /**
314
+ * Check if swarm database is initialized
315
+ *
316
+ * @returns true if database is ready
317
+ */
318
+ export function isSwarmReady() {
319
+ return isDbInitialized();
320
+ }
321
+ /**
322
+ * Initialize database without starting a swarm
323
+ *
324
+ * Useful for agents that join an existing swarm.
325
+ *
326
+ * @param cwd - Working directory
327
+ * @returns true if database was initialized
328
+ */
329
+ export async function connectToSwarm(cwd) {
330
+ if (isDbInitialized()) {
331
+ return true;
332
+ }
333
+ const success = await initDb(cwd);
334
+ if (success) {
335
+ currentCwd = cwd;
336
+ }
337
+ return success;
338
+ }
339
+ /**
340
+ * Disconnect from swarm without stopping it
341
+ *
342
+ * @returns true if disconnected successfully
343
+ */
344
+ export function disconnectFromSwarm() {
345
+ closeDb();
346
+ currentCwd = null;
347
+ return true;
348
+ }
349
+ /**
350
+ * Check if swarm is currently active
351
+ *
352
+ * Used by cancel skill to detect active swarm.
353
+ * Checks if database exists and session is active.
354
+ *
355
+ * @param cwd - Working directory to check
356
+ * @returns true if swarm is active
357
+ */
358
+ export function isSwarmActive(cwd) {
359
+ // If database is already connected, check state directly
360
+ if (isDbInitialized()) {
361
+ const state = loadState();
362
+ return state !== null && state.active === true;
363
+ }
364
+ // Otherwise, check if database file exists and is non-empty
365
+ const dbPath = join(cwd, '.omc', 'state', 'swarm.db');
366
+ if (!existsSync(dbPath)) {
367
+ return false;
368
+ }
369
+ try {
370
+ const stats = statSync(dbPath);
371
+ return stats.size > 0;
372
+ }
373
+ catch {
374
+ return false;
375
+ }
376
+ }
377
+ /**
378
+ * Cancel active swarm
379
+ *
380
+ * Used by cancel skill to stop swarm cleanly.
381
+ *
382
+ * @param cwd - Working directory
383
+ * @returns CancelResult with success status and message
384
+ */
385
+ export async function cancelSwarm(cwd) {
386
+ // Connect if not already connected
387
+ if (!isDbInitialized()) {
388
+ const connected = await connectToSwarm(cwd);
389
+ if (!connected) {
390
+ return {
391
+ success: false,
392
+ message: 'Failed to connect to swarm database'
393
+ };
394
+ }
395
+ }
396
+ const state = getSwarmStatus();
397
+ if (!state || !state.active) {
398
+ return {
399
+ success: false,
400
+ message: 'No active swarm session found'
401
+ };
402
+ }
403
+ const stats = getSwarmStats();
404
+ // Stop the swarm (preserves database for analysis)
405
+ stopSwarm(false);
406
+ return {
407
+ success: true,
408
+ message: `Swarm cancelled. ${stats?.doneTasks ?? 0}/${stats?.totalTasks ?? 0} tasks completed.`,
409
+ stats
410
+ };
411
+ }
412
+ export { DEFAULT_SWARM_CONFIG } from './types.js';
413
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/swarm/index.ts"],"names":[],"mappings":"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"}