maestro-flow 0.3.8 → 0.3.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 (312) hide show
  1. package/.claude/commands/learn-decompose.md +3 -3
  2. package/.claude/commands/learn-follow.md +5 -5
  3. package/.claude/commands/learn-investigate.md +3 -3
  4. package/.claude/commands/learn-retro.md +6 -6
  5. package/.claude/commands/learn-second-opinion.md +3 -3
  6. package/.claude/commands/maestro-analyze.md +166 -99
  7. package/.claude/commands/maestro-brainstorm.md +2 -2
  8. package/.claude/commands/maestro-execute.md +151 -97
  9. package/.claude/commands/maestro-fork.md +111 -0
  10. package/.claude/commands/maestro-init.md +6 -6
  11. package/.claude/commands/maestro-merge.md +77 -0
  12. package/.claude/commands/maestro-milestone-audit.md +72 -60
  13. package/.claude/commands/maestro-milestone-complete.md +67 -59
  14. package/.claude/commands/maestro-milestone-release.md +6 -6
  15. package/.claude/commands/maestro-plan.md +167 -130
  16. package/.claude/commands/maestro-quick.md +4 -4
  17. package/.claude/commands/maestro-roadmap.md +5 -5
  18. package/.claude/commands/maestro-spec-generate.md +5 -5
  19. package/.claude/commands/maestro-ui-design.md +3 -3
  20. package/.claude/commands/maestro-verify.md +106 -87
  21. package/.claude/commands/maestro.md +10 -4
  22. package/.claude/commands/manage-codebase-rebuild.md +4 -4
  23. package/.claude/commands/manage-codebase-refresh.md +1 -1
  24. package/.claude/commands/manage-harvest.md +6 -6
  25. package/.claude/commands/manage-issue-discover.md +2 -2
  26. package/.claude/commands/manage-issue.md +7 -7
  27. package/.claude/commands/manage-learn.md +2 -2
  28. package/.claude/commands/manage-memory-capture.md +4 -4
  29. package/.claude/commands/manage-memory.md +2 -2
  30. package/.claude/commands/manage-status.md +24 -24
  31. package/.claude/commands/quality-business-test.md +5 -5
  32. package/.claude/commands/quality-debug.md +4 -4
  33. package/.claude/commands/quality-integration-test.md +4 -4
  34. package/.claude/commands/quality-refactor.md +3 -3
  35. package/.claude/commands/quality-retrospective.md +2 -2
  36. package/.claude/commands/quality-review.md +4 -4
  37. package/.claude/commands/quality-sync.md +3 -3
  38. package/.claude/commands/quality-test-gen.md +4 -4
  39. package/.claude/commands/quality-test.md +9 -9
  40. package/.claude/commands/spec-add.md +2 -2
  41. package/.claude/commands/spec-load.md +1 -1
  42. package/.claude/commands/spec-setup.md +5 -5
  43. package/.claude/commands/wiki-connect.md +3 -3
  44. package/.claude/commands/wiki-digest.md +4 -4
  45. package/.codex/skills/maestro/SKILL.md +463 -0
  46. package/.codex/skills/maestro-analyze/SKILL.md +79 -20
  47. package/.codex/skills/maestro-chain/SKILL.md +248 -0
  48. package/.codex/skills/maestro-coordinate/SKILL.md +279 -224
  49. package/.codex/skills/maestro-execute/SKILL.md +35 -26
  50. package/.codex/skills/maestro-milestone-audit/SKILL.md +103 -209
  51. package/.codex/skills/maestro-milestone-complete/SKILL.md +149 -158
  52. package/.codex/skills/maestro-plan/SKILL.md +56 -18
  53. package/.codex/skills/maestro-roadmap/SKILL.md +3 -2
  54. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +2 -2
  55. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +1 -1
  56. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +2 -2
  57. package/.codex/skills/team-lifecycle-v4/specs/knowledge-transfer.md +2 -2
  58. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +1 -1
  59. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +1 -1
  60. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +1 -1
  61. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +1 -1
  62. package/README.md +26 -21
  63. package/README.zh-CN.md +23 -19
  64. package/bin/maestro-mcp.js +1 -1
  65. package/chains/_intent-map.json +21 -9
  66. package/chains/_router.json +30 -77
  67. package/chains/brainstorm-driven.json +17 -6
  68. package/chains/full-lifecycle.json +22 -23
  69. package/chains/issue-lifecycle.json +13 -13
  70. package/chains/milestone-close.json +20 -7
  71. package/chains/milestone-fork-merge.json +50 -0
  72. package/chains/roadmap-driven.json +17 -6
  73. package/chains/singles/issue-analyze.json +3 -3
  74. package/chains/singles/issue-execute.json +3 -3
  75. package/chains/singles/issue-plan.json +3 -3
  76. package/chains/spec-driven.json +17 -6
  77. package/dashboard/dist/assets/{ArtifactsPage-BmPOu8sO.js → ArtifactsPage-DZNCi6tn.js} +12 -7
  78. package/dashboard/dist/assets/ChatInput-Bvr-FeEq.js +49 -0
  79. package/dashboard/dist/assets/ChatPage-D9zTkJZo.js +22 -0
  80. package/dashboard/dist/assets/CollabPage-B4NAHXS2.js +1 -0
  81. package/dashboard/dist/assets/ExecutionPanel-CFt4LJyq.js +1 -0
  82. package/dashboard/dist/assets/KanbanPage-C8USth6H.js +21 -0
  83. package/dashboard/dist/assets/{MarkdownRenderer-BjZ43aSa.js → MarkdownRenderer-X4af_WNb.js} +1 -1
  84. package/dashboard/dist/assets/McpPage-BKfCVIyU.js +21 -0
  85. package/dashboard/dist/assets/OutputPanel-BlBQFJSW.js +1 -0
  86. package/dashboard/dist/assets/ProblemsPanel-De3DLvoI.js +1 -0
  87. package/dashboard/dist/assets/{RequirementBoardPage-B7yRL0s_.js → RequirementBoardPage-Bf1trzqs.js} +2 -2
  88. package/dashboard/dist/assets/{RequirementPage-D8J_-b6O.js → RequirementPage-Bllxe2XI.js} +10 -5
  89. package/dashboard/dist/assets/{SpecsPage-6lO8v8_C.js → SpecsPage-9lwxKT27.js} +2 -2
  90. package/dashboard/dist/assets/{SupervisorPage-Ds5N378a.js → SupervisorPage-SusdfHFq.js} +1 -1
  91. package/dashboard/dist/assets/{TeamsPage-DrkKr17T.js → TeamsPage-DsuM6OwC.js} +2 -2
  92. package/dashboard/dist/assets/TreeBrowser-Q12qobZs.js +6 -0
  93. package/dashboard/dist/assets/WorkflowPage-D_Fzdy3_.js +6 -0
  94. package/dashboard/dist/assets/{arrow-left-CadP5YgU.js → arrow-left-Bqtb2hle.js} +1 -1
  95. package/dashboard/dist/assets/{check-5xufDzS8.js → check-u6fGOwQO.js} +1 -1
  96. package/dashboard/dist/assets/{chevron-right-CYbpR4ev.js → chevron-right-Csu22t58.js} +1 -1
  97. package/dashboard/dist/assets/{circle-Bm-5Q-Yh.js → circle-CMrkbRNg.js} +1 -1
  98. package/dashboard/dist/assets/{circle-alert-BqcYuT7x.js → circle-alert-c3tH1P4z.js} +1 -1
  99. package/dashboard/dist/assets/{circle-check-big-yyzAFysU.js → circle-check-big-TDSeWstm.js} +1 -1
  100. package/dashboard/dist/assets/{circle-check-DEVzW_lm.js → circle-check-gYxxSYuH.js} +1 -1
  101. package/dashboard/dist/assets/{code-BBdC8Wmw.js → code-CFN2uX9V.js} +1 -1
  102. package/dashboard/dist/assets/{columns-3-CQ9Trztr.js → columns-3-38xIDlzy.js} +1 -1
  103. package/dashboard/dist/assets/{download-DayuF-sn.js → download-DC7KkKyP.js} +1 -1
  104. package/dashboard/dist/assets/{folder-CqXeSKeC.js → folder-CWq_lAnf.js} +1 -1
  105. package/dashboard/dist/assets/index-DWG-WrzT.js +231 -0
  106. package/dashboard/dist/assets/{index-Dru5HYy0.js → index-Do71weNR.js} +1 -1
  107. package/dashboard/dist/assets/index-GUNJodSR.css +1 -0
  108. package/dashboard/dist/assets/{list-DBOD6IUt.js → list-CgIP_2A-.js} +1 -1
  109. package/dashboard/dist/assets/{minus-fQI1Syn2.js → minus-DYoN5UGk.js} +1 -1
  110. package/dashboard/dist/assets/{pen-line-Bkbbngl5.js → pen-line-Bh_WKYHm.js} +1 -1
  111. package/dashboard/dist/assets/{proxy-teW12DdZ.js → proxy-BKxDAKTj.js} +1 -1
  112. package/dashboard/dist/assets/{search-Bq3ygFUW.js → search-SieXnOgr.js} +1 -1
  113. package/dashboard/dist/assets/{shallow-22ZN8sFt.js → shallow-Bme1JY57.js} +1 -1
  114. package/dashboard/dist/assets/{table-BEYtdWc4.js → table-llyEtj-7.js} +1 -1
  115. package/dashboard/dist/assets/terminal-BB3Xfuv5.js +6 -0
  116. package/dashboard/dist/assets/{trash-2-DMqGBgcF.js → trash-2-C8f4vFFM.js} +1 -1
  117. package/dashboard/dist/assets/{zap-9DVkGVtt.js → zap-4uwlzVm0.js} +1 -1
  118. package/dashboard/dist/index.html +2 -2
  119. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +8 -4
  120. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  121. package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.d.ts +1 -0
  122. package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.js +2 -1
  123. package/dashboard/dist-server/dashboard/src/server/agents/entry-normalizer.js.map +1 -1
  124. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js +20 -10
  125. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js.map +1 -1
  126. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js +2 -2
  127. package/dashboard/dist-server/dashboard/src/server/commander/commander-agent.js.map +1 -1
  128. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +3 -3
  129. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  130. package/dashboard/dist-server/dashboard/src/server/routes/git.d.ts +2 -0
  131. package/dashboard/dist-server/dashboard/src/server/routes/git.js +79 -0
  132. package/dashboard/dist-server/dashboard/src/server/routes/git.js.map +1 -0
  133. package/dashboard/dist-server/dashboard/src/server/routes/index.js +3 -0
  134. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  135. package/dashboard/dist-server/dashboard/src/server/routes/issues.js +34 -0
  136. package/dashboard/dist-server/dashboard/src/server/routes/issues.js.map +1 -1
  137. package/dashboard/dist-server/dashboard/src/server/routes/workspace.js +43 -0
  138. package/dashboard/dist-server/dashboard/src/server/routes/workspace.js.map +1 -1
  139. package/dashboard/dist-server/dashboard/src/server/state/state-manager.js +43 -3
  140. package/dashboard/dist-server/dashboard/src/server/state/state-manager.js.map +1 -1
  141. package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js +2 -3
  142. package/dashboard/dist-server/dashboard/src/server/ws/handlers/execution-handler.js.map +1 -1
  143. package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +5 -0
  144. package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
  145. package/dashboard/dist-server/dashboard/src/shared/normalize-task.d.ts +2 -0
  146. package/dashboard/dist-server/dashboard/src/shared/normalize-task.js +75 -0
  147. package/dashboard/dist-server/dashboard/src/shared/normalize-task.js.map +1 -0
  148. package/dashboard/dist-server/src/hooks/constants.d.ts +90 -12
  149. package/dashboard/dist-server/src/hooks/constants.js +149 -16
  150. package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
  151. package/dashboard/dist-server/src/types/index.d.ts +5 -0
  152. package/dashboard/package.json +59 -59
  153. package/dist/src/cli.js +3 -1
  154. package/dist/src/cli.js.map +1 -1
  155. package/dist/src/commands/collab.d.ts +14 -0
  156. package/dist/src/commands/collab.d.ts.map +1 -0
  157. package/dist/src/commands/{team.js → collab.js} +395 -96
  158. package/dist/src/commands/collab.js.map +1 -0
  159. package/dist/src/commands/hooks.d.ts +5 -1
  160. package/dist/src/commands/hooks.d.ts.map +1 -1
  161. package/dist/src/commands/hooks.js +50 -10
  162. package/dist/src/commands/hooks.js.map +1 -1
  163. package/dist/src/commands/install-ui/InstallConfirm.d.ts +3 -1
  164. package/dist/src/commands/install-ui/InstallConfirm.d.ts.map +1 -1
  165. package/dist/src/commands/install-ui/InstallConfirm.js +3 -1
  166. package/dist/src/commands/install-ui/InstallConfirm.js.map +1 -1
  167. package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
  168. package/dist/src/commands/install-ui/InstallExecution.js +5 -1
  169. package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
  170. package/dist/src/commands/install-ui/InstallFlow.d.ts.map +1 -1
  171. package/dist/src/commands/install-ui/InstallFlow.js +7 -3
  172. package/dist/src/commands/install-ui/InstallFlow.js.map +1 -1
  173. package/dist/src/commands/install-ui/StatuslineConfig.d.ts +6 -1
  174. package/dist/src/commands/install-ui/StatuslineConfig.d.ts.map +1 -1
  175. package/dist/src/commands/install-ui/StatuslineConfig.js +27 -5
  176. package/dist/src/commands/install-ui/StatuslineConfig.js.map +1 -1
  177. package/dist/src/commands/msg.d.ts.map +1 -1
  178. package/dist/src/commands/msg.js +4 -3
  179. package/dist/src/commands/msg.js.map +1 -1
  180. package/dist/src/hooks/__tests__/statusline-visual-test.d.ts +7 -0
  181. package/dist/src/hooks/__tests__/statusline-visual-test.d.ts.map +1 -0
  182. package/dist/src/hooks/__tests__/statusline-visual-test.js +236 -0
  183. package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -0
  184. package/dist/src/hooks/constants.d.ts +90 -12
  185. package/dist/src/hooks/constants.d.ts.map +1 -1
  186. package/dist/src/hooks/constants.js +149 -16
  187. package/dist/src/hooks/constants.js.map +1 -1
  188. package/dist/src/hooks/guards/index.d.ts +1 -0
  189. package/dist/src/hooks/guards/index.d.ts.map +1 -1
  190. package/dist/src/hooks/guards/index.js +1 -0
  191. package/dist/src/hooks/guards/index.js.map +1 -1
  192. package/dist/src/hooks/guards/preflight-guard.d.ts +29 -0
  193. package/dist/src/hooks/guards/preflight-guard.d.ts.map +1 -0
  194. package/dist/src/hooks/guards/preflight-guard.js +95 -0
  195. package/dist/src/hooks/guards/preflight-guard.js.map +1 -0
  196. package/dist/src/hooks/index.d.ts +1 -0
  197. package/dist/src/hooks/index.d.ts.map +1 -1
  198. package/dist/src/hooks/index.js +1 -0
  199. package/dist/src/hooks/index.js.map +1 -1
  200. package/dist/src/{commands/team.d.ts → hooks/preflight-core.d.ts} +12 -22
  201. package/dist/src/hooks/preflight-core.d.ts.map +1 -0
  202. package/dist/src/hooks/preflight-core.js +86 -0
  203. package/dist/src/hooks/preflight-core.js.map +1 -0
  204. package/dist/src/hooks/statusline.d.ts +8 -17
  205. package/dist/src/hooks/statusline.d.ts.map +1 -1
  206. package/dist/src/hooks/statusline.js +269 -112
  207. package/dist/src/hooks/statusline.js.map +1 -1
  208. package/dist/src/hooks/team-monitor.d.ts.map +1 -1
  209. package/dist/src/hooks/team-monitor.js +16 -0
  210. package/dist/src/hooks/team-monitor.js.map +1 -1
  211. package/dist/src/i18n/locales/en.d.ts.map +1 -1
  212. package/dist/src/i18n/locales/en.js +5 -0
  213. package/dist/src/i18n/locales/en.js.map +1 -1
  214. package/dist/src/i18n/locales/zh.d.ts.map +1 -1
  215. package/dist/src/i18n/locales/zh.js +5 -0
  216. package/dist/src/i18n/locales/zh.js.map +1 -1
  217. package/dist/src/i18n/types.d.ts +5 -0
  218. package/dist/src/i18n/types.d.ts.map +1 -1
  219. package/dist/src/tools/collab-adapter.d.ts +102 -0
  220. package/dist/src/tools/collab-adapter.d.ts.map +1 -0
  221. package/dist/src/tools/collab-adapter.js +458 -0
  222. package/dist/src/tools/collab-adapter.js.map +1 -0
  223. package/dist/src/tools/merge-validator.d.ts +24 -0
  224. package/dist/src/tools/merge-validator.d.ts.map +1 -0
  225. package/dist/src/tools/merge-validator.js +220 -0
  226. package/dist/src/tools/merge-validator.js.map +1 -0
  227. package/dist/src/tools/namespace-guard.d.ts +2 -0
  228. package/dist/src/tools/namespace-guard.d.ts.map +1 -1
  229. package/dist/src/tools/namespace-guard.js +12 -0
  230. package/dist/src/tools/namespace-guard.js.map +1 -1
  231. package/dist/src/tools/phase-gate-evaluator.d.ts +45 -0
  232. package/dist/src/tools/phase-gate-evaluator.d.ts.map +1 -0
  233. package/dist/src/tools/phase-gate-evaluator.js +42 -0
  234. package/dist/src/tools/phase-gate-evaluator.js.map +1 -0
  235. package/dist/src/tools/team-members.d.ts +18 -0
  236. package/dist/src/tools/team-members.d.ts.map +1 -1
  237. package/dist/src/tools/team-members.js +50 -0
  238. package/dist/src/tools/team-members.js.map +1 -1
  239. package/dist/src/tools/team-tasks.d.ts +120 -0
  240. package/dist/src/tools/team-tasks.d.ts.map +1 -0
  241. package/dist/src/tools/team-tasks.js +365 -0
  242. package/dist/src/tools/team-tasks.js.map +1 -0
  243. package/dist/src/tools/transition-recorder.d.ts +3 -0
  244. package/dist/src/tools/transition-recorder.d.ts.map +1 -1
  245. package/dist/src/tools/transition-recorder.js +52 -1
  246. package/dist/src/tools/transition-recorder.js.map +1 -1
  247. package/dist/src/types/index.d.ts +5 -0
  248. package/dist/src/types/index.d.ts.map +1 -1
  249. package/dist/src/utils/get-version.d.ts.map +1 -1
  250. package/dist/src/utils/get-version.js +15 -4
  251. package/dist/src/utils/get-version.js.map +1 -1
  252. package/package.json +1 -1
  253. package/templates/cli/prompts/workflow-skill-conflict-patterns.txt +3 -3
  254. package/templates/cli/prompts/workflow-skill-lessons-learned.txt +3 -3
  255. package/templates/config.json +7 -0
  256. package/templates/search-tools.md +1 -1
  257. package/templates/worktree-scope.json +10 -0
  258. package/templates/worktrees.json +27 -0
  259. package/workflows/analyze.md +86 -36
  260. package/workflows/brainstorm.md +17 -37
  261. package/workflows/cli-tools-usage.md +44 -27
  262. package/workflows/delegate-usage.md +3 -3
  263. package/workflows/execute.md +94 -28
  264. package/workflows/fork.md +309 -0
  265. package/workflows/init.md +10 -1
  266. package/workflows/issue-analyze.md +6 -2
  267. package/workflows/issue-discover.md +4 -4
  268. package/workflows/issue-execute.md +6 -3
  269. package/workflows/issue-plan.md +5 -2
  270. package/workflows/issue.md +66 -7
  271. package/workflows/maestro-coordinate.codex.md +281 -470
  272. package/workflows/maestro-coordinate.md +37 -30
  273. package/workflows/maestro-link-coordinate.md +2 -2
  274. package/workflows/maestro.codex.md +710 -0
  275. package/workflows/maestro.md +62 -46
  276. package/workflows/merge.md +285 -0
  277. package/workflows/milestone-audit.md +89 -70
  278. package/workflows/milestone-complete.md +89 -156
  279. package/workflows/plan.md +122 -17
  280. package/workflows/retrospective.md +4 -4
  281. package/workflows/roadmap.md +11 -3
  282. package/workflows/spec-generate.md +9 -0
  283. package/workflows/status.md +76 -27
  284. package/workflows/ui-design.md +14 -12
  285. package/workflows/verify.md +44 -8
  286. package/.claude/commands/maestro-phase-add.md +0 -63
  287. package/.claude/commands/maestro-phase-transition.md +0 -75
  288. package/.claude/commands/manage-issue-analyze.md +0 -62
  289. package/.claude/commands/manage-issue-execute.md +0 -73
  290. package/.claude/commands/manage-issue-plan.md +0 -62
  291. package/.codex/skills/maestro-phase-add/SKILL.md +0 -154
  292. package/.codex/skills/maestro-phase-transition/SKILL.md +0 -173
  293. package/.codex/skills/manage-issue-analyze/SKILL.md +0 -207
  294. package/.codex/skills/manage-issue-execute/SKILL.md +0 -200
  295. package/.codex/skills/manage-issue-plan/SKILL.md +0 -186
  296. package/chains/singles/phase-add.json +0 -31
  297. package/chains/singles/phase-transition.json +0 -23
  298. package/dashboard/dist/assets/ChatInput-CL8YDfOU.js +0 -67
  299. package/dashboard/dist/assets/ChatPage-CT-ozBK2.js +0 -8
  300. package/dashboard/dist/assets/CollabPage-C0rWMden.js +0 -1
  301. package/dashboard/dist/assets/KanbanPage-C6WbAlwI.js +0 -16
  302. package/dashboard/dist/assets/McpPage-BPIXADQi.js +0 -16
  303. package/dashboard/dist/assets/TreeBrowser-g_QUKemL.js +0 -11
  304. package/dashboard/dist/assets/WorkflowPage-X8aNkDEr.js +0 -6
  305. package/dashboard/dist/assets/git-branch-SqFf4Ru5.js +0 -6
  306. package/dashboard/dist/assets/index-D2Mtyw7I.css +0 -1
  307. package/dashboard/dist/assets/index-nufWop4p.js +0 -231
  308. package/dashboard/dist/assets/wrench-B84-zdLI.js +0 -11
  309. package/dist/src/commands/team.d.ts.map +0 -1
  310. package/dist/src/commands/team.js.map +0 -1
  311. package/workflows/phase-add.md +0 -252
  312. package/workflows/phase-transition.md +0 -399
@@ -12,10 +12,21 @@ let cached = null;
12
12
  export function getPackageVersion() {
13
13
  if (cached)
14
14
  return cached;
15
- // Compiled JS lives at dist/src/utils/get-version.js 4 levels up to project root
16
- const pkgRoot = resolve(fileURLToPath(import.meta.url), '..', '..', '..', '..');
17
- const pkg = JSON.parse(readFileSync(resolve(pkgRoot, 'package.json'), 'utf-8'));
18
- cached = pkg.version ?? '0.0.0';
15
+ // Walk up from this file until we find a package.json with "maestro" in it
16
+ let dir = resolve(fileURLToPath(import.meta.url), '..');
17
+ for (let i = 0; i < 8; i++) {
18
+ const pkgPath = resolve(dir, 'package.json');
19
+ try {
20
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
21
+ if (pkg.name === 'maestro-flow' || pkg.name === 'maestro') {
22
+ cached = pkg.version ?? '0.0.0';
23
+ return cached;
24
+ }
25
+ }
26
+ catch { /* not found, keep going up */ }
27
+ dir = resolve(dir, '..');
28
+ }
29
+ cached = '0.0.0';
19
30
  return cached;
20
31
  }
21
32
  //# sourceMappingURL=get-version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get-version.js","sourceRoot":"","sources":["../../../src/utils/get-version.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0EAA0E;AAC1E,8EAA8E;AAE9E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,IAAI,MAAM,GAAkB,IAAI,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,mFAAmF;IACnF,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAChF,MAAM,GAAI,GAAG,CAAC,OAAkB,IAAI,OAAO,CAAC;IAC5C,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"get-version.js","sourceRoot":"","sources":["../../../src/utils/get-version.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0EAA0E;AAC1E,8EAA8E;AAE9E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,IAAI,MAAM,GAAkB,IAAI,CAAC;AAEjC;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,2EAA2E;IAC3E,IAAI,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACvD,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC1D,MAAM,GAAI,GAAG,CAAC,OAAkB,IAAI,OAAO,CAAC;gBAC5C,OAAO,MAAM,CAAC;YAChB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;QAC1C,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,GAAG,OAAO,CAAC;IACjB,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "maestro-flow",
3
- "version": "0.3.8",
3
+ "version": "0.3.10",
4
4
  "description": "Workflow orchestration CLI with MCP endpoint support and extensible architecture",
5
5
  "type": "module",
6
6
  "imports": {
@@ -66,18 +66,18 @@ Document recurring conflict patterns across workflow sessions with resolutions.
66
66
  - Context packages: `.workflow/.archives/{session_id}/.process/context-package.json` (reference only)
67
67
  - Session lessons: `manifest.json` -> `archives[].lessons.challenges`
68
68
 
69
- ## Conflict Identification (Use maestro cli)
69
+ ## Conflict Identification (Use maestro delegate)
70
70
 
71
71
  **Command Pattern**:
72
72
  ```bash
73
- maestro cli -p "
73
+ maestro delegate "
74
74
  PURPOSE: Identify conflict patterns from workflow sessions
75
75
  TASK: • Extract conflicts from IMPL_PLAN and lessons • Group by type (architecture/dependencies/testing/performance) • Identify recurring patterns (same conflict in different sessions) • Link resolutions to specific sessions
76
76
  MODE: analysis
77
77
  CONTEXT: @.workflow/.archives/*/IMPL_PLAN.md @.workflow/.archives/manifest.json
78
78
  EXPECTED: Conflict patterns with frequency and resolution
79
79
  CONSTRAINTS: analysis=READ-ONLY
80
- " --tool gemini --mode analysis --rule workflow-skill-aggregation --cd .workflow/.archives
80
+ " --to gemini --mode analysis --rule workflow-skill-aggregation --cd .workflow/.archives
81
81
  ```
82
82
 
83
83
  **Pattern Grouping**:
@@ -62,18 +62,18 @@ Aggregate lessons learned from workflow sessions, categorized by functional doma
62
62
  - Lessons: `manifest.json` -> `archives[].lessons.{successes|challenges|watch_patterns}`
63
63
  - Session metadata: `.workflow/.archives/{session_id}/workflow-session.json`
64
64
 
65
- ## Aggregation Rules (Use maestro cli)
65
+ ## Aggregation Rules (Use maestro delegate)
66
66
 
67
67
  **Command Pattern**:
68
68
  ```bash
69
- maestro cli -p "
69
+ maestro delegate "
70
70
  PURPOSE: Aggregate workflow lessons from session data
71
71
  TASK: • Group successes by functional domain • Categorize challenges by severity (HIGH/MEDIUM/LOW) • Identify watch patterns with frequency >= 2 • Mark CRITICAL patterns (3+ sessions)
72
72
  MODE: analysis
73
73
  CONTEXT: @.workflow/.archives/manifest.json
74
74
  EXPECTED: Aggregated lessons with frequency counts
75
75
  CONSTRAINTS: analysis=READ-ONLY
76
- " --tool gemini --mode analysis --rule workflow-skill-aggregation --cd .workflow/.archives
76
+ " --to gemini --mode analysis --rule workflow-skill-aggregation --cd .workflow/.archives
77
77
  ```
78
78
 
79
79
  **Severity Classification**:
@@ -49,5 +49,12 @@
49
49
  "doc_index": true,
50
50
  "auto_sync_after_execute": true,
51
51
  "action_log": true
52
+ },
53
+
54
+ "worktree": {
55
+ "enabled": true,
56
+ "root": ".worktrees",
57
+ "branch_prefix": "milestone/",
58
+ "auto_cleanup": true
52
59
  }
53
60
  }
@@ -17,7 +17,7 @@ Semantic Search → Grep (pattern) → Glob (files) → CLI (deep analysis)
17
17
  | Find by intent/behavior | Semantic search tool (see above) |
18
18
  | Known identifier/regex | `Grep` |
19
19
  | Find files by name/ext | `Glob` |
20
- | Complex cross-file reasoning | `maestro cli --tool gemini --mode analysis` |
20
+ | Complex cross-file reasoning | `maestro delegate --to gemini --mode analysis` |
21
21
  | Read identified file | `Read` |
22
22
 
23
23
  ## Fallback
@@ -0,0 +1,10 @@
1
+ {
2
+ "worktree": true,
3
+ "milestone_num": "{{MILESTONE_NUMBER}}",
4
+ "milestone": "{{MILESTONE_NAME}}",
5
+ "owned_phases": [],
6
+ "main_worktree": "{{MAIN_WORKTREE_PATH}}",
7
+ "branch": "milestone/{{MILESTONE_SLUG}}",
8
+ "base_commit": "{{BASE_COMMIT}}",
9
+ "created_at": "{{TIMESTAMP}}"
10
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "version": "1.0",
3
+ "worktrees": [
4
+ {
5
+ "milestone_num": "{{MILESTONE_NUMBER}}",
6
+ "milestone": "{{MILESTONE_NAME}}",
7
+ "slug": "{{MILESTONE_SLUG}}",
8
+ "branch": "milestone/{{MILESTONE_SLUG}}",
9
+ "path": "{{WORKTREE_ROOT}}/m{{MILESTONE_NUMBER}}-{{MILESTONE_SLUG}}",
10
+ "base_commit": "{{BASE_COMMIT}}",
11
+ "status": "active",
12
+ "created_at": "{{TIMESTAMP}}",
13
+ "owned_phases": [],
14
+ "fork_session": "{{FORK_SESSION_ID}}"
15
+ }
16
+ ],
17
+ "fork_sessions": [
18
+ {
19
+ "session_id": "fork-{{TIMESTAMP_SHORT}}",
20
+ "created_at": "{{TIMESTAMP}}",
21
+ "milestone_num": "{{MILESTONE_NUMBER}}",
22
+ "milestone": "{{MILESTONE_NAME}}",
23
+ "base_branch": "{{BASE_BRANCH}}",
24
+ "base_commit": "{{BASE_COMMIT}}"
25
+ }
26
+ ]
27
+ }
@@ -41,29 +41,60 @@ Quick mode (-q):
41
41
  ## Arguments
42
42
 
43
43
  ```
44
- $ARGUMENTS: "<phase|topic> [-y] [-c] [-q]"
44
+ $ARGUMENTS: "[phase|topic] [-y] [-c] [-q]"
45
45
 
46
- <phase> -- Phase number (phase mode, operates within phase directory)
47
- <topic> -- Topic text (scratch mode, creates scratch directory)
46
+ (no args) -- Milestone-wide analysis (requires init + roadmap)
47
+ <phase> -- Phase number (phase-scoped, requires init + roadmap)
48
+ <topic> -- Topic text (adhoc if milestone exists, standalone if not)
48
49
  -y / --yes -- Auto mode, skip interactive scoping, auto-deepen
49
50
  -c / --continue -- Resume from existing session
50
51
  -q / --quick -- Quick mode, skip exploration + scoring, go straight to decision extraction
51
52
  ```
52
53
 
53
- ## Dual-Mode Routing
54
-
55
- ```
56
- IF $ARGUMENTS matches /^\d+$/
57
- Phase mode
58
- Resolve phase dir from state.json + roadmap
59
- Set OUTPUT_DIR = .workflow/phases/{NN}-{slug}/
60
- Update index.json: status → "exploring"
61
-
62
- ELSE
63
- Scratch mode
64
- Slugify topic (lowercase, hyphens, max 40 chars)
65
- Set OUTPUT_DIR = .workflow/scratch/analyze-{slug}-{date}/
66
- Create directory + index.json from scratch-index template (type="analyze")
54
+ ## Scope Routing
55
+
56
+ ```
57
+ // Worktree scope check
58
+ IF file_exists(".workflow/worktree-scope.json"):
59
+ scope = read(".workflow/worktree-scope.json")
60
+ IF $ARGUMENTS matches /^\d+$/ AND parseInt($ARGUMENTS) NOT IN scope.owned_phases:
61
+ ERROR "Phase {$ARGUMENTS} not owned by this worktree. Owned: {scope.owned_phases}"
62
+ EXIT
63
+
64
+ // Auto-bootstrap state.json if missing
65
+ IF NOT file_exists(".workflow/state.json"):
66
+ mkdir -p .workflow/scratch/
67
+ Write minimal state.json: { project: null, status: "active", current_milestone: null,
68
+ current_task_id: null, milestones: [], artifacts: [], last_updated: now() }
69
+
70
+ // Scope determination
71
+ IF $ARGUMENTS is empty:
72
+ IF state.json.current_milestone is non-null AND roadmap.md exists:
73
+ → scope = "milestone"
74
+ → milestone_slug = slugify(current_milestone name)
75
+ → Set OUTPUT_DIR = .workflow/scratch/analyze-{milestone_slug}-{date}/
76
+ ELSE:
77
+ → ERROR E001 "No args and no roadmap — provide topic text or create roadmap first"
78
+
79
+ ELSE IF $ARGUMENTS matches /^\d+$/:
80
+ IF state.json.current_milestone is non-null AND roadmap.md exists:
81
+ → scope = "phase"
82
+ → phase_num = parsed number
83
+ → phase_slug = resolve from roadmap.md
84
+ → Set OUTPUT_DIR = .workflow/scratch/analyze-{phase_slug}-{date}/
85
+ ELSE:
86
+ → ERROR "Phase number requires init + roadmap"
87
+
88
+ ELSE (text argument):
89
+ → topic_slug = slugify(text, max 40 chars)
90
+ IF state.json.current_milestone is non-null:
91
+ → scope = "adhoc"
92
+ ELSE:
93
+ → scope = "standalone"
94
+ → Set OUTPUT_DIR = .workflow/scratch/analyze-{topic_slug}-{date}/
95
+
96
+ // Create output directory
97
+ mkdir -p {OUTPUT_DIR}
67
98
  ```
68
99
 
69
100
  ## Output Structure
@@ -89,31 +120,23 @@ Parse $ARGUMENTS to determine mode and flags:
89
120
  - `-c` present: locate existing session folder (discussion.md exists), resume from last round
90
121
  - `-y` present: set AUTO_MODE=true
91
122
  - `-q` present: set QUICK_MODE=true (skip Steps 2-7, jump to Step 8: Decision Extraction)
92
- - Number (e.g., "3") = phase mode: resolve `.workflow/phases/{NN}-*/`, verify phase exists in roadmap
93
- - Text (e.g., "microservices vs monolith") = scratch mode: slugify topic, prepare scratch directory path
94
- - Missing/empty = error E001
123
+ - Number (e.g., "3") = phase scope: resolve phase slug from roadmap, output to scratch/analyze-{phase-slug}-{date}/
124
+ - Text (e.g., "microservices vs monolith") = adhoc/standalone scope: output to scratch/analyze-{slug}-{date}/
125
+ - Missing/empty = milestone scope (if roadmap exists) or error E001
95
126
 
96
127
  **Session initialization:**
97
128
  - Session ID: `ANL-{slug}-{YYYY-MM-DD}`
98
- - Phase mode output: phase directory
99
- - Scratch mode output: `.workflow/scratch/analyze-{slug}-{date}/`
129
+ - Output: `OUTPUT_DIR` (always under `.workflow/scratch/`)
100
130
 
101
- **Load prior context** (phase mode):
131
+ **Load prior context** (milestone/phase scope):
102
132
  1. Read `.workflow/project.md` — project vision, constraints, Validated requirements (already shipped), Active requirements (current scope)
103
133
  2. Read `.workflow/roadmap.md` — phase structure and dependencies
104
- 3. Read index.json in phase dir goal, success_criteria
105
- 4. Read `.brainstorming/guidance-specification.md` in phase dir (if exists) detailed requirements, constraints, RFC 2119 decisions from brainstorm. Skip areas marked as MUST/MUST NOT (already locked).
106
- 5. Read `.brainstorming/feature-index.json` in phase dir (if exists) feature decomposition
107
- 6. Read `brainstorm.md` in phase dir (if exists, legacy fallback, skip if guidance-specification.md loaded)
108
- 7. Read `analysis.md` in phase dir (if exists, for continuation)
109
- 8. Read `conclusions.json` in phase dir (if exists, for continuation)
110
- 9. Read prior phases' `context.md` files — skip already-decided areas
111
- 10. Read existing `context.md` in this phase (if exists, for continuation)
112
- 11. Load project specs: `specs_content = maestro spec load --category planning`
113
- Ensures analysis decisions don't conflict with existing architecture constraints.
114
- 12. Read `.workflow/state.json` → `accumulated_context` (key_decisions, deferred items, blockers)
115
-
116
- **Load prior context** (scratch mode):
134
+ 3. Read `.workflow/state.json` `current_milestone`, `artifacts[]`, `accumulated_context` (key_decisions, deferred items, blockers)
135
+ 4. Find prior analyze artifacts from `state.json.artifacts[]` where type=analyze and same milestone load their `context.md` to skip already-decided areas
136
+ 5. Find brainstorm artifacts from `state.json.artifacts[]` where type=brainstorm and same milestone load `guidance-specification.md` if exists
137
+ 6. Load project specs: `specs_content = maestro spec load --category planning`
138
+
139
+ **Load prior context** (adhoc/standalone scope):
117
140
  1. Read `.workflow/project.md` (if exists) — project vision, Validated requirements, Active requirements, Key Decisions
118
141
  2. Read `.workflow/state.json` (if exists) → `accumulated_context` (key_decisions, deferred, blockers)
119
142
  3. Load project specs: `specs_content = maestro spec load --category planning`
@@ -571,6 +594,33 @@ IF deferred_items.length > 0:
571
594
  Print: "Created {deferred_items.length} deferred issues for tracking"
572
595
  ```
573
596
 
597
+ ### Step 8.8: Register Artifact
598
+
599
+ ```
600
+ // Register in state.json artifact registry
601
+ Read .workflow/state.json
602
+ next_id = max(artifacts.filter(a => a.type == "analyze").map(a => parseInt(a.id.replace("ANL-","")))) + 1
603
+ // If no analyze artifacts exist: next_id = 1
604
+
605
+ artifact = {
606
+ id: "ANL-{next_id padded to 3}",
607
+ type: "analyze",
608
+ milestone: state.json.current_milestone, // null if standalone
609
+ phase: phase_num, // null if milestone/adhoc/standalone
610
+ scope: scope, // "milestone"|"phase"|"adhoc"|"standalone"
611
+ path: OUTPUT_DIR relative to .workflow/, // e.g. "scratch/analyze-auth-2026-04-20"
612
+ status: "completed",
613
+ depends_on: null,
614
+ harvested: false,
615
+ created_at: session_start_time,
616
+ completed_at: now()
617
+ }
618
+
619
+ state.json.artifacts.push(artifact)
620
+ state.json.last_updated = now()
621
+ Write state.json (atomic: write tmp + rename)
622
+ ```
623
+
574
624
  ### Step 9: Report & Next Step
575
625
 
576
626
  Display summary:
@@ -47,8 +47,8 @@ Phase 3: Single Role Analysis → Detection → Context → Agent → Validation
47
47
  ## Input
48
48
 
49
49
  - `$ARGUMENTS`: topic text (auto mode) or role name (single role mode)
50
- - Phase mode: operates within `.workflow/phases/{NN}-{slug}/`
51
- - Scratch mode: creates `.workflow/scratch/brainstorm-{slug}-{date}/`
50
+ - All output goes to `.workflow/scratch/brainstorm-{slug}-{date}/`
51
+ - Registers artifact (type=brainstorm) in state.json on completion
52
52
 
53
53
  ### Parameters
54
54
 
@@ -80,32 +80,21 @@ Phase 3: Single Role Analysis → Detection → Context → Agent → Validation
80
80
 
81
81
  ### Directory Structure
82
82
 
83
- **Phase mode**:
84
- ```
85
- .workflow/phases/{NN}-{slug}/
86
- ├── brainstorm.md # Legacy simple output (if no session)
87
- ├── index.json # Updated timestamps
88
- └── .brainstorming/ # Full brainstorm session
89
- ├── guidance-specification.md # Phase 2 output
90
- ├── feature-index.json # Phase 4 output
91
- ├── synthesis-changelog.md # Phase 4 audit trail
92
- ├── feature-specs/ # Phase 4 feature specs
93
- │ ├── F-001-{slug}.md
94
- │ └── F-00N-{slug}.md
95
- ├── {role}/ # Phase 3 role analyses (immutable)
96
- │ ├── {role}-context.md
97
- │ ├── analysis.md
98
- │ ├── analysis-cross-cutting.md
99
- │ └── analysis-F-{id}-{slug}.md
100
- └── synthesis-specification.md # Non-feature mode fallback
101
- ```
102
-
103
- **Scratch mode**:
83
+ All brainstorm output goes to scratch:
104
84
  ```
105
85
  .workflow/scratch/brainstorm-{slug}-{date}/
106
- ├── index.json # scratch-index template
107
- └── .brainstorming/ # Same structure as phase mode
108
- └── ...
86
+ ├── guidance-specification.md # Phase 2 output
87
+ ├── feature-index.json # Phase 4 output
88
+ ├── synthesis-changelog.md # Phase 4 audit trail
89
+ ├── feature-specs/ # Phase 4 feature specs
90
+ │ ├── F-001-{slug}.md
91
+ │ └── F-00N-{slug}.md
92
+ ├── {role}/ # Phase 3 role analyses (immutable)
93
+ │ ├── {role}-context.md
94
+ │ ├── analysis.md
95
+ │ ├── analysis-cross-cutting.md
96
+ │ └── analysis-F-{id}-{slug}.md
97
+ └── synthesis-specification.md # Non-feature mode fallback
109
98
  ```
110
99
 
111
100
  ---
@@ -138,17 +127,8 @@ Parse $ARGUMENTS to determine execution mode:
138
127
 
139
128
  **Output Directory Resolution**:
140
129
  - Phase mode (number): `.workflow/phases/{NN}-{slug}/.brainstorming/`
141
- - Scratch mode (text): `.workflow/scratch/brainstorm-{slug}-{date}/.brainstorming/`
142
- - Existing session: use session's `.brainstorming/` directory
143
-
144
- **Archive previous brainstorming session** (Phase mode only, skip if `--session` or `--update`):
145
- ```
146
- PARENT_DIR = parent of output directory (e.g., .workflow/phases/{NN}-{slug}/)
147
- IF directory exists "${PARENT_DIR}/.brainstorming" AND NOT --session AND NOT --update:
148
- mkdir -p "${PARENT_DIR}/.history"
149
- TIMESTAMP = current timestamp formatted as "YYYY-MM-DDTHH-mm-ss"
150
- mv "${PARENT_DIR}/.brainstorming" "${PARENT_DIR}/.history/.brainstorming-${TIMESTAMP}"
151
- ```
130
+ - All output: `.workflow/scratch/brainstorm-{slug}-{date}/`
131
+ - Existing session: use existing session directory
152
132
 
153
133
  ---
154
134
 
@@ -1,7 +1,7 @@
1
- # CLI Tools Execution Specification
1
+ # Delegate Execution Specification
2
2
 
3
3
  <purpose>
4
- Unified reference for `maestro cli` — runs agent tools (gemini, qwen, codex, claude, opencode) with a shared interface for prompt, mode, model, directory, templates, and session resume.
4
+ Unified reference for `maestro delegate` — synchronous task delegation with broker-managed lifecycle, message injection, and MCP notifications.
5
5
  </purpose>
6
6
 
7
7
  **References**: `~/.maestro/cli-tools.json` (tool config), `~/.maestro/templates/cli/` (protocol + prompt templates)
@@ -15,15 +15,14 @@ Unified reference for `maestro cli` — runs agent tools (gemini, qwen, codex, c
15
15
  ### Command Syntax
16
16
 
17
17
  ```bash
18
- maestro cli -p "<PROMPT>" [options]
18
+ maestro delegate "<PROMPT>" [options]
19
19
  ```
20
20
 
21
21
  ### Options
22
22
 
23
23
  | Option | Description | Default |
24
24
  |--------|-------------|---------|
25
- | `-p, --prompt` | **Required**. Prompt text | |
26
- | `--tool <name>` | Tool: gemini, qwen, codex, claude, opencode | First enabled in config |
25
+ | `--to <name>` | Tool: gemini, qwen, codex, claude, opencode | First enabled in config |
27
26
  | `--mode <mode>` | `analysis` (read-only) or `write` (create/modify/delete) | `analysis` |
28
27
  | `--model <model>` | Model override | Tool's `primaryModel` |
29
28
  | `--cd <dir>` | Working directory | Current directory |
@@ -31,6 +30,7 @@ maestro cli -p "<PROMPT>" [options]
31
30
  | `--rule <template>` | Load protocol + prompt template | — (optional) |
32
31
  | `--id <id>` | Execution ID | Auto: `{prefix}-{HHmmss}-{rand4}` |
33
32
  | `--resume [id]` | Resume session (last if no id, comma-separated for merge) | — |
33
+ | `--backend <type>` | Adapter backend: `direct` or `terminal` (tmux/wezterm) | `direct` |
34
34
 
35
35
  ### Mode Definition (Authoritative)
36
36
 
@@ -39,7 +39,7 @@ maestro cli -p "<PROMPT>" [options]
39
39
  | `analysis` | Read-only | Yes | Review, exploration, diagnosis, architecture analysis |
40
40
  | `write` | Create/Modify/Delete | No — requires explicit intent | Implementation, bug fixes, refactoring |
41
41
 
42
- > `--mode` is the **authoritative** permission control for maestro cli. The `MODE:` field inside prompt text is a hint for the agent — both should be consistent, but `--mode` governs actual behavior.
42
+ > `--mode` is the **authoritative** permission control. The `MODE:` field inside prompt text is a hint for the agent — both should be consistent, but `--mode` governs actual behavior.
43
43
  </context>
44
44
 
45
45
  ---
@@ -72,8 +72,8 @@ maestro cli -p "<PROMPT>" [options]
72
72
 
73
73
  ### Tool Selection
74
74
 
75
- 1. Explicit `--tool` specified → use it (validate enabled)
76
- 2. No `--tool` → first enabled tool in config order
75
+ 1. Explicit `--to` specified → use it (validate enabled)
76
+ 2. No `--to` → first enabled tool in config order
77
77
 
78
78
  ### Fallback Chain
79
79
 
@@ -88,10 +88,10 @@ Primary model fails → `secondaryModel` → next enabled tool → first enabled
88
88
 
89
89
  ### Assembly Order
90
90
 
91
- `maestro cli` builds the final prompt as:
91
+ `maestro delegate` builds the final prompt as:
92
92
 
93
93
  1. **Mode protocol** — `~/.maestro/templates/cli/protocols/{mode}-protocol.md`
94
- 2. **User prompt** — the `-p` value
94
+ 2. **User prompt** — the positional `"<PROMPT>"` value
95
95
  3. **Rule template** — `~/.maestro/templates/cli/prompts/{rule}.txt` (if `--rule` specified)
96
96
 
97
97
  ### Prompt Template (6 Fields)
@@ -122,7 +122,7 @@ CONSTRAINTS: [scope limits] | [special requirements]
122
122
 
123
123
  ```bash
124
124
  # Cross-directory example
125
- maestro cli -p "CONTEXT: @**/* @../shared/**/*" --tool gemini --mode analysis \
125
+ maestro delegate "CONTEXT: @**/* @../shared/**/*" --to gemini --mode analysis \
126
126
  --cd "src/auth" --includeDirs "../shared"
127
127
  ```
128
128
 
@@ -148,13 +148,13 @@ Memory: Integration with auth module, using shared error patterns
148
148
  ### Complete Example
149
149
 
150
150
  ```bash
151
- maestro cli -p "PURPOSE: Identify OWASP Top 10 vulnerabilities in auth module; success = all critical/high documented with remediation
151
+ maestro delegate "PURPOSE: Identify OWASP Top 10 vulnerabilities in auth module; success = all critical/high documented with remediation
152
152
  TASK: Scan for injection flaws | Check auth bypass vectors | Evaluate session management | Assess data exposure
153
153
  MODE: analysis
154
154
  CONTEXT: @src/auth/**/* @src/middleware/auth.ts | Memory: Using bcrypt + JWT
155
155
  EXPECTED: Severity matrix, file:line references, remediation snippets, priority ranking
156
156
  CONSTRAINTS: Focus on authentication | Ignore test files
157
- " --tool gemini --mode analysis --rule analysis-assess-security-risks --cd "src/auth"
157
+ " --to gemini --mode analysis --rule analysis-assess-security-risks --cd "src/auth"
158
158
  ```
159
159
  </context>
160
160
 
@@ -164,6 +164,24 @@ CONSTRAINTS: Focus on authentication | Ignore test files
164
164
 
165
165
  <execution>
166
166
 
167
+ ### Calling Convention
168
+
169
+ `maestro delegate` runs synchronously — it blocks until the delegate completes. To avoid blocking the conversation, **always** use `run_in_background: true` on the Bash tool call, then stop output immediately and wait for the background completion callback.
170
+
171
+ ```
172
+ Bash({
173
+ command: "maestro delegate \"<PROMPT>\" --to gemini --mode analysis",
174
+ run_in_background: true
175
+ })
176
+ // STOP — do not output anything further
177
+ // Wait for Bash background completion callback to receive results
178
+ ```
179
+
180
+ **Rules:**
181
+ - **Never** use foreground Bash for delegate calls — it blocks the conversation for the entire execution duration
182
+ - After the `Bash(run_in_background: true)` call, **stop immediately** — no follow-up text, no polling, no `delegate status` checks
183
+ - When the background callback arrives, retrieve output with `maestro delegate output <id>`
184
+
167
185
  ### Execution ID
168
186
 
169
187
  ID prefix: gemini→`gem`, qwen→`qwn`, codex→`cdx`, claude→`cld`, opencode→`opc`
@@ -171,16 +189,16 @@ ID prefix: gemini→`gem`, qwen→`qwn`, codex→`cdx`, claude→`cld`, opencode
171
189
  Output to stderr: `[MAESTRO_EXEC_ID=<id>]`
172
190
 
173
191
  ```bash
174
- maestro cli -p "<PROMPT>" --tool gemini --mode analysis # auto-ID: gem-143022-a7f2
175
- maestro cli -p "<PROMPT>" --tool gemini --mode write --id my-task-1 # custom ID
192
+ maestro delegate "<PROMPT>" --to gemini --mode analysis # auto-ID: gem-143022-a7f2
193
+ maestro delegate "<PROMPT>" --to gemini --mode write --id my-task-1 # custom ID
176
194
  ```
177
195
 
178
196
  ### Session Resume
179
197
 
180
198
  ```bash
181
- maestro cli -p "<PROMPT>" --tool gemini --resume # last session
182
- maestro cli -p "<PROMPT>" --tool gemini --mode write --resume <id> # specific
183
- maestro cli -p "<PROMPT>" --tool gemini --resume <id1>,<id2> # merge multiple
199
+ maestro delegate "<PROMPT>" --to gemini --resume # last session
200
+ maestro delegate "<PROMPT>" --to gemini --mode write --resume <id> # specific
201
+ maestro delegate "<PROMPT>" --to gemini --resume <id1>,<id2> # merge multiple
184
202
  ```
185
203
 
186
204
  Resume auto-assembles previous conversation context. Warning emitted when context exceeds 32KB.
@@ -188,14 +206,13 @@ Resume auto-assembles previous conversation context. Warning emitted when contex
188
206
  ### Subcommands
189
207
 
190
208
  ```bash
191
- maestro cli show # recent 20 executions
192
- maestro cli show --all # up to 100
193
- maestro cli output <id> # assistant output (always shows status header)
194
- maestro cli output <id> --verbose # include start/end timestamps
195
- maestro cli output <id> --tail 20 # last 20 lines of output
196
- maestro cli output <id> --lines 10 # alias for --tail
197
- maestro cli watch <id> # stream output in real-time until completion
198
- maestro cli watch <id> --timeout 60000 # auto-exit after 60s
209
+ maestro delegate show # recent 20 executions
210
+ maestro delegate show --all # up to 100
211
+ maestro delegate output <id> # assistant output
212
+ maestro delegate output <id> --verbose # include start/end timestamps
213
+ maestro delegate status <id> # broker + history + snapshot preview
214
+ maestro delegate tail <id> # recent events + history
215
+ maestro delegate cancel <id> # request cancellation
199
216
  ```
200
217
  </execution>
201
218
 
@@ -205,7 +222,7 @@ maestro cli watch <id> --timeout 60000 # auto-exit after 60s
205
222
 
206
223
  <execution>
207
224
 
208
- Proactively invoke `maestro cli` when these conditions are met — no user confirmation needed for `analysis` mode:
225
+ Proactively invoke `maestro delegate` when these conditions are met — no user confirmation needed for `analysis` mode:
209
226
 
210
227
  | Trigger | Suggested Rule |
211
228
  |---------|---------------|
@@ -1,7 +1,7 @@
1
1
  # Delegate Execution Specification
2
2
 
3
3
  <purpose>
4
- Unified reference for `maestro delegate` — synchronous task delegation with broker-managed lifecycle, message injection, and MCP notifications. Superset of `maestro cli` with cancellation and message chaining.
4
+ Unified reference for `maestro delegate` — synchronous task delegation with broker-managed lifecycle, message injection, and MCP notifications.
5
5
  </purpose>
6
6
 
7
7
  **References**: `~/.maestro/cli-tools.json` (tool config), `~/.maestro/templates/cli/` (protocol + prompt templates)
@@ -87,7 +87,7 @@ With MCP connected, all delegate tools are available programmatically.
87
87
 
88
88
  ### Assembly Order
89
89
 
90
- `maestro delegate` builds the final prompt identically to `maestro cli`:
90
+ `maestro delegate` builds the final prompt as:
91
91
 
92
92
  1. **Mode protocol** — `~/.maestro/templates/cli/protocols/{mode}-protocol.md`
93
93
  2. **User prompt** — the positional `"<PROMPT>"` value
@@ -243,7 +243,7 @@ All subcommands are also available as MCP tools for programmatic access:
243
243
 
244
244
  ### Snapshot & Preview
245
245
 
246
- `delegate status` includes a `Preview:` field showing the agent's latest output — built from `assistant_message`, `tool_use` completions, and `file_change` events. This serves the same purpose as `maestro cli watch` without requiring real-time streaming.
246
+ `delegate status` includes a `Preview:` field showing the agent's latest output — built from `assistant_message`, `tool_use` completions, and `file_change` events.
247
247
 
248
248
  ### Job Lifecycle
249
249