@mindfoldhq/trellis 0.4.0 → 0.5.0-beta.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 (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 +83 -22
  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,225 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- Multi-Agent Pipeline: Process monitoring and log parsing.
4
-
5
- Provides:
6
- tail_follow - Follow a file like 'tail -f'
7
- get_last_tool - Get last tool call from agent log
8
- get_last_message - Get last assistant text from agent log
9
- cmd_watch - Watch agent log in real-time
10
- cmd_log - Show recent log entries
11
- """
12
-
13
- from __future__ import annotations
14
-
15
- import json
16
- import time
17
- from pathlib import Path
18
-
19
- from common.log import Colors
20
-
21
- from .status_display import find_agent
22
-
23
-
24
- # =============================================================================
25
- # Log Parsing
26
- # =============================================================================
27
-
28
- def tail_follow(file_path: Path) -> None:
29
- """Follow a file like 'tail -f', cross-platform compatible."""
30
- with open(file_path, "r", encoding="utf-8", errors="replace") as f:
31
- # Seek to end of file
32
- f.seek(0, 2)
33
-
34
- while True:
35
- line = f.readline()
36
- if line:
37
- print(line, end="", flush=True)
38
- else:
39
- time.sleep(0.1)
40
-
41
-
42
- def get_last_tool(log_file: Path, platform: str = "claude") -> str | None:
43
- """Get the last tool call from agent log.
44
-
45
- Supports both Claude Code and OpenCode log formats.
46
-
47
- Claude Code format:
48
- {"type": "assistant", "message": {"content": [{"type": "tool_use", "name": "Read"}]}}
49
-
50
- OpenCode format:
51
- {"type": "tool_use", "tool": "bash", "state": {"status": "completed"}}
52
- """
53
- if not log_file.is_file():
54
- return None
55
-
56
- try:
57
- lines = log_file.read_text(encoding="utf-8").splitlines()
58
- for line in reversed(lines[-100:]):
59
- try:
60
- data = json.loads(line)
61
-
62
- if platform == "opencode":
63
- # OpenCode format: {"type": "tool_use", "tool": "bash", ...}
64
- if data.get("type") == "tool_use":
65
- return data.get("tool")
66
- else:
67
- # Claude Code format: {"type": "assistant", "message": {"content": [...]}}
68
- if data.get("type") == "assistant":
69
- content = data.get("message", {}).get("content", [])
70
- for item in content:
71
- if item.get("type") == "tool_use":
72
- return item.get("name")
73
- except json.JSONDecodeError:
74
- continue
75
- except Exception:
76
- pass
77
- return None
78
-
79
-
80
- def get_last_message(log_file: Path, max_len: int = 100, platform: str = "claude") -> str | None:
81
- """Get the last assistant text from agent log.
82
-
83
- Supports both Claude Code and OpenCode log formats.
84
-
85
- Claude Code format:
86
- {"type": "assistant", "message": {"content": [{"type": "text", "text": "..."}]}}
87
-
88
- OpenCode format:
89
- {"type": "text", "text": "..."}
90
- """
91
- if not log_file.is_file():
92
- return None
93
-
94
- try:
95
- lines = log_file.read_text(encoding="utf-8").splitlines()
96
- for line in reversed(lines[-100:]):
97
- try:
98
- data = json.loads(line)
99
-
100
- if platform == "opencode":
101
- # OpenCode format: {"type": "text", "text": "..."}
102
- if data.get("type") == "text":
103
- text = data.get("text", "")
104
- if text:
105
- return text[:max_len]
106
- else:
107
- # Claude Code format: {"type": "assistant", "message": {"content": [...]}}
108
- if data.get("type") == "assistant":
109
- content = data.get("message", {}).get("content", [])
110
- for item in content:
111
- if item.get("type") == "text":
112
- text = item.get("text", "")
113
- if text:
114
- return text[:max_len]
115
- except json.JSONDecodeError:
116
- continue
117
- except Exception:
118
- pass
119
- return None
120
-
121
-
122
- # =============================================================================
123
- # Commands
124
- # =============================================================================
125
-
126
- def cmd_watch(target: str, repo_root: Path) -> int:
127
- """Watch agent log in real-time."""
128
- agent = find_agent(target, repo_root)
129
- if not agent:
130
- print(f"Agent not found: {target}")
131
- return 1
132
-
133
- worktree = agent.get("worktree_path", "")
134
- log_file = Path(worktree) / ".agent-log"
135
-
136
- if not log_file.is_file():
137
- print(f"Log file not found: {log_file}")
138
- return 1
139
-
140
- print(f"{Colors.BLUE}Watching:{Colors.NC} {log_file}")
141
- print(f"{Colors.DIM}Press Ctrl+C to stop{Colors.NC}")
142
- print()
143
-
144
- try:
145
- tail_follow(log_file)
146
- except KeyboardInterrupt:
147
- print() # Clean newline after Ctrl+C
148
- return 0
149
-
150
-
151
- def cmd_log(target: str, repo_root: Path) -> int:
152
- """Show recent log entries."""
153
- agent = find_agent(target, repo_root)
154
- if not agent:
155
- print(f"Agent not found: {target}")
156
- return 1
157
-
158
- worktree = agent.get("worktree_path", "")
159
- platform = agent.get("platform", "claude")
160
- log_file = Path(worktree) / ".agent-log"
161
-
162
- if not log_file.is_file():
163
- print(f"Log file not found: {log_file}")
164
- return 1
165
-
166
- print(f"{Colors.BLUE}=== Recent Log: {target} ==={Colors.NC}")
167
- print(f"{Colors.DIM}Platform: {platform}{Colors.NC}")
168
- print()
169
-
170
- lines = log_file.read_text(encoding="utf-8").splitlines()
171
- for line in lines[-50:]:
172
- try:
173
- data = json.loads(line)
174
- msg_type = data.get("type", "")
175
-
176
- if platform == "opencode":
177
- # OpenCode format
178
- if msg_type == "text":
179
- text = data.get("text", "")
180
- if text:
181
- display = text[:300]
182
- if len(text) > 300:
183
- display += "..."
184
- print(f"{Colors.BLUE}[TEXT]{Colors.NC} {display}")
185
- elif msg_type == "tool_use":
186
- tool_name = data.get("tool", "unknown")
187
- status = data.get("state", {}).get("status", "")
188
- print(f"{Colors.YELLOW}[TOOL]{Colors.NC} {tool_name} ({status})")
189
- elif msg_type == "step_start":
190
- print(f"{Colors.CYAN}[STEP]{Colors.NC} Start")
191
- elif msg_type == "step_finish":
192
- reason = data.get("reason", "")
193
- print(f"{Colors.CYAN}[STEP]{Colors.NC} Finish ({reason})")
194
- elif msg_type == "error":
195
- error_msg = data.get("message", "")
196
- print(f"{Colors.RED}[ERROR]{Colors.NC} {error_msg}")
197
- else:
198
- # Claude Code format
199
- if msg_type == "system":
200
- subtype = data.get("subtype", "")
201
- print(f"{Colors.CYAN}[SYSTEM]{Colors.NC} {subtype}")
202
- elif msg_type == "user":
203
- content = data.get("message", {}).get("content", "")
204
- if content:
205
- print(f"{Colors.GREEN}[USER]{Colors.NC} {content[:200]}")
206
- elif msg_type == "assistant":
207
- content = data.get("message", {}).get("content", [])
208
- if content:
209
- item = content[0]
210
- text = item.get("text")
211
- tool = item.get("name")
212
- if text:
213
- display = text[:300]
214
- if len(text) > 300:
215
- display += "..."
216
- print(f"{Colors.BLUE}[ASSISTANT]{Colors.NC} {display}")
217
- elif tool:
218
- print(f"{Colors.YELLOW}[TOOL]{Colors.NC} {tool}")
219
- elif msg_type == "result":
220
- tool_name = data.get("tool", "unknown")
221
- print(f"{Colors.DIM}[RESULT]{Colors.NC} {tool_name} completed")
222
- except json.JSONDecodeError:
223
- continue
224
-
225
- return 0
@@ -1,384 +0,0 @@
1
- #!/bin/bash
2
- # Add a new session to journal file and update index.md
3
- #
4
- # Usage:
5
- # ./.trellis/scripts/add-session.sh --title "Title" --commit "hash" --summary "Summary"
6
- # echo "content" | ./.trellis/scripts/add-session.sh --title "Title" --commit "hash"
7
-
8
- set -e
9
-
10
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
11
- source "$SCRIPT_DIR/common/paths.sh"
12
- source "$SCRIPT_DIR/common/developer.sh"
13
-
14
- MAX_LINES=2000
15
- TODAY=$(date +%Y-%m-%d)
16
-
17
- # Ensure developer is initialized
18
- ensure_developer
19
-
20
- DEVELOPER=$(get_developer)
21
- REPO_ROOT=$(get_repo_root)
22
- DEV_DIR="$REPO_ROOT/$DIR_WORKFLOW/$DIR_WORKSPACE/$DEVELOPER"
23
- INDEX_FILE="$DEV_DIR/index.md"
24
-
25
- # =============================================================================
26
- # Helper Functions
27
- # =============================================================================
28
-
29
- get_latest_journal_info() {
30
- local latest_file=""
31
- local latest_num=-1 # Start at -1 so journal-0.md can be detected (0 > -1)
32
-
33
- for f in "$DEV_DIR"/${FILE_JOURNAL_PREFIX}*.md; do
34
- if [[ -f "$f" ]]; then
35
- local num=$(basename "$f" | sed "s/${FILE_JOURNAL_PREFIX}\([0-9]*\)\.md/\1/")
36
- if [[ "$num" -gt "$latest_num" ]]; then
37
- latest_num=$num
38
- latest_file="$f"
39
- fi
40
- fi
41
- done
42
-
43
- if [[ -n "$latest_file" ]]; then
44
- local lines=$(wc -l < "$latest_file" | tr -d ' ')
45
- echo "$latest_file:$latest_num:$lines"
46
- else
47
- echo ":0:0"
48
- fi
49
- }
50
-
51
- get_current_session() {
52
- local line=$(grep "Total Sessions" "$INDEX_FILE" 2>/dev/null | head -1)
53
- echo "$line" | sed 's/.*: //' | tr -d ' '
54
- }
55
-
56
- count_journal_files() {
57
- local result=""
58
- local journal_info=$(get_latest_journal_info)
59
- local active_num=$(echo "$journal_info" | cut -d: -f2)
60
- local active_file="${FILE_JOURNAL_PREFIX}$active_num.md"
61
-
62
- for f in $(ls -v "$DEV_DIR"/${FILE_JOURNAL_PREFIX}*.md 2>/dev/null | sort -t- -k2 -n -r); do
63
- if [[ -f "$f" ]]; then
64
- local filename=$(basename "$f")
65
- local lines=$(wc -l < "$f" | tr -d ' ')
66
-
67
- local status="Archived"
68
- if [[ "$filename" == "$active_file" ]]; then
69
- status="Active"
70
- fi
71
-
72
- result="${result}| \`$filename\` | ~$lines | $status |
73
- "
74
- fi
75
- done
76
- echo "$result" | sed '/^$/d'
77
- }
78
-
79
- create_new_journal_file() {
80
- local num=$1
81
- local prev_num=$((num - 1))
82
- local new_file="$DEV_DIR/${FILE_JOURNAL_PREFIX}$num.md"
83
-
84
- cat > "$new_file" << EOF
85
- # Journal - $DEVELOPER (Part $num)
86
-
87
- > Continuation from \`${FILE_JOURNAL_PREFIX}$prev_num.md\` (archived at ~$MAX_LINES lines)
88
- > Started: $TODAY
89
-
90
- ---
91
-
92
- EOF
93
- echo "$new_file"
94
- }
95
-
96
- generate_session_content() {
97
- local session_num=$1
98
- local title=$2
99
- local commit=$3
100
- local summary=$4
101
- local extra_content=$5
102
-
103
- local commit_table=""
104
- if [[ -n "$commit" && "$commit" != "-" ]]; then
105
- commit_table="| Hash | Message |
106
- |------|---------|"
107
- IFS=',' read -ra COMMITS <<< "$commit"
108
- for c in "${COMMITS[@]}"; do
109
- c=$(echo "$c" | tr -d ' ')
110
- commit_table="$commit_table
111
- | \`$c\` | (see git log) |"
112
- done
113
- else
114
- commit_table="(No commits - planning session)"
115
- fi
116
-
117
- cat << EOF
118
-
119
- ## Session $session_num: $title
120
-
121
- **Date**: $TODAY
122
- **Task**: $title
123
-
124
- ### Summary
125
-
126
- $summary
127
-
128
- ### Main Changes
129
-
130
- $extra_content
131
-
132
- ### Git Commits
133
-
134
- $commit_table
135
-
136
- ### Testing
137
-
138
- - [OK] (Add test results)
139
-
140
- ### Status
141
-
142
- [OK] **Completed**
143
-
144
- ### Next Steps
145
-
146
- - None - task complete
147
- EOF
148
- }
149
-
150
- # =============================================================================
151
- # Update Index.md
152
- # =============================================================================
153
-
154
- update_index() {
155
- local title="$1"
156
- local commit="$2"
157
- local new_session="$3"
158
- local active_file="$4"
159
-
160
- # Format commit for display
161
- local commit_display="-"
162
- if [[ -n "$commit" && "$commit" != "-" ]]; then
163
- commit_display=$(echo "$commit" | sed 's/,/, /g' | sed 's/\([a-f0-9]\{7,\}\)/`\1`/g')
164
- fi
165
-
166
- local files_table=$(count_journal_files)
167
-
168
- echo "Updating index.md for session $new_session..."
169
- echo " Title: $title"
170
- echo " Commit: $commit_display"
171
- echo " Active File: $active_file"
172
- echo ""
173
-
174
- if ! grep -q "@@@auto:current-status" "$INDEX_FILE"; then
175
- echo "Error: Markers not found in index.md. Please ensure markers exist." >&2
176
- exit 1
177
- fi
178
-
179
- local tmp_file=$(mktemp)
180
-
181
- local in_current_status=false
182
- local in_active_documents=false
183
- local in_session_history=false
184
- local header_written=false
185
-
186
- while IFS= read -r line || [[ -n "$line" ]]; do
187
- if [[ "$line" == *"@@@auto:current-status"* ]]; then
188
- echo "$line" >> "$tmp_file"
189
- in_current_status=true
190
- echo "- **Active File**: \`$active_file\`" >> "$tmp_file"
191
- echo "- **Total Sessions**: $new_session" >> "$tmp_file"
192
- echo "- **Last Active**: $TODAY" >> "$tmp_file"
193
- continue
194
- fi
195
-
196
- if [[ "$line" == *"@@@/auto:current-status"* ]]; then
197
- in_current_status=false
198
- echo "$line" >> "$tmp_file"
199
- continue
200
- fi
201
-
202
- if [[ "$line" == *"@@@auto:active-documents"* ]]; then
203
- echo "$line" >> "$tmp_file"
204
- in_active_documents=true
205
- echo "| File | Lines | Status |" >> "$tmp_file"
206
- echo "|------|-------|--------|" >> "$tmp_file"
207
- echo "$files_table" >> "$tmp_file"
208
- continue
209
- fi
210
-
211
- if [[ "$line" == *"@@@/auto:active-documents"* ]]; then
212
- in_active_documents=false
213
- echo "$line" >> "$tmp_file"
214
- continue
215
- fi
216
-
217
- if [[ "$line" == *"@@@auto:session-history"* ]]; then
218
- echo "$line" >> "$tmp_file"
219
- in_session_history=true
220
- header_written=false
221
- continue
222
- fi
223
-
224
- if [[ "$line" == *"@@@/auto:session-history"* ]]; then
225
- in_session_history=false
226
- echo "$line" >> "$tmp_file"
227
- continue
228
- fi
229
-
230
- if $in_current_status; then
231
- continue
232
- fi
233
-
234
- if $in_active_documents; then
235
- continue
236
- fi
237
-
238
- if $in_session_history; then
239
- echo "$line" >> "$tmp_file"
240
- if [[ "$line" == "|---"* ]] && ! $header_written; then
241
- echo "| $new_session | $TODAY | $title | $commit_display |" >> "$tmp_file"
242
- header_written=true
243
- fi
244
- continue
245
- fi
246
-
247
- echo "$line" >> "$tmp_file"
248
- done < "$INDEX_FILE"
249
-
250
- mv "$tmp_file" "$INDEX_FILE"
251
-
252
- echo "[OK] Updated index.md successfully!"
253
- }
254
-
255
- # =============================================================================
256
- # Main Function
257
- # =============================================================================
258
-
259
- add_session() {
260
- local title=""
261
- local commit="-"
262
- local summary="(Add summary)"
263
- local content_file=""
264
- local extra_content="(Add details)"
265
-
266
- while [[ $# -gt 0 ]]; do
267
- case $1 in
268
- --title)
269
- title="$2"
270
- shift 2
271
- ;;
272
- --commit)
273
- commit="$2"
274
- shift 2
275
- ;;
276
- --summary)
277
- summary="$2"
278
- shift 2
279
- ;;
280
- --content-file)
281
- content_file="$2"
282
- shift 2
283
- ;;
284
- *)
285
- shift
286
- ;;
287
- esac
288
- done
289
-
290
- if [[ -z "$title" ]]; then
291
- echo "Error: --title is required" >&2
292
- echo "Usage: $0 --title \"Session Title\" [--commit \"hash1,hash2\"] [--summary \"Brief summary\"]" >&2
293
- exit 1
294
- fi
295
-
296
- if [[ -n "$content_file" && -f "$content_file" ]]; then
297
- extra_content=$(cat "$content_file")
298
- elif [[ ! -t 0 ]]; then
299
- extra_content=$(cat)
300
- fi
301
-
302
- local journal_info=$(get_latest_journal_info)
303
- local current_file=$(echo "$journal_info" | cut -d: -f1)
304
- local current_num=$(echo "$journal_info" | cut -d: -f2)
305
- local current_lines=$(echo "$journal_info" | cut -d: -f3)
306
- local current_session=$(get_current_session)
307
- local new_session=$((current_session + 1))
308
-
309
- local session_content=$(generate_session_content "$new_session" "$title" "$commit" "$summary" "$extra_content")
310
- local content_lines=$(echo "$session_content" | wc -l | tr -d ' ')
311
-
312
- echo "========================================" >&2
313
- echo "ADD SESSION" >&2
314
- echo "========================================" >&2
315
- echo "" >&2
316
- echo "Session: $new_session" >&2
317
- echo "Title: $title" >&2
318
- echo "Commit: $commit" >&2
319
- echo "" >&2
320
- echo "Current journal file: ${FILE_JOURNAL_PREFIX}$current_num.md" >&2
321
- echo "Current lines: $current_lines" >&2
322
- echo "New content lines: $content_lines" >&2
323
- echo "Total after append: $((current_lines + content_lines))" >&2
324
- echo "" >&2
325
-
326
- local target_file="$current_file"
327
- local target_num=$current_num
328
-
329
- if [[ $((current_lines + content_lines)) -gt $MAX_LINES ]]; then
330
- target_num=$((current_num + 1))
331
- echo "[!] Exceeds $MAX_LINES lines, creating ${FILE_JOURNAL_PREFIX}$target_num.md" >&2
332
- target_file=$(create_new_journal_file "$target_num")
333
- echo "Created: $target_file" >&2
334
- fi
335
-
336
- echo "$session_content" >> "$target_file"
337
- echo "[OK] Appended session to $(basename "$target_file")" >&2
338
-
339
- echo "" >&2
340
-
341
- # Update index.md directly
342
- local active_file="${FILE_JOURNAL_PREFIX}$target_num.md"
343
- update_index "$title" "$commit" "$new_session" "$active_file"
344
-
345
- echo "" >&2
346
- echo "========================================" >&2
347
- echo "[OK] Session $new_session added successfully!" >&2
348
- echo "========================================" >&2
349
- echo "" >&2
350
- echo "Files updated:" >&2
351
- echo " - $(basename "$target_file")" >&2
352
- echo " - index.md" >&2
353
- }
354
-
355
- show_help() {
356
- echo "Usage: $0 --title \"Title\" [options]"
357
- echo ""
358
- echo "Add a new session to journal file and update index.md automatically."
359
- echo ""
360
- echo "Options:"
361
- echo " --title TEXT Session title (required)"
362
- echo " --commit HASHES Comma-separated commit hashes (optional)"
363
- echo " --summary TEXT Brief summary of the session (optional)"
364
- echo " --content-file Path to file with detailed content (optional)"
365
- echo ""
366
- echo "You can also pipe content via stdin:"
367
- echo " echo \"Details\" | $0 --title \"Title\" --commit \"abc123\""
368
- echo ""
369
- echo "Examples:"
370
- echo " $0 --title \"Fix login bug\" --commit \"abc1234\" --summary \"Fixed auth issue\""
371
- }
372
-
373
- # =============================================================================
374
- # Main Entry
375
- # =============================================================================
376
-
377
- case "${1:-}" in
378
- --help|-h|help)
379
- show_help
380
- ;;
381
- *)
382
- add_session "$@"
383
- ;;
384
- esac