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
@@ -22,11 +22,7 @@ No arguments. Scans the codebase and generates spec files in `.workflow/specs/`.
22
22
 
23
23
  ### Step 1: Validate Preconditions
24
24
 
25
- ```bash
26
- test -d .workflow || exit 1 # E001: not initialized
27
- ```
28
-
29
- Verify project contains source files to scan (E002 if empty).
25
+ Verify `.workflow/` exists (E001) and project contains source files (E002).
30
26
 
31
27
  ### Step 2: Scan Codebase
32
28
 
@@ -55,20 +51,7 @@ Create `.workflow/specs/` directory and write:
55
51
 
56
52
  ### Step 5: Display Report
57
53
 
58
- ```
59
- === SPEC SETUP COMPLETE ===
60
- Created:
61
- - .workflow/specs/coding-conventions.md (category: coding)
62
- - .workflow/specs/architecture-constraints.md (category: arch)
63
- - .workflow/specs/learnings.md (category: learning)
64
- {optional files if created}
65
-
66
- Next: Run Skill({ skill: "spec-add", args: "<category> <content>" }) to add entries
67
- Categories: coding, arch, quality, debug, test, review, learning
68
- Extended: bug, pattern, decision, rule, validation (stored in closest core category file)
69
- Remove: /spec-remove <entry-id>
70
- Wiki: maestro wiki list --type spec (entries auto-indexed in wiki graph)
71
- ```
54
+ List created files with categories. Show next steps: `/spec-add <category> <content>`, available categories (core + extended), `/spec-remove`, wiki graph commands.
72
55
 
73
56
  </execution>
74
57
 
@@ -91,20 +91,9 @@ Workers can use CLI tools for analysis and code operations:
91
91
 
92
92
  ### Orchestration Mode
93
93
 
94
- User just provides task description.
95
-
96
94
  **Invocation**: `Skill(skill="team-coordinate", args="task description")`
97
95
 
98
- **Lifecycle**:
99
- ```
100
- User provides task description
101
- -> coordinator Phase 1: task analysis (detect capabilities, build dependency graph)
102
- -> coordinator Phase 2: generate role-specs + initialize session
103
- -> coordinator Phase 3: create task chain from dependency graph
104
- -> coordinator Phase 4: spawn first batch workers (background) -> STOP
105
- -> Worker executes -> callback -> coordinator advances next step
106
- -> Loop until pipeline complete -> Phase 5 report + completion action
107
- ```
96
+ **Lifecycle**: Phase 1 (task analysis, dependency graph) -> Phase 2 (generate role-specs, init session) -> Phase 3 (create task chain) -> Phase 4 (spawn workers, STOP) -> callback loop -> Phase 5 (report + completion).
108
97
 
109
98
  **User Commands** (wake paused coordinator):
110
99
 
@@ -116,134 +105,41 @@ User provides task description
116
105
  | `feedback <text>` | Inject feedback into active pipeline |
117
106
  | `improve [dimension]` | Auto-improve weakest quality dimension |
118
107
 
119
- ### Coordinator Spawn Template
120
-
121
- #### v2 Worker Spawn (all roles)
108
+ ### Worker Spawn Template
122
109
 
123
- When coordinator spawns workers, use `team-worker` agent with role-spec path:
124
-
125
- ```
126
- spawn_agent({
127
- agent_type: "team_worker",
128
- task_name: "<task-id>",
129
- fork_turns: "none",
130
- message: `## Role Assignment
131
- role: <role>
132
- role_spec: <session-folder>/role-specs/<role>.md
133
- session: <session-folder>
134
- session_id: <session-id>
135
- requirement: <task-description>
136
- inner_loop: <true|false>
137
-
138
- Read role_spec file to load Phase 2-4 domain instructions.
139
-
140
- ## Task Context
141
- task_id: <task-id>
142
- title: <task-title>
143
- description: <task-description>
144
- pipeline_phase: <pipeline-phase>
145
-
146
- ## Upstream Context
147
- <prev_context>`
148
- })
149
- ```
110
+ Spawn via `team-worker` agent with role-spec path. Message includes: role, role_spec path, session folder, session_id, requirement, inner_loop flag, task context (id, title, description, pipeline_phase), and upstream context from prior tasks.
150
111
 
151
- After spawning, use `wait_agent({ timeout_ms: 1800000 })` to collect results (30 min). If `result.timed_out`, send STATUS_CHECK via followup_task (wait 3 min), then FINALIZE with interrupt (wait 3 min), then mark timed_out and close agents. Use `close_agent({ target: <name> })` each worker.
112
+ After spawning: `wait_agent` (30 min timeout). On timeout: STATUS_CHECK via followup_task (3 min) -> FINALIZE with interrupt (3 min) -> mark timed_out, close agent.
152
113
 
153
- **Inner Loop roles** (role has 2+ serial same-prefix tasks): Set `inner_loop: true`. The team-worker agent handles the loop internally.
154
-
155
- **Single-task roles**: Set `inner_loop: false`.
114
+ **Inner Loop**: Set `inner_loop: true` for roles with 2+ serial same-prefix tasks. Single-task roles: `inner_loop: false`.
156
115
 
157
116
  ### Model Selection Guide
158
117
 
159
- Roles are **dynamically generated** at runtime. Select model/reasoning_effort based on the generated role's `responsibility_type`:
160
-
161
- | responsibility_type | model | reasoning_effort | Rationale |
162
- |---------------------|-------|-------------------|-----------|
163
- | exploration | (default) | medium | Read-heavy, less reasoning needed |
164
- | analysis | (default) | high | Deep analysis requires full reasoning |
165
- | implementation | (default) | high | Code generation needs precision |
166
- | synthesis | (default) | medium | Aggregation over generation |
167
- | review | (default) | high | Quality assessment needs deep reasoning |
118
+ Map each role's `responsibility_type` (from `team-session.json#roles`) to reasoning effort:
168
119
 
169
- Map each generated role's `responsibility_type` (from `team-session.json#roles`) to the table above.
120
+ | responsibility_type | reasoning_effort |
121
+ |---------------------|-------------------|
122
+ | exploration | medium |
123
+ | analysis | high |
124
+ | implementation | high |
125
+ | synthesis | medium |
126
+ | review | high |
170
127
 
171
- Override model/reasoning_effort in spawn_agent when cost optimization is needed:
172
- ```
173
- spawn_agent({
174
- agent_type: "team_worker",
175
- task_name: "<task-id>",
176
- fork_turns: "none",
177
- model: "<model-override>",
178
- reasoning_effort: "<effort-level>",
179
- message: "..."
180
- })
181
- ```
128
+ Override via `model`/`reasoning_effort` params in spawn_agent for cost optimization.
182
129
 
183
130
  ### v4 Agent Coordination
184
131
 
185
- #### Message Semantics
186
-
187
- | Intent | API | Example |
188
- |--------|-----|---------|
189
- | Queue supplementary info (don't interrupt) | `send_message` | Send upstream task findings to a running downstream worker |
190
- | Not used in this skill | `followup_task` | No resident agents -- all workers are one-shot |
191
- | Check running agents | `list_agents` | Verify agent health during resume |
192
-
193
- **Note**: Since roles are dynamically generated, the coordinator must resolve task prefixes and role names from `team-session.json#roles` at runtime. There are no hardcoded role-specific examples.
132
+ **Message Semantics**: `send_message` to queue supplementary info to downstream workers (non-interrupting). `list_agents` for health checks. `followup_task` not used (all workers are one-shot).
194
133
 
195
- #### fork_turns Strategy
134
+ **fork_turns**: Default `"none"`. Use `"all"` only when task requires deep familiarity with full conversation context (decided per-task in Phase 4).
196
135
 
197
- `fork_turns: "none"` is the default. Consider `fork_turns: "all"` only when:
198
- - Runtime analysis reveals the task requires deep familiarity with the full conversation context
199
- - The dynamically-generated role-spec indicates the worker needs project-wide understanding
200
- - The coordinator has already accumulated significant context about the codebase
136
+ **Agent Health Check**: On resume/complete, reconcile `team-session.json.active_workers` with `list_agents({})`. Reset orphaned tasks (in_progress but agent gone) to pending.
201
137
 
202
- This decision should be made per-task during Phase 4 based on the role's `responsibility_type`.
203
-
204
- #### Agent Health Check
205
-
206
- Use `list_agents({})` in handleResume and handleComplete:
207
-
208
- ```
209
- // Reconcile session state with actual running agents
210
- const running = list_agents({})
211
- // Compare with team-session.json active_workers
212
- // Reset orphaned tasks (in_progress but agent gone) to pending
213
- ```
214
-
215
- #### Named Agent Targeting
216
-
217
- Workers are spawned with `task_name: "<task-id>"` enabling direct addressing:
218
- - `send_message({ target: "<TASK-ID>", message: "..." })` -- queue upstream context without interrupting
219
- - `close_agent({ target: "<TASK-ID>" })` -- cleanup by name
138
+ **Named Targeting**: Workers spawned with `task_name: "<task-id>"` for `send_message`/`close_agent` by name.
220
139
 
221
140
  ### Completion Action
222
141
 
223
- When pipeline completes (all tasks done), coordinator presents an interactive choice:
224
-
225
- ```
226
- request_user_input({
227
- questions: [{
228
- question: "Team pipeline complete. What would you like to do?",
229
- header: "Completion",
230
- multiSelect: false,
231
- options: [
232
- { label: "Archive & Clean (Recommended)", description: "Archive session, clean up team" },
233
- { label: "Keep Active", description: "Keep session for follow-up work" },
234
- { label: "Export Results", description: "Export deliverables to target directory, then clean" }
235
- ]
236
- }]
237
- })
238
- ```
239
-
240
- #### Action Handlers
241
-
242
- | Choice | Steps |
243
- |--------|-------|
244
- | Archive & Clean | Update session status="completed" -> output final summary with artifact paths |
245
- | Keep Active | Update session status="paused" -> output: "Resume with: Skill(skill='team-coordinate', args='resume')" |
246
- | Export Results | request_user_input(target path) -> copy artifacts to target -> Archive & Clean |
142
+ Present interactive choice via `request_user_input`: **Archive & Clean** (recommended -- mark completed, output summary), **Keep Active** (mark paused, output resume command), **Export Results** (prompt target path, copy artifacts, then archive).
247
143
 
248
144
  ### Specs Reference
249
145
 
@@ -310,15 +206,7 @@ request_user_input({
310
206
 
311
207
  ### Session Resume
312
208
 
313
- Coordinator supports `resume` / `continue` for interrupted sessions:
314
-
315
- 1. Scan `.workflow/.team/TC-*/team-session.json` for active/paused sessions
316
- 2. Multiple matches -> request_user_input for selection
317
- 3. Audit task states -> reconcile session state <-> task status
318
- 4. Reset in_progress -> pending (interrupted tasks)
319
- 5. Rebuild team and spawn needed workers only
320
- 6. Create missing tasks, set dependencies
321
- 7. Kick first executable task -> Phase 4 coordination loop
209
+ Scan `TC-*/team-session.json` for active/paused sessions (prompt if multiple). Reconcile state: reset interrupted tasks to pending, rebuild team, spawn needed workers, resume Phase 4 loop.
322
210
  </context>
323
211
 
324
212
  <error_codes>
@@ -62,27 +62,14 @@ Parse `$ARGUMENTS` to determine handler:
62
62
  Worker completed a task. Verify completion, update state, auto-advance.
63
63
 
64
64
  ```
65
- Receive result from wait_agent for [<role>]
66
- +- Find matching active worker by role (from session.roles)
67
- +- Is this a progress update (not final)? (Inner Loop intermediate task completion)
68
- | +- YES -> Update session state, do NOT remove from active_workers -> STOP
69
- +- Task status = completed?
70
- | +- YES -> remove from active_workers -> update session
71
- | | +- Close agent: close_agent({ target: <agentId> })
72
- | | +- -> handleSpawnNext
73
- | +- NO -> progress message, do not advance -> STOP
74
- +- No matching worker found
75
- +- Scan all active workers for completed tasks
76
- +- Found completed -> process each -> handleSpawnNext
77
- +- None completed -> STOP
65
+ Match worker by role -> route:
66
+ progress_update (not final) -> update state, keep in active_workers -> STOP
67
+ completed -> remove from active_workers, close_agent, -> handleSpawnNext
68
+ not_completed -> log progress -> STOP
69
+ no_match -> scan all workers for completions -> process any found -> handleSpawnNext, else STOP
78
70
  ```
79
71
 
80
- **Fast-advance reconciliation**: A worker may have already spawned its successor via fast-advance. When processing any callback or resume:
81
- 1. Read recent `fast_advance` messages from team_msg (type="fast_advance")
82
- 2. For each fast_advance message: add the spawned successor to `active_workers` if not already present
83
- 3. Check if the expected next task is already `in_progress` (fast-advanced)
84
- 4. If yes -> skip spawning that task (already running)
85
- 5. If no -> normal handleSpawnNext
72
+ **Fast-advance reconciliation**: On any callback/resume, sync `fast_advance` messages from team_msg into `active_workers`. Skip spawning tasks already `in_progress` via fast-advance.
86
73
 
87
74
  ---
88
75
 
@@ -90,17 +77,8 @@ Receive result from wait_agent for [<role>]
90
77
 
91
78
  Read-only status report with progress milestones. No pipeline advancement.
92
79
 
93
- 1. Read tasks.json for pipeline state
94
- 2. Read worker progress from message bus:
95
- ```javascript
96
- const progressMsgs = mcp__maestro-tools__team_msg({
97
- operation: "list", session_id: sessionId, type: "progress", last: 50
98
- })
99
- const blockerMsgs = mcp__maestro-tools__team_msg({
100
- operation: "list", session_id: sessionId, type: "blocker", last: 10
101
- })
102
- ```
103
- 3. Aggregate latest milestone per active worker
80
+ 1. Read tasks.json + team_msg (type="progress", last=50) + team_msg (type="blocker", last=10)
81
+ 2. Aggregate latest milestone per active worker
104
82
 
105
83
  **Output format**:
106
84
 
@@ -136,29 +114,17 @@ Then STOP.
136
114
 
137
115
  ### Handler: handleResume
138
116
 
139
- **Agent Health Check** (v4):
140
- ```
141
- // Verify actual running agents match session state
142
- const runningAgents = list_agents({})
143
- // For each active_agent in tasks.json:
144
- // - If agent NOT in runningAgents -> agent crashed
145
- // - Reset that task to pending, remove from active_agents
146
- // This prevents stale agent references from blocking the pipeline
147
- ```
117
+ **Agent Health Check** (v4): Cross-check `list_agents()` against session `active_workers`. Any agent not actually running -> reset task to pending, remove from active_workers.
148
118
 
149
119
  Check active worker completion, process results, advance pipeline.
150
120
 
151
121
  ```
152
- Load active_workers from session
153
- +- No active workers -> handleSpawnNext
154
- +- Has active workers -> check each:
155
- +- status = completed -> mark done, log
156
- +- status = in_progress -> still running, log
157
- +- other status -> worker failure -> reset to pending
158
- After processing:
159
- +- Some completed -> handleSpawnNext
160
- +- All still running -> report status -> STOP
161
- +- All failed -> handleSpawnNext (retry)
122
+ Load active_workers -> route:
123
+ none -> handleSpawnNext
124
+ has workers -> classify each: completed | in_progress | failed(reset to pending)
125
+ some completed -> handleSpawnNext
126
+ all running -> report status -> STOP
127
+ all failed -> handleSpawnNext (retry)
162
128
  ```
163
129
 
164
130
  ---
@@ -168,155 +134,61 @@ Load active_workers from session
168
134
  Find all ready tasks, spawn team_worker agents, update session, STOP.
169
135
 
170
136
  ```
171
- Collect task states from tasks.json
172
- +- completedSubjects: status = completed
173
- +- inProgressSubjects: status = in_progress
174
- +- readySubjects: pending + all deps in completedSubjects
175
-
176
- Ready tasks found?
177
- +- NONE + work in progress -> report waiting -> STOP
178
- +- NONE + nothing in progress -> PIPELINE_COMPLETE -> handleComplete
179
- +- HAS ready tasks -> for each:
180
- +- Is task role an Inner Loop role AND that role already has an active_worker?
181
- | +- YES -> SKIP spawn (existing worker will pick it up via inner loop)
182
- | +- NO -> normal spawn below
183
- +- Update tasks.json entry status -> "in_progress"
184
- +- team_msg log -> task_unblocked (session_id=<session-id>)
185
- +- Spawn team_worker (see spawn call below)
186
- +- Add to session.active_workers
187
- Update session file -> output summary -> STOP
137
+ Classify tasks: completed | in_progress | ready (pending + all deps completed)
138
+
139
+ Ready tasks -> route:
140
+ none + in_progress exists -> report waiting -> STOP
141
+ none + nothing in_progress -> PIPELINE_COMPLETE -> handleComplete
142
+ has ready -> for each:
143
+ skip if Inner Loop role already has active_worker
144
+ else: set status="in_progress", log task_unblocked, spawn team_worker, add to active_workers
145
+ Update session -> output summary -> STOP
188
146
  ```
189
147
 
190
- **Cross-Agent Supplementary Context** (v4):
148
+ **Cross-Agent Supplementary Context** (v4): When spawning later-phase workers, use `send_message` (not `followup_task`) to deliver upstream results to already-running downstream workers as non-interrupting supplementary context.
191
149
 
192
- When spawning workers in a later pipeline phase, send upstream results as supplementary context to already-running workers:
150
+ **Spawn worker call** (one per ready task):
193
151
 
194
152
  ```
195
- // Example: Send upstream task results to running downstream workers
196
- send_message({
197
- target: "<running-agent-task-name>",
198
- message: `## Supplementary Context\n${upstreamFindings}`
199
- })
200
- // Note: send_message queues info without interrupting the agent's current work
153
+ spawn_agent({ agent_type: "team_worker", task_name: taskId, message: <role-assignment> })
201
154
  ```
202
155
 
203
- Use `send_message` (not `followup_task`) for supplementary info that enriches but doesn't redirect the agent's current task.
204
-
205
- **Spawn worker call** (one per ready task):
206
-
156
+ **Role assignment message template**:
207
157
  ```
208
- const agentId = spawn_agent({
209
- agent_type: "team_worker",
210
- task_name: taskId, // e.g., "EXPLORE-001" enables named targeting
211
- message: `## Role Assignment
212
- role: <role>
213
- role_spec: <session-folder>/role-specs/<role>.md
214
- session: <session-folder>
215
- session_id: <session-id>
216
- team_name: <team-name>
217
- requirement: <task-description>
218
- inner_loop: <true|false>
219
-
220
- Read role_spec file to load Phase 2-4 domain instructions.
221
-
158
+ ## Role Assignment
159
+ role: <role> | role_spec: <session-folder>/role-specs/<role>.md
160
+ session: <session-folder> | session_id: <session-id> | team_name: <team-name>
161
+ requirement: <task-description> | inner_loop: <true|false>
162
+ Read role_spec for Phase 2-4 instructions.
222
163
  ## Progress Milestones
223
- session_id: ${sessionId}
224
- Report progress via team_msg at natural phase boundaries.
225
- Report blockers immediately via team_msg type="blocker".
226
- Report completion via team_msg type="task_complete" after report_agent_job_result.`
227
- })
228
- // Collect results — use task_name for stable targeting (v4):
229
- const result = wait_agent({ timeout_ms: 1800000 }) // 30 min
230
-
231
- // Drain progress from message bus (before processing results)
232
- const progressMsgs = mcp__maestro-tools__team_msg({
233
- operation: "list", session_id: sessionId, type: "progress", last: 100
234
- })
235
- for (const msg of (progressMsgs.result?.messages || [])) {
236
- console.log(`[coordinator] trace: ${msg.summary}`)
237
- }
238
-
239
- if (result.timed_out) {
240
- // Status probe before closing
241
- followup_task({ target: taskId, message: "STATUS_CHECK: Report current progress, findings so far, and estimated remaining work." })
242
- const status = wait_agent({ timeout_ms: 180000 }) // 3 min
243
- if (status.timed_out) {
244
- followup_task({ target: taskId, message: "FINALIZE: Output all current findings immediately. Time limit reached.", interrupt: true })
245
- const forced = wait_agent({ timeout_ms: 180000 }) // 3 min
246
- if (forced.timed_out) {
247
- const lastProgress = (progressMsgs.result?.messages || [])
248
- .filter(m => m.data?.task_id === taskId).pop()
249
- state.tasks[taskId].status = 'timed_out'
250
- state.tasks[taskId].error = lastProgress
251
- ? `Timed out at ${lastProgress.data.phase} (${lastProgress.data.progress_pct}%)`
252
- : 'Timed out with no progress reported'
253
- close_agent({ target: taskId })
254
- }
255
- // else: forced output received, process result
256
- }
257
- // else: status received, continue processing
258
- } else {
259
- // Process result, update tasks.json
260
- close_agent({ target: taskId }) // Use task_name, not agentId
261
- }
164
+ Report progress via team_msg at phase boundaries. Blockers via type="blocker". Completion via type="task_complete" after report_agent_job_result.
262
165
  ```
263
166
 
167
+ **Result collection**: `wait_agent({ timeout_ms: 1800000 })` (30 min), drain progress from team_msg.
168
+
169
+ **Timeout escalation**: STATUS_CHECK (3 min) -> FINALIZE with interrupt (3 min) -> mark timed_out with last progress context, close_agent. Normal completion -> process result, close_agent (use task_name, not agentId).
170
+
264
171
  ---
265
172
 
266
173
  ### Handler: handleComplete
267
174
 
268
- **Cleanup Verification** (v4):
269
- ```
270
- // Verify all agents are properly closed
271
- const remaining = list_agents({})
272
- // If any team agents still running -> close_agent each
273
- // Ensures clean session shutdown
274
- ```
175
+ **Cleanup Verification** (v4): `list_agents()` -> close any still-running team agents.
275
176
 
276
177
  Pipeline complete. Execute completion action based on session configuration.
277
178
 
278
179
  ```
279
- All tasks completed (no pending, no in_progress)
280
- +- Generate pipeline summary:
281
- | - Deliverables list with paths
282
- | - Pipeline stats (tasks completed, duration)
283
- | - Discussion verdicts (if any)
284
- |
285
- +- Read session.completion_action:
286
- |
287
- +- "interactive":
288
- | request_user_input({
289
- | questions: [{
290
- | question: "Team pipeline complete. What would you like to do?",
291
- | header: "Completion",
292
- | multiSelect: false,
293
- | options: [
294
- | { label: "Archive & Clean (Recommended)", description: "Archive session, clean up team" },
295
- | { label: "Keep Active", description: "Keep session for follow-up work" },
296
- | { label: "Export Results", description: "Export deliverables to target directory" }
297
- | ]
298
- | }]
299
- | })
300
- | +- "Archive & Clean":
301
- | | Update session status="completed"
302
- | | Clean up session
303
- | | Output final summary with artifact paths
304
- | +- "Keep Active":
305
- | | Update session status="paused"
306
- | | Output: "Resume with: Skill(skill='team-coordinate', args='resume')"
307
- | +- "Export Results":
308
- | request_user_input for target directory
309
- | Copy deliverables to target
310
- | Execute Archive & Clean flow
311
- |
312
- +- "auto_archive":
313
- | Execute Archive & Clean without prompt
314
- |
315
- +- "auto_keep":
316
- Execute Keep Active without prompt
317
- ```
180
+ Generate summary: deliverables + stats + verdicts
181
+
182
+ Route by session.completion_action:
183
+ "interactive" -> request_user_input with options:
184
+ "Archive & Clean" -> status="completed", cleanup, output artifact paths
185
+ "Keep Active" -> status="paused", output resume command
186
+ "Export Results" -> prompt for target dir, copy deliverables, then Archive & Clean
187
+ "auto_archive" -> Archive & Clean without prompt
188
+ "auto_keep" -> Keep Active without prompt
318
189
 
319
- **Fallback**: If completion action fails, default to Keep Active (session status="paused"), log warning.
190
+ Fallback: default to Keep Active on failure.
191
+ ```
320
192
 
321
193
  ---
322
194
 
@@ -327,25 +199,11 @@ Handle mid-pipeline capability gap discovery. A worker reports `capability_gap`
327
199
  **CONSTRAINT**: Maximum 5 worker roles per session. handleAdapt MUST enforce this limit.
328
200
 
329
201
  ```
330
- Parse capability_gap message:
331
- +- Extract: gap_description, requesting_role, suggested_capability
332
- +- Validate gap is genuine:
333
- +- Check existing roles in session.roles -> does any role cover this?
334
- | +- YES -> redirect to that role -> STOP
335
- | +- NO -> genuine gap, proceed to role-spec generation
336
- +- CHECK ROLE COUNT LIMIT (MAX 5 ROLES):
337
- +- Count current roles in session.roles
338
- +- If count >= 5:
339
- +- Attempt to merge new capability into existing role
340
- +- If merge NOT possible -> PAUSE, report to user
341
- +- Generate new role-spec:
342
- 1. Read specs/role-spec-template.md
343
- 2. Fill template with: frontmatter (role, prefix, inner_loop, message_types) + Phase 2-4 content
344
- 3. Write to <session-folder>/role-specs/<new-role>.md
345
- 4. Add to session.roles[]
346
- +- Create new task(s) (add to tasks.json)
347
- +- Update team-session.json
348
- +- Spawn new team_worker -> STOP
202
+ Extract: gap_description, requesting_role, suggested_capability
203
+ Validate: existing role covers gap? -> redirect -> STOP
204
+ Enforce MAX 5 ROLES: count >= 5 -> attempt merge, else PAUSE for user
205
+ Generate role-spec from template -> write to role-specs/<new-role>.md -> add to session.roles
206
+ Create task(s) in tasks.json -> update session -> spawn team_worker -> STOP
349
207
  ```
350
208
 
351
209
  ---
@@ -363,14 +221,8 @@ When a worker has unexpected status (not completed, not in_progress):
363
221
  When coordinator detects a fast-advanced task has failed:
364
222
 
365
223
  ```
366
- handleCallback / handleResume detects:
367
- +- Task is in_progress (was fast-advanced by predecessor)
368
- +- No active_worker entry for this task
369
- +- Resolution:
370
- 1. Update tasks.json -> reset task to pending
371
- 2. Remove stale active_worker entry (if any)
372
- 3. Log via team_msg (type: error)
373
- 4. -> handleSpawnNext (will re-spawn the task normally)
224
+ Detect: task in_progress with no active_worker (stale fast-advance)
225
+ -> reset to pending, remove stale entry, log error, -> handleSpawnNext
374
226
  ```
375
227
 
376
228
  ### Fast-Advance State Sync
@@ -383,16 +235,10 @@ On every coordinator wake (handleCallback, handleResume, handleCheck):
383
235
  ### Consensus-Blocked Handling
384
236
 
385
237
  ```
386
- handleCallback receives message with consensus_blocked flag
387
- +- Route by severity:
388
- +- severity = HIGH
389
- | +- Create REVISION task (same role, incremented suffix)
390
- | +- Max 1 revision per task. If already revised -> PAUSE, escalate to user
391
- +- severity = MEDIUM
392
- | +- Proceed with warning, log to wisdom/issues.md
393
- | +- Normal handleSpawnNext
394
- +- severity = LOW
395
- +- Proceed normally, treat as consensus_reached with notes
238
+ Route by consensus_blocked severity:
239
+ HIGH -> create REVISION task (max 1 per task, else PAUSE + escalate)
240
+ MEDIUM -> proceed with warning, log to wisdom/issues.md, -> handleSpawnNext
241
+ LOW -> proceed normally, treat as consensus_reached with notes
396
242
  ```
397
243
 
398
244
  ## Phase 4: Validation