maestro-flow 0.3.10 → 0.3.12

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 (311) hide show
  1. package/.claude/agents/conceptual-planning-agent.md +1 -0
  2. package/.claude/agents/workflow-analyzer.md +114 -114
  3. package/.claude/agents/workflow-collab-planner.md +144 -144
  4. package/.claude/agents/workflow-debugger.md +102 -103
  5. package/.claude/agents/workflow-executor.md +127 -128
  6. package/.claude/agents/workflow-integration-checker.md +82 -82
  7. package/.claude/agents/workflow-nyquist-auditor.md +85 -84
  8. package/.claude/agents/workflow-phase-researcher.md +85 -85
  9. package/.claude/agents/workflow-plan-checker.md +90 -90
  10. package/.claude/agents/workflow-planner.md +178 -178
  11. package/.claude/agents/workflow-roadmapper.md +81 -83
  12. package/.claude/agents/workflow-verifier.md +119 -119
  13. package/.claude/commands/learn-decompose.md +176 -176
  14. package/.claude/commands/learn-follow.md +167 -167
  15. package/.claude/commands/learn-retro.md +3 -3
  16. package/.claude/commands/learn-second-opinion.md +2 -2
  17. package/.claude/commands/maestro-brainstorm.md +1 -0
  18. package/.claude/commands/maestro-coordinate.md +1 -3
  19. package/.claude/commands/maestro-fork.md +133 -111
  20. package/.claude/commands/maestro-merge.md +85 -77
  21. package/.claude/commands/maestro-plan.md +88 -2
  22. package/.claude/commands/maestro-roadmap.md +113 -2
  23. package/.claude/commands/maestro.md +1 -0
  24. package/.claude/commands/manage-harvest.md +131 -131
  25. package/.claude/commands/manage-issue.md +2 -2
  26. package/.claude/commands/quality-business-test.md +5 -5
  27. package/.claude/commands/quality-debug.md +3 -2
  28. package/.claude/commands/quality-retrospective.md +6 -4
  29. package/.claude/commands/quality-review.md +1 -1
  30. package/.claude/commands/quality-test-gen.md +5 -4
  31. package/.claude/commands/spec-add.md +67 -56
  32. package/.claude/commands/spec-load.md +66 -64
  33. package/.claude/commands/spec-setup.md +5 -9
  34. package/.codex/skills/learn-decompose/SKILL.md +119 -0
  35. package/.codex/skills/learn-follow/SKILL.md +83 -0
  36. package/.codex/skills/learn-investigate/SKILL.md +83 -0
  37. package/.codex/skills/learn-retro/SKILL.md +83 -0
  38. package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
  39. package/.codex/skills/maestro/SKILL.md +151 -279
  40. package/.codex/skills/maestro-analyze/SKILL.md +59 -71
  41. package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
  42. package/.codex/skills/maestro-chain/SKILL.md +95 -110
  43. package/.codex/skills/maestro-coordinate/SKILL.md +68 -234
  44. package/.codex/skills/maestro-execute/SKILL.md +435 -446
  45. package/.codex/skills/maestro-fork/SKILL.md +98 -0
  46. package/.codex/skills/maestro-init/SKILL.md +172 -167
  47. package/.codex/skills/maestro-learn/SKILL.md +80 -0
  48. package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
  49. package/.codex/skills/maestro-merge/SKILL.md +69 -0
  50. package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
  51. package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
  52. package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
  53. package/.codex/skills/maestro-overlay/SKILL.md +188 -185
  54. package/.codex/skills/maestro-plan/SKILL.md +58 -69
  55. package/.codex/skills/maestro-quick/SKILL.md +26 -23
  56. package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
  57. package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
  58. package/.codex/skills/maestro-ui-design/SKILL.md +35 -32
  59. package/.codex/skills/maestro-verify/SKILL.md +556 -566
  60. package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
  61. package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
  62. package/.codex/skills/manage-harvest/SKILL.md +82 -0
  63. package/.codex/skills/manage-issue/SKILL.md +80 -65
  64. package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
  65. package/.codex/skills/manage-learn/SKILL.md +190 -186
  66. package/.codex/skills/manage-memory/SKILL.md +95 -72
  67. package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
  68. package/.codex/skills/manage-status/SKILL.md +102 -89
  69. package/.codex/skills/quality-business-test/SKILL.md +228 -223
  70. package/.codex/skills/quality-debug/SKILL.md +54 -66
  71. package/.codex/skills/quality-integration-test/SKILL.md +532 -544
  72. package/.codex/skills/quality-refactor/SKILL.md +197 -191
  73. package/.codex/skills/quality-retrospective/SKILL.md +512 -505
  74. package/.codex/skills/quality-review/SKILL.md +95 -107
  75. package/.codex/skills/quality-sync/SKILL.md +101 -89
  76. package/.codex/skills/quality-test/SKILL.md +202 -198
  77. package/.codex/skills/quality-test-gen/SKILL.md +94 -105
  78. package/.codex/skills/spec-add/SKILL.md +58 -39
  79. package/.codex/skills/spec-load/SKILL.md +45 -40
  80. package/.codex/skills/spec-map/SKILL.md +180 -182
  81. package/.codex/skills/spec-setup/SKILL.md +94 -76
  82. package/.codex/skills/team-coordinate/SKILL.md +346 -357
  83. package/.codex/skills/team-executor/SKILL.md +70 -112
  84. package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
  85. package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
  86. package/.codex/skills/team-review/SKILL.md +232 -225
  87. package/.codex/skills/team-tech-debt/SKILL.md +78 -100
  88. package/.codex/skills/team-testing/SKILL.md +242 -235
  89. package/.codex/skills/wiki-connect/SKILL.md +75 -0
  90. package/.codex/skills/wiki-digest/SKILL.md +87 -0
  91. package/README.md +9 -4
  92. package/README.zh-CN.md +9 -4
  93. package/dashboard/dist/assets/{ArtifactsPage-DZNCi6tn.js → ArtifactsPage-CUrrDGgN.js} +1 -1
  94. package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +49 -0
  95. package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +27 -0
  96. package/dashboard/dist/assets/{CollabPage-B4NAHXS2.js → CollabPage-DIUXeazv.js} +1 -1
  97. package/dashboard/dist/assets/{ExecutionPanel-CFt4LJyq.js → ExecutionPanel-VmYeADFj.js} +1 -1
  98. package/dashboard/dist/assets/KanbanPage-DLq8v7hg.js +21 -0
  99. package/dashboard/dist/assets/{MarkdownRenderer-X4af_WNb.js → MarkdownRenderer-D7AehrnR.js} +1 -1
  100. package/dashboard/dist/assets/{McpPage-BKfCVIyU.js → McpPage-BY0SjTgw.js} +2 -2
  101. package/dashboard/dist/assets/{OutputPanel-BlBQFJSW.js → OutputPanel-B-Rjwgmv.js} +1 -1
  102. package/dashboard/dist/assets/{ProblemsPanel-De3DLvoI.js → ProblemsPanel-GEpF-oi4.js} +1 -1
  103. package/dashboard/dist/assets/RequirementBoardPage-xs8uDM7I.js +6 -0
  104. package/dashboard/dist/assets/{RequirementPage-Bllxe2XI.js → RequirementPage-BKDSFwjA.js} +5 -10
  105. package/dashboard/dist/assets/SpecsPage-DLFb9ZH0.js +36 -0
  106. package/dashboard/dist/assets/SupervisorPage-SOki_kgz.js +6 -0
  107. package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +11 -0
  108. package/dashboard/dist/assets/{TreeBrowser-Q12qobZs.js → TreeBrowser-B9DHdULE.js} +1 -1
  109. package/dashboard/dist/assets/{WorkflowPage-D_Fzdy3_.js → WorkflowPage-C8hWbYim.js} +1 -1
  110. package/dashboard/dist/assets/{check-u6fGOwQO.js → check-DJDk3A2a.js} +1 -1
  111. package/dashboard/dist/assets/{chevron-right-Csu22t58.js → chevron-right-C7bVDreZ.js} +1 -1
  112. package/dashboard/dist/assets/{circle-CMrkbRNg.js → circle-Qfgy4LB_.js} +1 -1
  113. package/dashboard/dist/assets/{circle-alert-c3tH1P4z.js → circle-alert-Na1vf6qQ.js} +1 -1
  114. package/dashboard/dist/assets/{circle-check-gYxxSYuH.js → circle-check-CEGgy3NV.js} +1 -1
  115. package/dashboard/dist/assets/{circle-check-big-TDSeWstm.js → circle-check-big-3JB8zRYj.js} +1 -1
  116. package/dashboard/dist/assets/{code-CFN2uX9V.js → code-Ble63Idz.js} +1 -1
  117. package/dashboard/dist/assets/{columns-3-38xIDlzy.js → columns-3-BUcKlxve.js} +1 -1
  118. package/dashboard/dist/assets/{download-DC7KkKyP.js → download-CMqkfn8x.js} +1 -1
  119. package/dashboard/dist/assets/{folder-CWq_lAnf.js → folder-B9ewx9LL.js} +1 -1
  120. package/dashboard/dist/assets/index-C2Mcb4TJ.js +231 -0
  121. package/dashboard/dist/assets/index-DyBbPc18.css +1 -0
  122. package/dashboard/dist/assets/{index-Do71weNR.js → index-JTmGteaT.js} +1 -1
  123. package/dashboard/dist/assets/{list-CgIP_2A-.js → list-DI8Wn2aT.js} +1 -1
  124. package/dashboard/dist/assets/loader-B5F6PzFT.js +11 -0
  125. package/dashboard/dist/assets/{minus-DYoN5UGk.js → minus-Lp_BfctG.js} +1 -1
  126. package/dashboard/dist/assets/{pen-line-Bh_WKYHm.js → pen-line-Ch7sphzZ.js} +1 -1
  127. package/dashboard/dist/assets/pencil-_yRMHmGT.js +6 -0
  128. package/dashboard/dist/assets/{proxy-BKxDAKTj.js → proxy-D72Y8a4Y.js} +1 -1
  129. package/dashboard/dist/assets/{search-SieXnOgr.js → search-BS6fI6Bg.js} +1 -1
  130. package/dashboard/dist/assets/{shallow-Bme1JY57.js → shallow-BXasQBvr.js} +1 -1
  131. package/dashboard/dist/assets/table-CeGlFjlP.js +6 -0
  132. package/dashboard/dist/assets/{terminal-BB3Xfuv5.js → terminal-BJic2yW-.js} +1 -1
  133. package/dashboard/dist/assets/{trash-2-C8f4vFFM.js → trash-2-Czz4X8Fb.js} +1 -1
  134. package/dashboard/dist/assets/{zap-4uwlzVm0.js → zap-C3H0jVFA.js} +1 -1
  135. package/dashboard/dist/index.html +2 -2
  136. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +16 -1
  137. package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
  138. package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js +1 -2
  139. package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js.map +1 -1
  140. package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.d.ts +1 -1
  141. package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js +2 -1
  142. package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js.map +1 -1
  143. package/dashboard/dist-server/dashboard/src/server/index.js +3 -0
  144. package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
  145. package/dashboard/dist-server/dashboard/src/server/routes/collab.js +124 -0
  146. package/dashboard/dist-server/dashboard/src/server/routes/collab.js.map +1 -1
  147. package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
  148. package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
  149. package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
  150. package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
  151. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
  152. package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
  153. package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.d.ts +10 -0
  154. package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js +73 -0
  155. package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js.map +1 -0
  156. package/dashboard/dist-server/dashboard/src/shared/collab-types.d.ts +31 -0
  157. package/dashboard/dist-server/dashboard/src/shared/collab-types.js +28 -0
  158. package/dashboard/dist-server/dashboard/src/shared/collab-types.js.map +1 -1
  159. package/dashboard/dist-server/dashboard/src/shared/constants.js +10 -0
  160. package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
  161. package/dashboard/dist-server/dashboard/src/shared/coordinate-types.d.ts +22 -0
  162. package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +12 -0
  163. package/dashboard/dist-server/dashboard/src/shared/issue-types.js +12 -0
  164. package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
  165. package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +22 -0
  166. package/dashboard/dist-server/dashboard/src/shared/team-types.js +7 -0
  167. package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
  168. package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
  169. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +28 -2
  170. package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
  171. package/dashboard/dist-server/shared/agent-types.d.ts +4 -0
  172. package/dashboard/dist-server/src/hooks/constants.d.ts +3 -1
  173. package/dashboard/dist-server/src/hooks/constants.js +4 -2
  174. package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
  175. package/dist/shared/agent-types.d.ts +4 -0
  176. package/dist/shared/agent-types.d.ts.map +1 -1
  177. package/dist/src/commands/collab.js +4 -4
  178. package/dist/src/commands/collab.js.map +1 -1
  179. package/dist/src/commands/hooks.d.ts.map +1 -1
  180. package/dist/src/commands/hooks.js +66 -1
  181. package/dist/src/commands/hooks.js.map +1 -1
  182. package/dist/src/commands/install-backend.d.ts.map +1 -1
  183. package/dist/src/commands/install-backend.js +29 -18
  184. package/dist/src/commands/install-backend.js.map +1 -1
  185. package/dist/src/commands/spec.d.ts.map +1 -1
  186. package/dist/src/commands/spec.js +7 -2
  187. package/dist/src/commands/spec.js.map +1 -1
  188. package/dist/src/hooks/__tests__/statusline-visual-test.js +23 -1
  189. package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -1
  190. package/dist/src/hooks/constants.d.ts +3 -1
  191. package/dist/src/hooks/constants.d.ts.map +1 -1
  192. package/dist/src/hooks/constants.js +4 -2
  193. package/dist/src/hooks/constants.js.map +1 -1
  194. package/dist/src/hooks/guards/index.d.ts +1 -0
  195. package/dist/src/hooks/guards/index.d.ts.map +1 -1
  196. package/dist/src/hooks/guards/index.js +1 -0
  197. package/dist/src/hooks/guards/index.js.map +1 -1
  198. package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
  199. package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
  200. package/dist/src/hooks/guards/spec-validator.js +66 -0
  201. package/dist/src/hooks/guards/spec-validator.js.map +1 -0
  202. package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
  203. package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
  204. package/dist/src/hooks/keyword-spec-injector.js +96 -0
  205. package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
  206. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
  207. package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
  208. package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
  209. package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
  210. package/dist/src/hooks/skill-context.d.ts +3 -0
  211. package/dist/src/hooks/skill-context.d.ts.map +1 -1
  212. package/dist/src/hooks/skill-context.js +95 -9
  213. package/dist/src/hooks/skill-context.js.map +1 -1
  214. package/dist/src/hooks/spec-bridge.d.ts +40 -0
  215. package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
  216. package/dist/src/hooks/spec-bridge.js +97 -0
  217. package/dist/src/hooks/spec-bridge.js.map +1 -0
  218. package/dist/src/hooks/spec-injector.d.ts.map +1 -1
  219. package/dist/src/hooks/spec-injector.js +18 -12
  220. package/dist/src/hooks/spec-injector.js.map +1 -1
  221. package/dist/src/hooks/statusline.d.ts.map +1 -1
  222. package/dist/src/hooks/statusline.js +6 -3
  223. package/dist/src/hooks/statusline.js.map +1 -1
  224. package/dist/src/team/phase-orchestrator.d.ts +52 -0
  225. package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
  226. package/dist/src/team/phase-orchestrator.js +165 -0
  227. package/dist/src/team/phase-orchestrator.js.map +1 -0
  228. package/dist/src/team/phase-types.d.ts +51 -0
  229. package/dist/src/team/phase-types.d.ts.map +1 -0
  230. package/dist/src/team/phase-types.js +41 -0
  231. package/dist/src/team/phase-types.js.map +1 -0
  232. package/dist/src/tools/index.d.ts.map +1 -1
  233. package/dist/src/tools/index.js +6 -0
  234. package/dist/src/tools/index.js.map +1 -1
  235. package/dist/src/tools/merge-validator.d.ts.map +1 -1
  236. package/dist/src/tools/merge-validator.js +114 -16
  237. package/dist/src/tools/merge-validator.js.map +1 -1
  238. package/dist/src/tools/spec-entry-parser.d.ts +56 -0
  239. package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
  240. package/dist/src/tools/spec-entry-parser.js +196 -0
  241. package/dist/src/tools/spec-entry-parser.js.map +1 -0
  242. package/dist/src/tools/spec-init.d.ts.map +1 -1
  243. package/dist/src/tools/spec-init.js +66 -92
  244. package/dist/src/tools/spec-init.js.map +1 -1
  245. package/dist/src/tools/spec-keyword-index.d.ts +30 -0
  246. package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
  247. package/dist/src/tools/spec-keyword-index.js +101 -0
  248. package/dist/src/tools/spec-keyword-index.js.map +1 -0
  249. package/dist/src/tools/spec-loader.d.ts +3 -3
  250. package/dist/src/tools/spec-loader.d.ts.map +1 -1
  251. package/dist/src/tools/spec-loader.js +49 -23
  252. package/dist/src/tools/spec-loader.js.map +1 -1
  253. package/dist/src/tools/team-agents.d.ts +27 -0
  254. package/dist/src/tools/team-agents.d.ts.map +1 -0
  255. package/dist/src/tools/team-agents.js +362 -0
  256. package/dist/src/tools/team-agents.js.map +1 -0
  257. package/dist/src/tools/team-mailbox.d.ts +40 -0
  258. package/dist/src/tools/team-mailbox.d.ts.map +1 -0
  259. package/dist/src/tools/team-mailbox.js +384 -0
  260. package/dist/src/tools/team-mailbox.js.map +1 -0
  261. package/dist/src/tools/team-msg.d.ts +17 -8
  262. package/dist/src/tools/team-msg.d.ts.map +1 -1
  263. package/dist/src/tools/team-msg.js +110 -13
  264. package/dist/src/tools/team-msg.js.map +1 -1
  265. package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
  266. package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
  267. package/dist/src/tools/team-tasks-mcp.js +408 -0
  268. package/dist/src/tools/team-tasks-mcp.js.map +1 -0
  269. package/package.json +2 -1
  270. package/shared/agent-types.ts +4 -0
  271. package/templates/worktree-scope.json +9 -10
  272. package/templates/worktrees.json +26 -27
  273. package/workflows/analyze.md +816 -816
  274. package/workflows/brainstorm.md +480 -471
  275. package/workflows/codebase-rebuild.md +332 -332
  276. package/workflows/codebase-refresh.md +240 -240
  277. package/workflows/debug.md +16 -6
  278. package/workflows/execute.md +1 -1
  279. package/workflows/fork.md +100 -36
  280. package/workflows/harvest.md +420 -420
  281. package/workflows/integration-test.md +355 -343
  282. package/workflows/issue-discover.md +414 -414
  283. package/workflows/issue.md +14 -4
  284. package/workflows/learn.md +19 -5
  285. package/workflows/maestro.md +1 -0
  286. package/workflows/map.md +111 -111
  287. package/workflows/merge.md +113 -55
  288. package/workflows/milestone-complete.md +176 -176
  289. package/workflows/plan.md +1 -1
  290. package/workflows/quick.md +497 -497
  291. package/workflows/refactor.md +300 -300
  292. package/workflows/retrospective.md +61 -22
  293. package/workflows/review.md +17 -4
  294. package/workflows/roadmap.md +335 -335
  295. package/workflows/spec-generate.md +640 -640
  296. package/workflows/specs-add.md +46 -81
  297. package/workflows/specs-load.md +15 -17
  298. package/workflows/specs-setup.md +40 -161
  299. package/workflows/test.md +12 -2
  300. package/workflows/ui-style.md +9 -2
  301. package/dashboard/dist/assets/ChatInput-Bvr-FeEq.js +0 -49
  302. package/dashboard/dist/assets/ChatPage-D9zTkJZo.js +0 -22
  303. package/dashboard/dist/assets/KanbanPage-C8USth6H.js +0 -21
  304. package/dashboard/dist/assets/RequirementBoardPage-Bf1trzqs.js +0 -11
  305. package/dashboard/dist/assets/SpecsPage-9lwxKT27.js +0 -36
  306. package/dashboard/dist/assets/SupervisorPage-SusdfHFq.js +0 -6
  307. package/dashboard/dist/assets/TeamsPage-DsuM6OwC.js +0 -6
  308. package/dashboard/dist/assets/arrow-left-Bqtb2hle.js +0 -6
  309. package/dashboard/dist/assets/index-DWG-WrzT.js +0 -231
  310. package/dashboard/dist/assets/index-GUNJodSR.css +0 -1
  311. package/dashboard/dist/assets/table-llyEtj-7.js +0 -6
@@ -178,8 +178,13 @@ Cross-milestone conflict check (for supplement issues):
178
178
  6. IF source == "supplement" AND milestone_ref is not null:
179
179
  a. Read .workflow/roadmap.md
180
180
  b. Identify phases belonging to OTHER milestones (not milestone_ref)
181
- c. For each other-milestone phase, check if plan.json exists:
182
- Read .workflow/phases/{NN}-{slug}/plan.json (if exists)
181
+ c. For each other-milestone phase, resolve phase dir and check if plan.json exists:
182
+ Read .workflow/state.json state; artifacts = state.artifacts ?? []
183
+ IF artifacts.length > 0:
184
+ art = artifacts.find(a => a.type === 'plan' && a.phase === phaseNum)
185
+ IF art: Read .workflow/{art.path}/plan.json (if exists)
186
+ ELSE:
187
+ Read .workflow/phases/{NN}-{slug}/plan.json (if exists)
183
188
  Collect files_to_create[] as planned_files
184
189
  d. IF affected_components in the new issue overlap with planned_files:
185
190
  WARNING: "Conflict detected: this supplement issue affects components planned in milestone {other_milestone}"
@@ -449,8 +454,13 @@ Process bidirectional link:
449
454
  If not found → error: "Issue {ID} not found"
450
455
 
451
456
  2. Locate task file:
452
- - Search .workflow/phases/*/.task/{TASK_ID}.json
453
- - If not found search .workflow/scratch/*/.task/{TASK_ID}.json
457
+ - Read .workflow/state.json → state
458
+ - artifacts = state.artifacts ?? []
459
+ - IF artifacts.length > 0:
460
+ Search .workflow/scratch/*/.task/{TASK_ID}.json (artifact registry scratch paths)
461
+ ELSE:
462
+ Search .workflow/phases/*/.task/{TASK_ID}.json (legacy)
463
+ - Also search .workflow/scratch/*/.task/{TASK_ID}.json (standalone scratch tasks)
454
464
  - If still not found → error: "Task {TASK_ID} not found"
455
465
 
456
466
  3. Update issue record:
@@ -86,9 +86,14 @@ IF .workflow/state.json exists:
86
86
  IF state.current_phase is not null:
87
87
  phase = state.current_phase
88
88
 
89
- # Resolve slug
90
- Glob ".workflow/phases/{NN}-*/" where NN == phase
91
- phase_slug = matched directory basename (e.g. "01-auth")
89
+ # Resolve slug — artifact registry first, fallback to legacy phases/
90
+ artifacts = state.artifacts ?? []
91
+ IF artifacts.length > 0:
92
+ art = artifacts.find(a => a.phase === phase)
93
+ phase_slug = art?.slug ?? "phase-" + phase
94
+ ELSE:
95
+ Glob ".workflow/phases/{NN}-*/" where NN == phase
96
+ phase_slug = matched directory basename (e.g. "01-auth")
92
97
  ```
93
98
 
94
99
  If `--phase 0` is passed, force `phase = null, phase_slug = null` regardless.
@@ -299,8 +304,17 @@ IF row is null → error E004: "Insight {target_id} not found"
299
304
  ```
300
305
  phase_context = null
301
306
  IF row.phase_slug is not null:
302
- phase_dir = ".workflow/phases/" + row.phase_slug
303
- IF directory exists:
307
+ // Resolve phase dir — artifact registry first, fallback to legacy phases/
308
+ Read .workflow/state.json → state
309
+ artifacts = state.artifacts ?? []
310
+ phase_dir = null
311
+ IF artifacts.length > 0:
312
+ art = artifacts.find(a => a.phase === row.phase && a.path)
313
+ IF art: phase_dir = ".workflow/" + art.path
314
+ ELSE:
315
+ phase_dir = ".workflow/phases/" + row.phase_slug
316
+
317
+ IF phase_dir AND directory exists:
304
318
  phase_context = {
305
319
  title: read index.json.title from phase_dir,
306
320
  status: read index.json.status,
@@ -789,6 +789,7 @@ const context = {
789
789
  const AUTO_FLAG_MAP = {
790
790
  'maestro-analyze': '-y',
791
791
  'maestro-brainstorm': '-y',
792
+ 'maestro-roadmap': '-y',
792
793
  'maestro-ui-design': '-y',
793
794
  'maestro-plan': '--auto',
794
795
  'maestro-spec-generate': '-y',
package/workflows/map.md CHANGED
@@ -1,111 +1,111 @@
1
- # Workflow: map
2
-
3
- Codebase scanning with parallel mapper agents.
4
-
5
- ---
6
-
7
- ## Step 1: Pre-check
8
-
9
- 1. Check if `.workflow/research/` already exists with documents:
10
- - If documents exist and are recent (< 7 days):
11
- - Ask user: "Codebase map exists. Refresh or skip?"
12
- - "refresh" → continue to Step 2 (overwrite)
13
- - "skip" → exit with route suggestions
14
- - If documents are stale or missing → continue to Step 2
15
-
16
- 2. Create `.workflow/research/` directory if it does not exist.
17
-
18
- ---
19
-
20
- ## Step 2: Spawn Parallel Mapper Agents
21
-
22
- Spawn 4 parallel `workflow-codebase-mapper` agents. Each agent scans the codebase independently with a specific focus and writes its output directly to `.workflow/research/`.
23
-
24
- ```
25
- Agent 1: tech focus
26
- Scan: package.json, go.mod, requirements.txt, build files, dependencies
27
- Output: .workflow/research/STACK.md
28
- Content: languages, frameworks, build tools, key dependencies, versions
29
-
30
- Agent 2: arch focus
31
- Scan: directory structure, module boundaries, entry points, data flow
32
- Output: .workflow/research/ARCHITECTURE.md
33
- Content: architecture style, layer separation, module graph, key abstractions
34
-
35
- Agent 3: features focus
36
- Scan: routes, handlers, components, services, models
37
- Output: .workflow/research/FEATURES.md
38
- Content: feature inventory, feature-to-file mapping, completeness assessment
39
-
40
- Agent 4: concerns focus
41
- Scan: error handling, logging, tests, config, security, performance
42
- Output: .workflow/research/PITFALLS.md
43
- Content: tech debt, missing tests, security gaps, performance concerns, known issues
44
- ```
45
-
46
- If `$ARGUMENTS` (focus area) is provided, pass it to each agent as a focus filter: "Prioritize analysis of {focus_area} subsystem."
47
-
48
- **Load project specs for mapper context:**
49
- ```
50
- specs_content = maestro spec load --category planning
51
- ```
52
-
53
- **Agent spawn pattern:**
54
- ```
55
- For each agent (1-4) in parallel:
56
- Agent({
57
- subagent_type: "workflow-codebase-mapper",
58
- prompt: "Focus: {focus}. Scan the codebase and write {output_file}.
59
- Project specs for reference: ${specs_content}
60
- Write directly to the file. Return only a confirmation with line count.",
61
- run_in_background: false
62
- })
63
- ```
64
-
65
- ---
66
-
67
- ## Step 3: Verification
68
-
69
- After all 4 agents complete:
70
-
71
- 1. Verify all documents exist with content:
72
- ```
73
- .workflow/research/STACK.md — exists, >10 lines
74
- .workflow/research/ARCHITECTURE.md — exists, >10 lines
75
- .workflow/research/FEATURES.md — exists, >10 lines
76
- .workflow/research/PITFALLS.md — exists, >10 lines
77
- ```
78
-
79
- 2. If any document is missing or empty:
80
- - Log which agent failed
81
- - Re-spawn that specific agent (max 1 retry per agent)
82
-
83
- ---
84
-
85
- ## Step 4: Summary
86
-
87
- 1. Create `.workflow/research/SUMMARY.md`:
88
- - Read all 4 documents
89
- - Write a consolidated executive summary covering:
90
- - Tech stack overview (from STACK.md)
91
- - Architecture highlights (from ARCHITECTURE.md)
92
- - Feature inventory count (from FEATURES.md)
93
- - Top 3 concerns (from PITFALLS.md)
94
- - Recommendations for next steps
95
-
96
- ---
97
-
98
- ## Step 5: Commit and Route
99
-
100
- 1. If git repo: commit `.workflow/research/` with message `"chore: map codebase"`
101
-
102
- 2. Display summary:
103
- ```
104
- Codebase mapped successfully.
105
- Documents: 5 files in .workflow/research/
106
- ```
107
-
108
- 3. Route next steps based on project state:
109
- - No `.workflow/state.json` → "Run `/workflow:init` to initialize project"
110
- - Has state, no roadmap → "Run `/workflow:init` to create roadmap"
111
- - Has roadmap → "Run `/workflow:plan {next_phase}` to start planning"
1
+ # Workflow: map
2
+
3
+ Codebase scanning with parallel mapper agents.
4
+
5
+ ---
6
+
7
+ ## Step 1: Pre-check
8
+
9
+ 1. Check if `.workflow/research/` already exists with documents:
10
+ - If documents exist and are recent (< 7 days):
11
+ - Ask user: "Codebase map exists. Refresh or skip?"
12
+ - "refresh" → continue to Step 2 (overwrite)
13
+ - "skip" → exit with route suggestions
14
+ - If documents are stale or missing → continue to Step 2
15
+
16
+ 2. Create `.workflow/research/` directory if it does not exist.
17
+
18
+ ---
19
+
20
+ ## Step 2: Spawn Parallel Mapper Agents
21
+
22
+ Spawn 4 parallel `workflow-codebase-mapper` agents. Each agent scans the codebase independently with a specific focus and writes its output directly to `.workflow/research/`.
23
+
24
+ ```
25
+ Agent 1: tech focus
26
+ Scan: package.json, go.mod, requirements.txt, build files, dependencies
27
+ Output: .workflow/research/STACK.md
28
+ Content: languages, frameworks, build tools, key dependencies, versions
29
+
30
+ Agent 2: arch focus
31
+ Scan: directory structure, module boundaries, entry points, data flow
32
+ Output: .workflow/research/ARCHITECTURE.md
33
+ Content: architecture style, layer separation, module graph, key abstractions
34
+
35
+ Agent 3: features focus
36
+ Scan: routes, handlers, components, services, models
37
+ Output: .workflow/research/FEATURES.md
38
+ Content: feature inventory, feature-to-file mapping, completeness assessment
39
+
40
+ Agent 4: concerns focus
41
+ Scan: error handling, logging, tests, config, security, performance
42
+ Output: .workflow/research/PITFALLS.md
43
+ Content: tech debt, missing tests, security gaps, performance concerns, known issues
44
+ ```
45
+
46
+ If `$ARGUMENTS` (focus area) is provided, pass it to each agent as a focus filter: "Prioritize analysis of {focus_area} subsystem."
47
+
48
+ **Load project specs for mapper context:**
49
+ ```
50
+ specs_content = maestro spec load --category arch
51
+ ```
52
+
53
+ **Agent spawn pattern:**
54
+ ```
55
+ For each agent (1-4) in parallel:
56
+ Agent({
57
+ subagent_type: "workflow-codebase-mapper",
58
+ prompt: "Focus: {focus}. Scan the codebase and write {output_file}.
59
+ Project specs for reference: ${specs_content}
60
+ Write directly to the file. Return only a confirmation with line count.",
61
+ run_in_background: false
62
+ })
63
+ ```
64
+
65
+ ---
66
+
67
+ ## Step 3: Verification
68
+
69
+ After all 4 agents complete:
70
+
71
+ 1. Verify all documents exist with content:
72
+ ```
73
+ .workflow/research/STACK.md — exists, >10 lines
74
+ .workflow/research/ARCHITECTURE.md — exists, >10 lines
75
+ .workflow/research/FEATURES.md — exists, >10 lines
76
+ .workflow/research/PITFALLS.md — exists, >10 lines
77
+ ```
78
+
79
+ 2. If any document is missing or empty:
80
+ - Log which agent failed
81
+ - Re-spawn that specific agent (max 1 retry per agent)
82
+
83
+ ---
84
+
85
+ ## Step 4: Summary
86
+
87
+ 1. Create `.workflow/research/SUMMARY.md`:
88
+ - Read all 4 documents
89
+ - Write a consolidated executive summary covering:
90
+ - Tech stack overview (from STACK.md)
91
+ - Architecture highlights (from ARCHITECTURE.md)
92
+ - Feature inventory count (from FEATURES.md)
93
+ - Top 3 concerns (from PITFALLS.md)
94
+ - Recommendations for next steps
95
+
96
+ ---
97
+
98
+ ## Step 5: Commit and Route
99
+
100
+ 1. If git repo: commit `.workflow/research/` with message `"chore: map codebase"`
101
+
102
+ 2. Display summary:
103
+ ```
104
+ Codebase mapped successfully.
105
+ Documents: 5 files in .workflow/research/
106
+ ```
107
+
108
+ 3. Route next steps based on project state:
109
+ - No `.workflow/state.json` → "Run `/workflow:init` to initialize project"
110
+ - Has state, no roadmap → "Run `/workflow:init` to create roadmap"
111
+ - Has roadmap → "Run `/workflow:plan {next_phase}` to start planning"
@@ -103,15 +103,31 @@ IF NOT target:
103
103
  completedPhases = []
104
104
  incompletePhases = []
105
105
 
106
- for (phaseNum of target.owned_phases):
107
- NN = String(phaseNum).padStart(2, '0')
108
- Glob: {target.path}/.workflow/phases/{NN}-*/index.json
109
- Read wtIndex
106
+ // Read worktree state for artifact registry check
107
+ Read {target.path}/.workflow/state.json → wtState (if exists)
108
+ wtArtifacts = wtState?.artifacts ?? []
109
+ useArtifactRegistry = wtArtifacts.length > 0
110
+
111
+ IF useArtifactRegistry:
112
+ // Check phase completeness via artifact registry
113
+ for (phaseNum of target.owned_phases):
114
+ execArtifacts = wtArtifacts.filter(a => a.type === 'execute' && a.phase === phaseNum)
115
+ IF execArtifacts.some(a => a.status === 'completed'):
116
+ completedPhases.push({ phase: phaseNum })
117
+ ELSE:
118
+ status = execArtifacts.length > 0 ? execArtifacts[0].status : 'no_execute_artifact'
119
+ incompletePhases.push({ phase: phaseNum, status })
120
+ ELSE:
121
+ // Legacy: check phases/ directory
122
+ for (phaseNum of target.owned_phases):
123
+ NN = String(phaseNum).padStart(2, '0')
124
+ Glob: {target.path}/.workflow/phases/{NN}-*/index.json
125
+ Read → wtIndex
110
126
 
111
- IF wtIndex.status === "completed":
112
- completedPhases.push({ phase: phaseNum, index: wtIndex })
113
- ELSE:
114
- incompletePhases.push({ phase: phaseNum, status: wtIndex.status })
127
+ IF wtIndex.status === "completed":
128
+ completedPhases.push({ phase: phaseNum, index: wtIndex })
129
+ ELSE:
130
+ incompletePhases.push({ phase: phaseNum, status: wtIndex.status })
115
131
 
116
132
  IF incompletePhases.length > 0 AND NOT force:
117
133
  WARN W002: "M{target.milestone_num} ({target.milestone}) has incomplete phases:"
@@ -181,51 +197,90 @@ Step_7:
181
197
 
182
198
  Display "Syncing workflow artifacts for M{target.milestone_num} ({target.milestone})..."
183
199
 
184
- // 7a: Copy all owned phase directories from worktree to main
185
- for (phaseNum of target.owned_phases):
186
- NN = String(phaseNum).padStart(2, '0')
187
- Glob: {target.path}/.workflow/phases/{NN}-*/
188
- phaseDir = matched directory name
189
-
190
- srcDir = target.path + "/.workflow/phases/" + phaseDir + "/"
191
- dstDir = ".workflow/phases/" + phaseDir + "/"
192
-
193
- Bash("cp -r {srcDir}* {dstDir}")
194
-
195
- // 7b: Atomic state reconciliation
196
200
  Read .workflow/state.json → mainState
197
201
 
198
- for (phaseNum of target.owned_phases):
199
- NN = String(phaseNum).padStart(2, '0')
200
- Glob: .workflow/phases/{NN}-*/index.json
201
- Read phaseIndex
202
-
203
- IF phaseIndex.status === "completed":
204
- mainState.phases_summary.completed += 1
205
- mainState.phases_summary.pending -= 1
206
- IF mainState.phases_summary.pending < 0:
207
- mainState.phases_summary.pending = 0
208
-
209
- mainState.transition_history = mainState.transition_history ?? []
210
- mainState.transition_history.push({
211
- milestone_num: target.milestone_num,
212
- milestone: target.milestone,
213
- phase: phaseNum,
214
- action: "worktree_merge",
215
- completed_at: phaseIndex.completed_at ?? getUtc8ISOString(),
216
- branch: target.branch
217
- })
218
- ELSE IF phaseIndex.status !== "forked":
219
- mainState.phases_summary.in_progress += 1
220
- mainState.phases_summary.pending -= 1
221
- IF mainState.phases_summary.pending < 0:
222
- mainState.phases_summary.pending = 0
223
-
224
- phaseIndex.updated_at = getUtc8ISOString()
225
- Write .workflow/phases/{NN}-{slug}/index.json: phaseIndex
226
-
227
- // Merge accumulated context from worktree
228
- Read target.path + "/.workflow/state.json" → wtState (if exists)
202
+ IF useArtifactRegistry:
203
+ // 7a: Copy scratch dirs from worktree to main
204
+ Read {target.path}/.workflow/state.json → wtState
205
+ wtArtifacts = wtState?.artifacts ?? []
206
+ milestoneArtifacts = wtArtifacts.filter(a =>
207
+ a.path && (a.milestone === target.milestone || target.owned_phases.includes(a.phase))
208
+ )
209
+ for (art of milestoneArtifacts):
210
+ srcDir = target.path + "/.workflow/" + art.path
211
+ dstDir = ".workflow/" + art.path
212
+ IF directory_exists(srcDir):
213
+ Bash("mkdir -p {dstDir} && cp -r {srcDir}/* {dstDir}/")
214
+
215
+ // 7b: Merge artifact registries
216
+ mainArtifacts = mainState.artifacts ?? []
217
+ existingIds = new Set(mainArtifacts.map(a => a.id))
218
+ for (art of wtArtifacts):
219
+ IF existingIds.has(art.id):
220
+ // Update existing artifact status
221
+ idx = mainArtifacts.findIndex(a => a.id === art.id)
222
+ mainArtifacts[idx] = art
223
+ ELSE:
224
+ mainArtifacts.push(art)
225
+ mainState.artifacts = mainArtifacts
226
+
227
+ // Record merge in transition history
228
+ mainState.transition_history = mainState.transition_history ?? []
229
+ mainState.transition_history.push({
230
+ milestone_num: target.milestone_num,
231
+ milestone: target.milestone,
232
+ action: "worktree_merge",
233
+ completed_at: getUtc8ISOString(),
234
+ branch: target.branch,
235
+ phases: target.owned_phases
236
+ })
237
+
238
+ ELSE:
239
+ // Legacy: copy phase directories from worktree to main
240
+ // 7a: Copy all owned phase directories
241
+ for (phaseNum of target.owned_phases):
242
+ NN = String(phaseNum).padStart(2, '0')
243
+ Glob: {target.path}/.workflow/phases/{NN}-*/
244
+ phaseDir = matched directory name
245
+
246
+ srcDir = target.path + "/.workflow/phases/" + phaseDir + "/"
247
+ dstDir = ".workflow/phases/" + phaseDir + "/"
248
+
249
+ Bash("cp -r {srcDir}* {dstDir}")
250
+
251
+ // 7b: Update phase summaries
252
+ for (phaseNum of target.owned_phases):
253
+ NN = String(phaseNum).padStart(2, '0')
254
+ Glob: .workflow/phases/{NN}-*/index.json
255
+ Read → phaseIndex
256
+
257
+ IF phaseIndex.status === "completed":
258
+ mainState.phases_summary.completed += 1
259
+ mainState.phases_summary.pending -= 1
260
+ IF mainState.phases_summary.pending < 0:
261
+ mainState.phases_summary.pending = 0
262
+
263
+ mainState.transition_history = mainState.transition_history ?? []
264
+ mainState.transition_history.push({
265
+ milestone_num: target.milestone_num,
266
+ milestone: target.milestone,
267
+ phase: phaseNum,
268
+ action: "worktree_merge",
269
+ completed_at: phaseIndex.completed_at ?? getUtc8ISOString(),
270
+ branch: target.branch
271
+ })
272
+ ELSE IF phaseIndex.status !== "forked":
273
+ mainState.phases_summary.in_progress += 1
274
+ mainState.phases_summary.pending -= 1
275
+ IF mainState.phases_summary.pending < 0:
276
+ mainState.phases_summary.pending = 0
277
+
278
+ phaseIndex.updated_at = getUtc8ISOString()
279
+ Write .workflow/phases/{NN}-{slug}/index.json: phaseIndex
280
+
281
+ // Merge accumulated context from worktree (both paths)
282
+ IF NOT useArtifactRegistry:
283
+ Read target.path + "/.workflow/state.json" → wtState (if exists)
229
284
  IF wtState?.accumulated_context:
230
285
  for (decision of (wtState.accumulated_context.key_decisions ?? [])):
231
286
  IF NOT mainState.accumulated_context.key_decisions.includes(decision):
@@ -236,12 +291,15 @@ IF wtState?.accumulated_context:
236
291
  mainState.last_updated = getUtc8ISOString()
237
292
  Write .workflow/state.json: mainState
238
293
 
239
- // 7c: Update roadmap.md
294
+ // 7c: Update roadmap.md (mark completed phases)
240
295
  Read .workflow/roadmap.md → roadmap
241
296
  for (phaseNum of target.owned_phases):
242
- Read phase index → check if completed
243
- IF completed:
244
- Append " ✅ COMPLETED" to phase title line
297
+ IF useArtifactRegistry:
298
+ isCompleted = completedPhases.some(p => p.phase === phaseNum)
299
+ ELSE:
300
+ Read phase index → isCompleted = (status === "completed")
301
+ IF isCompleted:
302
+ Append " ✅ COMPLETED" to phase title line in roadmap
245
303
  Write .workflow/roadmap.md: roadmap
246
304
  ```
247
305