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.
- package/.claude/commands/maestro-amend.md +300 -0
- package/.claude/commands/maestro-analyze.md +1 -49
- package/.claude/commands/maestro-composer.md +354 -0
- package/.claude/commands/maestro-execute.md +2 -56
- package/.claude/commands/maestro-fork.md +3 -50
- package/.claude/commands/maestro-merge.md +2 -26
- package/.claude/commands/maestro-milestone-audit.md +1 -5
- package/.claude/commands/maestro-milestone-complete.md +1 -7
- package/.claude/commands/maestro-plan.md +6 -127
- package/.claude/commands/maestro-player.md +404 -0
- package/.claude/commands/maestro-roadmap.md +3 -101
- package/.claude/commands/maestro-spec-generate.md +1 -25
- package/.claude/commands/maestro-ui-design.md +14 -73
- package/.claude/commands/maestro-verify.md +1 -32
- package/.claude/commands/maestro.md +13 -30
- package/.claude/commands/manage-harvest.md +7 -44
- package/.claude/commands/manage-knowhow-capture.md +193 -0
- package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
- package/.claude/commands/manage-learn.md +3 -28
- package/.claude/commands/manage-status.md +1 -20
- package/.claude/commands/manage-wiki.md +1 -1
- package/.claude/commands/quality-business-test.md +1 -1
- package/.claude/commands/quality-debug.md +3 -18
- package/.claude/commands/quality-integration-test.md +3 -23
- package/.claude/commands/quality-retrospective.md +1 -28
- package/.claude/commands/quality-review.md +3 -52
- package/.claude/commands/quality-test-gen.md +1 -10
- package/.claude/commands/quality-test.md +3 -25
- package/.claude/commands/spec-add.md +1 -21
- package/.claude/commands/spec-load.md +1 -16
- package/.claude/commands/wiki-connect.md +2 -112
- package/.claude/commands/wiki-digest.md +2 -141
- package/.claude/skills/skill-iter-tune/SKILL.md +382 -0
- package/.claude/skills/skill-iter-tune/phases/01-setup.md +144 -0
- package/.claude/skills/skill-iter-tune/phases/02-execute.md +292 -0
- package/.claude/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
- package/.claude/skills/skill-iter-tune/phases/04-improve.md +186 -0
- package/.claude/skills/skill-iter-tune/phases/05-report.md +166 -0
- package/.claude/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
- package/.claude/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
- package/.claude/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
- package/.claude/skills/workflow-skill-designer/SKILL.md +496 -0
- package/.claude/skills/workflow-skill-designer/phases/01-requirements-analysis.md +356 -0
- package/.claude/skills/workflow-skill-designer/phases/02-orchestrator-design.md +444 -0
- package/.claude/skills/workflow-skill-designer/phases/03-phase-design.md +458 -0
- package/.claude/skills/workflow-skill-designer/phases/04-validation.md +471 -0
- package/.codex/skills/learn-decompose/SKILL.md +2 -8
- package/.codex/skills/maestro/SKILL.md +60 -146
- package/.codex/skills/maestro-analyze/SKILL.md +52 -150
- package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
- package/.codex/skills/maestro-composer/SKILL.md +213 -0
- package/.codex/skills/maestro-execute/SKILL.md +46 -177
- package/.codex/skills/maestro-init/SKILL.md +7 -51
- package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
- package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
- package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
- package/.codex/skills/maestro-overlay/SKILL.md +23 -92
- package/.codex/skills/maestro-plan/SKILL.md +42 -166
- package/.codex/skills/maestro-player/SKILL.md +323 -0
- package/.codex/skills/maestro-quick/SKILL.md +5 -48
- package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
- package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
- package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
- package/.codex/skills/maestro-verify/SKILL.md +39 -136
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
- package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
- package/.codex/skills/manage-issue/SKILL.md +1 -6
- package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
- package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
- package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
- package/.codex/skills/manage-learn/SKILL.md +17 -71
- package/.codex/skills/manage-status/SKILL.md +4 -35
- package/.codex/skills/manage-wiki/SKILL.md +1 -1
- package/.codex/skills/quality-business-test/SKILL.md +2 -14
- package/.codex/skills/quality-debug/SKILL.md +41 -133
- package/.codex/skills/quality-integration-test/SKILL.md +36 -145
- package/.codex/skills/quality-refactor/SKILL.md +6 -59
- package/.codex/skills/quality-retrospective/SKILL.md +292 -531
- package/.codex/skills/quality-review/SKILL.md +30 -65
- package/.codex/skills/quality-sync/SKILL.md +2 -11
- package/.codex/skills/quality-test/SKILL.md +4 -45
- package/.codex/skills/quality-test-gen/SKILL.md +33 -121
- package/.codex/skills/spec-add/SKILL.md +2 -9
- package/.codex/skills/spec-load/SKILL.md +4 -14
- package/.codex/skills/spec-map/SKILL.md +4 -37
- package/.codex/skills/spec-remove/SKILL.md +3 -35
- package/.codex/skills/spec-setup/SKILL.md +2 -19
- package/.codex/skills/team-coordinate/SKILL.md +20 -132
- package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
- package/.codex/skills/team-executor/SKILL.md +7 -66
- package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
- package/.codex/skills/team-executor/specs/session-schema.md +22 -56
- package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
- package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
- package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
- package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
- package/.codex/skills/team-review/SKILL.md +12 -86
- package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
- package/.codex/skills/team-tech-debt/SKILL.md +11 -50
- package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
- package/.codex/skills/team-testing/SKILL.md +14 -99
- package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
- package/.codex/skills/wiki-connect/SKILL.md +2 -5
- package/README.md +6 -0
- package/README.zh-CN.md +6 -0
- package/chains/_intent-map.json +7 -7
- package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
- package/chains/singles/{memory.json → knowhow.json} +6 -6
- package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
- package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
- package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
- package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
- package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
- package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
- package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
- package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
- package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
- package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
- package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
- package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
- package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
- package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
- package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
- package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
- package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
- package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
- package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
- package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
- package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
- package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
- package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
- package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
- package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
- package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
- package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
- package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
- package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
- package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
- package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
- package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
- package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
- package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
- package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
- package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
- package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
- package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
- package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
- package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
- package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
- package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
- package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
- package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
- package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
- package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
- package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
- package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
- package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
- package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
- package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
- package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
- package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
- package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
- package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
- package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
- package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
- package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
- package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
- package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
- package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
- package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
- package/dashboard/dist-server/src/commands/delegate.js +11 -8
- package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
- package/dist/shared/agent-types.d.ts +2 -0
- package/dist/shared/agent-types.d.ts.map +1 -1
- package/dist/src/cli.js +2 -2
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +11 -8
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts +1 -1
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +1 -1
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/knowhow.d.ts +10 -0
- package/dist/src/commands/knowhow.d.ts.map +1 -0
- package/dist/src/commands/knowhow.js +217 -0
- package/dist/src/commands/knowhow.js.map +1 -0
- package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
- package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
- package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
- package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
- package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
- package/dist/src/commands/overlay-ui/index.js +70 -44
- package/dist/src/commands/overlay-ui/index.js.map +1 -1
- package/dist/src/commands/overlay.d.ts.map +1 -1
- package/dist/src/commands/overlay.js +4 -3
- package/dist/src/commands/overlay.js.map +1 -1
- package/dist/src/core/overlay/applier.d.ts +1 -1
- package/dist/src/core/overlay/applier.d.ts.map +1 -1
- package/dist/src/core/overlay/applier.js +40 -13
- package/dist/src/core/overlay/applier.js.map +1 -1
- package/dist/src/core/overlay/loader.d.ts.map +1 -1
- package/dist/src/core/overlay/loader.js +6 -0
- package/dist/src/core/overlay/loader.js.map +1 -1
- package/dist/src/core/overlay/types.d.ts +5 -1
- package/dist/src/core/overlay/types.d.ts.map +1 -1
- package/dist/src/core/overlay/types.js +1 -1
- package/dist/src/core/overlay/types.js.map +1 -1
- package/dist/src/hooks/context-monitor.js +1 -1
- package/dist/src/hooks/context-monitor.js.map +1 -1
- package/dist/src/hooks/skill-context.js +1 -1
- package/dist/src/hooks/skill-context.js.map +1 -1
- package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
- package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
- package/dist/src/mcp/delegate-channel-relay.js +73 -4
- package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
- package/dist/src/tools/index.js +2 -2
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/store-knowhow.d.ts +21 -0
- package/dist/src/tools/store-knowhow.d.ts.map +1 -0
- package/dist/src/tools/store-knowhow.js +295 -0
- package/dist/src/tools/store-knowhow.js.map +1 -0
- package/package.json +1 -1
- package/shared/agent-types.ts +2 -0
- package/templates/workflows/specs/node-catalog.md +170 -0
- package/templates/workflows/specs/template-schema.md +157 -0
- package/workflows/analyze.md +61 -185
- package/workflows/brainstorm.md +3 -23
- package/workflows/codebase-rebuild.md +79 -191
- package/workflows/codebase-refresh.md +26 -124
- package/workflows/debug.md +21 -141
- package/workflows/execute.md +183 -350
- package/workflows/fork.md +72 -230
- package/workflows/harvest.md +12 -79
- package/workflows/init.md +3 -17
- package/workflows/integration-test.md +21 -190
- package/workflows/issue-analyze.md +35 -153
- package/workflows/issue-discover.md +88 -263
- package/workflows/issue-execute.md +29 -208
- package/workflows/issue-plan.md +33 -154
- package/workflows/issue.md +44 -202
- package/workflows/knowhow.md +374 -0
- package/workflows/learn.md +30 -177
- package/workflows/maestro-coordinate.codex.md +77 -362
- package/workflows/maestro-link-coordinate.md +12 -61
- package/workflows/maestro.codex.md +124 -457
- package/workflows/maestro.md +562 -976
- package/workflows/map.md +16 -53
- package/workflows/merge.md +42 -197
- package/workflows/milestone-audit.md +5 -43
- package/workflows/milestone-complete.md +11 -60
- package/workflows/plan.md +176 -387
- package/workflows/quick.md +25 -174
- package/workflows/refactor.md +28 -221
- package/workflows/retrospective.md +104 -443
- package/workflows/review.md +87 -299
- package/workflows/roadmap.md +117 -97
- package/workflows/spec-generate.md +22 -118
- package/workflows/specs-add.md +5 -25
- package/workflows/specs-load.md +1 -5
- package/workflows/specs-remove.md +0 -11
- package/workflows/specs-setup.md +11 -47
- package/workflows/status.md +58 -200
- package/workflows/sync.md +28 -141
- package/workflows/test-gen.md +23 -100
- package/workflows/test.md +15 -125
- package/workflows/ui-design.md +139 -465
- package/workflows/ui-style.md +36 -228
- package/workflows/verify.md +52 -273
- package/workflows/wiki-connect.md +9 -46
- package/workflows/wiki-digest.md +7 -50
- package/workflows/wiki-manage.md +11 -108
- package/.claude/commands/maestro-coordinate.md +0 -63
- package/.claude/commands/manage-memory-capture.md +0 -59
- package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
- package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
- package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
- package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
- package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
- package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
- package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
- package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
- package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
- package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
- package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
- package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
- package/workflows/maestro-coordinate.md +0 -582
- package/workflows/memory.md +0 -451
|
@@ -141,68 +141,31 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
|
|
|
141
141
|
### Session Initialization
|
|
142
142
|
|
|
143
143
|
```javascript
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
//
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
//
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
//
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
//
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
// Scope determination (per scratch-milestone-architecture)
|
|
171
|
-
const state = JSON.parse(Read('.workflow/state.json'))
|
|
172
|
-
let scope, phaseNum = null, phaseSlug, contextDir
|
|
173
|
-
|
|
174
|
-
if (dirMatch) {
|
|
175
|
-
contextDir = dirMatch[1]
|
|
176
|
-
phaseSlug = contextDir.split('/').pop()
|
|
177
|
-
// Inherit scope from parent artifact if registered
|
|
178
|
-
const parentArtifact = state.artifacts.find(a => a.path === contextDir)
|
|
179
|
-
scope = parentArtifact?.scope || 'standalone'
|
|
180
|
-
} else if (phaseArg === '') {
|
|
181
|
-
if (state.current_milestone && fileExists('.workflow/roadmap.md')) {
|
|
182
|
-
scope = 'milestone'
|
|
183
|
-
phaseSlug = slugify(state.milestones.find(m => m.id === state.current_milestone)?.name || state.current_milestone)
|
|
184
|
-
// Find latest analyze artifact for this milestone
|
|
185
|
-
contextDir = state.artifacts.filter(a => a.type === 'analyze' && a.milestone === state.current_milestone && a.status === 'completed').pop()?.path
|
|
186
|
-
} else {
|
|
187
|
-
ERROR('E001: No args and no roadmap')
|
|
188
|
-
}
|
|
189
|
-
} else if (/^\d+$/.test(phaseArg)) {
|
|
190
|
-
scope = 'phase'
|
|
191
|
-
phaseNum = parseInt(phaseArg)
|
|
192
|
-
phaseSlug = resolvePhaseSlugFromRoadmap(phaseNum)
|
|
193
|
-
contextDir = state.artifacts.filter(a => a.type === 'analyze' && a.milestone === state.current_milestone && a.phase === phaseNum && a.status === 'completed').pop()?.path
|
|
194
|
-
} else {
|
|
195
|
-
scope = state.current_milestone ? 'adhoc' : 'standalone'
|
|
196
|
-
phaseSlug = phaseArg.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
200
|
-
const sessionId = `${dateStr}-plan-P${phaseArg}-${phaseSlug}`
|
|
201
|
-
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
202
|
-
const scratchDir = `.workflow/scratch/${dateStr}-plan-P${phaseArg}-${phaseSlug}`
|
|
203
|
-
|
|
204
|
-
Bash(`mkdir -p ${sessionFolder}`)
|
|
205
|
-
Bash(`mkdir -p ${scratchDir}/.task/`)
|
|
144
|
+
// Parse from $ARGUMENTS:
|
|
145
|
+
// AUTO_YES <- --yes | -y
|
|
146
|
+
// continueMode <- --continue
|
|
147
|
+
// maxConcurrency <- --concurrency N | -c N (default: 4)
|
|
148
|
+
// autoMode <- --auto
|
|
149
|
+
// gapsMode <- --gaps
|
|
150
|
+
// dirMatch <- --dir <path>
|
|
151
|
+
// specMatch <- --spec SPEC-xxx
|
|
152
|
+
// collabMode <- --collab
|
|
153
|
+
// phaseArg <- remaining text after stripping all flags
|
|
154
|
+
|
|
155
|
+
// Auto-bootstrap .workflow/state.json if missing
|
|
156
|
+
|
|
157
|
+
// Scope determination from state.json (priority order):
|
|
158
|
+
// --dir given → scope from parent artifact or 'standalone'
|
|
159
|
+
// phaseArg empty → 'milestone' (requires current_milestone + roadmap.md) or ERROR E001
|
|
160
|
+
// phaseArg is digit → 'phase', resolve slug from roadmap, find latest completed analyze artifact
|
|
161
|
+
// phaseArg is text → 'adhoc' (if milestone active) or 'standalone', slugify phaseArg
|
|
162
|
+
|
|
163
|
+
// Session IDs (UTC+8):
|
|
164
|
+
// sessionId = {YYYYMMDD}-plan-P{phaseArg}-{phaseSlug}
|
|
165
|
+
// sessionFolder = .workflow/.csv-wave/{sessionId}
|
|
166
|
+
// scratchDir = .workflow/scratch/{sessionId}
|
|
167
|
+
|
|
168
|
+
// Create: sessionFolder, scratchDir/.task/
|
|
206
169
|
```
|
|
207
170
|
|
|
208
171
|
### Phase 1: Phase Resolution -> CSV
|
|
@@ -266,21 +229,13 @@ spawn_agents_on_csv({
|
|
|
266
229
|
max_concurrency: maxConcurrency,
|
|
267
230
|
max_runtime_seconds: 600,
|
|
268
231
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
269
|
-
output_schema: {
|
|
270
|
-
|
|
271
|
-
properties: {
|
|
272
|
-
id: { type: "string" },
|
|
273
|
-
status: { type: "string", enum: ["completed", "failed"] },
|
|
274
|
-
findings: { type: "string" },
|
|
275
|
-
error: { type: "string" }
|
|
276
|
-
},
|
|
277
|
-
required: ["id", "status", "findings"]
|
|
232
|
+
output_schema: { // required: id, status, findings
|
|
233
|
+
id: "string", status: "completed|failed", findings: "string", error: "string"
|
|
278
234
|
}
|
|
279
235
|
})
|
|
280
236
|
```
|
|
281
237
|
|
|
282
|
-
6.
|
|
283
|
-
7. Delete `wave-1.csv`
|
|
238
|
+
6. Merge `wave-1-results.csv` into master `tasks.csv`, delete `wave-1.csv`
|
|
284
239
|
|
|
285
240
|
#### Wave 2: Plan Generation (Sequential)
|
|
286
241
|
|
|
@@ -303,123 +258,44 @@ spawn_agents_on_csv({
|
|
|
303
258
|
instruction: buildPlanningInstruction(sessionFolder, phaseDir, {
|
|
304
259
|
contextMd, indexJson, specRef, docIndex, designRef, gapsContext
|
|
305
260
|
}),
|
|
306
|
-
max_concurrency: 1, //
|
|
261
|
+
max_concurrency: 1, // Single planning agent
|
|
307
262
|
max_runtime_seconds: 900,
|
|
308
263
|
output_csv_path: `${sessionFolder}/wave-2-results.csv`,
|
|
309
|
-
output_schema: {
|
|
310
|
-
|
|
311
|
-
properties: {
|
|
312
|
-
id: { type: "string" },
|
|
313
|
-
status: { type: "string", enum: ["completed", "failed"] },
|
|
314
|
-
findings: { type: "string" },
|
|
315
|
-
error: { type: "string" }
|
|
316
|
-
},
|
|
317
|
-
required: ["id", "status", "findings"]
|
|
264
|
+
output_schema: { // required: id, status, findings
|
|
265
|
+
id: "string", status: "completed|failed", findings: "string", error: "string"
|
|
318
266
|
}
|
|
319
267
|
})
|
|
320
268
|
```
|
|
321
269
|
|
|
322
|
-
6. Merge results into master `tasks.csv`
|
|
323
|
-
7. Delete `wave-2.csv`
|
|
270
|
+
6. Merge `wave-2-results.csv` into master `tasks.csv`, delete `wave-2.csv`
|
|
324
271
|
|
|
325
272
|
**Planning agent responsibilities** (embedded in instruction):
|
|
326
|
-
- Decompose phase goal
|
|
327
|
-
-
|
|
328
|
-
-
|
|
329
|
-
|
|
330
|
-
- Every task has `convergence.criteria[]` with grep-verifiable conditions
|
|
331
|
-
- Every `action` has concrete values (never "align X with Y")
|
|
332
|
-
- Every `implementation` step has specific values
|
|
333
|
-
- Write `plan.json` to `{PHASE_DIR}/plan.json`
|
|
334
|
-
- Write `.task/TASK-{NNN}.json` files to `{PHASE_DIR}/.task/`
|
|
335
|
-
- If `--gaps`: create fix tasks from gap context, link to issues
|
|
336
|
-
- If `--collab`: pre-allocate ID ranges for parallel planners
|
|
273
|
+
- Decompose phase goal → TASK-001..N with dependencies grouped into execution waves
|
|
274
|
+
- Apply Deep Work Rules: `read_first[]` includes modified file + source of truth; `convergence.criteria[]` are grep-verifiable; all actions/steps have concrete values
|
|
275
|
+
- Write `plan.json` to `{PHASE_DIR}/plan.json` and `.task/TASK-{NNN}.json` to `{PHASE_DIR}/.task/`
|
|
276
|
+
- `--gaps`: create fix tasks from gap context, link to issues; `--collab`: pre-allocate ID ranges
|
|
337
277
|
|
|
338
278
|
### Phase 3: Plan Checking + Confirmation
|
|
339
279
|
|
|
340
280
|
**Objective**: Validate plan quality, revise if needed, present to user.
|
|
341
281
|
|
|
342
282
|
1. **Plan checking** (inline, not a separate wave):
|
|
343
|
-
|
|
344
|
-
- Validate dimensions:
|
|
345
|
-
|
|
346
|
-
| Check | Criteria |
|
|
347
|
-
|-------|----------|
|
|
348
|
-
| Requirements coverage | Every success_criterion maps to at least one task |
|
|
349
|
-
| Feasibility | Referenced files exist or can be created |
|
|
350
|
-
| Dependency correctness | No circular deps, deps exist, wave ordering valid |
|
|
351
|
-
| Convergence criteria quality | Grep-verifiable, no subjective language |
|
|
352
|
-
| read_first completeness | Every task has read_first[] with modified file |
|
|
353
|
-
| Action concreteness | No vague "align X with Y" |
|
|
354
|
-
| Wave structure | Parallel tasks have no conflicting file modifications |
|
|
283
|
+
Read `plan.json` + all `.task/TASK-*.json`. Validate: requirements coverage, file feasibility, dependency correctness (no cycles, valid wave order), grep-verifiable convergence criteria, read_first completeness, action concreteness, no parallel file conflicts.
|
|
355
284
|
|
|
356
285
|
2. **Revision loop** (max 3 rounds): If critical issues found, regenerate affected tasks.
|
|
357
286
|
|
|
358
287
|
3. **Export results**:
|
|
359
288
|
- Export `results.csv` from master `tasks.csv`
|
|
360
|
-
- Generate `context.md`:
|
|
361
|
-
|
|
362
|
-
```markdown
|
|
363
|
-
# Plan Report -- Phase {phase}
|
|
364
|
-
|
|
365
|
-
## Summary
|
|
366
|
-
- Phase: {phase_name}
|
|
367
|
-
- Tasks: {task_count} in {wave_count} waves
|
|
368
|
-
- Complexity: {complexity}
|
|
369
|
-
- Explorations: {exploration_count} angles explored
|
|
370
|
-
|
|
371
|
-
## Exploration Findings
|
|
289
|
+
- Generate `context.md`: summary (phase, task count, wave count, complexity, exploration count), exploration findings per angle, plan overview (approach, task IDs, waves), next steps
|
|
372
290
|
|
|
373
|
-
|
|
374
|
-
{findings}
|
|
375
|
-
|
|
376
|
-
## Plan Overview
|
|
377
|
-
- Approach: {plan.approach}
|
|
378
|
-
- Task IDs: {task_ids}
|
|
379
|
-
- Waves: {wave_structure}
|
|
380
|
-
|
|
381
|
-
## Next Steps
|
|
382
|
-
{suggested actions}
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
4. **Update index.json**:
|
|
386
|
-
```json
|
|
387
|
-
{
|
|
388
|
-
"status": "planning",
|
|
389
|
-
"plan": {
|
|
390
|
-
"task_ids": ["TASK-001", "TASK-002"],
|
|
391
|
-
"task_count": N,
|
|
392
|
-
"complexity": "moderate",
|
|
393
|
-
"waves": [[...], [...]]
|
|
394
|
-
},
|
|
395
|
-
"updated_at": "<ISO>"
|
|
396
|
-
}
|
|
397
|
-
```
|
|
291
|
+
4. **Update index.json**: set `status: "planning"`, `plan: { task_ids, task_count, complexity, waves }`, `updated_at`
|
|
398
292
|
|
|
399
293
|
5. **Issue linking** (if --gaps):
|
|
400
|
-
For each
|
|
401
|
-
- Update corresponding issue in `.workflow/issues/issues.jsonl`:
|
|
402
|
-
- `task_refs`: append TASK-{NNN} to array
|
|
403
|
-
- `task_plan_dir`: relative path to `.task/` directory
|
|
404
|
-
- `status`: "planned"
|
|
405
|
-
- `updated_at`: now()
|
|
406
|
-
- Append history entry: `{ action: "planned", at: <ISO>, by: "maestro-plan", summary: "Linked to TASK-{NNN}" }`
|
|
407
|
-
This ensures bidirectional issue <-> TASK traceability for dashboard display.
|
|
294
|
+
For each TASK with `issue_id`: update issue in `issues.jsonl` (`task_refs` += TASK-NNN, `task_plan_dir`, `status: "planned"`, `updated_at`) + append history entry. Ensures bidirectional issue-TASK traceability.
|
|
408
295
|
|
|
409
296
|
6. **Display summary + options** (skip options if AUTO_YES):
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
Phase: {phase_name}
|
|
413
|
-
Tasks: {task_count} tasks in {wave_count} waves
|
|
414
|
-
Check: {checker_status}
|
|
415
|
-
|
|
416
|
-
Plan: {scratch_dir}/plan.json
|
|
417
|
-
Tasks: {scratch_dir}/.task/TASK-*.json
|
|
418
|
-
|
|
419
|
-
Next steps:
|
|
420
|
-
Skill({ skill: "maestro-execute", args: "{phase}" }) -- Execute the plan
|
|
421
|
-
Skill({ skill: "maestro-plan", args: "{phase}" }) -- Re-plan with modifications
|
|
422
|
-
```
|
|
297
|
+
Show phase name, task/wave counts, checker status, output file paths.
|
|
298
|
+
Next steps: `maestro-execute "{phase}"` (execute) or `maestro-plan "{phase}"` (re-plan).
|
|
423
299
|
|
|
424
300
|
### Shared Discovery Board Protocol
|
|
425
301
|
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: maestro-player
|
|
3
|
+
description: Workflow template player — load JSON template, bind variables, execute DAG nodes wave-by-wave via spawn_agents_on_csv, persist state at checkpoints, support resume. Coordinator assembles skill_call from template nodes — never executes skills directly.
|
|
4
|
+
argument-hint: "<template-slug|path> [--context key=value...] [-c [session-id]] [--list] [--dry-run]"
|
|
5
|
+
allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<purpose>
|
|
9
|
+
Wave-based template executor using `spawn_agents_on_csv`. Loads a workflow template
|
|
10
|
+
(produced by maestro-composer), binds context variables, converts DAG nodes into
|
|
11
|
+
CSV waves via topological sort, executes wave-by-wave with barrier/non-barrier grouping.
|
|
12
|
+
|
|
13
|
+
Aligned with maestro codex coordinator pattern:
|
|
14
|
+
- ALL skill execution via `spawn_agents_on_csv` — coordinator never executes directly
|
|
15
|
+
- Barrier nodes (checkpoints + artifact-producing skills) execute solo
|
|
16
|
+
- Non-barrier nodes grouped into parallel waves
|
|
17
|
+
- Session state at `.workflow/.maestro-coordinate/{session-id}/`
|
|
18
|
+
- Resume from last completed wave via `-c`
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Load Template → Bind Variables → Build Wave CSV → spawn → read results →
|
|
22
|
+
(barrier: read artifacts, update context) → next wave → report
|
|
23
|
+
```
|
|
24
|
+
</purpose>
|
|
25
|
+
|
|
26
|
+
<invariants>
|
|
27
|
+
1. **ALL skills via spawn_agents_on_csv**: Every node execution goes through spawn. Coordinator NEVER directly executes any skill.
|
|
28
|
+
2. **Coordinator = prompt assembler only**: Load template → resolve refs → build CSV → spawn → read results → assemble next CSV.
|
|
29
|
+
3. **Barrier = solo wave**: Checkpoint nodes and artifact-producing skills execute alone (wave size = 1).
|
|
30
|
+
4. **Non-barriers can parallel**: Consecutive non-barrier nodes grouped into one wave.
|
|
31
|
+
5. **Wave-by-wave**: Never start wave N+1 before wave N results are read and analyzed.
|
|
32
|
+
6. **Coordinator owns context**: Sub-agents never read prior results — coordinator assembles full `skill_call` with resolved args.
|
|
33
|
+
7. **Resume from wave**: `-c` finds last completed wave, resumes from next pending step.
|
|
34
|
+
</invariants>
|
|
35
|
+
|
|
36
|
+
<context>
|
|
37
|
+
$ARGUMENTS — template slug/path, or flags.
|
|
38
|
+
|
|
39
|
+
**Flags:**
|
|
40
|
+
- `--context key=value` — Bind context variables (repeatable)
|
|
41
|
+
- `-c` / `--continue [session-id]` — Resume paused/interrupted session
|
|
42
|
+
- `--list` — List available templates
|
|
43
|
+
- `--dry-run` — Show wave plan without executing
|
|
44
|
+
|
|
45
|
+
**Entry routing:**
|
|
46
|
+
|
|
47
|
+
| Detection | Condition | Handler |
|
|
48
|
+
|-----------|-----------|---------|
|
|
49
|
+
| List | `--list` | handleList |
|
|
50
|
+
| Resume | `-c [session-id]` | Phase 0: Resume |
|
|
51
|
+
| Dry run | `--dry-run` | Phase 1 + 2, print plan, exit |
|
|
52
|
+
| Normal | Template slug/path | Phase 1 |
|
|
53
|
+
| No args | Empty | handleList + AskUserQuestion |
|
|
54
|
+
|
|
55
|
+
**Session tracking (aligned with maestro codex):**
|
|
56
|
+
|
|
57
|
+
| Constant | Value |
|
|
58
|
+
|----------|-------|
|
|
59
|
+
| Session prefix | `MCP` (Maestro Composer Player) |
|
|
60
|
+
| Session dir | `.workflow/.maestro-coordinate/MCP-<YYYYMMDD>-<HHmmss>/` |
|
|
61
|
+
| State file | `state.json` |
|
|
62
|
+
| Wave CSV | `wave-{N}.csv` |
|
|
63
|
+
| Wave results | `wave-{N}-results.csv` |
|
|
64
|
+
| Template dir | `~/.maestro/templates/workflows/` |
|
|
65
|
+
| Template index | `~/.maestro/templates/workflows/index.json` |
|
|
66
|
+
|
|
67
|
+
**Barrier nodes** (solo wave, coordinator reads artifacts after):
|
|
68
|
+
|
|
69
|
+
| Node type | Artifacts to Read | Context Updates |
|
|
70
|
+
|-----------|------------------|-----------------|
|
|
71
|
+
| `checkpoint` | — (state save only) | `last_checkpoint` |
|
|
72
|
+
| `maestro-plan` | `plan.json`, `.task/TASK-*.json` | `plan_dir`, `task_count` |
|
|
73
|
+
| `maestro-execute` | `results.csv` | `exec_status`, `completed_tasks` |
|
|
74
|
+
| `maestro-analyze` | `context.md` | `analysis_dir`, `gaps`, `phase` |
|
|
75
|
+
| `maestro-brainstorm` | `.brainstorming/` | `brainstorm_dir` |
|
|
76
|
+
| `maestro-spec-generate` | `specs/` | `spec_session_id` |
|
|
77
|
+
|
|
78
|
+
All other skill nodes are **non-barrier** (groupable into parallel waves).
|
|
79
|
+
|
|
80
|
+
**state.json schema:**
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"id": "MCP-<YYYYMMDD>-<HHmmss>",
|
|
85
|
+
"intent": "<template_name> with context",
|
|
86
|
+
"chain": "<template_id>",
|
|
87
|
+
"template_path": "~/.maestro/templates/workflows/<slug>.json",
|
|
88
|
+
"template_name": "<name>",
|
|
89
|
+
"auto_yes": false,
|
|
90
|
+
"status": "in_progress | paused | completed | aborted",
|
|
91
|
+
"started_at": "<ISO>",
|
|
92
|
+
"context": {
|
|
93
|
+
"goal": "...", "scope": "...",
|
|
94
|
+
"phase": null, "plan_dir": null, "analysis_dir": null,
|
|
95
|
+
"last_checkpoint": null
|
|
96
|
+
},
|
|
97
|
+
"waves": [],
|
|
98
|
+
"steps": [
|
|
99
|
+
{
|
|
100
|
+
"step_n": 1, "node_id": "N-001",
|
|
101
|
+
"skill": "<executor>", "args": "<args_template>",
|
|
102
|
+
"type": "skill | cli | checkpoint",
|
|
103
|
+
"is_barrier": true,
|
|
104
|
+
"status": "pending | completed | failed | skipped",
|
|
105
|
+
"wave_n": null, "findings": null, "artifacts": null
|
|
106
|
+
}
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
</context>
|
|
111
|
+
|
|
112
|
+
<execution>
|
|
113
|
+
|
|
114
|
+
### handleList
|
|
115
|
+
|
|
116
|
+
Scan `~/.maestro/templates/workflows/index.json`. Display:
|
|
117
|
+
```
|
|
118
|
+
Available workflow templates:
|
|
119
|
+
feature-tdd-review [feature, complex] 3 work nodes, 2 checkpoints
|
|
120
|
+
quick-bugfix [bugfix, simple] 2 work nodes, 1 checkpoint
|
|
121
|
+
|
|
122
|
+
Run: $maestro-player <slug> --context goal="..."
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
If not found: "No templates. Create with $maestro-composer"
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
### Phase 0: Resume
|
|
130
|
+
|
|
131
|
+
**Trigger**: `-c [session-id]`
|
|
132
|
+
|
|
133
|
+
Load session state by explicit ID or most recent `MCP-*/state.json` with `status = "in_progress" | "paused"`. Error E005 if none found. Resume from next pending step after last completed wave → jump to Phase 3.
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
### Phase 1: Load & Bind
|
|
138
|
+
|
|
139
|
+
1. **Resolve template**: absolute path → as-is, slug → lookup in `~/.maestro/templates/workflows/index.json`, partial → confirm, not found → show `--list`
|
|
140
|
+
2. **Parse** `--context key=value` pairs into `bound_context`
|
|
141
|
+
3. **Load and validate** template JSON
|
|
142
|
+
4. **Collect missing** required variables via AskUserQuestion
|
|
143
|
+
5. **Bind** `{variable_name}` in all `args_template` strings. Leave `{N-xxx.field}` and `{prev_*}` unresolved (runtime Phase 3)
|
|
144
|
+
6. If `--dry-run`: print wave plan and exit
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
### Phase 2: Init Session & Build Wave Plan
|
|
149
|
+
|
|
150
|
+
1. Generate session ID: `MCP-<YYYYMMDD>-<HHmmss>`
|
|
151
|
+
2. Topological sort (Kahn's algorithm) on template nodes + edges
|
|
152
|
+
3. Classify barrier vs non-barrier: barriers = checkpoint nodes + `maestro-analyze`, `maestro-plan`, `maestro-brainstorm`, `maestro-spec-generate`, `maestro-execute`
|
|
153
|
+
4. Group into waves: barrier nodes → solo wave, non-barrier nodes → accumulate into parallel wave
|
|
154
|
+
5. Build steps array from waves, write `state.json`
|
|
155
|
+
|
|
156
|
+
**Step 2.6** — Display start banner:
|
|
157
|
+
```
|
|
158
|
+
============================================================
|
|
159
|
+
MAESTRO PLAYER
|
|
160
|
+
============================================================
|
|
161
|
+
Template: <template.name>
|
|
162
|
+
Session: <session_id>
|
|
163
|
+
Context: goal="<value>"
|
|
164
|
+
|
|
165
|
+
Wave Plan:
|
|
166
|
+
[W1] N-001 maestro-plan "{goal}" [BARRIER]
|
|
167
|
+
[W2] N-002 maestro-execute {phase} [BARRIER]
|
|
168
|
+
[W3] N-003 quality-test {phase}
|
|
169
|
+
N-004 quality-review {phase}
|
|
170
|
+
============================================================
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**`--dry-run`**: Display above and exit.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
### Phase 3: Wave Execution Loop
|
|
178
|
+
|
|
179
|
+
Loop while any step has `status === 'pending'`:
|
|
180
|
+
|
|
181
|
+
**3a. Resolve runtime references** in each step's args:
|
|
182
|
+
- `{key}` → lookup from `context[key]`
|
|
183
|
+
- `{N-xxx.field}` → lookup from completed step with matching `node_id`
|
|
184
|
+
- `{prev_field}` → lookup from most recently completed non-checkpoint step
|
|
185
|
+
|
|
186
|
+
**3b. Handle checkpoint nodes** (no CSV spawn needed):
|
|
187
|
+
- Save checkpoint snapshot to `checkpoints/{node_id}.json` (session state + context)
|
|
188
|
+
- Update `context.last_checkpoint`, mark completed
|
|
189
|
+
- If `auto_continue === false`: prompt user (Continue / Pause / Abort)
|
|
190
|
+
|
|
191
|
+
**3c. Build wave CSV** for skill nodes:
|
|
192
|
+
Write `wave-{N}.csv` with columns `id,skill_call,topic`. Each row: resolved `$${step.skill} ${args}`.
|
|
193
|
+
|
|
194
|
+
**3d. Spawn agents**:
|
|
195
|
+
|
|
196
|
+
```javascript
|
|
197
|
+
spawn_agents_on_csv({
|
|
198
|
+
csv_path: `${sessionDir}/wave-${waveNum}.csv`,
|
|
199
|
+
id_column: "id",
|
|
200
|
+
instruction: PLAYER_INSTRUCTION,
|
|
201
|
+
max_workers: waveSteps.length,
|
|
202
|
+
max_runtime_seconds: 1800,
|
|
203
|
+
output_csv_path: `${sessionDir}/wave-${waveNum}-results.csv`,
|
|
204
|
+
output_schema: RESULT_SCHEMA
|
|
205
|
+
})
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**3e. Read results**: Map each result row back to its step — update status, findings, artifacts, wave_n.
|
|
209
|
+
|
|
210
|
+
**3f. Barrier analysis**: If barrier wave, read artifacts and update context (see barrier node table in `<context>`).
|
|
211
|
+
|
|
212
|
+
**3g. Persist + abort check**: Append wave record to `state.waves[]`, persist `state.json`. If any result failed → set `state.status = 'aborted'`, mark remaining steps as skipped.
|
|
213
|
+
|
|
214
|
+
### Sub-Agent Instruction Template
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
你是 CSV job 子 agent。
|
|
218
|
+
|
|
219
|
+
先原样执行这一段技能调用:
|
|
220
|
+
{skill_call}
|
|
221
|
+
|
|
222
|
+
然后基于结果完成这一行任务说明:
|
|
223
|
+
{topic}
|
|
224
|
+
|
|
225
|
+
限制:
|
|
226
|
+
- 不要修改 .workflow/.maestro-coordinate/ 下的 state 文件
|
|
227
|
+
- skill 内部有自己的 session 管理,按 skill SKILL.md 执行即可
|
|
228
|
+
|
|
229
|
+
最后必须调用 `report_agent_job_result`,返回 JSON:
|
|
230
|
+
{"status":"completed|failed","skill_call":"{skill_call}","summary":"一句话结果","artifacts":"产物路径或空字符串","error":"失败原因或空字符串"}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Result Schema
|
|
234
|
+
|
|
235
|
+
```javascript
|
|
236
|
+
const RESULT_SCHEMA = {
|
|
237
|
+
type: "object",
|
|
238
|
+
properties: {
|
|
239
|
+
status: { type: "string", enum: ["completed", "failed"] },
|
|
240
|
+
skill_call: { type: "string" },
|
|
241
|
+
summary: { type: "string" },
|
|
242
|
+
artifacts: { type: "string" },
|
|
243
|
+
error: { type: "string" }
|
|
244
|
+
},
|
|
245
|
+
required: ["status", "skill_call", "summary", "artifacts", "error"]
|
|
246
|
+
};
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
### Phase 4: Completion Report
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
============================================================
|
|
255
|
+
MAESTRO PLAYER SESSION COMPLETE
|
|
256
|
+
============================================================
|
|
257
|
+
Session: <session_id>
|
|
258
|
+
Template: <template_name> (<template_id>)
|
|
259
|
+
Waves: <N> executed
|
|
260
|
+
Steps: <completed>/<total>
|
|
261
|
+
Context: goal="<value>"
|
|
262
|
+
|
|
263
|
+
WAVE RESULTS:
|
|
264
|
+
[W1] $maestro-plan "{goal}" → ✓ plan created
|
|
265
|
+
[W2] $maestro-execute {phase} → ✓ 12/12 tasks
|
|
266
|
+
[W3] $quality-test {phase} → ✓ all tests pass
|
|
267
|
+
$quality-review {phase} → ✓ no issues
|
|
268
|
+
|
|
269
|
+
State: .workflow/.maestro-coordinate/<session_id>/state.json
|
|
270
|
+
Resume: $maestro-player -c
|
|
271
|
+
============================================================
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Update `state.status = "completed"`, write final `state.json`.
|
|
275
|
+
</execution>
|
|
276
|
+
|
|
277
|
+
<csv_schema>
|
|
278
|
+
### wave-{N}.csv (Per-Wave Input)
|
|
279
|
+
|
|
280
|
+
```csv
|
|
281
|
+
id,skill_call,topic
|
|
282
|
+
"1","$maestro-plan \"implement user auth\"","Template \"feature-plan-test\" step 1/5"
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
| Column | Description |
|
|
286
|
+
|--------|-------------|
|
|
287
|
+
| `id` | Step number (string) |
|
|
288
|
+
| `skill_call` | Full skill invocation with resolved context args |
|
|
289
|
+
| `topic` | Brief description for the agent |
|
|
290
|
+
|
|
291
|
+
### wave-{N}-results.csv (Per-Wave Output)
|
|
292
|
+
|
|
293
|
+
Written by `spawn_agents_on_csv`. Contains result per agent.
|
|
294
|
+
</csv_schema>
|
|
295
|
+
|
|
296
|
+
<error_codes>
|
|
297
|
+
| Code | Severity | Condition | Recovery |
|
|
298
|
+
|------|----------|-----------|----------|
|
|
299
|
+
| E001 | error | Template not found | Show --list, suggest closest match |
|
|
300
|
+
| E002 | error | Template JSON invalid | Point to file for fix |
|
|
301
|
+
| E003 | error | Required variable missing, user declined | Cannot proceed |
|
|
302
|
+
| E004 | error | DAG cycle in template | Suggest $maestro-composer --edit |
|
|
303
|
+
| E005 | error | Resume session not found | List sessions |
|
|
304
|
+
| E006 | error | Wave timeout | Mark failed, abort chain |
|
|
305
|
+
| E007 | error | Barrier artifact not found | Retry wave once, then abort |
|
|
306
|
+
| W001 | warning | Runtime reference resolved to empty | Log, continue |
|
|
307
|
+
| W002 | warning | Barrier artifact partial | Continue with available context |
|
|
308
|
+
</error_codes>
|
|
309
|
+
|
|
310
|
+
<success_criteria>
|
|
311
|
+
- [ ] Template loaded from `~/.maestro/templates/workflows/` and validated
|
|
312
|
+
- [ ] All required context variables bound
|
|
313
|
+
- [ ] Session dir at `.workflow/.maestro-coordinate/MCP-*/` with `state.json`
|
|
314
|
+
- [ ] DAG nodes converted to waves (barrier=solo, non-barrier=parallel)
|
|
315
|
+
- [ ] Every skill invocation goes through `spawn_agents_on_csv` — none in coordinator
|
|
316
|
+
- [ ] Checkpoint nodes handled inline (state save, optional user pause)
|
|
317
|
+
- [ ] Barrier artifacts read and context updated before next wave
|
|
318
|
+
- [ ] Runtime references ({N-xxx.field}, {prev_*}) resolved before each wave CSV
|
|
319
|
+
- [ ] Failed step → remaining marked skipped → abort reported
|
|
320
|
+
- [ ] `--dry-run` shows wave plan with [BARRIER] markers, no execution
|
|
321
|
+
- [ ] `-c` resumes from last completed wave
|
|
322
|
+
- [ ] Completion report with per-wave status
|
|
323
|
+
</success_criteria>
|
|
@@ -49,30 +49,11 @@ Extract from arguments:
|
|
|
49
49
|
|
|
50
50
|
### Step 2: Load Project Context
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
cat .workflow/state.json 2>/dev/null
|
|
54
|
-
cat .workflow/project.md 2>/dev/null
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
If `.workflow/` does not exist, create minimal scratch structure anyway (quick works without full init).
|
|
52
|
+
Read `.workflow/state.json` and `.workflow/project.md` if they exist. If `.workflow/` does not exist, create minimal scratch structure anyway (quick works without full init).
|
|
58
53
|
|
|
59
54
|
### Step 3: Create Scratch Directory
|
|
60
55
|
|
|
61
|
-
Generate slug from task description (lowercase, hyphens, max 40 chars).
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
mkdir -p .workflow/scratch/{slug}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
Write `config.json` with task metadata:
|
|
68
|
-
```json
|
|
69
|
-
{
|
|
70
|
-
"task": "<description>",
|
|
71
|
-
"flags": { "discuss": false, "full": false },
|
|
72
|
-
"created_at": "<ISO timestamp>",
|
|
73
|
-
"status": "active"
|
|
74
|
-
}
|
|
75
|
-
```
|
|
56
|
+
Generate slug from task description (lowercase, hyphens, max 40 chars). Create `.workflow/scratch/{slug}/`. Write `config.json` with: `task`, `flags` (discuss, full), `created_at` (ISO), `status` ("active").
|
|
76
57
|
|
|
77
58
|
### Step 4: Discussion Phase (if --discuss)
|
|
78
59
|
|
|
@@ -113,37 +94,13 @@ Update plan.json task statuses as completed.
|
|
|
113
94
|
|
|
114
95
|
### Step 8: Verification (if --full)
|
|
115
96
|
|
|
116
|
-
**Only when `--full` is set.**
|
|
117
|
-
|
|
118
|
-
Run convergence criteria checks:
|
|
119
|
-
```bash
|
|
120
|
-
# For each task, verify convergence_criteria via grep/test commands
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
If gaps found (W001): attempt single fix iteration, then report remaining gaps.
|
|
97
|
+
**Only when `--full` is set.** Run convergence criteria checks for each task via grep/test commands. If gaps found (W001): attempt single fix iteration, then report remaining gaps.
|
|
124
98
|
|
|
125
99
|
### Step 9: Commit and Report
|
|
126
100
|
|
|
127
|
-
|
|
128
|
-
git add -A
|
|
129
|
-
git commit -m "quick: {slug} - {short description}"
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
Update `.workflow/state.json` scratch task entry (if state.json exists).
|
|
101
|
+
Commit all changes: `git add -A && git commit -m "quick: {slug} - {short description}"`. Update `.workflow/state.json` scratch task entry (if state.json exists).
|
|
133
102
|
|
|
134
|
-
|
|
135
|
-
=== QUICK TASK COMPLETE ===
|
|
136
|
-
Task: {description}
|
|
137
|
-
Scratch: .workflow/scratch/{slug}/
|
|
138
|
-
Status: {completed|completed-with-gaps}
|
|
139
|
-
|
|
140
|
-
Tasks: {completed}/{total}
|
|
141
|
-
Files modified: {count}
|
|
142
|
-
|
|
143
|
-
{if --full}
|
|
144
|
-
Verification: {PASS|GAPS}
|
|
145
|
-
{endif}
|
|
146
|
-
```
|
|
103
|
+
Display report: task description, scratch path, status (completed/completed-with-gaps), tasks completed/total, files modified count. If `--full`: include verification result (PASS/GAPS).
|
|
147
104
|
|
|
148
105
|
</execution>
|
|
149
106
|
|