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,141 @@
1
+ /**
2
+ * AI-Powered Task Decomposition for Ultrapilot
3
+ *
4
+ * This module provides intelligent task decomposition using an Architect agent
5
+ * to analyze tasks and break them into parallel-safe subtasks with proper
6
+ * file ownership and dependency tracking.
7
+ */
8
+ /**
9
+ * Agent type for task execution, determines model complexity
10
+ */
11
+ export type AgentType = 'executor-low' | 'executor' | 'executor-high';
12
+ /**
13
+ * Model tier for agent execution
14
+ */
15
+ export type ModelTier = 'haiku' | 'sonnet' | 'opus';
16
+ /**
17
+ * A decomposed subtask with file ownership and dependencies
18
+ */
19
+ export interface DecomposedTask {
20
+ /** Unique identifier for this subtask */
21
+ id: string;
22
+ /** Clear description of what to implement */
23
+ description: string;
24
+ /** Files this task will touch (can include globs) */
25
+ files: string[];
26
+ /** Task IDs this subtask depends on (must complete first) */
27
+ blockedBy: string[];
28
+ /** Agent type based on task complexity */
29
+ agentType: AgentType;
30
+ /** Model tier for execution */
31
+ model: ModelTier;
32
+ }
33
+ /**
34
+ * Result of task decomposition
35
+ */
36
+ export interface DecompositionResult {
37
+ /** Array of parallelizable subtasks */
38
+ subtasks: DecomposedTask[];
39
+ /** Files that need sequential handling (config, lock files) */
40
+ sharedFiles: string[];
41
+ /** Groups of task IDs that can run in parallel (dependency-ordered) */
42
+ parallelGroups: string[][];
43
+ }
44
+ /**
45
+ * Options for decomposition prompt generation
46
+ */
47
+ export interface DecompositionOptions {
48
+ /** Maximum number of subtasks to generate */
49
+ maxSubtasks?: number;
50
+ /** Preferred model tier for workers */
51
+ preferredModel?: ModelTier;
52
+ /** Additional context about project structure */
53
+ projectContext?: string;
54
+ }
55
+ /**
56
+ * Default shared file patterns that should be handled by coordinator
57
+ */
58
+ export declare const DEFAULT_SHARED_FILE_PATTERNS: string[];
59
+ /**
60
+ * Generate a prompt for the Architect agent to decompose a task
61
+ *
62
+ * This prompt instructs the Architect to analyze the task and codebase context,
63
+ * then produce a structured JSON decomposition with file ownership and dependencies.
64
+ *
65
+ * @param task - The task description to decompose
66
+ * @param codebaseContext - Context about the codebase structure, files, and patterns
67
+ * @param options - Optional configuration for decomposition
68
+ * @returns Formatted prompt string for the Architect agent
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * const prompt = generateDecompositionPrompt(
73
+ * "Build a full-stack todo app with React and Express",
74
+ * "Project has src/client and src/server directories..."
75
+ * );
76
+ * // Use with Architect agent via Task tool
77
+ * ```
78
+ */
79
+ export declare function generateDecompositionPrompt(task: string, codebaseContext: string, options?: DecompositionOptions): string;
80
+ /**
81
+ * Parse the Architect's response into a structured DecompositionResult
82
+ *
83
+ * Handles various response formats including:
84
+ * - Raw JSON
85
+ * - JSON wrapped in markdown code fences
86
+ * - JSON with surrounding explanation text
87
+ *
88
+ * @param response - Raw response string from the Architect agent
89
+ * @returns Parsed and validated DecompositionResult
90
+ * @throws Error if response cannot be parsed or is invalid
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * const result = parseDecompositionResult(architectResponse);
95
+ * console.log(result.subtasks.length); // Number of parallel tasks
96
+ * console.log(result.parallelGroups); // Execution order
97
+ * ```
98
+ */
99
+ export declare function parseDecompositionResult(response: string): DecompositionResult;
100
+ /**
101
+ * Generate parallel groups from subtask dependencies
102
+ *
103
+ * Creates an ordered array of task ID groups where each group can run
104
+ * in parallel, and later groups depend on earlier ones completing.
105
+ *
106
+ * @param subtasks - Array of decomposed subtasks with blockedBy fields
107
+ * @returns Array of parallel groups (each group is array of task IDs)
108
+ */
109
+ export declare function generateParallelGroups(subtasks: DecomposedTask[]): string[][];
110
+ /**
111
+ * Validate that file ownership doesn't overlap between subtasks
112
+ *
113
+ * @param subtasks - Array of decomposed subtasks
114
+ * @returns Object with isValid flag and any conflicts found
115
+ */
116
+ export declare function validateFileOwnership(subtasks: DecomposedTask[]): {
117
+ isValid: boolean;
118
+ conflicts: Array<{
119
+ file: string;
120
+ owners: string[];
121
+ }>;
122
+ };
123
+ /**
124
+ * Merge shared files from subtasks into the sharedFiles list
125
+ *
126
+ * Identifies files that match shared file patterns and removes them
127
+ * from subtask ownership, adding them to sharedFiles instead.
128
+ *
129
+ * @param result - DecompositionResult to process
130
+ * @param patterns - Array of glob patterns for shared files
131
+ * @returns Updated DecompositionResult with shared files extracted
132
+ */
133
+ export declare function extractSharedFiles(result: DecompositionResult, patterns?: string[]): DecompositionResult;
134
+ /**
135
+ * Convert DecompositionResult to simple string array for legacy compatibility
136
+ *
137
+ * @param result - Full decomposition result
138
+ * @returns Array of task description strings
139
+ */
140
+ export declare function toSimpleSubtasks(result: DecompositionResult): string[];
141
+ //# sourceMappingURL=decomposer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decomposer.d.ts","sourceRoot":"","sources":["../../../src/hooks/ultrapilot/decomposer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,cAAc,GAAG,UAAU,GAAG,eAAe,CAAC;AAEtE;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,0CAA0C;IAC1C,SAAS,EAAE,SAAS,CAAC;IACrB,+BAA+B;IAC/B,KAAK,EAAE,SAAS,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,+DAA+D;IAC/D,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,uEAAuE;IACvE,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,UA0BxC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE,oBAAyB,GACjC,MAAM,CA8GR;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAmF9E;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,EAAE,CAmC7E;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG;IACjE,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACtD,CAuBA;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,mBAAmB,EAC3B,QAAQ,GAAE,MAAM,EAAiC,GAChD,mBAAmB,CAoCrB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,EAAE,CAEtE"}
@@ -0,0 +1,377 @@
1
+ /**
2
+ * AI-Powered Task Decomposition for Ultrapilot
3
+ *
4
+ * This module provides intelligent task decomposition using an Architect agent
5
+ * to analyze tasks and break them into parallel-safe subtasks with proper
6
+ * file ownership and dependency tracking.
7
+ */
8
+ /**
9
+ * Default shared file patterns that should be handled by coordinator
10
+ */
11
+ export const DEFAULT_SHARED_FILE_PATTERNS = [
12
+ 'package.json',
13
+ 'package-lock.json',
14
+ 'yarn.lock',
15
+ 'pnpm-lock.yaml',
16
+ 'tsconfig.json',
17
+ 'tsconfig.*.json',
18
+ 'jest.config.js',
19
+ 'jest.config.ts',
20
+ 'vitest.config.ts',
21
+ '.eslintrc.*',
22
+ '.prettierrc.*',
23
+ '.gitignore',
24
+ 'README.md',
25
+ 'Makefile',
26
+ 'go.mod',
27
+ 'go.sum',
28
+ 'Cargo.toml',
29
+ 'Cargo.lock',
30
+ 'pyproject.toml',
31
+ 'requirements.txt',
32
+ 'setup.py',
33
+ 'Dockerfile',
34
+ 'docker-compose.yml',
35
+ '.github/**',
36
+ '.gitlab-ci.yml'
37
+ ];
38
+ /**
39
+ * Generate a prompt for the Architect agent to decompose a task
40
+ *
41
+ * This prompt instructs the Architect to analyze the task and codebase context,
42
+ * then produce a structured JSON decomposition with file ownership and dependencies.
43
+ *
44
+ * @param task - The task description to decompose
45
+ * @param codebaseContext - Context about the codebase structure, files, and patterns
46
+ * @param options - Optional configuration for decomposition
47
+ * @returns Formatted prompt string for the Architect agent
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * const prompt = generateDecompositionPrompt(
52
+ * "Build a full-stack todo app with React and Express",
53
+ * "Project has src/client and src/server directories..."
54
+ * );
55
+ * // Use with Architect agent via Task tool
56
+ * ```
57
+ */
58
+ export function generateDecompositionPrompt(task, codebaseContext, options = {}) {
59
+ const { maxSubtasks = 5, preferredModel = 'sonnet', projectContext = '' } = options;
60
+ const additionalContext = projectContext ? `\nPROJECT NOTES:\n${projectContext}\n` : '';
61
+ return `Analyze this task and decompose it into parallel-safe subtasks for concurrent execution.
62
+
63
+ TASK: ${task}
64
+
65
+ CODEBASE CONTEXT:
66
+ ${codebaseContext}
67
+ ${additionalContext}
68
+ OUTPUT REQUIREMENTS:
69
+ Return a valid JSON object matching this exact schema:
70
+
71
+ {
72
+ "subtasks": [
73
+ {
74
+ "id": "1",
75
+ "description": "Clear, actionable description of what to implement",
76
+ "files": ["src/path/to/file.ts", "src/path/to/other.ts"],
77
+ "blockedBy": [],
78
+ "agentType": "executor",
79
+ "model": "sonnet"
80
+ }
81
+ ],
82
+ "sharedFiles": ["package.json", "tsconfig.json"],
83
+ "parallelGroups": [["1", "2"], ["3"]]
84
+ }
85
+
86
+ DECOMPOSITION RULES:
87
+
88
+ 1. FILE OWNERSHIP:
89
+ - Each subtask should have exclusive ownership of its files
90
+ - NO file should appear in multiple subtasks' files arrays
91
+ - Use specific file paths, not directories (unless truly needed)
92
+ - Mark config/lock files as sharedFiles (handled by coordinator)
93
+
94
+ 2. DEPENDENCIES (blockedBy):
95
+ - Only add blockedBy if subtask TRULY requires another to complete first
96
+ - Prefer parallel execution - maximize independent subtasks
97
+ - Common dependencies: type definitions, shared utilities, API contracts
98
+
99
+ 3. PARALLEL GROUPS:
100
+ - Group subtasks that can run simultaneously
101
+ - First group has no dependencies
102
+ - Later groups depend on earlier ones completing
103
+ - Example: [["1", "2", "3"], ["4", "5"]] means 1,2,3 run first, then 4,5
104
+
105
+ 4. AGENT/MODEL SELECTION:
106
+ - executor-low/haiku: Simple changes, single file, straightforward logic
107
+ - executor/sonnet: Standard implementation, moderate complexity (DEFAULT)
108
+ - executor-high/opus: Complex refactoring, architectural changes, multi-file coordination
109
+
110
+ 5. SUBTASK GUIDELINES:
111
+ - Maximum ${maxSubtasks} subtasks
112
+ - Preferred model tier: ${preferredModel}
113
+ - Each subtask should be completable in 2-10 minutes
114
+ - Subtask description should be actionable and specific
115
+ - Include all files the subtask will CREATE or MODIFY
116
+
117
+ 6. SHARED FILES (coordinator handles):
118
+ - package.json, lock files
119
+ - tsconfig.json, config files
120
+ - Root README.md
121
+ - Docker/CI configuration
122
+ - Any file multiple subtasks would need to modify
123
+
124
+ EXAMPLE OUTPUT:
125
+
126
+ {
127
+ "subtasks": [
128
+ {
129
+ "id": "1",
130
+ "description": "Create Express API routes for todo CRUD operations",
131
+ "files": ["src/server/routes/todos.ts", "src/server/controllers/todoController.ts"],
132
+ "blockedBy": [],
133
+ "agentType": "executor",
134
+ "model": "sonnet"
135
+ },
136
+ {
137
+ "id": "2",
138
+ "description": "Create React components for todo list UI",
139
+ "files": ["src/client/components/TodoList.tsx", "src/client/components/TodoItem.tsx"],
140
+ "blockedBy": [],
141
+ "agentType": "executor",
142
+ "model": "sonnet"
143
+ },
144
+ {
145
+ "id": "3",
146
+ "description": "Create database schema and migrations for todos",
147
+ "files": ["src/db/migrations/001_create_todos.ts", "src/db/models/Todo.ts"],
148
+ "blockedBy": [],
149
+ "agentType": "executor-low",
150
+ "model": "haiku"
151
+ },
152
+ {
153
+ "id": "4",
154
+ "description": "Wire up API client in frontend to connect to backend",
155
+ "files": ["src/client/api/todoApi.ts", "src/client/hooks/useTodos.ts"],
156
+ "blockedBy": ["1", "2"],
157
+ "agentType": "executor",
158
+ "model": "sonnet"
159
+ }
160
+ ],
161
+ "sharedFiles": ["package.json", "tsconfig.json", "src/types/todo.ts"],
162
+ "parallelGroups": [["1", "2", "3"], ["4"]]
163
+ }
164
+
165
+ Return ONLY the JSON object, no markdown code fences or additional text.`;
166
+ }
167
+ /**
168
+ * Parse the Architect's response into a structured DecompositionResult
169
+ *
170
+ * Handles various response formats including:
171
+ * - Raw JSON
172
+ * - JSON wrapped in markdown code fences
173
+ * - JSON with surrounding explanation text
174
+ *
175
+ * @param response - Raw response string from the Architect agent
176
+ * @returns Parsed and validated DecompositionResult
177
+ * @throws Error if response cannot be parsed or is invalid
178
+ *
179
+ * @example
180
+ * ```typescript
181
+ * const result = parseDecompositionResult(architectResponse);
182
+ * console.log(result.subtasks.length); // Number of parallel tasks
183
+ * console.log(result.parallelGroups); // Execution order
184
+ * ```
185
+ */
186
+ export function parseDecompositionResult(response) {
187
+ // Try to extract JSON from response (may be wrapped in markdown or have surrounding text)
188
+ let jsonStr;
189
+ // First, try to find JSON in markdown code fences
190
+ const fencedMatch = response.match(/```(?:json)?\s*([\s\S]*?)```/);
191
+ if (fencedMatch && fencedMatch[1]) {
192
+ jsonStr = fencedMatch[1].trim();
193
+ }
194
+ else {
195
+ // Try to find raw JSON object
196
+ const jsonMatch = response.match(/\{[\s\S]*\}/);
197
+ if (!jsonMatch) {
198
+ throw new Error('Could not parse decomposition result: no JSON object found in response');
199
+ }
200
+ jsonStr = jsonMatch[0];
201
+ }
202
+ let parsed;
203
+ try {
204
+ parsed = JSON.parse(jsonStr);
205
+ }
206
+ catch (e) {
207
+ throw new Error(`Could not parse decomposition result: invalid JSON - ${e instanceof Error ? e.message : 'unknown error'}`);
208
+ }
209
+ // Validate structure
210
+ if (!parsed || typeof parsed !== 'object') {
211
+ throw new Error('Could not parse decomposition result: response is not an object');
212
+ }
213
+ const result = parsed;
214
+ // Validate required fields
215
+ if (!Array.isArray(result.subtasks)) {
216
+ throw new Error('Could not parse decomposition result: missing or invalid subtasks array');
217
+ }
218
+ // Validate each subtask
219
+ for (const subtask of result.subtasks) {
220
+ if (!subtask || typeof subtask !== 'object') {
221
+ throw new Error('Could not parse decomposition result: invalid subtask object');
222
+ }
223
+ const st = subtask;
224
+ if (typeof st.id !== 'string' || !st.id) {
225
+ throw new Error('Could not parse decomposition result: subtask missing id');
226
+ }
227
+ if (typeof st.description !== 'string' || !st.description) {
228
+ throw new Error('Could not parse decomposition result: subtask missing description');
229
+ }
230
+ if (!Array.isArray(st.files)) {
231
+ throw new Error(`Could not parse decomposition result: subtask ${st.id} missing files array`);
232
+ }
233
+ if (!Array.isArray(st.blockedBy)) {
234
+ // Default to empty array if not provided
235
+ st.blockedBy = [];
236
+ }
237
+ // Validate and default agentType
238
+ const validAgentTypes = ['executor-low', 'executor', 'executor-high'];
239
+ if (!st.agentType || !validAgentTypes.includes(st.agentType)) {
240
+ st.agentType = 'executor';
241
+ }
242
+ // Validate and default model
243
+ const validModels = ['haiku', 'sonnet', 'opus'];
244
+ if (!st.model || !validModels.includes(st.model)) {
245
+ st.model = 'sonnet';
246
+ }
247
+ }
248
+ // Validate/default sharedFiles
249
+ if (!Array.isArray(result.sharedFiles)) {
250
+ result.sharedFiles = [];
251
+ }
252
+ // Validate/default parallelGroups
253
+ if (!Array.isArray(result.parallelGroups)) {
254
+ // Generate default parallel groups based on blockedBy
255
+ result.parallelGroups = generateParallelGroups(result.subtasks);
256
+ }
257
+ return result;
258
+ }
259
+ /**
260
+ * Generate parallel groups from subtask dependencies
261
+ *
262
+ * Creates an ordered array of task ID groups where each group can run
263
+ * in parallel, and later groups depend on earlier ones completing.
264
+ *
265
+ * @param subtasks - Array of decomposed subtasks with blockedBy fields
266
+ * @returns Array of parallel groups (each group is array of task IDs)
267
+ */
268
+ export function generateParallelGroups(subtasks) {
269
+ const groups = [];
270
+ const completed = new Set();
271
+ const remaining = new Set(subtasks.map((t) => t.id));
272
+ while (remaining.size > 0) {
273
+ const currentGroup = [];
274
+ for (const subtask of subtasks) {
275
+ if (!remaining.has(subtask.id))
276
+ continue;
277
+ // Check if all dependencies are completed
278
+ const depsCompleted = subtask.blockedBy.every((dep) => completed.has(dep));
279
+ if (depsCompleted) {
280
+ currentGroup.push(subtask.id);
281
+ }
282
+ }
283
+ if (currentGroup.length === 0) {
284
+ // Circular dependency detected - add remaining tasks to break cycle
285
+ const remainingIds = Array.from(remaining);
286
+ groups.push(remainingIds);
287
+ break;
288
+ }
289
+ // Mark current group as completed
290
+ for (const id of currentGroup) {
291
+ completed.add(id);
292
+ remaining.delete(id);
293
+ }
294
+ groups.push(currentGroup);
295
+ }
296
+ return groups;
297
+ }
298
+ /**
299
+ * Validate that file ownership doesn't overlap between subtasks
300
+ *
301
+ * @param subtasks - Array of decomposed subtasks
302
+ * @returns Object with isValid flag and any conflicts found
303
+ */
304
+ export function validateFileOwnership(subtasks) {
305
+ const fileToOwners = new Map();
306
+ for (const subtask of subtasks) {
307
+ for (const file of subtask.files) {
308
+ if (!fileToOwners.has(file)) {
309
+ fileToOwners.set(file, []);
310
+ }
311
+ fileToOwners.get(file).push(subtask.id);
312
+ }
313
+ }
314
+ const conflicts = [];
315
+ for (const [file, owners] of fileToOwners.entries()) {
316
+ if (owners.length > 1) {
317
+ conflicts.push({ file, owners });
318
+ }
319
+ }
320
+ return {
321
+ isValid: conflicts.length === 0,
322
+ conflicts
323
+ };
324
+ }
325
+ /**
326
+ * Merge shared files from subtasks into the sharedFiles list
327
+ *
328
+ * Identifies files that match shared file patterns and removes them
329
+ * from subtask ownership, adding them to sharedFiles instead.
330
+ *
331
+ * @param result - DecompositionResult to process
332
+ * @param patterns - Array of glob patterns for shared files
333
+ * @returns Updated DecompositionResult with shared files extracted
334
+ */
335
+ export function extractSharedFiles(result, patterns = DEFAULT_SHARED_FILE_PATTERNS) {
336
+ const sharedSet = new Set(result.sharedFiles);
337
+ // Simple pattern matching (exact match or basic glob)
338
+ const isSharedFile = (file) => {
339
+ const fileName = file.split('/').pop() || file;
340
+ return patterns.some((pattern) => {
341
+ if (pattern.includes('*')) {
342
+ // Basic glob: convert to regex
343
+ const regex = new RegExp('^' + pattern.replace(/\./g, '\\.').replace(/\*/g, '.*') + '$');
344
+ return regex.test(file) || regex.test(fileName);
345
+ }
346
+ return file === pattern || fileName === pattern;
347
+ });
348
+ };
349
+ // Process each subtask
350
+ const updatedSubtasks = result.subtasks.map((subtask) => {
351
+ const ownedFiles = [];
352
+ for (const file of subtask.files) {
353
+ if (isSharedFile(file)) {
354
+ sharedSet.add(file);
355
+ }
356
+ else {
357
+ ownedFiles.push(file);
358
+ }
359
+ }
360
+ return { ...subtask, files: ownedFiles };
361
+ });
362
+ return {
363
+ subtasks: updatedSubtasks,
364
+ sharedFiles: Array.from(sharedSet),
365
+ parallelGroups: result.parallelGroups
366
+ };
367
+ }
368
+ /**
369
+ * Convert DecompositionResult to simple string array for legacy compatibility
370
+ *
371
+ * @param result - Full decomposition result
372
+ * @returns Array of task description strings
373
+ */
374
+ export function toSimpleSubtasks(result) {
375
+ return result.subtasks.map((t) => t.description);
376
+ }
377
+ //# sourceMappingURL=decomposer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decomposer.js","sourceRoot":"","sources":["../../../src/hooks/ultrapilot/decomposer.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@
6
6
  * while managing file ownership to avoid conflicts.
7
7
  */
8
8
  import type { UltrapilotConfig, UltrapilotState, WorkerState, IntegrationResult } from './types.js';
9
+ export { generateDecompositionPrompt, parseDecompositionResult, generateParallelGroups, validateFileOwnership, extractSharedFiles, toSimpleSubtasks, DEFAULT_SHARED_FILE_PATTERNS } from './decomposer.js';
10
+ export type { DecomposedTask, DecompositionResult, DecompositionOptions, AgentType, ModelTier } from './decomposer.js';
9
11
  /**
10
12
  * Start ultrapilot coordinator
11
13
  *
@@ -21,6 +23,35 @@ export declare function startUltrapilot(cwd: string, task: string, config?: Part
21
23
  * Decompose a task into parallelizable subtasks
22
24
  *
23
25
  * Uses heuristics to identify independent work units that can be executed in parallel.
26
+ * For more intelligent decomposition with file ownership and dependencies, use the
27
+ * AI-powered decomposition functions:
28
+ *
29
+ * @example AI-powered decomposition (recommended for complex tasks):
30
+ * ```typescript
31
+ * import {
32
+ * generateDecompositionPrompt,
33
+ * parseDecompositionResult,
34
+ * toSimpleSubtasks
35
+ * } from './decomposer.js';
36
+ *
37
+ * // Generate prompt for Architect agent
38
+ * const prompt = generateDecompositionPrompt(task, codebaseContext);
39
+ *
40
+ * // Call Architect agent (via Task tool in orchestrator)
41
+ * const response = await Task({
42
+ * subagent_type: 'oh-my-claudecode:architect',
43
+ * model: 'opus',
44
+ * prompt
45
+ * });
46
+ *
47
+ * // Parse structured result with file ownership
48
+ * const result = parseDecompositionResult(response);
49
+ *
50
+ * // Use result.subtasks for full DecomposedTask objects with:
51
+ * // - id, description, files, blockedBy, agentType, model
52
+ * // Or convert to simple strings for legacy compatibility:
53
+ * const subtasks = toSimpleSubtasks(result);
54
+ * ```
24
55
  *
25
56
  * @param task - Task description
26
57
  * @param config - Configuration options
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/ultrapilot/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAiBpB;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACjC,OAAO,CAAC,eAAe,CAAC,CAU1B;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,OAAO,CAAC,MAAM,EAAE,CAAC,CAgCnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACjC,OAAO,CAAC,WAAW,EAAE,CAAC,CA2BxB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAgBD;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+C9E;AAsFD;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAQT;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CA0BT;AAGD,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/ultrapilot/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAwBpB,OAAO,EACL,2BAA2B,EAC3B,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,4BAA4B,EAC7B,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,SAAS,EACT,SAAS,EACV,MAAM,iBAAiB,CAAC;AAEzB;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACjC,OAAO,CAAC,eAAe,CAAC,CAa1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,OAAO,CAAC,MAAM,EAAE,CAAC,CAiCnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAChC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAAE,EAClB,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACjC,OAAO,CAAC,WAAW,EAAE,CAAC,CA2BxB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAgBD;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+C9E;AAsFD;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,OAAO,CAAC,CAYlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAQT;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKnE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CA0BT;AAGD,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACf,MAAM,YAAY,CAAC"}
@@ -7,6 +7,14 @@
7
7
  */
8
8
  import { DEFAULT_CONFIG } from './types.js';
9
9
  import { readUltrapilotState, writeUltrapilotState, initUltrapilot, addWorker, getCompletedWorkers, getRunningWorkers, getFailedWorkers, recordConflict } from './state.js';
10
+ // AI-powered decomposition utilities
11
+ // TODO: Use these with the Architect agent for intelligent task decomposition
12
+ // Example integration:
13
+ // const prompt = generateDecompositionPrompt(task, codebaseContext);
14
+ // const response = await Task({ subagent_type: 'architect', prompt });
15
+ // const result = parseDecompositionResult(response);
16
+ // const subtasks = toSimpleSubtasks(result);
17
+ export { generateDecompositionPrompt, parseDecompositionResult, generateParallelGroups, validateFileOwnership, extractSharedFiles, toSimpleSubtasks, DEFAULT_SHARED_FILE_PATTERNS } from './decomposer.js';
10
18
  /**
11
19
  * Start ultrapilot coordinator
12
20
  *
@@ -23,20 +31,53 @@ export async function startUltrapilot(cwd, task, config) {
23
31
  const subtasks = await decomposeTask(task, mergedConfig);
24
32
  // Initialize state
25
33
  const state = initUltrapilot(cwd, task, subtasks, undefined, mergedConfig);
34
+ if (!state) {
35
+ throw new Error('Failed to initialize ultrapilot: another mode is active');
36
+ }
26
37
  return state;
27
38
  }
28
39
  /**
29
40
  * Decompose a task into parallelizable subtasks
30
41
  *
31
42
  * Uses heuristics to identify independent work units that can be executed in parallel.
43
+ * For more intelligent decomposition with file ownership and dependencies, use the
44
+ * AI-powered decomposition functions:
45
+ *
46
+ * @example AI-powered decomposition (recommended for complex tasks):
47
+ * ```typescript
48
+ * import {
49
+ * generateDecompositionPrompt,
50
+ * parseDecompositionResult,
51
+ * toSimpleSubtasks
52
+ * } from './decomposer.js';
53
+ *
54
+ * // Generate prompt for Architect agent
55
+ * const prompt = generateDecompositionPrompt(task, codebaseContext);
56
+ *
57
+ * // Call Architect agent (via Task tool in orchestrator)
58
+ * const response = await Task({
59
+ * subagent_type: 'oh-my-claudecode:architect',
60
+ * model: 'opus',
61
+ * prompt
62
+ * });
63
+ *
64
+ * // Parse structured result with file ownership
65
+ * const result = parseDecompositionResult(response);
66
+ *
67
+ * // Use result.subtasks for full DecomposedTask objects with:
68
+ * // - id, description, files, blockedBy, agentType, model
69
+ * // Or convert to simple strings for legacy compatibility:
70
+ * const subtasks = toSimpleSubtasks(result);
71
+ * ```
32
72
  *
33
73
  * @param task - Task description
34
74
  * @param config - Configuration options
35
75
  * @returns Array of subtask descriptions
36
76
  */
37
77
  export async function decomposeTask(task, config) {
38
- // For now, implement basic heuristics for task decomposition
39
- // In future, this could use an AI agent to analyze the task
78
+ // Heuristic-based decomposition for simple cases
79
+ // For complex tasks, use generateDecompositionPrompt() with Architect agent
80
+ // to get structured DecompositionResult with file ownership and dependencies
40
81
  const subtasks = [];
41
82
  // Look for explicit lists (numbered or bulleted)
42
83
  const listItemPattern = /^[\s]*(?:\d+\.|[-*+])\s+(.+)$/gm;