maestro-flow 0.3.15 → 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 (374) 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-execute.md +2 -56
  4. package/.claude/commands/maestro-fork.md +3 -50
  5. package/.claude/commands/maestro-merge.md +2 -26
  6. package/.claude/commands/maestro-milestone-audit.md +1 -5
  7. package/.claude/commands/maestro-milestone-complete.md +1 -7
  8. package/.claude/commands/maestro-plan.md +6 -127
  9. package/.claude/commands/maestro-roadmap.md +3 -101
  10. package/.claude/commands/maestro-spec-generate.md +1 -25
  11. package/.claude/commands/maestro-ui-design.md +14 -73
  12. package/.claude/commands/maestro-verify.md +1 -32
  13. package/.claude/commands/maestro.md +13 -30
  14. package/.claude/commands/manage-harvest.md +7 -44
  15. package/.claude/commands/manage-knowhow-capture.md +193 -0
  16. package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
  17. package/.claude/commands/manage-learn.md +3 -28
  18. package/.claude/commands/manage-status.md +1 -20
  19. package/.claude/commands/manage-wiki.md +1 -1
  20. package/.claude/commands/quality-business-test.md +1 -1
  21. package/.claude/commands/quality-debug.md +3 -18
  22. package/.claude/commands/quality-integration-test.md +3 -23
  23. package/.claude/commands/quality-retrospective.md +1 -28
  24. package/.claude/commands/quality-review.md +3 -52
  25. package/.claude/commands/quality-test-gen.md +1 -10
  26. package/.claude/commands/quality-test.md +3 -25
  27. package/.claude/commands/spec-add.md +1 -21
  28. package/.claude/commands/spec-load.md +1 -16
  29. package/.claude/commands/wiki-connect.md +2 -112
  30. package/.claude/commands/wiki-digest.md +2 -141
  31. package/.codex/skills/learn-decompose/SKILL.md +2 -8
  32. package/.codex/skills/maestro/SKILL.md +60 -146
  33. package/.codex/skills/maestro-analyze/SKILL.md +52 -150
  34. package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
  35. package/.codex/skills/maestro-composer/SKILL.md +4 -76
  36. package/.codex/skills/maestro-execute/SKILL.md +46 -177
  37. package/.codex/skills/maestro-init/SKILL.md +7 -51
  38. package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
  39. package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
  40. package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
  41. package/.codex/skills/maestro-overlay/SKILL.md +23 -92
  42. package/.codex/skills/maestro-plan/SKILL.md +42 -166
  43. package/.codex/skills/maestro-player/SKILL.md +24 -149
  44. package/.codex/skills/maestro-quick/SKILL.md +5 -48
  45. package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
  46. package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
  47. package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
  48. package/.codex/skills/maestro-verify/SKILL.md +39 -136
  49. package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
  50. package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
  51. package/.codex/skills/manage-issue/SKILL.md +1 -6
  52. package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
  53. package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
  54. package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
  55. package/.codex/skills/manage-learn/SKILL.md +17 -71
  56. package/.codex/skills/manage-status/SKILL.md +4 -35
  57. package/.codex/skills/manage-wiki/SKILL.md +1 -1
  58. package/.codex/skills/quality-business-test/SKILL.md +2 -14
  59. package/.codex/skills/quality-debug/SKILL.md +41 -133
  60. package/.codex/skills/quality-integration-test/SKILL.md +36 -145
  61. package/.codex/skills/quality-refactor/SKILL.md +6 -59
  62. package/.codex/skills/quality-retrospective/SKILL.md +292 -531
  63. package/.codex/skills/quality-review/SKILL.md +30 -65
  64. package/.codex/skills/quality-sync/SKILL.md +2 -11
  65. package/.codex/skills/quality-test/SKILL.md +4 -45
  66. package/.codex/skills/quality-test-gen/SKILL.md +33 -121
  67. package/.codex/skills/spec-add/SKILL.md +2 -9
  68. package/.codex/skills/spec-load/SKILL.md +4 -14
  69. package/.codex/skills/spec-map/SKILL.md +4 -37
  70. package/.codex/skills/spec-remove/SKILL.md +3 -35
  71. package/.codex/skills/spec-setup/SKILL.md +2 -19
  72. package/.codex/skills/team-coordinate/SKILL.md +20 -132
  73. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
  74. package/.codex/skills/team-executor/SKILL.md +7 -66
  75. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
  76. package/.codex/skills/team-executor/specs/session-schema.md +22 -56
  77. package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
  78. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
  79. package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
  80. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
  81. package/.codex/skills/team-review/SKILL.md +12 -86
  82. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
  83. package/.codex/skills/team-tech-debt/SKILL.md +11 -50
  84. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
  85. package/.codex/skills/team-testing/SKILL.md +14 -99
  86. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
  87. package/.codex/skills/wiki-connect/SKILL.md +2 -5
  88. package/README.md +6 -0
  89. package/README.zh-CN.md +6 -0
  90. package/chains/_intent-map.json +7 -7
  91. package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
  92. package/chains/singles/{memory.json → knowhow.json} +6 -6
  93. package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
  94. package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
  95. package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
  96. package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
  97. package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
  98. package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
  99. package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
  100. package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
  101. package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
  102. package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
  103. package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
  104. package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
  105. package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
  106. package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
  107. package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
  108. package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
  109. package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
  110. package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
  111. package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
  112. package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
  113. package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
  114. package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
  115. package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
  116. package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
  117. package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
  118. package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
  119. package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
  120. package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
  121. package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
  122. package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
  123. package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
  124. package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
  125. package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
  126. package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
  127. package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
  128. package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
  129. package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
  130. package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
  131. package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
  132. package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
  133. package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
  134. package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
  135. package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
  136. package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
  137. package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
  138. package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
  139. package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
  140. package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
  141. package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
  142. package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
  143. package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
  144. package/dashboard/dist/index.html +2 -2
  145. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
  146. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
  147. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  148. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
  149. package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
  150. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
  151. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
  152. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  153. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
  154. package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
  155. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
  156. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
  157. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
  158. package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
  159. package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
  160. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  161. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
  162. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
  163. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
  164. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
  165. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
  166. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
  167. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
  168. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
  169. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
  170. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
  171. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
  172. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
  173. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
  174. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
  175. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
  176. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
  177. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
  178. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
  179. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
  180. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
  181. package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
  182. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
  183. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
  184. package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
  185. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
  186. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
  187. package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
  188. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
  189. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
  190. package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
  191. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
  192. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
  193. package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
  194. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
  195. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
  196. package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
  197. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
  198. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
  199. package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
  200. package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
  201. package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
  202. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
  203. package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
  204. package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
  205. package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
  206. package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
  207. package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
  208. package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
  209. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
  210. package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
  211. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
  212. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
  213. package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
  214. package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
  215. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
  216. package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
  217. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
  218. package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
  219. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
  220. package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
  221. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
  222. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
  223. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  224. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
  225. package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
  226. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
  227. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
  228. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
  229. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
  230. package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
  231. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
  232. package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
  233. package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
  234. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
  235. package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
  236. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
  237. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
  238. package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
  239. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
  240. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
  241. package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
  242. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
  243. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
  244. package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
  245. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
  246. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
  247. package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
  248. package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
  249. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  250. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
  251. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
  252. package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
  253. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
  254. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  255. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
  256. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
  257. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  258. package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
  259. package/dashboard/dist-server/src/commands/delegate.js +11 -8
  260. package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
  261. package/dist/shared/agent-types.d.ts +2 -0
  262. package/dist/shared/agent-types.d.ts.map +1 -1
  263. package/dist/src/cli.js +2 -2
  264. package/dist/src/cli.js.map +1 -1
  265. package/dist/src/commands/delegate.d.ts.map +1 -1
  266. package/dist/src/commands/delegate.js +11 -8
  267. package/dist/src/commands/delegate.js.map +1 -1
  268. package/dist/src/commands/install-backend.d.ts +1 -1
  269. package/dist/src/commands/install-backend.d.ts.map +1 -1
  270. package/dist/src/commands/install-backend.js +1 -1
  271. package/dist/src/commands/install-backend.js.map +1 -1
  272. package/dist/src/commands/knowhow.d.ts +10 -0
  273. package/dist/src/commands/knowhow.d.ts.map +1 -0
  274. package/dist/src/commands/knowhow.js +217 -0
  275. package/dist/src/commands/knowhow.js.map +1 -0
  276. package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
  277. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
  278. package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
  279. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
  280. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
  281. package/dist/src/commands/overlay-ui/index.js +70 -44
  282. package/dist/src/commands/overlay-ui/index.js.map +1 -1
  283. package/dist/src/commands/overlay.d.ts.map +1 -1
  284. package/dist/src/commands/overlay.js +4 -3
  285. package/dist/src/commands/overlay.js.map +1 -1
  286. package/dist/src/core/overlay/applier.d.ts +1 -1
  287. package/dist/src/core/overlay/applier.d.ts.map +1 -1
  288. package/dist/src/core/overlay/applier.js +40 -13
  289. package/dist/src/core/overlay/applier.js.map +1 -1
  290. package/dist/src/core/overlay/loader.d.ts.map +1 -1
  291. package/dist/src/core/overlay/loader.js +6 -0
  292. package/dist/src/core/overlay/loader.js.map +1 -1
  293. package/dist/src/core/overlay/types.d.ts +5 -1
  294. package/dist/src/core/overlay/types.d.ts.map +1 -1
  295. package/dist/src/core/overlay/types.js +1 -1
  296. package/dist/src/core/overlay/types.js.map +1 -1
  297. package/dist/src/hooks/context-monitor.js +1 -1
  298. package/dist/src/hooks/context-monitor.js.map +1 -1
  299. package/dist/src/hooks/skill-context.js +1 -1
  300. package/dist/src/hooks/skill-context.js.map +1 -1
  301. package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
  302. package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
  303. package/dist/src/mcp/delegate-channel-relay.js +73 -4
  304. package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
  305. package/dist/src/tools/index.js +2 -2
  306. package/dist/src/tools/index.js.map +1 -1
  307. package/dist/src/tools/store-knowhow.d.ts +21 -0
  308. package/dist/src/tools/store-knowhow.d.ts.map +1 -0
  309. package/dist/src/tools/store-knowhow.js +295 -0
  310. package/dist/src/tools/store-knowhow.js.map +1 -0
  311. package/package.json +1 -1
  312. package/shared/agent-types.ts +2 -0
  313. package/workflows/analyze.md +61 -185
  314. package/workflows/brainstorm.md +3 -23
  315. package/workflows/codebase-rebuild.md +79 -191
  316. package/workflows/codebase-refresh.md +26 -124
  317. package/workflows/debug.md +21 -141
  318. package/workflows/execute.md +183 -350
  319. package/workflows/fork.md +72 -230
  320. package/workflows/harvest.md +12 -79
  321. package/workflows/init.md +3 -17
  322. package/workflows/integration-test.md +21 -190
  323. package/workflows/issue-analyze.md +35 -153
  324. package/workflows/issue-discover.md +88 -263
  325. package/workflows/issue-execute.md +29 -208
  326. package/workflows/issue-plan.md +33 -154
  327. package/workflows/issue.md +44 -202
  328. package/workflows/knowhow.md +374 -0
  329. package/workflows/learn.md +30 -177
  330. package/workflows/maestro-coordinate.codex.md +77 -362
  331. package/workflows/maestro-link-coordinate.md +12 -61
  332. package/workflows/maestro.codex.md +124 -457
  333. package/workflows/maestro.md +562 -976
  334. package/workflows/map.md +16 -53
  335. package/workflows/merge.md +42 -197
  336. package/workflows/milestone-audit.md +5 -43
  337. package/workflows/milestone-complete.md +11 -60
  338. package/workflows/plan.md +176 -387
  339. package/workflows/quick.md +25 -174
  340. package/workflows/refactor.md +28 -221
  341. package/workflows/retrospective.md +104 -443
  342. package/workflows/review.md +87 -299
  343. package/workflows/roadmap.md +117 -97
  344. package/workflows/spec-generate.md +22 -118
  345. package/workflows/specs-add.md +5 -25
  346. package/workflows/specs-load.md +1 -5
  347. package/workflows/specs-remove.md +0 -11
  348. package/workflows/specs-setup.md +11 -47
  349. package/workflows/status.md +58 -200
  350. package/workflows/sync.md +28 -141
  351. package/workflows/test-gen.md +23 -100
  352. package/workflows/test.md +15 -125
  353. package/workflows/ui-design.md +139 -465
  354. package/workflows/ui-style.md +36 -228
  355. package/workflows/verify.md +52 -273
  356. package/workflows/wiki-connect.md +9 -46
  357. package/workflows/wiki-digest.md +7 -50
  358. package/workflows/wiki-manage.md +11 -108
  359. package/.claude/commands/maestro-coordinate.md +0 -63
  360. package/.claude/commands/manage-memory-capture.md +0 -59
  361. package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
  362. package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
  363. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
  364. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
  365. package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
  366. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
  367. package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
  368. package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
  369. package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
  370. package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
  371. package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
  372. package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
  373. package/workflows/maestro-coordinate.md +0 -582
  374. 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