maestro-flow 0.3.14 → 0.3.16

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 (392) hide show
  1. package/.claude/commands/maestro-amend.md +300 -0
  2. package/.claude/commands/maestro-analyze.md +1 -49
  3. package/.claude/commands/maestro-composer.md +354 -0
  4. package/.claude/commands/maestro-execute.md +2 -56
  5. package/.claude/commands/maestro-fork.md +3 -50
  6. package/.claude/commands/maestro-merge.md +2 -26
  7. package/.claude/commands/maestro-milestone-audit.md +1 -5
  8. package/.claude/commands/maestro-milestone-complete.md +1 -7
  9. package/.claude/commands/maestro-plan.md +6 -127
  10. package/.claude/commands/maestro-player.md +404 -0
  11. package/.claude/commands/maestro-roadmap.md +3 -101
  12. package/.claude/commands/maestro-spec-generate.md +1 -25
  13. package/.claude/commands/maestro-ui-design.md +14 -73
  14. package/.claude/commands/maestro-verify.md +1 -32
  15. package/.claude/commands/maestro.md +13 -30
  16. package/.claude/commands/manage-harvest.md +7 -44
  17. package/.claude/commands/manage-knowhow-capture.md +193 -0
  18. package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
  19. package/.claude/commands/manage-learn.md +3 -28
  20. package/.claude/commands/manage-status.md +1 -20
  21. package/.claude/commands/manage-wiki.md +1 -1
  22. package/.claude/commands/quality-business-test.md +1 -1
  23. package/.claude/commands/quality-debug.md +3 -18
  24. package/.claude/commands/quality-integration-test.md +3 -23
  25. package/.claude/commands/quality-retrospective.md +1 -28
  26. package/.claude/commands/quality-review.md +3 -52
  27. package/.claude/commands/quality-test-gen.md +1 -10
  28. package/.claude/commands/quality-test.md +3 -25
  29. package/.claude/commands/spec-add.md +1 -21
  30. package/.claude/commands/spec-load.md +1 -16
  31. package/.claude/commands/wiki-connect.md +2 -112
  32. package/.claude/commands/wiki-digest.md +2 -141
  33. package/.claude/skills/skill-iter-tune/SKILL.md +382 -0
  34. package/.claude/skills/skill-iter-tune/phases/01-setup.md +144 -0
  35. package/.claude/skills/skill-iter-tune/phases/02-execute.md +292 -0
  36. package/.claude/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
  37. package/.claude/skills/skill-iter-tune/phases/04-improve.md +186 -0
  38. package/.claude/skills/skill-iter-tune/phases/05-report.md +166 -0
  39. package/.claude/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
  40. package/.claude/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
  41. package/.claude/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
  42. package/.claude/skills/workflow-skill-designer/SKILL.md +496 -0
  43. package/.claude/skills/workflow-skill-designer/phases/01-requirements-analysis.md +356 -0
  44. package/.claude/skills/workflow-skill-designer/phases/02-orchestrator-design.md +444 -0
  45. package/.claude/skills/workflow-skill-designer/phases/03-phase-design.md +458 -0
  46. package/.claude/skills/workflow-skill-designer/phases/04-validation.md +471 -0
  47. package/.codex/skills/learn-decompose/SKILL.md +2 -8
  48. package/.codex/skills/maestro/SKILL.md +60 -146
  49. package/.codex/skills/maestro-analyze/SKILL.md +52 -150
  50. package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
  51. package/.codex/skills/maestro-composer/SKILL.md +213 -0
  52. package/.codex/skills/maestro-execute/SKILL.md +46 -177
  53. package/.codex/skills/maestro-init/SKILL.md +7 -51
  54. package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
  55. package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
  56. package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
  57. package/.codex/skills/maestro-overlay/SKILL.md +23 -92
  58. package/.codex/skills/maestro-plan/SKILL.md +42 -166
  59. package/.codex/skills/maestro-player/SKILL.md +323 -0
  60. package/.codex/skills/maestro-quick/SKILL.md +5 -48
  61. package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
  62. package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
  63. package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
  64. package/.codex/skills/maestro-verify/SKILL.md +39 -136
  65. package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
  66. package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
  67. package/.codex/skills/manage-issue/SKILL.md +1 -6
  68. package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
  69. package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
  70. package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
  71. package/.codex/skills/manage-learn/SKILL.md +17 -71
  72. package/.codex/skills/manage-status/SKILL.md +4 -35
  73. package/.codex/skills/manage-wiki/SKILL.md +1 -1
  74. package/.codex/skills/quality-business-test/SKILL.md +2 -14
  75. package/.codex/skills/quality-debug/SKILL.md +41 -133
  76. package/.codex/skills/quality-integration-test/SKILL.md +36 -145
  77. package/.codex/skills/quality-refactor/SKILL.md +6 -59
  78. package/.codex/skills/quality-retrospective/SKILL.md +292 -531
  79. package/.codex/skills/quality-review/SKILL.md +30 -65
  80. package/.codex/skills/quality-sync/SKILL.md +2 -11
  81. package/.codex/skills/quality-test/SKILL.md +4 -45
  82. package/.codex/skills/quality-test-gen/SKILL.md +33 -121
  83. package/.codex/skills/spec-add/SKILL.md +2 -9
  84. package/.codex/skills/spec-load/SKILL.md +4 -14
  85. package/.codex/skills/spec-map/SKILL.md +4 -37
  86. package/.codex/skills/spec-remove/SKILL.md +3 -35
  87. package/.codex/skills/spec-setup/SKILL.md +2 -19
  88. package/.codex/skills/team-coordinate/SKILL.md +20 -132
  89. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
  90. package/.codex/skills/team-executor/SKILL.md +7 -66
  91. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
  92. package/.codex/skills/team-executor/specs/session-schema.md +22 -56
  93. package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
  94. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
  95. package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
  96. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
  97. package/.codex/skills/team-review/SKILL.md +12 -86
  98. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
  99. package/.codex/skills/team-tech-debt/SKILL.md +11 -50
  100. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
  101. package/.codex/skills/team-testing/SKILL.md +14 -99
  102. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
  103. package/.codex/skills/wiki-connect/SKILL.md +2 -5
  104. package/README.md +6 -0
  105. package/README.zh-CN.md +6 -0
  106. package/chains/_intent-map.json +7 -7
  107. package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
  108. package/chains/singles/{memory.json → knowhow.json} +6 -6
  109. package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
  110. package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
  111. package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
  112. package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
  113. package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
  114. package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
  115. package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
  116. package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
  117. package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
  118. package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
  119. package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
  120. package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
  121. package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
  122. package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
  123. package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
  124. package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
  125. package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
  126. package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
  127. package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
  128. package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
  129. package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
  130. package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
  131. package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
  132. package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
  133. package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
  134. package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
  135. package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
  136. package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
  137. package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
  138. package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
  139. package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
  140. package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
  141. package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
  142. package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
  143. package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
  144. package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
  145. package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
  146. package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
  147. package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
  148. package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
  149. package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
  150. package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
  151. package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
  152. package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
  153. package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
  154. package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
  155. package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
  156. package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
  157. package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
  158. package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
  159. package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
  160. package/dashboard/dist/index.html +2 -2
  161. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
  162. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
  163. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  164. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
  165. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  166. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
  167. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
  168. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  169. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
  170. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
  171. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
  172. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  173. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
  174. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
  175. package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
  176. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  177. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
  178. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
  179. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
  180. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
  181. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
  182. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
  183. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
  184. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
  185. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
  186. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
  187. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
  188. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
  189. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
  190. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
  191. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
  192. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
  193. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
  194. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
  195. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
  196. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
  197. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
  198. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
  199. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
  200. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
  201. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
  202. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
  203. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
  204. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
  205. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
  206. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
  207. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
  208. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
  209. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
  210. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
  211. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
  212. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
  213. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
  214. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
  215. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
  216. package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
  217. package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
  218. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
  219. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
  220. package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
  221. package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
  222. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  223. package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
  224. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  225. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
  226. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
  227. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
  228. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
  229. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
  230. package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
  231. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
  232. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
  233. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
  234. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  235. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
  236. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  237. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
  238. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
  239. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  240. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
  241. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  242. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
  243. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  244. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
  245. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  246. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
  247. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
  248. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  249. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
  250. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
  251. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  252. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
  253. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
  254. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  255. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
  256. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
  257. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
  258. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
  259. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
  260. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
  261. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
  262. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
  263. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
  264. package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
  265. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  266. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
  267. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
  268. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
  269. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
  270. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  271. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
  272. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
  273. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  274. package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
  275. package/dashboard/dist-server/src/commands/delegate.js +11 -8
  276. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  277. package/dist/shared/agent-types.d.ts +2 -0
  278. package/dist/shared/agent-types.d.ts.map +1 -1
  279. package/dist/src/cli.js +2 -2
  280. package/dist/src/cli.js.map +1 -1
  281. package/dist/src/commands/delegate.d.ts.map +1 -1
  282. package/dist/src/commands/delegate.js +11 -8
  283. package/dist/src/commands/delegate.js.map +1 -1
  284. package/dist/src/commands/install-backend.d.ts +1 -1
  285. package/dist/src/commands/install-backend.d.ts.map +1 -1
  286. package/dist/src/commands/install-backend.js +1 -1
  287. package/dist/src/commands/install-backend.js.map +1 -1
  288. package/dist/src/commands/knowhow.d.ts +10 -0
  289. package/dist/src/commands/knowhow.d.ts.map +1 -0
  290. package/dist/src/commands/knowhow.js +217 -0
  291. package/dist/src/commands/knowhow.js.map +1 -0
  292. package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
  293. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
  294. package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
  295. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
  296. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
  297. package/dist/src/commands/overlay-ui/index.js +70 -44
  298. package/dist/src/commands/overlay-ui/index.js.map +1 -1
  299. package/dist/src/commands/overlay.d.ts.map +1 -1
  300. package/dist/src/commands/overlay.js +4 -3
  301. package/dist/src/commands/overlay.js.map +1 -1
  302. package/dist/src/core/overlay/applier.d.ts +1 -1
  303. package/dist/src/core/overlay/applier.d.ts.map +1 -1
  304. package/dist/src/core/overlay/applier.js +40 -13
  305. package/dist/src/core/overlay/applier.js.map +1 -1
  306. package/dist/src/core/overlay/loader.d.ts.map +1 -1
  307. package/dist/src/core/overlay/loader.js +6 -0
  308. package/dist/src/core/overlay/loader.js.map +1 -1
  309. package/dist/src/core/overlay/types.d.ts +5 -1
  310. package/dist/src/core/overlay/types.d.ts.map +1 -1
  311. package/dist/src/core/overlay/types.js +1 -1
  312. package/dist/src/core/overlay/types.js.map +1 -1
  313. package/dist/src/hooks/context-monitor.js +1 -1
  314. package/dist/src/hooks/context-monitor.js.map +1 -1
  315. package/dist/src/hooks/skill-context.js +1 -1
  316. package/dist/src/hooks/skill-context.js.map +1 -1
  317. package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
  318. package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
  319. package/dist/src/mcp/delegate-channel-relay.js +73 -4
  320. package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
  321. package/dist/src/tools/index.js +2 -2
  322. package/dist/src/tools/index.js.map +1 -1
  323. package/dist/src/tools/store-knowhow.d.ts +21 -0
  324. package/dist/src/tools/store-knowhow.d.ts.map +1 -0
  325. package/dist/src/tools/store-knowhow.js +295 -0
  326. package/dist/src/tools/store-knowhow.js.map +1 -0
  327. package/package.json +1 -1
  328. package/shared/agent-types.ts +2 -0
  329. package/templates/workflows/specs/node-catalog.md +170 -0
  330. package/templates/workflows/specs/template-schema.md +157 -0
  331. package/workflows/analyze.md +61 -185
  332. package/workflows/brainstorm.md +3 -23
  333. package/workflows/codebase-rebuild.md +79 -191
  334. package/workflows/codebase-refresh.md +26 -124
  335. package/workflows/debug.md +21 -141
  336. package/workflows/execute.md +183 -350
  337. package/workflows/fork.md +72 -230
  338. package/workflows/harvest.md +12 -79
  339. package/workflows/init.md +3 -17
  340. package/workflows/integration-test.md +21 -190
  341. package/workflows/issue-analyze.md +35 -153
  342. package/workflows/issue-discover.md +88 -263
  343. package/workflows/issue-execute.md +29 -208
  344. package/workflows/issue-plan.md +33 -154
  345. package/workflows/issue.md +44 -202
  346. package/workflows/knowhow.md +374 -0
  347. package/workflows/learn.md +30 -177
  348. package/workflows/maestro-coordinate.codex.md +77 -362
  349. package/workflows/maestro-link-coordinate.md +12 -61
  350. package/workflows/maestro.codex.md +124 -457
  351. package/workflows/maestro.md +562 -976
  352. package/workflows/map.md +16 -53
  353. package/workflows/merge.md +42 -197
  354. package/workflows/milestone-audit.md +5 -43
  355. package/workflows/milestone-complete.md +11 -60
  356. package/workflows/plan.md +176 -387
  357. package/workflows/quick.md +25 -174
  358. package/workflows/refactor.md +28 -221
  359. package/workflows/retrospective.md +104 -443
  360. package/workflows/review.md +87 -299
  361. package/workflows/roadmap.md +117 -97
  362. package/workflows/spec-generate.md +22 -118
  363. package/workflows/specs-add.md +5 -25
  364. package/workflows/specs-load.md +1 -5
  365. package/workflows/specs-remove.md +0 -11
  366. package/workflows/specs-setup.md +11 -47
  367. package/workflows/status.md +58 -200
  368. package/workflows/sync.md +28 -141
  369. package/workflows/test-gen.md +23 -100
  370. package/workflows/test.md +15 -125
  371. package/workflows/ui-design.md +139 -465
  372. package/workflows/ui-style.md +36 -228
  373. package/workflows/verify.md +52 -273
  374. package/workflows/wiki-connect.md +9 -46
  375. package/workflows/wiki-digest.md +7 -50
  376. package/workflows/wiki-manage.md +11 -108
  377. package/.claude/commands/maestro-coordinate.md +0 -63
  378. package/.claude/commands/manage-memory-capture.md +0 -59
  379. package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
  380. package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
  381. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
  382. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
  383. package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
  384. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
  385. package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
  386. package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
  387. package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
  388. package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
  389. package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
  390. package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
  391. package/workflows/maestro-coordinate.md +0 -582
  392. package/workflows/memory.md +0 -451
@@ -8,23 +8,11 @@ Autonomous CLI coordinator for Codex. Classifies intent, selects command chain,
8
8
 
9
9
  ## Step 1: Parse Arguments
10
10
 
11
- ```javascript
12
- const args = $ARGUMENTS.trim();
13
- const autoYes = /\b(-y|--yes)\b/.test(args);
14
- const resumeMode = /\b(-c|--continue)\b/.test(args);
15
- const dryRun = /\b--dry-run\b/.test(args);
16
- const forcedChain = args.match(/--chain\s+(\S+)/)?.[1] || null;
17
- const cliTool = args.match(/--tool\s+(\S+)/)?.[1] || 'codex';
18
- const intent = args
19
- .replace(/\b(-y|--yes|-c|--continue|--dry-run)\b/g, '')
20
- .replace(/--(chain|tool)\s+\S+/g, '')
21
- .trim();
22
- ```
11
+ Extract from `$ARGUMENTS`:
12
+ - Flags: `-y`/`--yes` (autoYes), `-c`/`--continue` (resumeMode), `--dry-run`, `--chain <name>`, `--tool <name>` (default: codex)
13
+ - `intent` = remaining text after flag removal
23
14
 
24
- **If resumeMode:**
25
- 1. Find latest `status.json` in `.workflow/.maestro-coordinate/`
26
- 2. Load state → set `current_step` to first non-completed step
27
- 3. Jump to **Step 6**
15
+ **If resumeMode:** Load latest `.workflow/.maestro-coordinate/*/status.json`, set `current_step` to first non-completed step, jump to **Step 6**.
28
16
 
29
17
  ---
30
18
 
@@ -34,23 +22,7 @@ const intent = args
34
22
  test -f .workflow/state.json && echo "exists" || echo "missing"
35
23
  ```
36
24
 
37
- **If exists:** Read `.workflow/state.json` + `.workflow/roadmap.md` + current phase `index.json`:
38
-
39
- ```javascript
40
- const projectState = {
41
- initialized: true,
42
- current_milestone: /* from state.json */,
43
- latest_artifact: /* last artifact in artifacts[] */,
44
- milestone_progress: '...', // derived from artifact registry
45
- phase_artifacts: { brainstorm: false, analysis: false, context: false, plan: false, verification: false, uat: false },
46
- execution: { tasks_completed: 0, tasks_total: 0 },
47
- verification_status: 'pending',
48
- review_verdict: null, // PASS|WARN|BLOCK|null
49
- uat_status: 'pending',
50
- phases_total: 0, phases_completed: 0,
51
- has_blockers: false, accumulated_context: null
52
- };
53
- ```
25
+ **If exists:** Read `.workflow/state.json` + `.workflow/roadmap.md` + current phase `index.json`. Derive `projectState`: current_milestone, latest_artifact, milestone_progress, phase_artifacts (brainstorm/analysis/context/plan/verification/uat flags), execution (tasks_completed/total), verification_status, review_verdict (PASS|WARN|BLOCK|null), uat_status, phases_total/completed, has_blockers, accumulated_context.
54
26
 
55
27
  **If missing:** `projectState = { initialized: false }`. If intent also empty → **Error E001**.
56
28
 
@@ -62,18 +34,7 @@ const projectState = {
62
34
 
63
35
  If `forcedChain` is set, validate and jump to **3c**.
64
36
 
65
- ```javascript
66
- const exactMatch = {
67
- 'continue': 'state_continue', 'next': 'state_continue', 'go': 'state_continue',
68
- '继续': 'state_continue', '下一步': 'state_continue',
69
- 'status': 'status', '状态': 'status', 'dashboard': 'status',
70
- };
71
- const normalized = intent.toLowerCase().trim();
72
- if (exactMatch[normalized]) {
73
- taskType = exactMatch[normalized];
74
- // → skip to 3c
75
- }
76
- ```
37
+ Exact-match keywords: `continue`/`next`/`go`/`继续`/`下一步` → `state_continue`; `status`/`状态`/`dashboard` → `status`. If matched, skip to **3c**.
77
38
 
78
39
  ### 3a-2: Structured intent extraction (LLM-native)
79
40
 
@@ -94,91 +55,48 @@ Instead of regex, extract a structured intent tuple using LLM semantic understan
94
55
 
95
56
  ### 3a-3: Route via action × object matrix
96
57
 
97
- ```javascript
98
- function routeIntent(intent, projectState) {
99
- const { action, object, issue_id } = intent;
100
-
101
- // Hard signal: explicit issue ID issue pipeline
102
- if (issue_id) {
103
- const issueRoutes = { 'analyze': 'issue_analyze', 'plan': 'issue_plan', 'fix': 'issue_execute', 'execute': 'issue_execute', 'debug': 'issue_analyze', 'manage': 'issue' };
104
- return issueRoutes[action] || 'issue';
105
- }
106
-
107
- // Action × Object matrix
108
- const matrix = {
109
- 'fix': { 'bug': 'debug', 'issue': 'issue', 'code': 'debug', 'performance': 'debug', 'security': 'debug', '_default': 'debug' },
110
- 'create': { 'feature': 'quick', 'issue': 'issue', 'test': 'test_gen', 'spec': 'spec_generate', 'ui': 'ui_design', 'config': 'init', 'phase': 'roadmap', '_default': 'quick' },
111
- 'analyze': { 'bug': 'analyze', 'issue': 'issue_analyze', 'code': 'analyze', 'codebase': 'spec_map', '_default': 'analyze' },
112
- 'explore': { 'issue': 'issue_discover', 'feature': 'brainstorm', 'ui': 'ui_design', '_default': 'brainstorm' },
113
- 'plan': { 'issue': 'issue_plan', 'spec': 'spec_generate', '_default': 'plan' },
114
- 'execute': { 'issue': 'issue_execute', '_default': 'execute' },
115
- 'verify': { '_default': 'verify' },
116
- 'review': { '_default': 'review' },
117
- 'test': { '_default': 'test' },
118
- 'debug': { '_default': 'debug' },
119
- 'refactor': { '_default': 'refactor' },
120
- 'manage': { 'issue': 'issue', 'milestone': 'milestone_audit', 'phase': 'milestone_close', 'memory': 'memory', 'doc': 'sync', 'codebase': 'codebase_refresh', '_default': 'status' },
121
- 'transition':{ 'phase': 'milestone_close', 'milestone': 'milestone_complete', '_default': 'milestone_close' },
122
- 'continue': { '_default': 'state_continue' },
123
- 'sync': { '_default': 'sync' },
124
- 'learn': { '_default': 'learn' },
125
- 'retrospect':{ '_default': 'retrospective' },
126
- };
127
-
128
- const actionMap = matrix[action] || matrix['fix'];
129
- return actionMap[object] || actionMap['_default'] || 'quick';
130
- }
131
- ```
132
-
133
- Compute clarity (3=action+object+scope, 2=action+object, 1=action only, 0=empty).
58
+ Route via `action × object` matrix. If `issue_id` present → issue pipeline directly.
59
+
60
+ | action | object-specific overrides | default |
61
+ |--------|--------------------------|---------|
62
+ | fix | bug/code/perf/security→debug, issue→issue | debug |
63
+ | create | feature→quick, issue→issue, test→test_gen, spec→spec_generate, ui→ui_design, config→init, phase→roadmap | quick |
64
+ | analyze | bug/code→analyze, issue→issue_analyze, codebase→spec_map | analyze |
65
+ | explore | issue→issue_discover, feature/ui→brainstorm/ui_design | brainstorm |
66
+ | plan | issue→issue_plan, spec→spec_generate | plan |
67
+ | execute | issue→issue_execute | execute |
68
+ | manage | issue→issue, milestone→milestone_audit, phase→milestone_close, memory/doc/codebase→memory/sync/codebase_refresh | status |
69
+ | transition | phase→milestone_close, milestone→milestone_complete | milestone_close |
70
+ | verify, review, test, debug, refactor, continue, sync, learn, retrospect | — | self-named |
71
+
72
+ Clarity scoring: 3=action+object+scope, 2=action+object, 1=action only, 0=empty.
134
73
  If clarity < 2 and not autoYes: clarify via AskUserQuestion (max 2 rounds).
135
74
 
136
75
  ### 3b: State-based routing (task_type == `state_continue`)
137
76
 
138
- ```javascript
139
- function detectNextAction(s) {
140
- if (!s.initialized) return { chain: 'init', steps: [{ cmd: 'maestro-init' }] };
141
- const ps = s.phase_status, art = s.phase_artifacts, exec = s.execution;
142
-
143
- // Post-milestone: no roadmap, has accumulated context
144
- if (s.phases_total === 0 && !fileExists('.workflow/roadmap.md') && s.accumulated_context)
145
- return { chain: 'next-milestone', steps: [{ cmd: 'maestro-roadmap', args: '"{description}"' }] };
146
- if (s.phases_total === 0)
147
- return { chain: 'brainstorm-driven', steps: [{ cmd: 'maestro-brainstorm', args: '"{description}"' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }] };
148
-
149
- if (ps === 'pending') {
150
- if (art.context) return { chain: 'plan', steps: [{ cmd: 'maestro-plan', args: '{phase}' }] };
151
- return { chain: 'analyze', steps: [{ cmd: 'maestro-analyze', args: '{phase}' }] };
152
- }
153
- if (ps === 'exploring' || ps === 'planning') {
154
- if (art.plan) return { chain: 'execute-verify', steps: [{ cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }] };
155
- return { chain: 'plan', steps: [{ cmd: 'maestro-plan', args: '{phase}' }] };
156
- }
157
- if (ps === 'executing') {
158
- if (exec.tasks_completed >= exec.tasks_total && exec.tasks_total > 0) return { chain: 'verify', steps: [{ cmd: 'maestro-verify', args: '{phase}' }] };
159
- return { chain: 'execute', steps: [{ cmd: 'maestro-execute', args: '{phase}' }] };
160
- }
161
- if (ps === 'verifying') {
162
- if (s.verification_status === 'passed') {
163
- if (!s.review_verdict) return { chain: 'review', steps: [{ cmd: 'quality-review', args: '{phase}' }] };
164
- if (s.uat_status === 'pending') return { chain: 'test', steps: [{ cmd: 'quality-test', args: '{phase}' }] };
165
- if (s.uat_status === 'passed') return { chain: 'milestone-close', steps: [{ cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }] };
166
- return { chain: 'debug', steps: [{ cmd: 'quality-debug', args: '--from-uat {phase}' }] };
167
- }
168
- return { chain: 'quality-loop-partial', steps: [{ cmd: 'maestro-plan', args: '{phase} --gaps' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }] };
169
- }
170
- if (ps === 'testing') {
171
- if (s.uat_status === 'passed') return { chain: 'milestone-close', steps: [{ cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }] };
172
- return { chain: 'debug', steps: [{ cmd: 'quality-debug', args: '--from-uat {phase}' }] };
173
- }
174
- if (ps === 'completed') {
175
- if (s.phases_completed >= s.phases_total) return { chain: 'milestone-close', steps: [{ cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }] };
176
- return { chain: 'milestone-close', steps: [{ cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }] };
177
- }
178
- if (ps === 'blocked') return { chain: 'debug', steps: [{ cmd: 'quality-debug' }] };
179
- return { chain: 'status', steps: [{ cmd: 'manage-status' }] };
180
- }
181
- ```
77
+ Returns `{ chain, steps }`. Steps are inline (unlike maestro.codex which uses chainMap lookup).
78
+
79
+ | Condition | Chain | Steps |
80
+ |-----------|-------|-------|
81
+ | Not initialized | `init` | maestro-init |
82
+ | No phases, no roadmap, has context | `next-milestone` | maestro-roadmap |
83
+ | No phases | `brainstorm-driven` | brainstorm → plan → execute → verify |
84
+ | pending + has context | `plan` | maestro-plan |
85
+ | pending, no context | `analyze` | maestro-analyze |
86
+ | exploring/planning + has plan | `execute-verify` | execute verify |
87
+ | exploring/planning, no plan | `plan` | maestro-plan |
88
+ | executing, all tasks done | `verify` | maestro-verify |
89
+ | executing, tasks remain | `execute` | maestro-execute |
90
+ | verifying, passed + no review | `review` | quality-review |
91
+ | verifying, passed + UAT pending | `test` | quality-test |
92
+ | verifying, passed + UAT passed | `milestone-close` | audit → complete |
93
+ | verifying, passed + UAT failed | `debug` | quality-debug |
94
+ | verifying, not passed | `quality-loop-partial` | plan --gaps execute → verify |
95
+ | testing, UAT passed | `milestone-close` | audit → complete |
96
+ | testing, UAT not passed | `debug` | quality-debug |
97
+ | completed | `milestone-close` | audit complete |
98
+ | blocked | `debug` | quality-debug |
99
+ | fallback | `status` | manage-status |
182
100
 
183
101
  ### 3c: Intent-based chain map
184
102
 
@@ -211,8 +129,8 @@ const chainMap = {
211
129
  'spec_add': [{ cmd: 'spec-add', args: '"{description}"' }],
212
130
  'spec_load': [{ cmd: 'spec-load', args: '"{description}"' }],
213
131
  'spec_map': [{ cmd: 'manage-codebase-rebuild' }],
214
- 'memory_capture': [{ cmd: 'manage-memory-capture', args: '"{description}"' }],
215
- 'memory': [{ cmd: 'manage-memory', args: '"{description}"' }],
132
+ 'knowhow_capture': [{ cmd: 'manage-knowhow-capture', args: '"{description}"' }],
133
+ 'knowhow': [{ cmd: 'manage-knowhow', args: '"{description}"' }],
216
134
  'issue': [{ cmd: 'manage-issue', args: '"{description}"' }],
217
135
  'issue_discover': [{ cmd: 'manage-issue-discover', args: '"{description}"' }],
218
136
  'issue_analyze': [{ cmd: 'maestro-analyze', args: '--gaps "{description}"' }],
@@ -253,23 +171,8 @@ const taskToChain = {
253
171
 
254
172
  ### 3d: Resolve phase number and issue ID
255
173
 
256
- ```javascript
257
- function resolvePhase() {
258
- // From structured extraction
259
- if (intentAnalysis.phase_ref) return intentAnalysis.phase_ref;
260
- // Fallback regex
261
- const m = intent.match(/phase\s*(\d+)|^(\d+)$/);
262
- if (m) return m[1] || m[2];
263
- // With scratch-based architecture, commands default to milestone-wide when no phase specified
264
- return null;
265
- }
266
-
267
- function resolveIssueId() {
268
- if (intentAnalysis.issue_id) return intentAnalysis.issue_id;
269
- const m = intent.match(/ISS-[\w]+-\d+/i);
270
- return m ? m[0] : null;
271
- }
272
- ```
174
+ **Phase**: from structured extraction → fallback regex (`phase N` or bare number) → null (milestone-wide default).
175
+ **Issue ID**: from structured extraction → regex match `ISS-*-NNN`.
273
176
 
274
177
  When executing issue chains, replace `{issue_id}` in step args with the resolved issue ID.
275
178
 
@@ -291,28 +194,11 @@ MAESTRO-COORDINATE: {chain_name} (dry run)
291
194
 
292
195
  ## Step 5: Setup Session
293
196
 
294
- ```javascript
295
- const sessionId = `coord-${new Date().toISOString().replace(/[-:T]/g, '').slice(0, 15)}`;
296
- const sessionDir = `.workflow/.maestro-coordinate/${sessionId}`;
297
- Bash(`mkdir -p "${sessionDir}"`);
298
-
299
- const state = {
300
- session_id: sessionId, status: 'running',
301
- created_at: new Date().toISOString(),
302
- intent, task_type: taskType, chain_name: chainName,
303
- tool: cliTool, auto_mode: autoYes, phase: resolvedPhase,
304
- current_step: 0,
305
- gemini_session_id: null,
306
- step_analyses: [],
307
- steps: chain.map((s, i) => ({
308
- index: i, skill: s.cmd, args: s.args || '',
309
- status: 'pending', exec_id: null, analysis: null
310
- }))
311
- };
312
- Write(`${sessionDir}/status.json`, JSON.stringify(state, null, 2));
197
+ Create session directory `.workflow/.maestro-coordinate/coord-{timestamp}/`.
313
198
 
314
- const context = { resolved_phase: resolvedPhase, user_intent: intent, issue_id: resolvedIssueId, spec_session_id: null };
315
- ```
199
+ Initialize `status.json` with: session_id, intent, task_type, chain_name, tool, auto_mode, phase, current_step=0, gemini_session_id=null, step_analyses=[], steps[] (each: index, skill, args, status=pending, exec_id=null, analysis=null).
200
+
201
+ Build context: `{ resolved_phase, user_intent, issue_id, spec_session_id: null }`.
316
202
 
317
203
  ---
318
204
 
@@ -320,233 +206,62 @@ const context = { resolved_phase: resolvedPhase, user_intent: intent, issue_id:
320
206
 
321
207
  ### 6a: Assemble args
322
208
 
323
- ```javascript
324
- const AUTO_FLAG_MAP = {
325
- 'maestro-analyze': '-y', 'maestro-brainstorm': '-y', 'maestro-ui-design': '-y',
326
- 'maestro-plan': '--auto', 'maestro-spec-generate': '-y', 'quality-test': '--auto-fix',
327
- 'quality-retrospective': '--auto-yes',
328
- };
329
-
330
- function assembleArgs(step) {
331
- let a = (step.args || '')
332
- .replace(/\{phase\}/g, context.resolved_phase || '') // empty = milestone-wide default
333
- .replace(/\{description\}/g, context.user_intent || '')
334
- .replace(/\{issue_id\}/g, context.issue_id || '')
335
- .replace(/\{spec_session_id\}/g, context.spec_session_id || '')
336
- .replace(/\{scratch_dir\}/g, context.scratch_dir || '');
337
- if (state.auto_mode) {
338
- const flag = AUTO_FLAG_MAP[step.cmd];
339
- if (flag && !a.includes(flag)) a = a ? `${a} ${flag}` : flag;
340
- }
341
- return a.trim();
342
- }
343
- ```
209
+ Replace template placeholders (`{phase}`, `{description}`, `{issue_id}`, `{spec_session_id}`, `{scratch_dir}`) from context. Inject auto-flags if auto_mode: analyze/brainstorm/ui-design/spec-generate → `-y`, plan → `--auto`, quality-test → `--auto-fix`, quality-retrospective → `--auto-yes`.
344
210
 
345
211
  ### 6b: Build prompt from template
346
212
 
347
- Read `~/.maestro/templates/cli/prompts/coordinate-step.txt`, fill placeholders.
348
- If previous step has analysis hints, inject them as `{{ANALYSIS_HINTS}}`.
349
-
350
- ```javascript
351
- function escapeForShell(str) { return "'" + str.replace(/'/g, "'\\''") + "'"; }
352
-
353
- const assembledArgs = assembleArgs(step);
354
- const template = Read('~/.maestro/templates/cli/prompts/coordinate-step.txt');
355
-
356
- // Build analysis hints from previous step's gemini evaluation
357
- let analysisHints = '';
358
- const prevAnalysis = (state.step_analyses || []).find(a => a.step_index === state.current_step - 1);
359
- if (prevAnalysis?.next_step_hints) {
360
- const h = prevAnalysis.next_step_hints;
361
- const parts = [];
362
- if (h.prompt_additions) parts.push(h.prompt_additions);
363
- if (h.cautions?.length) parts.push('Cautions: ' + h.cautions.join('; '));
364
- if (h.context_to_carry) parts.push('Context from prior step: ' + h.context_to_carry);
365
- if (parts.length) analysisHints = parts.join('\n');
366
- }
213
+ Read `~/.maestro/templates/cli/prompts/coordinate-step.txt`, fill placeholders: `{{COMMAND}}`, `{{ARGS}}`, `{{STEP_N}}`, `{{AUTO_DIRECTIVE}}`, `{{CHAIN_NAME}}`, `{{ANALYSIS_HINTS}}`.
367
214
 
368
- const prompt = template
369
- .replace('{{COMMAND}}', `/${step.cmd}`)
370
- .replace('{{ARGS}}', assembledArgs)
371
- .replace('{{STEP_N}}', `${state.current_step + 1}/${state.steps.length}`)
372
- .replace('{{AUTO_DIRECTIVE}}', state.auto_mode ? 'Auto-confirm all prompts. No interactive questions.' : '')
373
- .replace('{{CHAIN_NAME}}', state.chain_name)
374
- .replace('{{ANALYSIS_HINTS}}', analysisHints);
375
- ```
215
+ Analysis hints assembled from previous step's gemini evaluation: prompt_additions, cautions, context_to_carry.
376
216
 
377
217
  ### 6c: Launch via codex delegate
378
218
 
379
- ```
380
- ------------------------------------------------------------
381
- STEP {i+1}/{total}: {step.cmd} | Tool: {cliTool}
382
- ------------------------------------------------------------
383
- ```
219
+ Display step header. Mark step as running, persist state. Execute:
384
220
 
385
- ```javascript
386
- state.steps[state.current_step].status = 'running';
387
- state.steps[state.current_step].started_at = new Date().toISOString();
388
- Write(`${sessionDir}/status.json`, JSON.stringify(state, null, 2));
389
-
390
- Bash({
391
- command: `codex delegate ${escapeForShell(prompt)} --to ${state.tool} --mode write`,
392
- run_in_background: true, timeout: 600000
393
- });
394
- // ■ STOP — wait for hook callback
221
+ ```bash
222
+ codex delegate '<prompt>' --to {tool} --mode write
395
223
  ```
396
224
 
225
+ Run in background (timeout 600s). **STOP** -- wait for callback.
226
+
397
227
  ---
398
228
 
399
229
  ## Step 7: Post-Step Callback
400
230
 
401
- ```javascript
402
- const stepIdx = state.current_step;
403
- const step = state.steps[stepIdx];
404
- const output = /* callback output */;
405
-
406
- // Capture exec_id from stderr [CODEX_EXEC_ID=xxx]
407
- step.exec_id = /* from callback */;
408
- step.completed_at = new Date().toISOString();
409
-
410
- // Context propagation
411
- const phaseMatch = output.match(/PHASE:\s*(\d+)/m);
412
- if (phaseMatch) context.resolved_phase = phaseMatch[1];
413
- const specMatch = output.match(/SPEC-[\w-]+/);
414
- if (specMatch) context.spec_session_id = specMatch[0];
415
- const scratchMatch = output.match(/scratch_dir:\s*(.+)/m);
416
- if (scratchMatch) context.scratch_dir = scratchMatch[1].trim();
417
-
418
- // Success/failure
419
- const failed = /^STATUS:\s*FAILURE/m.test(output);
420
- if (!failed) {
421
- step.status = 'completed';
422
- } else if (state.auto_mode) {
423
- if (!step.retried) { step.retried = true; /* re-execute Step 6c */ return; }
424
- step.status = 'skipped';
425
- } else {
426
- // AskUserQuestion: Retry / Skip / Abort
427
- // On Abort: state.status = 'aborted', save, exit
428
- }
429
-
430
- // Save output for analysis
431
- Write(`${sessionDir}/step-${stepIdx + 1}-output.txt`, output);
432
- Write(`${sessionDir}/status.json`, JSON.stringify(state, null, 2));
433
-
434
- // → Step 7b: Gemini analysis (skip if step failed/skipped or single-step chain)
435
- if (step.status === 'completed' && state.steps.length > 1) {
436
- // → Step 7b
437
- } else {
438
- // Skip analysis, advance directly
439
- state.current_step = stepIdx + 1;
440
- Write(`${sessionDir}/status.json`, JSON.stringify(state, null, 2));
441
- if (state.current_step < state.steps.length) { /* → Step 6 */ }
442
- else { /* → Step 8 */ }
443
- }
444
- ```
231
+ On callback:
232
+ 1. Capture exec_id from stderr `[CODEX_EXEC_ID=xxx]`
233
+ 2. **Context propagation**: extract `PHASE:`, `SPEC-*`, `scratch_dir:` from output
234
+ 3. **Success/failure**: if failed + auto_mode → retry once then skip; if failed + interactive → ask Retry/Skip/Abort
235
+ 4. Save output to `step-{N}-output.txt`, persist state
236
+ 5. If completed + multi-step chain → **Step 7b** (gemini analysis); otherwise advance to next step or **Step 8**
445
237
 
446
238
  ---
447
239
 
448
240
  ## Step 7b: Analyze Step Output (via gemini)
449
241
 
450
- After each step completes, call gemini to evaluate execution quality and generate optimization hints for subsequent steps.
242
+ After each completed step, delegate to gemini for quality evaluation. Prompt includes: step command/args, last 200 lines of output, prior step analyses, next step info.
451
243
 
452
- ```javascript
453
- const stepIdx = state.current_step;
454
- const step = state.steps[stepIdx];
455
- const output = Read(`${sessionDir}/step-${stepIdx + 1}-output.txt`);
456
- const nextStep = stepIdx < state.steps.length - 1 ? state.steps[stepIdx + 1] : null;
457
-
458
- // Build analysis prompt
459
- const priorAnalyses = (state.step_analyses || [])
460
- .map(a => `- Step ${a.step_index + 1} (${a.cmd}): score=${a.quality_score}, issues=${a.issues?.length || 0}`)
461
- .join('\n');
462
-
463
- const analysisPrompt = `PURPOSE: Evaluate execution quality of coordinate step "${step.cmd}" (${stepIdx + 1}/${state.steps.length}) and generate optimization hints for the next step.
464
- CHAIN: ${state.chain_name} | Intent: ${state.intent}
465
- COMMAND: /${step.cmd} ${step.args || ''}
466
- STEP OUTPUT (last 200 lines):
467
- ${output.split('\n').slice(-200).join('\n')}
468
- ${priorAnalyses ? `PRIOR STEP ANALYSES:\n${priorAnalyses}` : ''}
469
- ${nextStep ? `NEXT STEP: /${nextStep.cmd} ${nextStep.args || ''}` : 'NEXT STEP: None (last step)'}
470
- EXPECTED OUTPUT (strict JSON):
471
- {
472
- "quality_score": <0-100>,
473
- "execution_assessment": { "success": <bool>, "completeness": "<full|partial|minimal>", "key_outputs": [], "missing_outputs": [] },
474
- "issues": [{ "severity": "critical|high|medium|low", "description": "" }],
475
- "next_step_hints": {
476
- "prompt_additions": "<extra context or constraints to inject into next step prompt>",
477
- "cautions": ["<things next step should watch out for>"],
478
- "context_to_carry": "<key facts from this step's output that next step needs>"
479
- },
480
- "step_summary": ""
481
- }`;
482
-
483
- let delegateCmd = `codex delegate ${escapeForShell(analysisPrompt)} --to gemini --mode analysis --rule analysis-review-code-quality`;
484
- if (state.gemini_session_id) delegateCmd += ` --resume ${state.gemini_session_id}`;
485
- Bash({ command: delegateCmd, run_in_background: true, timeout: 300000 });
486
- // ■ STOP — wait for hook callback
244
+ Expected JSON response: `{ quality_score, execution_assessment: { success, completeness, key_outputs, missing_outputs }, issues: [{ severity, description }], next_step_hints: { prompt_additions, cautions, context_to_carry }, step_summary }`.
245
+
246
+ ```bash
247
+ codex delegate '<analysis_prompt>' --to gemini --mode analysis --rule analysis-review-code-quality [--resume {gemini_session_id}]
487
248
  ```
488
249
 
489
- ### Step 7c: Post-Analyze Callback
250
+ Run in background (timeout 300s). **STOP** -- wait for callback.
490
251
 
491
- ```javascript
492
- const analysisResult = /* parsed JSON from callback output */;
493
-
494
- // Capture gemini session ID for resume chain
495
- state.gemini_session_id = /* from callback stderr [CODEX_EXEC_ID=xxx] */;
496
-
497
- // Store analysis
498
- if (!state.step_analyses) state.step_analyses = [];
499
- state.step_analyses.push({
500
- step_index: stepIdx, cmd: step.cmd,
501
- quality_score: analysisResult.quality_score,
502
- issues: analysisResult.issues,
503
- next_step_hints: analysisResult.next_step_hints,
504
- summary: analysisResult.step_summary
505
- });
506
- step.analysis = {
507
- quality_score: analysisResult.quality_score,
508
- issue_count: (analysisResult.issues || []).length
509
- };
510
- Write(`${sessionDir}/step-${stepIdx + 1}-analysis.json`, JSON.stringify(analysisResult, null, 2));
252
+ ### Step 7c: Post-Analyze Callback
511
253
 
512
- // Advance
513
- state.current_step = stepIdx + 1;
514
- Write(`${sessionDir}/status.json`, JSON.stringify(state, null, 2));
254
+ Capture gemini session ID for resume chain. Store analysis result (quality_score, issues, next_step_hints, summary) in `step_analyses[]` and per-step `analysis` field. Write `step-{N}-analysis.json`.
515
255
 
516
- if (state.current_step < state.steps.length) {
517
- // → Back to Step 6
518
- } else {
519
- // → Step 8
520
- }
521
- ```
256
+ Advance `current_step`. If more steps remain → back to **Step 6**; otherwise → **Step 8**.
522
257
 
523
258
  ---
524
259
 
525
260
  ## Step 8: Completion Report
526
261
 
527
- ```javascript
528
- const done = state.steps.filter(s => s.status === 'completed').length;
529
- state.status = state.steps.some(s => s.status === 'failed') ? 'completed_with_errors' : 'completed';
530
- state.completed_at = new Date().toISOString();
531
- Write(`${sessionDir}/status.json`, JSON.stringify(state, null, 2));
532
- ```
262
+ Finalize state: status = `completed` or `completed_with_errors`, persist `status.json`.
533
263
 
534
- ```
535
- ============================================================
536
- MAESTRO-COORDINATE COMPLETE
537
- ============================================================
538
- Session: {session_id}
539
- Chain: {chain_name} ({done}/{total})
540
- Tool: {cliTool}
541
-
542
- Steps:
543
- [✓] 1. maestro-plan — completed (quality: 85/100)
544
- [✓] 2. maestro-execute — completed (quality: 78/100)
545
-
546
- Avg Quality: {avg_score}/100
547
- Next: $Maestro-coordinate --continue
548
- ============================================================
549
- ```
264
+ Display completion banner: session, chain, tool, per-step status with quality scores, average quality score, resume command.
550
265
 
551
266
  ---
552
267
 
@@ -6,20 +6,9 @@ Chain-graph coordinator via `maestro coordinate` CLI endpoint. Loads a chain gra
6
6
 
7
7
  ### Step 1: Parse Arguments
8
8
 
9
- ```javascript
10
- const args = $ARGUMENTS.trim();
11
- const listMode = /\b--list\b/.test(args);
12
- const autoYes = /\b(-y|--yes)\b/.test(args);
13
- const resumeMode = /\b(-c|--continue)\b/.test(args);
14
- const resumeId = args.match(/(?:-c|--continue)\s+(\S+)/)?.[1] || null;
15
- const forcedChain = args.match(/--chain\s+(\S+)/)?.[1] || null;
16
- const cliTool = args.match(/--tool\s+(\S+)/)?.[1] || 'claude';
17
- const intent = args
18
- .replace(/\b(-y|--yes|--list|-c|--continue)\b/g, '')
19
- .replace(/(?:-c|--continue)\s+\S+/g, '')
20
- .replace(/--(chain|tool)\s+\S+/g, '')
21
- .trim();
22
- ```
9
+ Extract from `$ARGUMENTS`:
10
+ - Flags: `--list`, `-y`/`--yes`, `-c`/`--continue [id]`, `--chain <name>`, `--tool <name>` (default: claude)
11
+ - `intent` = remaining text after flag removal
23
12
 
24
13
  ---
25
14
 
@@ -37,72 +26,34 @@ Exit after display.
37
26
 
38
27
  #### 3a: New session (step mode)
39
28
 
40
- Build command dynamically — only include flags when values are present:
41
-
42
29
  ```bash
43
30
  maestro coordinate start "{intent}" --tool {cliTool} [--chain {forcedChain}] [-y]
44
31
  ```
45
32
 
46
- - Append `--chain {forcedChain}` only if `forcedChain` is not null
47
- - Append `-y` only if `autoYes` is true
48
-
49
- Outputs JSON to stdout:
50
-
51
- ```json
52
- {
53
- "session_id": "coord-1711612800-a1b2",
54
- "status": "step_paused",
55
- "graph_id": "full-lifecycle",
56
- "current_node": "plan",
57
- "steps_completed": 1,
58
- "last_step": { "node_id": "plan", "outcome": "success", "summary": "..." },
59
- "history": [...]
60
- }
61
- ```
62
-
63
- Capture `session_id` from output.
33
+ Include `--chain` and `-y` only when set. Returns JSON with `session_id`, `status`, `graph_id`, `current_node`, `last_step`, `history`.
64
34
 
65
35
  #### 3b: Resume existing session
66
36
 
67
- Use `coordinate next` for step_paused sessions:
68
-
69
37
  ```bash
70
38
  maestro coordinate next {resumeId}
71
39
  ```
72
40
 
73
- If `resumeId` is null (bare `-c`), omit the session ID `next` resumes the latest step_paused session.
74
-
75
- Same JSON output format.
41
+ If bare `-c` (no ID), omit session ID to resume latest step_paused session. Same JSON output format.
76
42
 
77
43
  ---
78
44
 
79
45
  ### Step 4: Step Loop
80
46
 
81
- Parse JSON output from start/next. While `status === "step_paused"`:
82
-
83
- ```bash
84
- maestro coordinate next {session_id}
85
- ```
86
-
87
- After each call:
88
- - Parse JSON output
89
- - Log step result: `[Step N] /{cmd} — {outcome} — {summary}`
90
- - If `status === "step_paused"` → continue loop
91
- - If `status === "completed"` → **Step 5**
92
- - If `status === "failed"` → **Step 5**
47
+ Loop `maestro coordinate next {session_id}` while `status === "step_paused"`. Log each step: `[Step N] /{cmd} — {outcome} — {summary}`. Exit loop on `completed` or `failed` → **Step 5**.
93
48
 
94
49
  The walker handles internally:
95
- - Prompt assembly from `coordinate-step` template (command nodes) and inline `buildDecisionPrompt` (decision nodes) — **the walker owns all prompt construction**
50
+ - Prompt assembly (command nodes via `coordinate-step` template, decision nodes inline)
96
51
  - CLI execution via `maestro delegate --to {tool} --mode {write|analysis}`
97
- - Decision/gate/eval node auto-resolution:
98
- - `strategy: 'expr'` static expression, instant
99
- - `strategy: 'llm'` spawns the configured CLI tool via a thin `DefaultLLMDecider`, expects a `DECISION: <target>\nREASONING: <text>` response
100
- - **Expr fallback**: when an `expr` decision has no matching edge and no `default` edge, the walker automatically asks the LLM decider before failing
101
- - max_visits loop prevention
102
- - State persistence to `.workflow/.maestro-coordinate/{session_id}/`
103
- - **Channel telemetry**: every walker event is published to a file/SQLite broker under `~/.maestro/data/async/`, keyed by `session_id`. External observers tail it via `maestro coordinate watch {sessionId} [--follow]` without affecting the stdout JSON protocol.
104
-
105
- > **Step-mode latency note**: in step mode, an LLM-driven decision fires a real CLI spawn inside the `next` process. This is synchronous and can take several seconds. The outer step loop should not impose tight per-step deadlines. Static `expr` decisions remain instant.
52
+ - Decision auto-resolution: `expr` (static, instant) or `llm` (CLI spawn, expects `DECISION: <target>\nREASONING: <text>`). Expr fallback to LLM when no matching/default edge.
53
+ - max_visits loop prevention, state persistence to `.workflow/.maestro-coordinate/{session_id}/`
54
+ - Channel telemetry published to `~/.maestro/data/async/` broker, observable via `maestro coordinate watch`
55
+
56
+ > **Step-mode latency note**: LLM-driven decisions fire synchronous CLI spawns (several seconds). Do not impose tight per-step deadlines. Static `expr` decisions remain instant.
106
57
 
107
58
  ---
108
59