@mindfoldhq/trellis 0.4.0 → 0.5.0-beta.10

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 (427) 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 +10 -1
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +382 -120
  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 +178 -61
  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 +146 -100
  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 +7 -25
  56. package/dist/configurators/opencode.d.ts.map +1 -1
  57. package/dist/configurators/opencode.js +57 -56
  58. package/dist/configurators/opencode.js.map +1 -1
  59. package/dist/configurators/qoder.d.ts +6 -3
  60. package/dist/configurators/qoder.d.ts.map +1 -1
  61. package/dist/configurators/qoder.js +27 -46
  62. package/dist/configurators/qoder.js.map +1 -1
  63. package/dist/configurators/shared.d.ts +68 -3
  64. package/dist/configurators/shared.d.ts.map +1 -1
  65. package/dist/configurators/shared.js +274 -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 +1646 -0
  77. package/dist/migrations/manifests/0.5.0-beta.1.json +9 -0
  78. package/dist/migrations/manifests/0.5.0-beta.2.json +9 -0
  79. package/dist/migrations/manifests/0.5.0-beta.3.json +9 -0
  80. package/dist/migrations/manifests/0.5.0-beta.4.json +9 -0
  81. package/dist/migrations/manifests/0.5.0-beta.5.json +222 -0
  82. package/dist/migrations/manifests/0.5.0-beta.6.json +9 -0
  83. package/dist/migrations/manifests/0.5.0-beta.7.json +9 -0
  84. package/dist/migrations/manifests/0.5.0-beta.8.json +9 -0
  85. package/dist/migrations/manifests/0.5.0-beta.9.json +48 -0
  86. package/dist/templates/claude/agents/{check.md → trellis-check.md} +3 -31
  87. package/dist/templates/claude/agents/{implement.md → trellis-implement.md} +1 -2
  88. package/dist/templates/claude/agents/trellis-research.md +137 -0
  89. package/dist/templates/claude/index.d.ts +5 -37
  90. package/dist/templates/claude/index.d.ts.map +1 -1
  91. package/dist/templates/claude/index.js +3 -42
  92. package/dist/templates/claude/index.js.map +1 -1
  93. package/dist/templates/claude/settings.json +6 -4
  94. package/dist/templates/{iflow/agents/check.md → codebuddy/agents/trellis-check.md} +3 -31
  95. package/dist/templates/{iflow/agents/implement.md → codebuddy/agents/trellis-implement.md} +1 -2
  96. package/dist/templates/codebuddy/agents/trellis-research.md +137 -0
  97. package/dist/templates/codebuddy/index.d.ts +6 -16
  98. package/dist/templates/codebuddy/index.d.ts.map +1 -1
  99. package/dist/templates/codebuddy/index.js +6 -36
  100. package/dist/templates/codebuddy/index.js.map +1 -1
  101. package/dist/templates/codebuddy/settings.json +59 -0
  102. package/dist/templates/codex/agents/trellis-check.toml +38 -0
  103. package/dist/templates/codex/agents/{implement.toml → trellis-implement.toml} +1 -1
  104. package/dist/templates/codex/agents/trellis-research.toml +60 -0
  105. package/dist/templates/codex/config.toml +10 -0
  106. package/dist/templates/codex/hooks/session-start.py +65 -29
  107. package/dist/templates/codex/hooks.json +11 -0
  108. package/dist/templates/codex/index.d.ts +0 -1
  109. package/dist/templates/codex/index.d.ts.map +1 -1
  110. package/dist/templates/codex/index.js +1 -8
  111. package/dist/templates/codex/index.js.map +1 -1
  112. package/dist/templates/codex/skills/start/SKILL.md +1 -1
  113. package/dist/templates/common/commands/continue.md +51 -0
  114. package/dist/templates/common/commands/finish-work.md +32 -0
  115. package/dist/templates/common/commands/start.md +56 -0
  116. package/dist/templates/common/index.d.ts +28 -0
  117. package/dist/templates/common/index.d.ts.map +1 -0
  118. package/dist/templates/common/index.js +55 -0
  119. package/dist/templates/common/index.js.map +1 -0
  120. package/dist/templates/{droid/commands/trellis → common/skills}/brainstorm.md +51 -12
  121. package/dist/templates/{iflow/commands/trellis → common/skills}/break-loop.md +4 -4
  122. package/dist/templates/common/skills/check.md +87 -0
  123. package/dist/templates/{codebuddy/commands/trellis → common/skills}/update-spec.md +18 -21
  124. package/dist/templates/copilot/hooks/session-start.py +65 -29
  125. package/dist/templates/copilot/hooks.json +8 -0
  126. package/dist/templates/copilot/prompts/start.prompt.md +13 -16
  127. package/dist/templates/cursor/agents/trellis-check.md +94 -0
  128. package/dist/templates/cursor/agents/trellis-implement.md +94 -0
  129. package/dist/templates/cursor/agents/trellis-research.md +137 -0
  130. package/dist/templates/cursor/hooks.json +24 -0
  131. package/dist/templates/cursor/index.d.ts +6 -17
  132. package/dist/templates/cursor/index.d.ts.map +1 -1
  133. package/dist/templates/cursor/index.js +6 -37
  134. package/dist/templates/cursor/index.js.map +1 -1
  135. package/dist/templates/droid/droids/trellis-check.md +94 -0
  136. package/dist/templates/droid/droids/trellis-implement.md +94 -0
  137. package/dist/templates/droid/droids/trellis-research.md +137 -0
  138. package/dist/templates/droid/index.d.ts +7 -19
  139. package/dist/templates/droid/index.d.ts.map +1 -1
  140. package/dist/templates/droid/index.js +7 -39
  141. package/dist/templates/droid/index.js.map +1 -1
  142. package/dist/templates/droid/settings.json +59 -0
  143. package/dist/templates/extract.d.ts +7 -193
  144. package/dist/templates/extract.d.ts.map +1 -1
  145. package/dist/templates/extract.js +7 -310
  146. package/dist/templates/extract.js.map +1 -1
  147. package/dist/templates/gemini/agents/trellis-check.md +94 -0
  148. package/dist/templates/gemini/agents/trellis-implement.md +94 -0
  149. package/dist/templates/gemini/agents/trellis-research.md +137 -0
  150. package/dist/templates/gemini/index.d.ts +6 -14
  151. package/dist/templates/gemini/index.d.ts.map +1 -1
  152. package/dist/templates/gemini/index.js +6 -37
  153. package/dist/templates/gemini/index.js.map +1 -1
  154. package/dist/templates/gemini/settings.json +28 -0
  155. package/dist/templates/kiro/agents/trellis-check.json +13 -0
  156. package/dist/templates/kiro/agents/trellis-implement.json +13 -0
  157. package/dist/templates/kiro/agents/trellis-research.json +21 -0
  158. package/dist/templates/kiro/index.d.ts +11 -11
  159. package/dist/templates/kiro/index.d.ts.map +1 -1
  160. package/dist/templates/kiro/index.js +11 -33
  161. package/dist/templates/kiro/index.js.map +1 -1
  162. package/dist/templates/opencode/agents/{check.md → trellis-check.md} +3 -30
  163. package/dist/templates/opencode/agents/{implement.md → trellis-implement.md} +1 -1
  164. package/dist/templates/opencode/agents/{research.md → trellis-research.md} +1 -2
  165. package/dist/templates/opencode/plugins/inject-subagent-context.js +18 -190
  166. package/dist/templates/opencode/plugins/inject-workflow-state.js +172 -0
  167. package/dist/templates/opencode/plugins/session-start.js +76 -39
  168. package/dist/templates/qoder/agents/trellis-check.md +94 -0
  169. package/dist/templates/qoder/agents/trellis-implement.md +94 -0
  170. package/dist/templates/qoder/agents/trellis-research.md +137 -0
  171. package/dist/templates/qoder/index.d.ts +7 -10
  172. package/dist/templates/qoder/index.d.ts.map +1 -1
  173. package/dist/templates/qoder/index.js +7 -32
  174. package/dist/templates/qoder/index.js.map +1 -1
  175. package/dist/templates/qoder/settings.json +47 -0
  176. package/dist/templates/shared-hooks/index.d.ts +19 -0
  177. package/dist/templates/shared-hooks/index.d.ts.map +1 -0
  178. package/dist/templates/shared-hooks/index.js +30 -0
  179. package/dist/templates/shared-hooks/index.js.map +1 -0
  180. package/dist/templates/{iflow/hooks → shared-hooks}/inject-subagent-context.py +77 -266
  181. package/dist/templates/shared-hooks/inject-workflow-state.py +244 -0
  182. package/dist/templates/{claude/hooks → shared-hooks}/session-start.py +172 -55
  183. package/dist/templates/template-utils.d.ts +26 -0
  184. package/dist/templates/template-utils.d.ts.map +1 -0
  185. package/dist/templates/template-utils.js +60 -0
  186. package/dist/templates/template-utils.js.map +1 -0
  187. package/dist/templates/trellis/config.yaml +6 -0
  188. package/dist/templates/trellis/index.d.ts +1 -15
  189. package/dist/templates/trellis/index.d.ts.map +1 -1
  190. package/dist/templates/trellis/index.js +2 -29
  191. package/dist/templates/trellis/index.js.map +1 -1
  192. package/dist/templates/trellis/scripts/common/cli_adapter.py +31 -8
  193. package/dist/templates/trellis/scripts/common/config.py +126 -1
  194. package/dist/templates/trellis/scripts/common/git_context.py +25 -2
  195. package/dist/templates/trellis/scripts/common/task_context.py +23 -28
  196. package/dist/templates/trellis/scripts/common/task_store.py +0 -12
  197. package/dist/templates/trellis/scripts/common/types.py +0 -2
  198. package/dist/templates/trellis/scripts/common/workflow_phase.py +176 -0
  199. package/dist/templates/trellis/scripts/task.py +13 -35
  200. package/dist/templates/trellis/workflow.md +283 -298
  201. package/dist/types/ai-tools.d.ts +30 -3
  202. package/dist/types/ai-tools.d.ts.map +1 -1
  203. package/dist/types/ai-tools.js +119 -15
  204. package/dist/types/ai-tools.js.map +1 -1
  205. package/dist/types/migration.d.ts +8 -1
  206. package/dist/types/migration.d.ts.map +1 -1
  207. package/dist/utils/project-detector.d.ts +2 -0
  208. package/dist/utils/project-detector.d.ts.map +1 -1
  209. package/dist/utils/project-detector.js +120 -11
  210. package/dist/utils/project-detector.js.map +1 -1
  211. package/dist/utils/task-json.d.ts +46 -0
  212. package/dist/utils/task-json.d.ts.map +1 -0
  213. package/dist/utils/task-json.js +49 -0
  214. package/dist/utils/task-json.js.map +1 -0
  215. package/package.json +3 -2
  216. package/dist/configurators/iflow.d.ts +0 -33
  217. package/dist/configurators/iflow.d.ts.map +0 -1
  218. package/dist/configurators/iflow.js +0 -99
  219. package/dist/configurators/iflow.js.map +0 -1
  220. package/dist/templates/antigravity/index.d.ts +0 -12
  221. package/dist/templates/antigravity/index.d.ts.map +0 -1
  222. package/dist/templates/antigravity/index.js +0 -29
  223. package/dist/templates/antigravity/index.js.map +0 -1
  224. package/dist/templates/claude/agents/debug.md +0 -106
  225. package/dist/templates/claude/agents/dispatch.md +0 -213
  226. package/dist/templates/claude/agents/plan.md +0 -396
  227. package/dist/templates/claude/agents/research.md +0 -120
  228. package/dist/templates/claude/commands/trellis/brainstorm.md +0 -487
  229. package/dist/templates/claude/commands/trellis/break-loop.md +0 -125
  230. package/dist/templates/claude/commands/trellis/check-cross-layer.md +0 -153
  231. package/dist/templates/claude/commands/trellis/check.md +0 -25
  232. package/dist/templates/claude/commands/trellis/create-command.md +0 -154
  233. package/dist/templates/claude/commands/trellis/finish-work.md +0 -153
  234. package/dist/templates/claude/commands/trellis/integrate-skill.md +0 -219
  235. package/dist/templates/claude/commands/trellis/onboard.md +0 -358
  236. package/dist/templates/claude/commands/trellis/parallel.md +0 -192
  237. package/dist/templates/claude/commands/trellis/record-session.md +0 -62
  238. package/dist/templates/claude/commands/trellis/start.md +0 -393
  239. package/dist/templates/claude/commands/trellis/update-spec.md +0 -354
  240. package/dist/templates/claude/hooks/inject-subagent-context.py +0 -803
  241. package/dist/templates/claude/hooks/ralph-loop.py +0 -396
  242. package/dist/templates/codebuddy/commands/trellis/before-dev.md +0 -29
  243. package/dist/templates/codebuddy/commands/trellis/brainstorm.md +0 -487
  244. package/dist/templates/codebuddy/commands/trellis/break-loop.md +0 -107
  245. package/dist/templates/codebuddy/commands/trellis/check-cross-layer.md +0 -153
  246. package/dist/templates/codebuddy/commands/trellis/check.md +0 -25
  247. package/dist/templates/codebuddy/commands/trellis/create-command.md +0 -154
  248. package/dist/templates/codebuddy/commands/trellis/finish-work.md +0 -143
  249. package/dist/templates/codebuddy/commands/trellis/integrate-skill.md +0 -219
  250. package/dist/templates/codebuddy/commands/trellis/onboard.md +0 -358
  251. package/dist/templates/codebuddy/commands/trellis/record-session.md +0 -61
  252. package/dist/templates/codebuddy/commands/trellis/start.md +0 -373
  253. package/dist/templates/codex/agents/check.toml +0 -23
  254. package/dist/templates/codex/agents/research.toml +0 -26
  255. package/dist/templates/codex/codex-skills/parallel/SKILL.md +0 -194
  256. package/dist/templates/cursor/commands/trellis-before-dev.md +0 -29
  257. package/dist/templates/cursor/commands/trellis-brainstorm.md +0 -487
  258. package/dist/templates/cursor/commands/trellis-break-loop.md +0 -107
  259. package/dist/templates/cursor/commands/trellis-check-cross-layer.md +0 -153
  260. package/dist/templates/cursor/commands/trellis-check.md +0 -25
  261. package/dist/templates/cursor/commands/trellis-create-command.md +0 -154
  262. package/dist/templates/cursor/commands/trellis-finish-work.md +0 -143
  263. package/dist/templates/cursor/commands/trellis-integrate-skill.md +0 -219
  264. package/dist/templates/cursor/commands/trellis-onboard.md +0 -358
  265. package/dist/templates/cursor/commands/trellis-record-session.md +0 -62
  266. package/dist/templates/cursor/commands/trellis-start.md +0 -373
  267. package/dist/templates/cursor/commands/trellis-update-spec.md +0 -354
  268. package/dist/templates/droid/commands/trellis/before-dev.md +0 -33
  269. package/dist/templates/droid/commands/trellis/break-loop.md +0 -111
  270. package/dist/templates/droid/commands/trellis/check-cross-layer.md +0 -157
  271. package/dist/templates/droid/commands/trellis/check.md +0 -29
  272. package/dist/templates/droid/commands/trellis/create-command.md +0 -158
  273. package/dist/templates/droid/commands/trellis/finish-work.md +0 -147
  274. package/dist/templates/droid/commands/trellis/integrate-skill.md +0 -223
  275. package/dist/templates/droid/commands/trellis/onboard.md +0 -362
  276. package/dist/templates/droid/commands/trellis/record-session.md +0 -66
  277. package/dist/templates/droid/commands/trellis/start.md +0 -377
  278. package/dist/templates/droid/commands/trellis/update-spec.md +0 -358
  279. package/dist/templates/gemini/commands/trellis/before-dev.toml +0 -33
  280. package/dist/templates/gemini/commands/trellis/brainstorm.toml +0 -435
  281. package/dist/templates/gemini/commands/trellis/break-loop.toml +0 -129
  282. package/dist/templates/gemini/commands/trellis/check-cross-layer.toml +0 -147
  283. package/dist/templates/gemini/commands/trellis/check.toml +0 -29
  284. package/dist/templates/gemini/commands/trellis/create-command.toml +0 -119
  285. package/dist/templates/gemini/commands/trellis/finish-work.toml +0 -133
  286. package/dist/templates/gemini/commands/trellis/integrate-skill.toml +0 -104
  287. package/dist/templates/gemini/commands/trellis/onboard.toml +0 -111
  288. package/dist/templates/gemini/commands/trellis/record-session.toml +0 -66
  289. package/dist/templates/gemini/commands/trellis/start.toml +0 -354
  290. package/dist/templates/gemini/commands/trellis/update-spec.toml +0 -132
  291. package/dist/templates/iflow/agents/debug.md +0 -106
  292. package/dist/templates/iflow/agents/dispatch.md +0 -213
  293. package/dist/templates/iflow/agents/plan.md +0 -396
  294. package/dist/templates/iflow/agents/research.md +0 -120
  295. package/dist/templates/iflow/commands/trellis/before-dev.md +0 -29
  296. package/dist/templates/iflow/commands/trellis/brainstorm.md +0 -487
  297. package/dist/templates/iflow/commands/trellis/check-cross-layer.md +0 -153
  298. package/dist/templates/iflow/commands/trellis/check.md +0 -25
  299. package/dist/templates/iflow/commands/trellis/create-command.md +0 -152
  300. package/dist/templates/iflow/commands/trellis/finish-work.md +0 -153
  301. package/dist/templates/iflow/commands/trellis/integrate-skill.md +0 -219
  302. package/dist/templates/iflow/commands/trellis/onboard.md +0 -358
  303. package/dist/templates/iflow/commands/trellis/parallel.md +0 -192
  304. package/dist/templates/iflow/commands/trellis/record-session.md +0 -62
  305. package/dist/templates/iflow/commands/trellis/start.md +0 -393
  306. package/dist/templates/iflow/commands/trellis/update-spec.md +0 -354
  307. package/dist/templates/iflow/hooks/ralph-loop.py +0 -395
  308. package/dist/templates/iflow/hooks/session-start.py +0 -403
  309. package/dist/templates/iflow/index.d.ts +0 -54
  310. package/dist/templates/iflow/index.d.ts.map +0 -1
  311. package/dist/templates/iflow/index.js +0 -85
  312. package/dist/templates/iflow/index.js.map +0 -1
  313. package/dist/templates/iflow/settings.json +0 -60
  314. package/dist/templates/kilo/index.d.ts +0 -16
  315. package/dist/templates/kilo/index.d.ts.map +0 -1
  316. package/dist/templates/kilo/index.js +0 -39
  317. package/dist/templates/kilo/index.js.map +0 -1
  318. package/dist/templates/kilo/workflows/before-dev.md +0 -29
  319. package/dist/templates/kilo/workflows/brainstorm.md +0 -487
  320. package/dist/templates/kilo/workflows/break-loop.md +0 -125
  321. package/dist/templates/kilo/workflows/check-cross-layer.md +0 -153
  322. package/dist/templates/kilo/workflows/check.md +0 -25
  323. package/dist/templates/kilo/workflows/create-command.md +0 -152
  324. package/dist/templates/kilo/workflows/finish-work.md +0 -129
  325. package/dist/templates/kilo/workflows/integrate-skill.md +0 -219
  326. package/dist/templates/kilo/workflows/onboard.md +0 -358
  327. package/dist/templates/kilo/workflows/parallel.md +0 -193
  328. package/dist/templates/kilo/workflows/record-session.md +0 -62
  329. package/dist/templates/kilo/workflows/start.md +0 -387
  330. package/dist/templates/kilo/workflows/update-spec.md +0 -285
  331. package/dist/templates/kiro/skills/before-dev/SKILL.md +0 -34
  332. package/dist/templates/kiro/skills/brainstorm/SKILL.md +0 -492
  333. package/dist/templates/kiro/skills/break-loop/SKILL.md +0 -130
  334. package/dist/templates/kiro/skills/check/SKILL.md +0 -30
  335. package/dist/templates/kiro/skills/check-cross-layer/SKILL.md +0 -158
  336. package/dist/templates/kiro/skills/create-command/SKILL.md +0 -101
  337. package/dist/templates/kiro/skills/finish-work/SKILL.md +0 -148
  338. package/dist/templates/kiro/skills/integrate-skill/SKILL.md +0 -221
  339. package/dist/templates/kiro/skills/onboard/SKILL.md +0 -363
  340. package/dist/templates/kiro/skills/record-session/SKILL.md +0 -67
  341. package/dist/templates/kiro/skills/start/SKILL.md +0 -351
  342. package/dist/templates/kiro/skills/update-spec/SKILL.md +0 -335
  343. package/dist/templates/markdown/spec/backend/directory-structure.md +0 -292
  344. package/dist/templates/markdown/spec/backend/index.md +0 -40
  345. package/dist/templates/markdown/spec/backend/script-conventions.md +0 -742
  346. package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md +0 -118
  347. package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md +0 -394
  348. package/dist/templates/opencode/agents/debug.md +0 -129
  349. package/dist/templates/opencode/agents/dispatch.md +0 -223
  350. package/dist/templates/opencode/agents/trellis-plan.md +0 -427
  351. package/dist/templates/opencode/commands/trellis/before-dev.md +0 -29
  352. package/dist/templates/opencode/commands/trellis/brainstorm.md +0 -487
  353. package/dist/templates/opencode/commands/trellis/break-loop.md +0 -125
  354. package/dist/templates/opencode/commands/trellis/check-cross-layer.md +0 -153
  355. package/dist/templates/opencode/commands/trellis/check.md +0 -25
  356. package/dist/templates/opencode/commands/trellis/create-command.md +0 -154
  357. package/dist/templates/opencode/commands/trellis/finish-work.md +0 -144
  358. package/dist/templates/opencode/commands/trellis/integrate-skill.md +0 -219
  359. package/dist/templates/opencode/commands/trellis/migrate-specs.md +0 -0
  360. package/dist/templates/opencode/commands/trellis/onboard.md +0 -358
  361. package/dist/templates/opencode/commands/trellis/parallel.md +0 -193
  362. package/dist/templates/opencode/commands/trellis/record-session.md +0 -62
  363. package/dist/templates/opencode/commands/trellis/start.md +0 -351
  364. package/dist/templates/opencode/commands/trellis/update-spec.md +0 -354
  365. package/dist/templates/qoder/skills/before-dev/SKILL.md +0 -34
  366. package/dist/templates/qoder/skills/brainstorm/SKILL.md +0 -492
  367. package/dist/templates/qoder/skills/break-loop/SKILL.md +0 -130
  368. package/dist/templates/qoder/skills/check/SKILL.md +0 -30
  369. package/dist/templates/qoder/skills/check-cross-layer/SKILL.md +0 -158
  370. package/dist/templates/qoder/skills/create-command/SKILL.md +0 -101
  371. package/dist/templates/qoder/skills/finish-work/SKILL.md +0 -134
  372. package/dist/templates/qoder/skills/integrate-skill/SKILL.md +0 -221
  373. package/dist/templates/qoder/skills/onboard/SKILL.md +0 -363
  374. package/dist/templates/qoder/skills/record-session/SKILL.md +0 -67
  375. package/dist/templates/qoder/skills/start/SKILL.md +0 -388
  376. package/dist/templates/qoder/skills/update-spec/SKILL.md +0 -290
  377. package/dist/templates/trellis/scripts/common/phase.py +0 -254
  378. package/dist/templates/trellis/scripts/common/registry.py +0 -335
  379. package/dist/templates/trellis/scripts/common/worktree.py +0 -305
  380. package/dist/templates/trellis/scripts/create_bootstrap.py +0 -298
  381. package/dist/templates/trellis/scripts/multi_agent/__init__.py +0 -5
  382. package/dist/templates/trellis/scripts/multi_agent/_bootstrap.py +0 -17
  383. package/dist/templates/trellis/scripts/multi_agent/cleanup.py +0 -398
  384. package/dist/templates/trellis/scripts/multi_agent/create_pr.py +0 -620
  385. package/dist/templates/trellis/scripts/multi_agent/plan.py +0 -213
  386. package/dist/templates/trellis/scripts/multi_agent/start.py +0 -539
  387. package/dist/templates/trellis/scripts/multi_agent/status.py +0 -76
  388. package/dist/templates/trellis/scripts/multi_agent/status_display.py +0 -542
  389. package/dist/templates/trellis/scripts/multi_agent/status_monitor.py +0 -225
  390. package/dist/templates/trellis/scripts-shell-archive/add-session.sh +0 -384
  391. package/dist/templates/trellis/scripts-shell-archive/common/developer.sh +0 -129
  392. package/dist/templates/trellis/scripts-shell-archive/common/git-context.sh +0 -263
  393. package/dist/templates/trellis/scripts-shell-archive/common/paths.sh +0 -208
  394. package/dist/templates/trellis/scripts-shell-archive/common/phase.sh +0 -150
  395. package/dist/templates/trellis/scripts-shell-archive/common/registry.sh +0 -247
  396. package/dist/templates/trellis/scripts-shell-archive/common/task-queue.sh +0 -142
  397. package/dist/templates/trellis/scripts-shell-archive/common/task-utils.sh +0 -151
  398. package/dist/templates/trellis/scripts-shell-archive/common/worktree.sh +0 -128
  399. package/dist/templates/trellis/scripts-shell-archive/create-bootstrap.sh +0 -299
  400. package/dist/templates/trellis/scripts-shell-archive/get-context.sh +0 -7
  401. package/dist/templates/trellis/scripts-shell-archive/get-developer.sh +0 -15
  402. package/dist/templates/trellis/scripts-shell-archive/init-developer.sh +0 -34
  403. package/dist/templates/trellis/scripts-shell-archive/multi-agent/cleanup.sh +0 -396
  404. package/dist/templates/trellis/scripts-shell-archive/multi-agent/create-pr.sh +0 -241
  405. package/dist/templates/trellis/scripts-shell-archive/multi-agent/plan.sh +0 -207
  406. package/dist/templates/trellis/scripts-shell-archive/multi-agent/start.sh +0 -317
  407. package/dist/templates/trellis/scripts-shell-archive/multi-agent/status.sh +0 -828
  408. package/dist/templates/trellis/scripts-shell-archive/task.sh +0 -1204
  409. package/dist/templates/trellis/worktree.yaml +0 -47
  410. package/dist/templates/windsurf/index.d.ts +0 -21
  411. package/dist/templates/windsurf/index.d.ts.map +0 -1
  412. package/dist/templates/windsurf/index.js +0 -44
  413. package/dist/templates/windsurf/index.js.map +0 -1
  414. package/dist/templates/windsurf/workflows/trellis-before-dev.md +0 -31
  415. package/dist/templates/windsurf/workflows/trellis-brainstorm.md +0 -491
  416. package/dist/templates/windsurf/workflows/trellis-break-loop.md +0 -111
  417. package/dist/templates/windsurf/workflows/trellis-check-cross-layer.md +0 -157
  418. package/dist/templates/windsurf/workflows/trellis-check.md +0 -27
  419. package/dist/templates/windsurf/workflows/trellis-create-command.md +0 -154
  420. package/dist/templates/windsurf/workflows/trellis-finish-work.md +0 -147
  421. package/dist/templates/windsurf/workflows/trellis-integrate-skill.md +0 -220
  422. package/dist/templates/windsurf/workflows/trellis-onboard.md +0 -362
  423. package/dist/templates/windsurf/workflows/trellis-record-session.md +0 -66
  424. package/dist/templates/windsurf/workflows/trellis-start.md +0 -373
  425. package/dist/templates/windsurf/workflows/trellis-update-spec.md +0 -358
  426. /package/dist/templates/{claude/commands/trellis → common/skills}/before-dev.md +0 -0
  427. /package/dist/templates/{claude/hooks → shared-hooks}/statusline.py +0 -0
@@ -1,129 +0,0 @@
1
- #!/bin/bash
2
- # Developer management utilities
3
- #
4
- # Usage: source this file in other scripts
5
- # source "$(dirname "$0")/common/developer.sh"
6
- #
7
- # Provides:
8
- # init_developer - Initialize developer
9
- # ensure_developer - Ensure developer is initialized (exit if not)
10
- # show_developer_info - Show developer information
11
-
12
- # Ensure paths.sh is loaded
13
- if ! type get_repo_root &>/dev/null; then
14
- source "$(dirname "${BASH_SOURCE[0]}")/paths.sh"
15
- fi
16
-
17
- # =============================================================================
18
- # Developer Initialization
19
- # =============================================================================
20
-
21
- init_developer() {
22
- local name="$1"
23
- local repo_root="${2:-$(get_repo_root)}"
24
-
25
- if [[ -z "$name" ]]; then
26
- echo "Error: developer name is required" >&2
27
- return 1
28
- fi
29
-
30
- local dev_file="$repo_root/$DIR_WORKFLOW/$FILE_DEVELOPER"
31
- local workspace_dir="$repo_root/$DIR_WORKFLOW/$DIR_WORKSPACE/$name"
32
-
33
- # Create .developer file
34
- cat > "$dev_file" << EOF
35
- name=$name
36
- initialized_at=$(date -Iseconds)
37
- EOF
38
-
39
- # Create workspace directory structure
40
- mkdir -p "$workspace_dir"
41
-
42
- # Create initial journal file
43
- local journal_file="$workspace_dir/${FILE_JOURNAL_PREFIX}1.md"
44
- if [[ ! -f "$journal_file" ]]; then
45
- cat > "$journal_file" << JOURNAL_EOF
46
- # Journal - $name (Part 1)
47
-
48
- > AI development session journal
49
- > Started: $(date +%Y-%m-%d)
50
-
51
- ---
52
-
53
- JOURNAL_EOF
54
- fi
55
-
56
- # Create index.md with markers for auto-update
57
- local index_file="$workspace_dir/index.md"
58
- if [[ ! -f "$index_file" ]]; then
59
- cat > "$index_file" << INDEX_EOF
60
- # Workspace Index - $name
61
-
62
- > Journal tracking for AI development sessions.
63
-
64
- ---
65
-
66
- ## Current Status
67
-
68
- <!-- @@@auto:current-status -->
69
- - **Active File**: \`journal-1.md\`
70
- - **Total Sessions**: 0
71
- - **Last Active**: -
72
- <!-- @@@/auto:current-status -->
73
-
74
- ---
75
-
76
- ## Active Documents
77
-
78
- <!-- @@@auto:active-documents -->
79
- | File | Lines | Status |
80
- |------|-------|--------|
81
- | \`journal-1.md\` | ~0 | Active |
82
- <!-- @@@/auto:active-documents -->
83
-
84
- ---
85
-
86
- ## Session History
87
-
88
- <!-- @@@auto:session-history -->
89
- | # | Date | Title | Commits |
90
- |---|------|-------|---------|
91
- <!-- @@@/auto:session-history -->
92
-
93
- ---
94
-
95
- ## Notes
96
-
97
- - Sessions are appended to journal files
98
- - New journal file created when current exceeds 2000 lines
99
- - Use \`add-session.sh\` to record sessions
100
- INDEX_EOF
101
- fi
102
-
103
- echo "Developer initialized: $name"
104
- echo " .developer file: $dev_file"
105
- echo " Workspace dir: $workspace_dir"
106
- }
107
-
108
- ensure_developer() {
109
- local repo_root="${1:-$(get_repo_root)}"
110
-
111
- if ! check_developer "$repo_root"; then
112
- echo "Error: Developer not initialized." >&2
113
- echo "Run: ./.trellis/scripts/init-developer.sh <your-name>" >&2
114
- exit 1
115
- fi
116
- }
117
-
118
- show_developer_info() {
119
- local repo_root="${1:-$(get_repo_root)}"
120
- local developer=$(get_developer "$repo_root")
121
-
122
- if [[ -z "$developer" ]]; then
123
- echo "Developer: (not initialized)"
124
- else
125
- echo "Developer: $developer"
126
- echo "Workspace: $DIR_WORKFLOW/$DIR_WORKSPACE/$developer/"
127
- echo "Tasks: $DIR_WORKFLOW/$DIR_TASKS/"
128
- fi
129
- }
@@ -1,263 +0,0 @@
1
- #!/bin/bash
2
- # Git and Session Context utilities
3
- #
4
- # Usage:
5
- # ./.trellis/scripts/common/git-context.sh # Full context output
6
- # ./.trellis/scripts/common/git-context.sh --json # JSON format
7
- #
8
- # Or source in other scripts:
9
- # source "$(dirname "$0")/common/git-context.sh"
10
-
11
- set -e
12
-
13
- COMMON_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
14
- source "$COMMON_DIR/paths.sh"
15
- source "$COMMON_DIR/developer.sh"
16
-
17
- # =============================================================================
18
- # JSON Output
19
- # =============================================================================
20
-
21
- output_json() {
22
- local repo_root=$(get_repo_root)
23
- local developer=$(get_developer "$repo_root")
24
- local tasks_dir=$(get_tasks_dir "$repo_root")
25
- local journal_file=$(get_active_journal_file "$repo_root")
26
- local journal_lines=0
27
- local journal_relative=""
28
-
29
- if [[ -n "$journal_file" ]]; then
30
- journal_lines=$(count_lines "$journal_file")
31
- journal_relative="$DIR_WORKFLOW/$DIR_WORKSPACE/$developer/$(basename "$journal_file")"
32
- fi
33
-
34
- local branch=$(git branch --show-current 2>/dev/null || echo "unknown")
35
- local git_status=$(git status --porcelain 2>/dev/null | wc -l | tr -d ' ')
36
- local is_clean="true"
37
- [[ "$git_status" != "0" ]] && is_clean="false"
38
-
39
- # Build commits JSON
40
- local commits_json="["
41
- local first=true
42
- while IFS= read -r line; do
43
- local hash=$(echo "$line" | cut -d' ' -f1)
44
- local msg=$(echo "$line" | cut -d' ' -f2-)
45
- msg=$(echo "$msg" | sed 's/"/\\"/g')
46
- if [[ "$first" == "true" ]]; then
47
- first=false
48
- else
49
- commits_json+=","
50
- fi
51
- commits_json+="{\"hash\":\"$hash\",\"message\":\"$msg\"}"
52
- done < <(git log --oneline -5 2>/dev/null || echo "")
53
- commits_json+="]"
54
-
55
- # Build tasks JSON
56
- local tasks_json="["
57
- first=true
58
- if [[ -d "$tasks_dir" ]]; then
59
- for d in "$tasks_dir"/*/; do
60
- if [[ -d "$d" ]] && [[ "$(basename "$d")" != "archive" ]]; then
61
- local task_json="$d/$FILE_TASK_JSON"
62
- if [[ -f "$task_json" ]]; then
63
- local dir_name=$(basename "$d")
64
- local name=$(jq -r '.name // .id // "unknown"' "$task_json" 2>/dev/null)
65
- local status=$(jq -r '.status // "unknown"' "$task_json" 2>/dev/null)
66
- if [[ "$first" == "true" ]]; then
67
- first=false
68
- else
69
- tasks_json+=","
70
- fi
71
- tasks_json+="{\"dir\":\"$dir_name\",\"name\":\"$name\",\"status\":\"$status\"}"
72
- fi
73
- fi
74
- done
75
- fi
76
- tasks_json+="]"
77
-
78
- cat << EOF
79
- {
80
- "developer": "$developer",
81
- "git": {
82
- "branch": "$branch",
83
- "isClean": $is_clean,
84
- "uncommittedChanges": $git_status,
85
- "recentCommits": $commits_json
86
- },
87
- "tasks": {
88
- "active": $tasks_json,
89
- "directory": "$DIR_WORKFLOW/$DIR_TASKS"
90
- },
91
- "journal": {
92
- "file": "$journal_relative",
93
- "lines": $journal_lines,
94
- "nearLimit": $([ "$journal_lines" -gt 1800 ] && echo "true" || echo "false")
95
- }
96
- }
97
- EOF
98
- }
99
-
100
- # =============================================================================
101
- # Text Output
102
- # =============================================================================
103
-
104
- output_text() {
105
- local repo_root=$(get_repo_root)
106
- local developer=$(get_developer "$repo_root")
107
-
108
- echo "========================================"
109
- echo "SESSION CONTEXT"
110
- echo "========================================"
111
- echo ""
112
-
113
- echo "## DEVELOPER"
114
- if [[ -z "$developer" ]]; then
115
- echo "ERROR: Not initialized. Run: ./$DIR_WORKFLOW/$DIR_SCRIPTS/init-developer.sh <name>"
116
- exit 1
117
- fi
118
- echo "Name: $developer"
119
- echo ""
120
-
121
- echo "## GIT STATUS"
122
- echo "Branch: $(git branch --show-current 2>/dev/null || echo 'unknown')"
123
- local status_count=$(git status --porcelain 2>/dev/null | wc -l | tr -d ' ')
124
- if [[ "$status_count" == "0" ]]; then
125
- echo "Working directory: Clean"
126
- else
127
- echo "Working directory: $status_count uncommitted change(s)"
128
- echo ""
129
- echo "Changes:"
130
- git status --short 2>/dev/null | head -10
131
- fi
132
- echo ""
133
-
134
- echo "## RECENT COMMITS"
135
- git log --oneline -5 2>/dev/null || echo "(no commits)"
136
- echo ""
137
-
138
- echo "## CURRENT TASK"
139
- local current_task=$(get_current_task "$repo_root")
140
- if [[ -n "$current_task" ]]; then
141
- local current_task_dir="$repo_root/$current_task"
142
- local task_json="$current_task_dir/$FILE_TASK_JSON"
143
- echo "Path: $current_task"
144
-
145
- if [[ -f "$task_json" ]]; then
146
- if command -v jq &> /dev/null; then
147
- local t_name=$(jq -r '.name // .id // "unknown"' "$task_json")
148
- local t_status=$(jq -r '.status // "unknown"' "$task_json")
149
- local t_created=$(jq -r '.createdAt // "unknown"' "$task_json")
150
- local t_desc=$(jq -r '.description // ""' "$task_json")
151
- echo "Name: $t_name"
152
- echo "Status: $t_status"
153
- echo "Created: $t_created"
154
- if [[ -n "$t_desc" ]]; then
155
- echo "Description: $t_desc"
156
- fi
157
- fi
158
- fi
159
-
160
- # Check for prd.md
161
- if [[ -f "$current_task_dir/prd.md" ]]; then
162
- echo ""
163
- echo "[!] This task has prd.md - read it for task details"
164
- fi
165
- else
166
- echo "(none)"
167
- fi
168
- echo ""
169
-
170
- echo "## ACTIVE TASKS"
171
- local tasks_dir=$(get_tasks_dir "$repo_root")
172
- local task_count=0
173
- if [[ -d "$tasks_dir" ]]; then
174
- for d in "$tasks_dir"/*/; do
175
- if [[ -d "$d" ]] && [[ "$(basename "$d")" != "archive" ]]; then
176
- local dir_name=$(basename "$d")
177
- local t_json="$d/$FILE_TASK_JSON"
178
- local status="unknown"
179
- local assignee="-"
180
- if [[ -f "$t_json" ]] && command -v jq &> /dev/null; then
181
- status=$(jq -r '.status // "unknown"' "$t_json")
182
- assignee=$(jq -r '.assignee // "-"' "$t_json")
183
- fi
184
- echo "- $dir_name/ ($status) @$assignee"
185
- ((task_count++)) || true
186
- fi
187
- done
188
- fi
189
- if [[ $task_count -eq 0 ]]; then
190
- echo "(no active tasks)"
191
- fi
192
- echo "Total: $task_count active task(s)"
193
- echo ""
194
-
195
- echo "## MY TASKS (Assigned to me)"
196
- local my_task_count=0
197
- if [[ -d "$tasks_dir" ]]; then
198
- for d in "$tasks_dir"/*/; do
199
- if [[ -d "$d" ]] && [[ "$(basename "$d")" != "archive" ]]; then
200
- local t_json="$d/$FILE_TASK_JSON"
201
- if [[ -f "$t_json" ]] && command -v jq &> /dev/null; then
202
- local assignee=$(jq -r '.assignee // ""' "$t_json")
203
- local status=$(jq -r '.status // "planning"' "$t_json")
204
- if [[ "$assignee" == "$developer" ]] && [[ "$status" != "done" ]]; then
205
- local title=$(jq -r '.title // .name // "unknown"' "$t_json")
206
- local priority=$(jq -r '.priority // "P2"' "$t_json")
207
- echo "- [$priority] $title ($status)"
208
- ((my_task_count++)) || true
209
- fi
210
- fi
211
- fi
212
- done
213
- fi
214
- if [[ $my_task_count -eq 0 ]]; then
215
- echo "(no tasks assigned to you)"
216
- fi
217
- echo ""
218
-
219
- echo "## JOURNAL FILE"
220
- local journal_file=$(get_active_journal_file "$repo_root")
221
- if [[ -n "$journal_file" ]]; then
222
- local lines=$(count_lines "$journal_file")
223
- local relative="$DIR_WORKFLOW/$DIR_WORKSPACE/$developer/$(basename "$journal_file")"
224
- echo "Active file: $relative"
225
- echo "Line count: $lines / 2000"
226
- if [[ "$lines" -gt 1800 ]]; then
227
- echo "[!] WARNING: Approaching 2000 line limit!"
228
- fi
229
- else
230
- echo "No journal file found"
231
- fi
232
- echo ""
233
-
234
- echo "## PATHS"
235
- echo "Workspace: $DIR_WORKFLOW/$DIR_WORKSPACE/$developer/"
236
- echo "Tasks: $DIR_WORKFLOW/$DIR_TASKS/"
237
- echo "Spec: $DIR_WORKFLOW/$DIR_SPEC/"
238
- echo ""
239
-
240
- echo "========================================"
241
- }
242
-
243
- # =============================================================================
244
- # Main Entry
245
- # =============================================================================
246
-
247
- if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
248
- case "${1:-}" in
249
- --json|-j)
250
- output_json
251
- ;;
252
- --help|-h)
253
- echo "Get Session Context for AI Agent"
254
- echo ""
255
- echo "Usage:"
256
- echo " $0 Output context in text format"
257
- echo " $0 --json Output context in JSON format"
258
- ;;
259
- *)
260
- output_text
261
- ;;
262
- esac
263
- fi
@@ -1,208 +0,0 @@
1
- #!/bin/bash
2
- # Common path utilities for Trellis workflow
3
- #
4
- # Usage: source this file in other scripts
5
- # source "$(dirname "$0")/common/paths.sh"
6
- #
7
- # Provides:
8
- # get_repo_root - Get repository root directory
9
- # get_developer - Get developer name
10
- # get_workspace_dir - Get developer workspace directory
11
- # get_tasks_dir - Get tasks directory
12
- # get_active_journal_file - Get current journal file
13
-
14
- # =============================================================================
15
- # Path Constants (change here to rename directories)
16
- # =============================================================================
17
-
18
- # Directory names
19
- DIR_WORKFLOW=".trellis"
20
- DIR_WORKSPACE="workspace"
21
- DIR_TASKS="tasks"
22
- DIR_ARCHIVE="archive"
23
- DIR_SPEC="spec"
24
- DIR_SCRIPTS="scripts"
25
-
26
- # File names
27
- FILE_DEVELOPER=".developer"
28
- FILE_CURRENT_TASK=".current-task"
29
- FILE_TASK_JSON="task.json"
30
- FILE_JOURNAL_PREFIX="journal-"
31
-
32
- # =============================================================================
33
- # Repository Root
34
- # =============================================================================
35
-
36
- get_repo_root() {
37
- # Find the nearest directory containing .trellis/ folder
38
- # This handles nested git repos correctly (e.g., test project inside another repo)
39
- local current="$PWD"
40
-
41
- while [[ "$current" != "/" ]]; do
42
- if [[ -d "$current/$DIR_WORKFLOW" ]]; then
43
- echo "$current"
44
- return
45
- fi
46
- current=$(dirname "$current")
47
- done
48
-
49
- # Fallback to current directory if no .trellis/ found
50
- echo "$PWD"
51
- }
52
-
53
- # =============================================================================
54
- # Developer
55
- # =============================================================================
56
-
57
- get_developer() {
58
- local repo_root="${1:-$(get_repo_root)}"
59
- local dev_file="$repo_root/$DIR_WORKFLOW/$FILE_DEVELOPER"
60
-
61
- if [[ -f "$dev_file" ]]; then
62
- grep "^name=" "$dev_file" 2>/dev/null | cut -d'=' -f2
63
- fi
64
- }
65
-
66
- check_developer() {
67
- local developer=$(get_developer "$1")
68
- [[ -n "$developer" ]]
69
- }
70
-
71
- # =============================================================================
72
- # Tasks Directory
73
- # =============================================================================
74
-
75
- get_tasks_dir() {
76
- local repo_root="${1:-$(get_repo_root)}"
77
- echo "$repo_root/$DIR_WORKFLOW/$DIR_TASKS"
78
- }
79
-
80
- # =============================================================================
81
- # Workspace Directory
82
- # =============================================================================
83
-
84
- get_workspace_dir() {
85
- local repo_root="${1:-$(get_repo_root)}"
86
- local developer=$(get_developer "$repo_root")
87
-
88
- if [[ -n "$developer" ]]; then
89
- echo "$repo_root/$DIR_WORKFLOW/$DIR_WORKSPACE/$developer"
90
- fi
91
- }
92
-
93
- # =============================================================================
94
- # Journal File
95
- # =============================================================================
96
-
97
- get_active_journal_file() {
98
- local repo_root="${1:-$(get_repo_root)}"
99
- local workspace_dir=$(get_workspace_dir "$repo_root")
100
-
101
- if [[ -z "$workspace_dir" ]] || [[ ! -d "$workspace_dir" ]]; then
102
- echo ""
103
- return
104
- fi
105
-
106
- local latest=""
107
- local highest=0
108
- for f in "$workspace_dir"/${FILE_JOURNAL_PREFIX}*.md; do
109
- if [[ -f "$f" ]]; then
110
- local num=$(basename "$f" | sed "s/${FILE_JOURNAL_PREFIX}//" | sed 's/\.md//')
111
- if [[ "$num" =~ ^[0-9]+$ ]] && [[ "$num" -gt "$highest" ]]; then
112
- highest=$num
113
- latest="$f"
114
- fi
115
- fi
116
- done
117
-
118
- if [[ -n "$latest" ]]; then
119
- echo "$latest"
120
- fi
121
- }
122
-
123
- count_lines() {
124
- local file="$1"
125
- if [[ -f "$file" ]]; then
126
- wc -l < "$file" | tr -d ' '
127
- else
128
- echo "0"
129
- fi
130
- }
131
-
132
- # =============================================================================
133
- # Current Task Management
134
- # =============================================================================
135
-
136
- # Get .current-task file path
137
- _get_current_task_file() {
138
- local repo_root="${1:-$(get_repo_root)}"
139
- echo "$repo_root/$DIR_WORKFLOW/$FILE_CURRENT_TASK"
140
- }
141
-
142
- # Get current task directory path (relative to repo_root)
143
- get_current_task() {
144
- local repo_root="${1:-$(get_repo_root)}"
145
- local current_file=$(_get_current_task_file "$repo_root")
146
-
147
- if [[ -f "$current_file" ]]; then
148
- cat "$current_file" 2>/dev/null
149
- fi
150
- }
151
-
152
- # Get current task directory absolute path
153
- get_current_task_abs() {
154
- local repo_root="${1:-$(get_repo_root)}"
155
- local relative=$(get_current_task "$repo_root")
156
-
157
- if [[ -n "$relative" ]]; then
158
- echo "$repo_root/$relative"
159
- fi
160
- }
161
-
162
- # Set current task
163
- # Args: $1 - task directory path (relative to repo_root)
164
- set_current_task() {
165
- local task_path="$1"
166
- local repo_root="${2:-$(get_repo_root)}"
167
- local current_file=$(_get_current_task_file "$repo_root")
168
-
169
- if [[ -z "$task_path" ]]; then
170
- echo "Error: task path is required" >&2
171
- return 1
172
- fi
173
-
174
- # Verify task directory exists
175
- local full_path="$repo_root/$task_path"
176
- if [[ ! -d "$full_path" ]]; then
177
- echo "Error: task directory not found: $task_path" >&2
178
- return 1
179
- fi
180
-
181
- echo "$task_path" > "$current_file"
182
- }
183
-
184
- # Clear current task
185
- clear_current_task() {
186
- local repo_root="${1:-$(get_repo_root)}"
187
- local current_file=$(_get_current_task_file "$repo_root")
188
-
189
- if [[ -f "$current_file" ]]; then
190
- rm -f "$current_file"
191
- fi
192
- }
193
-
194
- # Check if has current task
195
- has_current_task() {
196
- local current=$(get_current_task "$1")
197
- [[ -n "$current" ]]
198
- }
199
-
200
- # =============================================================================
201
- # Task ID Generation
202
- # =============================================================================
203
-
204
- # Generate task ID based on date (MM-DD format)
205
- # Returns: MM-DD (e.g., "01-21")
206
- generate_task_date_prefix() {
207
- date +%m-%d
208
- }