@mindfoldhq/trellis 0.4.0 → 0.5.0-beta.2

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 (394) hide show
  1. package/dist/cli/index.js +0 -1
  2. package/dist/cli/index.js.map +1 -1
  3. package/dist/commands/init.d.ts +0 -1
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +2 -4
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/update.d.ts +5 -0
  8. package/dist/commands/update.d.ts.map +1 -1
  9. package/dist/commands/update.js +100 -24
  10. package/dist/commands/update.js.map +1 -1
  11. package/dist/configurators/antigravity.d.ts +3 -4
  12. package/dist/configurators/antigravity.d.ts.map +1 -1
  13. package/dist/configurators/antigravity.js +17 -10
  14. package/dist/configurators/antigravity.js.map +1 -1
  15. package/dist/configurators/claude.d.ts +5 -28
  16. package/dist/configurators/claude.d.ts.map +1 -1
  17. package/dist/configurators/claude.js +30 -51
  18. package/dist/configurators/claude.js.map +1 -1
  19. package/dist/configurators/codebuddy.d.ts +6 -7
  20. package/dist/configurators/codebuddy.d.ts.map +1 -1
  21. package/dist/configurators/codebuddy.js +23 -51
  22. package/dist/configurators/codebuddy.js.map +1 -1
  23. package/dist/configurators/codex.d.ts +3 -6
  24. package/dist/configurators/codex.d.ts.map +1 -1
  25. package/dist/configurators/codex.js +29 -12
  26. package/dist/configurators/codex.js.map +1 -1
  27. package/dist/configurators/copilot.d.ts +6 -5
  28. package/dist/configurators/copilot.d.ts.map +1 -1
  29. package/dist/configurators/copilot.js +42 -13
  30. package/dist/configurators/copilot.js.map +1 -1
  31. package/dist/configurators/cursor.d.ts +6 -1
  32. package/dist/configurators/cursor.d.ts.map +1 -1
  33. package/dist/configurators/cursor.js +22 -45
  34. package/dist/configurators/cursor.js.map +1 -1
  35. package/dist/configurators/droid.d.ts +6 -1
  36. package/dist/configurators/droid.d.ts.map +1 -1
  37. package/dist/configurators/droid.js +23 -41
  38. package/dist/configurators/droid.js.map +1 -1
  39. package/dist/configurators/gemini.d.ts +8 -4
  40. package/dist/configurators/gemini.d.ts.map +1 -1
  41. package/dist/configurators/gemini.js +28 -47
  42. package/dist/configurators/gemini.js.map +1 -1
  43. package/dist/configurators/index.d.ts +1 -1
  44. package/dist/configurators/index.d.ts.map +1 -1
  45. package/dist/configurators/index.js +142 -98
  46. package/dist/configurators/index.js.map +1 -1
  47. package/dist/configurators/kilo.d.ts +3 -4
  48. package/dist/configurators/kilo.d.ts.map +1 -1
  49. package/dist/configurators/kilo.js +19 -46
  50. package/dist/configurators/kilo.js.map +1 -1
  51. package/dist/configurators/kiro.d.ts +4 -4
  52. package/dist/configurators/kiro.d.ts.map +1 -1
  53. package/dist/configurators/kiro.js +18 -14
  54. package/dist/configurators/kiro.js.map +1 -1
  55. package/dist/configurators/opencode.d.ts +3 -28
  56. package/dist/configurators/opencode.d.ts.map +1 -1
  57. package/dist/configurators/opencode.js +23 -48
  58. package/dist/configurators/opencode.js.map +1 -1
  59. package/dist/configurators/qoder.d.ts +6 -4
  60. package/dist/configurators/qoder.d.ts.map +1 -1
  61. package/dist/configurators/qoder.js +20 -47
  62. package/dist/configurators/qoder.js.map +1 -1
  63. package/dist/configurators/shared.d.ts +66 -3
  64. package/dist/configurators/shared.d.ts.map +1 -1
  65. package/dist/configurators/shared.js +251 -3
  66. package/dist/configurators/shared.js.map +1 -1
  67. package/dist/configurators/windsurf.d.ts +3 -4
  68. package/dist/configurators/windsurf.d.ts.map +1 -1
  69. package/dist/configurators/windsurf.js +17 -10
  70. package/dist/configurators/windsurf.js.map +1 -1
  71. package/dist/configurators/workflow.d.ts +0 -3
  72. package/dist/configurators/workflow.d.ts.map +1 -1
  73. package/dist/configurators/workflow.js +1 -7
  74. package/dist/configurators/workflow.js.map +1 -1
  75. package/dist/migrations/manifests/0.4.0.json +1 -1
  76. package/dist/migrations/manifests/0.5.0-beta.0.json +1644 -0
  77. package/dist/templates/claude/agents/check.md +2 -29
  78. package/dist/templates/claude/agents/research.md +70 -52
  79. package/dist/templates/claude/index.d.ts +5 -37
  80. package/dist/templates/claude/index.d.ts.map +1 -1
  81. package/dist/templates/claude/index.js +3 -42
  82. package/dist/templates/claude/index.js.map +1 -1
  83. package/dist/templates/claude/settings.json +3 -4
  84. package/dist/templates/{iflow → codebuddy}/agents/check.md +3 -30
  85. package/dist/templates/{iflow → codebuddy}/agents/implement.md +1 -1
  86. package/dist/templates/codebuddy/agents/research.md +138 -0
  87. package/dist/templates/codebuddy/index.d.ts +6 -16
  88. package/dist/templates/codebuddy/index.d.ts.map +1 -1
  89. package/dist/templates/codebuddy/index.js +6 -36
  90. package/dist/templates/codebuddy/index.js.map +1 -1
  91. package/dist/templates/codebuddy/settings.json +59 -0
  92. package/dist/templates/codex/agents/research.toml +50 -16
  93. package/dist/templates/codex/config.toml +10 -0
  94. package/dist/templates/codex/hooks/session-start.py +65 -29
  95. package/dist/templates/codex/hooks.json +11 -0
  96. package/dist/templates/codex/index.d.ts +0 -1
  97. package/dist/templates/codex/index.d.ts.map +1 -1
  98. package/dist/templates/codex/index.js +1 -8
  99. package/dist/templates/codex/index.js.map +1 -1
  100. package/dist/templates/common/commands/continue.md +51 -0
  101. package/dist/templates/common/commands/finish-work.md +32 -0
  102. package/dist/templates/common/commands/start.md +56 -0
  103. package/dist/templates/common/index.d.ts +28 -0
  104. package/dist/templates/common/index.d.ts.map +1 -0
  105. package/dist/templates/common/index.js +55 -0
  106. package/dist/templates/common/index.js.map +1 -0
  107. package/dist/templates/{codebuddy/commands/trellis → common/skills}/brainstorm.md +4 -4
  108. package/dist/templates/{opencode/commands/trellis → common/skills}/break-loop.md +4 -4
  109. package/dist/templates/common/skills/check.md +87 -0
  110. package/dist/templates/{codebuddy/commands/trellis → common/skills}/update-spec.md +18 -21
  111. package/dist/templates/copilot/hooks/session-start.py +65 -29
  112. package/dist/templates/copilot/hooks.json +8 -0
  113. package/dist/templates/cursor/agents/check.md +95 -0
  114. package/dist/templates/cursor/agents/implement.md +95 -0
  115. package/dist/templates/cursor/agents/research.md +138 -0
  116. package/dist/templates/cursor/hooks.json +24 -0
  117. package/dist/templates/cursor/index.d.ts +6 -17
  118. package/dist/templates/cursor/index.d.ts.map +1 -1
  119. package/dist/templates/cursor/index.js +6 -37
  120. package/dist/templates/cursor/index.js.map +1 -1
  121. package/dist/templates/droid/droids/check.md +95 -0
  122. package/dist/templates/droid/droids/implement.md +95 -0
  123. package/dist/templates/droid/droids/research.md +138 -0
  124. package/dist/templates/droid/index.d.ts +7 -19
  125. package/dist/templates/droid/index.d.ts.map +1 -1
  126. package/dist/templates/droid/index.js +7 -39
  127. package/dist/templates/droid/index.js.map +1 -1
  128. package/dist/templates/droid/settings.json +59 -0
  129. package/dist/templates/extract.d.ts +7 -193
  130. package/dist/templates/extract.d.ts.map +1 -1
  131. package/dist/templates/extract.js +7 -310
  132. package/dist/templates/extract.js.map +1 -1
  133. package/dist/templates/gemini/agents/check.md +95 -0
  134. package/dist/templates/gemini/agents/implement.md +95 -0
  135. package/dist/templates/gemini/agents/research.md +138 -0
  136. package/dist/templates/gemini/index.d.ts +6 -14
  137. package/dist/templates/gemini/index.d.ts.map +1 -1
  138. package/dist/templates/gemini/index.js +6 -37
  139. package/dist/templates/gemini/index.js.map +1 -1
  140. package/dist/templates/gemini/settings.json +28 -0
  141. package/dist/templates/kiro/agents/check.json +13 -0
  142. package/dist/templates/kiro/agents/implement.json +13 -0
  143. package/dist/templates/kiro/agents/research.json +21 -0
  144. package/dist/templates/kiro/index.d.ts +11 -11
  145. package/dist/templates/kiro/index.d.ts.map +1 -1
  146. package/dist/templates/kiro/index.js +11 -33
  147. package/dist/templates/kiro/index.js.map +1 -1
  148. package/dist/templates/opencode/agents/check.md +3 -30
  149. package/dist/templates/opencode/agents/implement.md +1 -1
  150. package/dist/templates/opencode/agents/research.md +1 -2
  151. package/dist/templates/opencode/plugins/inject-subagent-context.js +9 -183
  152. package/dist/templates/opencode/plugins/inject-workflow-state.js +160 -0
  153. package/dist/templates/opencode/plugins/session-start.js +71 -32
  154. package/dist/templates/qoder/agents/check.md +95 -0
  155. package/dist/templates/qoder/agents/implement.md +95 -0
  156. package/dist/templates/qoder/agents/research.md +138 -0
  157. package/dist/templates/qoder/index.d.ts +7 -10
  158. package/dist/templates/qoder/index.d.ts.map +1 -1
  159. package/dist/templates/qoder/index.js +7 -32
  160. package/dist/templates/qoder/index.js.map +1 -1
  161. package/dist/templates/qoder/settings.json +47 -0
  162. package/dist/templates/shared-hooks/index.d.ts +19 -0
  163. package/dist/templates/shared-hooks/index.d.ts.map +1 -0
  164. package/dist/templates/shared-hooks/index.js +30 -0
  165. package/dist/templates/shared-hooks/index.js.map +1 -0
  166. package/dist/templates/{iflow/hooks → shared-hooks}/inject-subagent-context.py +74 -263
  167. package/dist/templates/shared-hooks/inject-workflow-state.py +231 -0
  168. package/dist/templates/{claude/hooks → shared-hooks}/session-start.py +162 -55
  169. package/dist/templates/template-utils.d.ts +26 -0
  170. package/dist/templates/template-utils.d.ts.map +1 -0
  171. package/dist/templates/template-utils.js +60 -0
  172. package/dist/templates/template-utils.js.map +1 -0
  173. package/dist/templates/trellis/index.d.ts +1 -14
  174. package/dist/templates/trellis/index.d.ts.map +1 -1
  175. package/dist/templates/trellis/index.js +2 -27
  176. package/dist/templates/trellis/index.js.map +1 -1
  177. package/dist/templates/trellis/scripts/common/cli_adapter.py +2 -2
  178. package/dist/templates/trellis/scripts/common/config.py +126 -1
  179. package/dist/templates/trellis/scripts/common/git_context.py +25 -2
  180. package/dist/templates/trellis/scripts/common/task_context.py +3 -23
  181. package/dist/templates/trellis/scripts/common/task_store.py +0 -12
  182. package/dist/templates/trellis/scripts/common/workflow_phase.py +176 -0
  183. package/dist/templates/trellis/scripts/task.py +6 -35
  184. package/dist/templates/trellis/workflow.md +274 -297
  185. package/dist/types/ai-tools.d.ts +21 -3
  186. package/dist/types/ai-tools.d.ts.map +1 -1
  187. package/dist/types/ai-tools.js +106 -15
  188. package/dist/types/ai-tools.js.map +1 -1
  189. package/dist/types/migration.d.ts +8 -1
  190. package/dist/types/migration.d.ts.map +1 -1
  191. package/package.json +3 -2
  192. package/dist/configurators/iflow.d.ts +0 -33
  193. package/dist/configurators/iflow.d.ts.map +0 -1
  194. package/dist/configurators/iflow.js +0 -99
  195. package/dist/configurators/iflow.js.map +0 -1
  196. package/dist/templates/antigravity/index.d.ts +0 -12
  197. package/dist/templates/antigravity/index.d.ts.map +0 -1
  198. package/dist/templates/antigravity/index.js +0 -29
  199. package/dist/templates/antigravity/index.js.map +0 -1
  200. package/dist/templates/claude/agents/debug.md +0 -106
  201. package/dist/templates/claude/agents/dispatch.md +0 -213
  202. package/dist/templates/claude/agents/plan.md +0 -396
  203. package/dist/templates/claude/commands/trellis/brainstorm.md +0 -487
  204. package/dist/templates/claude/commands/trellis/break-loop.md +0 -125
  205. package/dist/templates/claude/commands/trellis/check-cross-layer.md +0 -153
  206. package/dist/templates/claude/commands/trellis/check.md +0 -25
  207. package/dist/templates/claude/commands/trellis/create-command.md +0 -154
  208. package/dist/templates/claude/commands/trellis/finish-work.md +0 -153
  209. package/dist/templates/claude/commands/trellis/integrate-skill.md +0 -219
  210. package/dist/templates/claude/commands/trellis/onboard.md +0 -358
  211. package/dist/templates/claude/commands/trellis/parallel.md +0 -192
  212. package/dist/templates/claude/commands/trellis/record-session.md +0 -62
  213. package/dist/templates/claude/commands/trellis/start.md +0 -393
  214. package/dist/templates/claude/commands/trellis/update-spec.md +0 -354
  215. package/dist/templates/claude/hooks/inject-subagent-context.py +0 -803
  216. package/dist/templates/claude/hooks/ralph-loop.py +0 -396
  217. package/dist/templates/codebuddy/commands/trellis/before-dev.md +0 -29
  218. package/dist/templates/codebuddy/commands/trellis/break-loop.md +0 -107
  219. package/dist/templates/codebuddy/commands/trellis/check-cross-layer.md +0 -153
  220. package/dist/templates/codebuddy/commands/trellis/check.md +0 -25
  221. package/dist/templates/codebuddy/commands/trellis/create-command.md +0 -154
  222. package/dist/templates/codebuddy/commands/trellis/finish-work.md +0 -143
  223. package/dist/templates/codebuddy/commands/trellis/integrate-skill.md +0 -219
  224. package/dist/templates/codebuddy/commands/trellis/onboard.md +0 -358
  225. package/dist/templates/codebuddy/commands/trellis/record-session.md +0 -61
  226. package/dist/templates/codebuddy/commands/trellis/start.md +0 -373
  227. package/dist/templates/codex/codex-skills/parallel/SKILL.md +0 -194
  228. package/dist/templates/cursor/commands/trellis-before-dev.md +0 -29
  229. package/dist/templates/cursor/commands/trellis-brainstorm.md +0 -487
  230. package/dist/templates/cursor/commands/trellis-break-loop.md +0 -107
  231. package/dist/templates/cursor/commands/trellis-check-cross-layer.md +0 -153
  232. package/dist/templates/cursor/commands/trellis-check.md +0 -25
  233. package/dist/templates/cursor/commands/trellis-create-command.md +0 -154
  234. package/dist/templates/cursor/commands/trellis-finish-work.md +0 -143
  235. package/dist/templates/cursor/commands/trellis-integrate-skill.md +0 -219
  236. package/dist/templates/cursor/commands/trellis-onboard.md +0 -358
  237. package/dist/templates/cursor/commands/trellis-record-session.md +0 -62
  238. package/dist/templates/cursor/commands/trellis-start.md +0 -373
  239. package/dist/templates/cursor/commands/trellis-update-spec.md +0 -354
  240. package/dist/templates/droid/commands/trellis/before-dev.md +0 -33
  241. package/dist/templates/droid/commands/trellis/brainstorm.md +0 -491
  242. package/dist/templates/droid/commands/trellis/break-loop.md +0 -111
  243. package/dist/templates/droid/commands/trellis/check-cross-layer.md +0 -157
  244. package/dist/templates/droid/commands/trellis/check.md +0 -29
  245. package/dist/templates/droid/commands/trellis/create-command.md +0 -158
  246. package/dist/templates/droid/commands/trellis/finish-work.md +0 -147
  247. package/dist/templates/droid/commands/trellis/integrate-skill.md +0 -223
  248. package/dist/templates/droid/commands/trellis/onboard.md +0 -362
  249. package/dist/templates/droid/commands/trellis/record-session.md +0 -66
  250. package/dist/templates/droid/commands/trellis/start.md +0 -377
  251. package/dist/templates/droid/commands/trellis/update-spec.md +0 -358
  252. package/dist/templates/gemini/commands/trellis/before-dev.toml +0 -33
  253. package/dist/templates/gemini/commands/trellis/brainstorm.toml +0 -435
  254. package/dist/templates/gemini/commands/trellis/break-loop.toml +0 -129
  255. package/dist/templates/gemini/commands/trellis/check-cross-layer.toml +0 -147
  256. package/dist/templates/gemini/commands/trellis/check.toml +0 -29
  257. package/dist/templates/gemini/commands/trellis/create-command.toml +0 -119
  258. package/dist/templates/gemini/commands/trellis/finish-work.toml +0 -133
  259. package/dist/templates/gemini/commands/trellis/integrate-skill.toml +0 -104
  260. package/dist/templates/gemini/commands/trellis/onboard.toml +0 -111
  261. package/dist/templates/gemini/commands/trellis/record-session.toml +0 -66
  262. package/dist/templates/gemini/commands/trellis/start.toml +0 -354
  263. package/dist/templates/gemini/commands/trellis/update-spec.toml +0 -132
  264. package/dist/templates/iflow/agents/debug.md +0 -106
  265. package/dist/templates/iflow/agents/dispatch.md +0 -213
  266. package/dist/templates/iflow/agents/plan.md +0 -396
  267. package/dist/templates/iflow/agents/research.md +0 -120
  268. package/dist/templates/iflow/commands/trellis/before-dev.md +0 -29
  269. package/dist/templates/iflow/commands/trellis/brainstorm.md +0 -487
  270. package/dist/templates/iflow/commands/trellis/break-loop.md +0 -125
  271. package/dist/templates/iflow/commands/trellis/check-cross-layer.md +0 -153
  272. package/dist/templates/iflow/commands/trellis/check.md +0 -25
  273. package/dist/templates/iflow/commands/trellis/create-command.md +0 -152
  274. package/dist/templates/iflow/commands/trellis/finish-work.md +0 -153
  275. package/dist/templates/iflow/commands/trellis/integrate-skill.md +0 -219
  276. package/dist/templates/iflow/commands/trellis/onboard.md +0 -358
  277. package/dist/templates/iflow/commands/trellis/parallel.md +0 -192
  278. package/dist/templates/iflow/commands/trellis/record-session.md +0 -62
  279. package/dist/templates/iflow/commands/trellis/start.md +0 -393
  280. package/dist/templates/iflow/commands/trellis/update-spec.md +0 -354
  281. package/dist/templates/iflow/hooks/ralph-loop.py +0 -395
  282. package/dist/templates/iflow/hooks/session-start.py +0 -403
  283. package/dist/templates/iflow/index.d.ts +0 -54
  284. package/dist/templates/iflow/index.d.ts.map +0 -1
  285. package/dist/templates/iflow/index.js +0 -85
  286. package/dist/templates/iflow/index.js.map +0 -1
  287. package/dist/templates/iflow/settings.json +0 -60
  288. package/dist/templates/kilo/index.d.ts +0 -16
  289. package/dist/templates/kilo/index.d.ts.map +0 -1
  290. package/dist/templates/kilo/index.js +0 -39
  291. package/dist/templates/kilo/index.js.map +0 -1
  292. package/dist/templates/kilo/workflows/before-dev.md +0 -29
  293. package/dist/templates/kilo/workflows/brainstorm.md +0 -487
  294. package/dist/templates/kilo/workflows/break-loop.md +0 -125
  295. package/dist/templates/kilo/workflows/check-cross-layer.md +0 -153
  296. package/dist/templates/kilo/workflows/check.md +0 -25
  297. package/dist/templates/kilo/workflows/create-command.md +0 -152
  298. package/dist/templates/kilo/workflows/finish-work.md +0 -129
  299. package/dist/templates/kilo/workflows/integrate-skill.md +0 -219
  300. package/dist/templates/kilo/workflows/onboard.md +0 -358
  301. package/dist/templates/kilo/workflows/parallel.md +0 -193
  302. package/dist/templates/kilo/workflows/record-session.md +0 -62
  303. package/dist/templates/kilo/workflows/start.md +0 -387
  304. package/dist/templates/kilo/workflows/update-spec.md +0 -285
  305. package/dist/templates/kiro/skills/before-dev/SKILL.md +0 -34
  306. package/dist/templates/kiro/skills/brainstorm/SKILL.md +0 -492
  307. package/dist/templates/kiro/skills/break-loop/SKILL.md +0 -130
  308. package/dist/templates/kiro/skills/check/SKILL.md +0 -30
  309. package/dist/templates/kiro/skills/check-cross-layer/SKILL.md +0 -158
  310. package/dist/templates/kiro/skills/create-command/SKILL.md +0 -101
  311. package/dist/templates/kiro/skills/finish-work/SKILL.md +0 -148
  312. package/dist/templates/kiro/skills/integrate-skill/SKILL.md +0 -221
  313. package/dist/templates/kiro/skills/onboard/SKILL.md +0 -363
  314. package/dist/templates/kiro/skills/record-session/SKILL.md +0 -67
  315. package/dist/templates/kiro/skills/start/SKILL.md +0 -351
  316. package/dist/templates/kiro/skills/update-spec/SKILL.md +0 -335
  317. package/dist/templates/opencode/agents/debug.md +0 -129
  318. package/dist/templates/opencode/agents/dispatch.md +0 -223
  319. package/dist/templates/opencode/agents/trellis-plan.md +0 -427
  320. package/dist/templates/opencode/commands/trellis/before-dev.md +0 -29
  321. package/dist/templates/opencode/commands/trellis/brainstorm.md +0 -487
  322. package/dist/templates/opencode/commands/trellis/check-cross-layer.md +0 -153
  323. package/dist/templates/opencode/commands/trellis/check.md +0 -25
  324. package/dist/templates/opencode/commands/trellis/create-command.md +0 -154
  325. package/dist/templates/opencode/commands/trellis/finish-work.md +0 -144
  326. package/dist/templates/opencode/commands/trellis/integrate-skill.md +0 -219
  327. package/dist/templates/opencode/commands/trellis/migrate-specs.md +0 -0
  328. package/dist/templates/opencode/commands/trellis/onboard.md +0 -358
  329. package/dist/templates/opencode/commands/trellis/parallel.md +0 -193
  330. package/dist/templates/opencode/commands/trellis/record-session.md +0 -62
  331. package/dist/templates/opencode/commands/trellis/start.md +0 -351
  332. package/dist/templates/opencode/commands/trellis/update-spec.md +0 -354
  333. package/dist/templates/qoder/skills/before-dev/SKILL.md +0 -34
  334. package/dist/templates/qoder/skills/brainstorm/SKILL.md +0 -492
  335. package/dist/templates/qoder/skills/break-loop/SKILL.md +0 -130
  336. package/dist/templates/qoder/skills/check/SKILL.md +0 -30
  337. package/dist/templates/qoder/skills/check-cross-layer/SKILL.md +0 -158
  338. package/dist/templates/qoder/skills/create-command/SKILL.md +0 -101
  339. package/dist/templates/qoder/skills/finish-work/SKILL.md +0 -134
  340. package/dist/templates/qoder/skills/integrate-skill/SKILL.md +0 -221
  341. package/dist/templates/qoder/skills/onboard/SKILL.md +0 -363
  342. package/dist/templates/qoder/skills/record-session/SKILL.md +0 -67
  343. package/dist/templates/qoder/skills/start/SKILL.md +0 -388
  344. package/dist/templates/qoder/skills/update-spec/SKILL.md +0 -290
  345. package/dist/templates/trellis/scripts/common/phase.py +0 -254
  346. package/dist/templates/trellis/scripts/common/registry.py +0 -335
  347. package/dist/templates/trellis/scripts/common/worktree.py +0 -305
  348. package/dist/templates/trellis/scripts/multi_agent/__init__.py +0 -5
  349. package/dist/templates/trellis/scripts/multi_agent/_bootstrap.py +0 -17
  350. package/dist/templates/trellis/scripts/multi_agent/cleanup.py +0 -398
  351. package/dist/templates/trellis/scripts/multi_agent/create_pr.py +0 -620
  352. package/dist/templates/trellis/scripts/multi_agent/plan.py +0 -213
  353. package/dist/templates/trellis/scripts/multi_agent/start.py +0 -539
  354. package/dist/templates/trellis/scripts/multi_agent/status.py +0 -76
  355. package/dist/templates/trellis/scripts/multi_agent/status_display.py +0 -542
  356. package/dist/templates/trellis/scripts/multi_agent/status_monitor.py +0 -225
  357. package/dist/templates/trellis/scripts-shell-archive/add-session.sh +0 -384
  358. package/dist/templates/trellis/scripts-shell-archive/common/developer.sh +0 -129
  359. package/dist/templates/trellis/scripts-shell-archive/common/git-context.sh +0 -263
  360. package/dist/templates/trellis/scripts-shell-archive/common/paths.sh +0 -208
  361. package/dist/templates/trellis/scripts-shell-archive/common/phase.sh +0 -150
  362. package/dist/templates/trellis/scripts-shell-archive/common/registry.sh +0 -247
  363. package/dist/templates/trellis/scripts-shell-archive/common/task-queue.sh +0 -142
  364. package/dist/templates/trellis/scripts-shell-archive/common/task-utils.sh +0 -151
  365. package/dist/templates/trellis/scripts-shell-archive/common/worktree.sh +0 -128
  366. package/dist/templates/trellis/scripts-shell-archive/create-bootstrap.sh +0 -299
  367. package/dist/templates/trellis/scripts-shell-archive/get-context.sh +0 -7
  368. package/dist/templates/trellis/scripts-shell-archive/get-developer.sh +0 -15
  369. package/dist/templates/trellis/scripts-shell-archive/init-developer.sh +0 -34
  370. package/dist/templates/trellis/scripts-shell-archive/multi-agent/cleanup.sh +0 -396
  371. package/dist/templates/trellis/scripts-shell-archive/multi-agent/create-pr.sh +0 -241
  372. package/dist/templates/trellis/scripts-shell-archive/multi-agent/plan.sh +0 -207
  373. package/dist/templates/trellis/scripts-shell-archive/multi-agent/start.sh +0 -317
  374. package/dist/templates/trellis/scripts-shell-archive/multi-agent/status.sh +0 -828
  375. package/dist/templates/trellis/scripts-shell-archive/task.sh +0 -1204
  376. package/dist/templates/trellis/worktree.yaml +0 -47
  377. package/dist/templates/windsurf/index.d.ts +0 -21
  378. package/dist/templates/windsurf/index.d.ts.map +0 -1
  379. package/dist/templates/windsurf/index.js +0 -44
  380. package/dist/templates/windsurf/index.js.map +0 -1
  381. package/dist/templates/windsurf/workflows/trellis-before-dev.md +0 -31
  382. package/dist/templates/windsurf/workflows/trellis-brainstorm.md +0 -491
  383. package/dist/templates/windsurf/workflows/trellis-break-loop.md +0 -111
  384. package/dist/templates/windsurf/workflows/trellis-check-cross-layer.md +0 -157
  385. package/dist/templates/windsurf/workflows/trellis-check.md +0 -27
  386. package/dist/templates/windsurf/workflows/trellis-create-command.md +0 -154
  387. package/dist/templates/windsurf/workflows/trellis-finish-work.md +0 -147
  388. package/dist/templates/windsurf/workflows/trellis-integrate-skill.md +0 -220
  389. package/dist/templates/windsurf/workflows/trellis-onboard.md +0 -362
  390. package/dist/templates/windsurf/workflows/trellis-record-session.md +0 -66
  391. package/dist/templates/windsurf/workflows/trellis-start.md +0 -373
  392. package/dist/templates/windsurf/workflows/trellis-update-spec.md +0 -358
  393. /package/dist/templates/{claude/commands/trellis → common/skills}/before-dev.md +0 -0
  394. /package/dist/templates/{claude/hooks → shared-hooks}/statusline.py +0 -0
@@ -1,254 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Phase Management Utilities.
4
-
5
- Centralized phase tracking for multi-agent pipeline.
6
-
7
- Provides:
8
- get_current_phase - Returns current phase number
9
- get_total_phases - Returns total phase count
10
- get_phase_action - Returns action name for phase
11
- get_phase_info - Returns "N/M (action)" format
12
- set_phase - Sets current_phase
13
- advance_phase - Advances to next phase
14
- get_phase_for_action - Returns phase number for action
15
- map_subagent_to_action - Map subagent type to action name
16
- is_phase_completed - Check if phase is completed
17
- is_current_action - Check if at specific action
18
- """
19
-
20
- from __future__ import annotations
21
-
22
- from pathlib import Path
23
-
24
- from .io import read_json, write_json
25
-
26
-
27
- # =============================================================================
28
- # Internal Helpers (operate on pre-loaded data dict)
29
- # =============================================================================
30
-
31
- def _total_phases(data: dict) -> int:
32
- """Get total phases from pre-loaded data."""
33
- next_action = data.get("next_action", [])
34
- return len(next_action) if isinstance(next_action, list) else 0
35
-
36
-
37
- def _phase_action(data: dict, phase: int) -> str:
38
- """Get action name for a phase from pre-loaded data."""
39
- next_action = data.get("next_action", [])
40
- if isinstance(next_action, list):
41
- for item in next_action:
42
- if isinstance(item, dict) and item.get("phase") == phase:
43
- return item.get("action", "unknown")
44
- return "unknown"
45
-
46
-
47
- def _phase_for_action(data: dict, action: str) -> int:
48
- """Get phase number for an action name from pre-loaded data."""
49
- next_action = data.get("next_action", [])
50
- if isinstance(next_action, list):
51
- for item in next_action:
52
- if isinstance(item, dict) and item.get("action") == action:
53
- return item.get("phase", 0)
54
- return 0
55
-
56
-
57
- # =============================================================================
58
- # Phase Functions
59
- # =============================================================================
60
-
61
- def get_current_phase(task_json: Path) -> int:
62
- """Get current phase number.
63
-
64
- Args:
65
- task_json: Path to task.json file.
66
-
67
- Returns:
68
- Current phase number, or 0 if not found.
69
- """
70
- data = read_json(task_json)
71
- if not data:
72
- return 0
73
- return data.get("current_phase", 0) or 0
74
-
75
-
76
- def get_total_phases(task_json: Path) -> int:
77
- """Get total number of phases.
78
-
79
- Args:
80
- task_json: Path to task.json file.
81
-
82
- Returns:
83
- Total phase count, or 0 if not found.
84
- """
85
- data = read_json(task_json)
86
- if not data:
87
- return 0
88
- return _total_phases(data)
89
-
90
-
91
- def get_phase_action(task_json: Path, phase: int) -> str:
92
- """Get action name for a specific phase.
93
-
94
- Args:
95
- task_json: Path to task.json file.
96
- phase: Phase number.
97
-
98
- Returns:
99
- Action name, or "unknown" if not found.
100
- """
101
- data = read_json(task_json)
102
- if not data:
103
- return "unknown"
104
- return _phase_action(data, phase)
105
-
106
-
107
- def get_phase_info(task_json: Path) -> str:
108
- """Get formatted phase info: "N/M (action)".
109
-
110
- Args:
111
- task_json: Path to task.json file.
112
-
113
- Returns:
114
- Formatted string like "1/4 (implement)".
115
- """
116
- data = read_json(task_json)
117
- if not data:
118
- return "N/A"
119
-
120
- current_phase = data.get("current_phase", 0) or 0
121
- total = _total_phases(data)
122
- action_name = _phase_action(data, current_phase)
123
-
124
- if current_phase == 0 or current_phase is None:
125
- return f"0/{total} (pending)"
126
- else:
127
- return f"{current_phase}/{total} ({action_name})"
128
-
129
-
130
- def set_phase(task_json: Path, phase: int) -> bool:
131
- """Set current phase to a specific value.
132
-
133
- Args:
134
- task_json: Path to task.json file.
135
- phase: Phase number to set.
136
-
137
- Returns:
138
- True on success, False on error.
139
- """
140
- data = read_json(task_json)
141
- if not data:
142
- return False
143
-
144
- data["current_phase"] = phase
145
- return write_json(task_json, data)
146
-
147
-
148
- def advance_phase(task_json: Path) -> bool:
149
- """Advance to next phase.
150
-
151
- Args:
152
- task_json: Path to task.json file.
153
-
154
- Returns:
155
- True on success, False on error or at final phase.
156
- """
157
- data = read_json(task_json)
158
- if not data:
159
- return False
160
-
161
- current = data.get("current_phase", 0) or 0
162
- total = _total_phases(data)
163
- next_phase = current + 1
164
-
165
- if next_phase > total:
166
- return False # Already at final phase
167
-
168
- data["current_phase"] = next_phase
169
- return write_json(task_json, data)
170
-
171
-
172
- def get_phase_for_action(task_json: Path, action: str) -> int:
173
- """Get phase number for a specific action name.
174
-
175
- Args:
176
- task_json: Path to task.json file.
177
- action: Action name.
178
-
179
- Returns:
180
- Phase number, or 0 if not found.
181
- """
182
- data = read_json(task_json)
183
- if not data:
184
- return 0
185
- return _phase_for_action(data, action)
186
-
187
-
188
- def map_subagent_to_action(subagent_type: str) -> str:
189
- """Map subagent type to action name.
190
-
191
- Used by hooks to determine which action a subagent corresponds to.
192
-
193
- Args:
194
- subagent_type: Subagent type string.
195
-
196
- Returns:
197
- Corresponding action name.
198
- """
199
- mapping = {
200
- "implement": "implement",
201
- "check": "check",
202
- "debug": "debug",
203
- "research": "research",
204
- }
205
- return mapping.get(subagent_type, subagent_type)
206
-
207
-
208
- def is_phase_completed(task_json: Path, phase: int) -> bool:
209
- """Check if a phase is completed (current_phase > phase).
210
-
211
- Args:
212
- task_json: Path to task.json file.
213
- phase: Phase number to check.
214
-
215
- Returns:
216
- True if phase is completed.
217
- """
218
- current = get_current_phase(task_json)
219
- return current > phase
220
-
221
-
222
- def is_current_action(task_json: Path, action: str) -> bool:
223
- """Check if we're at a specific action.
224
-
225
- Args:
226
- task_json: Path to task.json file.
227
- action: Action name to check.
228
-
229
- Returns:
230
- True if current phase matches the action.
231
- """
232
- data = read_json(task_json)
233
- if not data:
234
- return False
235
- current = data.get("current_phase", 0) or 0
236
- action_phase = _phase_for_action(data, action)
237
- return current == action_phase
238
-
239
-
240
- # =============================================================================
241
- # Main Entry (for testing)
242
- # =============================================================================
243
-
244
- if __name__ == "__main__":
245
- import sys
246
-
247
- if len(sys.argv) > 1:
248
- path = Path(sys.argv[1])
249
- print(f"Task JSON: {path}")
250
- print(f"Phase info: {get_phase_info(path)}")
251
- print(f"Current phase: {get_current_phase(path)}")
252
- print(f"Total phases: {get_total_phases(path)}")
253
- else:
254
- print("Usage: python3 phase.py <task.json>")
@@ -1,335 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Registry utility functions for multi-agent pipeline.
4
-
5
- Provides:
6
- registry_get_file - Get registry file path
7
- registry_get_agent_by_id - Find agent by ID
8
- registry_get_agent_by_worktree - Find agent by worktree path
9
- registry_get_task_dir - Get task dir for a worktree
10
- registry_remove_by_id - Remove agent by ID
11
- registry_remove_by_worktree - Remove agent by worktree path
12
- registry_add_agent - Add agent to registry
13
- registry_search_agent - Search agent by ID or task_dir
14
- registry_list_agents - List all agents
15
- """
16
-
17
- from __future__ import annotations
18
-
19
- from datetime import datetime
20
- from pathlib import Path
21
-
22
- from .io import read_json, write_json
23
- from .paths import get_repo_root
24
- from .worktree import get_agents_dir
25
-
26
-
27
- # =============================================================================
28
- # Internal Helpers
29
- # =============================================================================
30
-
31
- def _load_registry(
32
- repo_root: Path | None = None,
33
- ) -> tuple[Path | None, dict | None]:
34
- """Load registry file and data in one step.
35
-
36
- Returns:
37
- (registry_file_path, data_dict) — either may be None.
38
- """
39
- if repo_root is None:
40
- repo_root = get_repo_root()
41
-
42
- registry_file = registry_get_file(repo_root)
43
- if not registry_file or not registry_file.is_file():
44
- return registry_file, None
45
-
46
- data = read_json(registry_file)
47
- return registry_file, data
48
-
49
-
50
- # =============================================================================
51
- # Registry File Access
52
- # =============================================================================
53
-
54
- def registry_get_file(repo_root: Path | None = None) -> Path | None:
55
- """Get registry file path.
56
-
57
- Args:
58
- repo_root: Repository root path. Defaults to auto-detected.
59
-
60
- Returns:
61
- Path to registry.json, or None if agents dir not found.
62
- """
63
- if repo_root is None:
64
- repo_root = get_repo_root()
65
-
66
- agents_dir = get_agents_dir(repo_root)
67
- if agents_dir:
68
- return agents_dir / "registry.json"
69
- return None
70
-
71
-
72
- def _ensure_registry(repo_root: Path | None = None) -> Path | None:
73
- """Ensure registry file exists with valid structure.
74
-
75
- Args:
76
- repo_root: Repository root path. Defaults to auto-detected.
77
-
78
- Returns:
79
- Path to registry file, or None if cannot create.
80
- """
81
- if repo_root is None:
82
- repo_root = get_repo_root()
83
-
84
- registry_file = registry_get_file(repo_root)
85
- if not registry_file:
86
- return None
87
-
88
- agents_dir = registry_file.parent
89
-
90
- try:
91
- agents_dir.mkdir(parents=True, exist_ok=True)
92
-
93
- if not registry_file.exists():
94
- write_json(registry_file, {"agents": []})
95
-
96
- return registry_file
97
- except (OSError, IOError):
98
- return None
99
-
100
-
101
- # =============================================================================
102
- # Agent Lookup
103
- # =============================================================================
104
-
105
- def registry_get_agent_by_id(
106
- agent_id: str,
107
- repo_root: Path | None = None
108
- ) -> dict | None:
109
- """Get agent by ID.
110
-
111
- Args:
112
- agent_id: Agent ID.
113
- repo_root: Repository root path. Defaults to auto-detected.
114
-
115
- Returns:
116
- Agent dict, or None if not found.
117
- """
118
- _, data = _load_registry(repo_root)
119
- if not data:
120
- return None
121
-
122
- for agent in data.get("agents", []):
123
- if agent.get("id") == agent_id:
124
- return agent
125
-
126
- return None
127
-
128
-
129
- def registry_get_agent_by_worktree(
130
- worktree_path: str,
131
- repo_root: Path | None = None
132
- ) -> dict | None:
133
- """Get agent by worktree path.
134
-
135
- Args:
136
- worktree_path: Worktree path.
137
- repo_root: Repository root path. Defaults to auto-detected.
138
-
139
- Returns:
140
- Agent dict, or None if not found.
141
- """
142
- _, data = _load_registry(repo_root)
143
- if not data:
144
- return None
145
-
146
- for agent in data.get("agents", []):
147
- if agent.get("worktree_path") == worktree_path:
148
- return agent
149
-
150
- return None
151
-
152
-
153
- def registry_search_agent(
154
- search: str,
155
- repo_root: Path | None = None
156
- ) -> dict | None:
157
- """Search agent by ID or task_dir containing search term.
158
-
159
- Args:
160
- search: Search term.
161
- repo_root: Repository root path. Defaults to auto-detected.
162
-
163
- Returns:
164
- First matching agent dict, or None if not found.
165
- """
166
- _, data = _load_registry(repo_root)
167
- if not data:
168
- return None
169
-
170
- for agent in data.get("agents", []):
171
- # Exact ID match
172
- if agent.get("id") == search:
173
- return agent
174
- # Partial match on task_dir
175
- task_dir = agent.get("task_dir", "")
176
- if search in task_dir:
177
- return agent
178
-
179
- return None
180
-
181
-
182
- def registry_get_task_dir(
183
- worktree_path: str,
184
- repo_root: Path | None = None
185
- ) -> str | None:
186
- """Get task directory for a worktree.
187
-
188
- Args:
189
- worktree_path: Worktree path.
190
- repo_root: Repository root path. Defaults to auto-detected.
191
-
192
- Returns:
193
- Task directory path, or None if not found.
194
- """
195
- _, data = _load_registry(repo_root)
196
- if not data:
197
- return None
198
-
199
- for agent in data.get("agents", []):
200
- if agent.get("worktree_path") == worktree_path:
201
- return agent.get("task_dir")
202
-
203
- return None
204
-
205
-
206
- # =============================================================================
207
- # Agent Modification
208
- # =============================================================================
209
-
210
- def registry_remove_by_id(agent_id: str, repo_root: Path | None = None) -> bool:
211
- """Remove agent by ID.
212
-
213
- Args:
214
- agent_id: Agent ID.
215
- repo_root: Repository root path. Defaults to auto-detected.
216
-
217
- Returns:
218
- True on success.
219
- """
220
- registry_file, data = _load_registry(repo_root)
221
- if not registry_file or not data:
222
- return True # Nothing to remove
223
-
224
- agents = data.get("agents", [])
225
- data["agents"] = [a for a in agents if a.get("id") != agent_id]
226
-
227
- return write_json(registry_file, data)
228
-
229
-
230
- def registry_remove_by_worktree(
231
- worktree_path: str,
232
- repo_root: Path | None = None
233
- ) -> bool:
234
- """Remove agent by worktree path.
235
-
236
- Args:
237
- worktree_path: Worktree path.
238
- repo_root: Repository root path. Defaults to auto-detected.
239
-
240
- Returns:
241
- True on success.
242
- """
243
- registry_file, data = _load_registry(repo_root)
244
- if not registry_file or not data:
245
- return True # Nothing to remove
246
-
247
- agents = data.get("agents", [])
248
- data["agents"] = [a for a in agents if a.get("worktree_path") != worktree_path]
249
-
250
- return write_json(registry_file, data)
251
-
252
-
253
- def registry_add_agent(
254
- agent_id: str,
255
- worktree_path: str,
256
- pid: int,
257
- task_dir: str,
258
- repo_root: Path | None = None,
259
- platform: str = "claude",
260
- ) -> bool:
261
- """Add agent to registry (replaces if same ID exists).
262
-
263
- Args:
264
- agent_id: Agent ID.
265
- worktree_path: Worktree path.
266
- pid: Process ID.
267
- task_dir: Task directory path.
268
- repo_root: Repository root path. Defaults to auto-detected.
269
- platform: Platform used (e.g., 'claude', 'opencode', 'codex', 'kiro', 'antigravity'). Defaults to 'claude'.
270
-
271
- Returns:
272
- True on success.
273
- """
274
- if repo_root is None:
275
- repo_root = get_repo_root()
276
-
277
- registry_file = _ensure_registry(repo_root)
278
- if not registry_file:
279
- return False
280
-
281
- data = read_json(registry_file)
282
- if not data:
283
- data = {"agents": []}
284
-
285
- # Remove existing agent with same ID
286
- agents = data.get("agents", [])
287
- agents = [a for a in agents if a.get("id") != agent_id]
288
-
289
- # Create new agent record
290
- started_at = datetime.now().isoformat()
291
- new_agent = {
292
- "id": agent_id,
293
- "worktree_path": worktree_path,
294
- "pid": pid,
295
- "started_at": started_at,
296
- "task_dir": task_dir,
297
- "platform": platform,
298
- }
299
-
300
- agents.append(new_agent)
301
- data["agents"] = agents
302
-
303
- return write_json(registry_file, data)
304
-
305
-
306
- def registry_list_agents(repo_root: Path | None = None) -> list[dict]:
307
- """List all agents.
308
-
309
- Args:
310
- repo_root: Repository root path. Defaults to auto-detected.
311
-
312
- Returns:
313
- List of agent dicts.
314
- """
315
- _, data = _load_registry(repo_root)
316
- if not data:
317
- return []
318
-
319
- return data.get("agents", [])
320
-
321
-
322
- # =============================================================================
323
- # Main Entry (for testing)
324
- # =============================================================================
325
-
326
- if __name__ == "__main__":
327
- import json as json_mod
328
-
329
- repo = get_repo_root()
330
- print(f"Repository root: {repo}")
331
- print(f"Registry file: {registry_get_file(repo)}")
332
- print()
333
- print("Agents:")
334
- agents = registry_list_agents(repo)
335
- print(json_mod.dumps(agents, indent=2))