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
|
@@ -87,134 +87,39 @@ Before calling ANY tool, apply this check:
|
|
|
87
87
|
|
|
88
88
|
### Worker Spawn Template
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
```
|
|
93
|
-
spawn_agent({
|
|
94
|
-
agent_type: "team_worker",
|
|
95
|
-
task_name: "<task-id>",
|
|
96
|
-
fork_turns: "none",
|
|
97
|
-
message: `## Role Assignment
|
|
98
|
-
role: <role>
|
|
99
|
-
role_spec: <skill_root>/roles/<role>/role.md
|
|
100
|
-
session: <session-folder>
|
|
101
|
-
session_id: <session-id>
|
|
102
|
-
requirement: <task-description>
|
|
103
|
-
inner_loop: <true|false>
|
|
104
|
-
|
|
105
|
-
Read role_spec file (<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.
|
|
106
|
-
Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5 (report).
|
|
107
|
-
|
|
108
|
-
## Task Context
|
|
109
|
-
task_id: <task-id>
|
|
110
|
-
title: <task-title>
|
|
111
|
-
description: <task-description>
|
|
112
|
-
pipeline_phase: <pipeline-phase>
|
|
113
|
-
|
|
114
|
-
## Upstream Context
|
|
115
|
-
<prev_context>`
|
|
116
|
-
})
|
|
117
|
-
```
|
|
90
|
+
Spawn via `team-worker` agent. Message includes: role, role_spec path (`<skill_root>/roles/<role>/role.md`), session folder/id, requirement, inner_loop flag, task context (id, title, description, pipeline_phase), upstream context. Worker executes: Phase 1 (discovery) -> role Phase 2-4 -> Phase 5 (report).
|
|
118
91
|
|
|
119
92
|
### Supervisor Spawn Template
|
|
120
93
|
|
|
121
|
-
Supervisor is a **resident agent** (independent from team_worker
|
|
122
|
-
|
|
123
|
-
#### Spawn (Phase 2 -- once per session)
|
|
124
|
-
|
|
125
|
-
```
|
|
126
|
-
supervisorId = spawn_agent({
|
|
127
|
-
agent_type: "team_supervisor",
|
|
128
|
-
task_name: "supervisor",
|
|
129
|
-
fork_turns: "none",
|
|
130
|
-
message: `## Role Assignment
|
|
131
|
-
role: supervisor
|
|
132
|
-
role_spec: <skill_root>/roles/supervisor/role.md
|
|
133
|
-
session: <session-folder>
|
|
134
|
-
session_id: <session-id>
|
|
135
|
-
requirement: <task-description>
|
|
136
|
-
|
|
137
|
-
Read role_spec file (<skill_root>/roles/supervisor/role.md) to load checkpoint definitions.
|
|
138
|
-
Init: load baseline context, report ready, go idle.
|
|
139
|
-
Wake cycle: orchestrator sends checkpoint requests via followup_task.`
|
|
140
|
-
})
|
|
141
|
-
```
|
|
94
|
+
Supervisor is a **resident agent** (`team_supervisor`), independent from team_worker.
|
|
142
95
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
followup_task({
|
|
147
|
-
target: "supervisor",
|
|
148
|
-
message: `## Checkpoint Request
|
|
149
|
-
task_id: <CHECKPOINT-NNN>
|
|
150
|
-
scope: [<upstream-task-ids>]
|
|
151
|
-
pipeline_progress: <done>/<total> tasks completed`
|
|
152
|
-
})
|
|
153
|
-
wait_agent({ timeout_ms: 1800000 }) // 30 min
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
#### Shutdown (pipeline complete)
|
|
157
|
-
|
|
158
|
-
```
|
|
159
|
-
close_agent({ target: "supervisor" })
|
|
160
|
-
```
|
|
96
|
+
- **Spawn** (Phase 2, once): Load role-spec from `roles/supervisor/role.md`, init baseline context, go idle
|
|
97
|
+
- **Wake** (per CHECKPOINT): `followup_task` with checkpoint task_id, upstream scope, progress. `wait_agent` (30 min)
|
|
98
|
+
- **Shutdown**: `close_agent({ target: "supervisor" })` at pipeline end
|
|
161
99
|
|
|
162
100
|
### Model Selection Guide
|
|
163
101
|
|
|
164
|
-
| Role |
|
|
165
|
-
|
|
166
|
-
| Analyst (RESEARCH-*) |
|
|
167
|
-
| Writer (DRAFT-*) |
|
|
168
|
-
| Planner (PLAN-*) |
|
|
169
|
-
| Executor (IMPL-*) |
|
|
170
|
-
| Tester (TEST-*) |
|
|
171
|
-
| Reviewer (REVIEW-*, QUALITY-*, IMPROVE-*) |
|
|
172
|
-
| Supervisor (CHECKPOINT-*) |
|
|
173
|
-
|
|
174
|
-
Override model/reasoning_effort in spawn_agent when cost optimization is needed:
|
|
175
|
-
```
|
|
176
|
-
spawn_agent({
|
|
177
|
-
agent_type: "team_worker",
|
|
178
|
-
task_name: "<task-id>",
|
|
179
|
-
fork_turns: "none",
|
|
180
|
-
model: "<model-override>",
|
|
181
|
-
reasoning_effort: "<effort-level>",
|
|
182
|
-
message: "..."
|
|
183
|
-
})
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### v4 Agent Coordination
|
|
187
|
-
|
|
188
|
-
#### Message Semantics
|
|
189
|
-
|
|
190
|
-
| Intent | API | Example |
|
|
191
|
-
|--------|-----|---------|
|
|
192
|
-
| Queue supplementary info (don't interrupt) | `send_message` | Send planning results to running implementers |
|
|
193
|
-
| Wake resident supervisor for checkpoint | `followup_task` | Trigger CHECKPOINT-* evaluation on supervisor |
|
|
194
|
-
| Supervisor reports back to coordinator | `send_message` | Supervisor sends checkpoint verdict as supplementary info |
|
|
195
|
-
| Check running agents | `list_agents` | Verify agent + supervisor health during resume |
|
|
102
|
+
| Role | reasoning_effort |
|
|
103
|
+
|------|-------------------|
|
|
104
|
+
| Analyst (RESEARCH-*) | medium |
|
|
105
|
+
| Writer (DRAFT-*) | high |
|
|
106
|
+
| Planner (PLAN-*) | high |
|
|
107
|
+
| Executor (IMPL-*) | high |
|
|
108
|
+
| Tester (TEST-*) | high |
|
|
109
|
+
| Reviewer (REVIEW-*, QUALITY-*, IMPROVE-*) | high |
|
|
110
|
+
| Supervisor (CHECKPOINT-*) | medium |
|
|
196
111
|
|
|
197
|
-
|
|
112
|
+
Override via `model`/`reasoning_effort` params in spawn_agent for cost optimization.
|
|
198
113
|
|
|
199
|
-
|
|
114
|
+
### v4 Agent Coordination
|
|
200
115
|
|
|
201
|
-
|
|
116
|
+
**Message Semantics**: `send_message` for supplementary info to workers. `followup_task` to wake supervisor for checkpoints. `list_agents` for health checks.
|
|
202
117
|
|
|
203
|
-
|
|
204
|
-
// Reconcile session state with actual running agents
|
|
205
|
-
const running = list_agents({})
|
|
206
|
-
// Compare with tasks.json active_agents
|
|
207
|
-
// Reset orphaned tasks (in_progress but agent gone) to pending
|
|
208
|
-
// ALSO check supervisor: if supervisor missing but CHECKPOINT tasks pending -> respawn
|
|
209
|
-
```
|
|
118
|
+
**CRITICAL**: Supervisor is a **resident agent** woken via `followup_task`, NOT `send_message`. Regular workers are one-shot; supervisor persists across checkpoints.
|
|
210
119
|
|
|
211
|
-
|
|
120
|
+
**Agent Health Check**: Reconcile `tasks.json.active_agents` with `list_agents({})`. Reset orphaned tasks to pending. If supervisor missing but CHECKPOINT tasks pending, respawn.
|
|
212
121
|
|
|
213
|
-
|
|
214
|
-
- `send_message({ target: "IMPL-001", message: "..." })` -- queue planning context to running implementer
|
|
215
|
-
- `followup_task({ target: "supervisor", message: "..." })` -- wake supervisor for checkpoint
|
|
216
|
-
- `close_agent({ target: "IMPL-001" })` -- cleanup regular worker by name
|
|
217
|
-
- `close_agent({ target: "supervisor" })` -- shutdown supervisor at pipeline end
|
|
122
|
+
**Named Targeting**: `send_message({ target: "IMPL-001" })`, `followup_task({ target: "supervisor" })`, `close_agent({ target: ... })`.
|
|
218
123
|
|
|
219
124
|
### User Commands
|
|
220
125
|
|
|
@@ -229,22 +134,7 @@ Workers are spawned with `task_name: "<task-id>"` enabling direct addressing:
|
|
|
229
134
|
|
|
230
135
|
### Completion Action
|
|
231
136
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
```
|
|
235
|
-
request_user_input({
|
|
236
|
-
questions: [{
|
|
237
|
-
question: "Pipeline complete. What would you like to do?",
|
|
238
|
-
header: "Completion",
|
|
239
|
-
multiSelect: false,
|
|
240
|
-
options: [
|
|
241
|
-
{ label: "Archive & Clean (Recommended)", description: "Archive session, clean up resources" },
|
|
242
|
-
{ label: "Keep Active", description: "Keep session for follow-up work" },
|
|
243
|
-
{ label: "Export Results", description: "Export deliverables to target directory" }
|
|
244
|
-
]
|
|
245
|
-
}]
|
|
246
|
-
})
|
|
247
|
-
```
|
|
137
|
+
Present choice via `request_user_input`: **Archive & Clean** (recommended), **Keep Active**, **Export Results**.
|
|
248
138
|
|
|
249
139
|
### Specs Reference
|
|
250
140
|
|
|
@@ -271,18 +161,7 @@ request_user_input({
|
|
|
271
161
|
|
|
272
162
|
### Wave Execution Engine
|
|
273
163
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
1. **Load state** -- Read `<session>/tasks.json`, filter tasks for current wave
|
|
277
|
-
2. **Skip failed deps** -- Mark tasks whose dependencies failed/skipped as `skipped`
|
|
278
|
-
3. **Build upstream context** -- For each task, gather findings from `context_from` tasks via tasks.json and `discoveries/{id}.json`
|
|
279
|
-
4. **Separate task types** -- Split into regular tasks and CHECKPOINT tasks
|
|
280
|
-
5. **Spawn regular tasks** -- For each regular task, call `spawn_agent({ agent_type: "team_worker", message: "..." })`, collect agent IDs
|
|
281
|
-
6. **Wait** -- `wait_agent({ timeout_ms: 1800000 })` (30 min). If `result.timed_out`, send STATUS_CHECK via followup_task (wait 3 min), then FINALIZE with interrupt (wait 3 min), then mark timed_out and close agents.
|
|
282
|
-
7. **Collect results** -- Read `discoveries/{task_id}.json` for each agent, update tasks.json status/findings/error, then `close_agent({ target })` each worker
|
|
283
|
-
8. **Execute checkpoints** -- For each CHECKPOINT task, `followup_task` to supervisor, `wait_agent`, read checkpoint report from `artifacts/`, parse verdict
|
|
284
|
-
9. **Handle block** -- If verdict is `block`, prompt user via `request_user_input` with options: Override / Revise upstream / Abort
|
|
285
|
-
10. **Persist** -- Write updated state to `<session>/tasks.json`
|
|
164
|
+
Per wave: load state from `tasks.json` -> skip tasks with failed deps -> build upstream context from `discoveries/{id}.json` -> separate regular vs CHECKPOINT tasks -> spawn regular workers (`wait_agent` 30 min, timeout: STATUS_CHECK 3 min -> FINALIZE 3 min -> close) -> collect results to `discoveries/`, update `tasks.json` -> execute checkpoints via `followup_task` to supervisor -> handle `block` verdict (prompt: Override/Revise/Abort) -> persist state.
|
|
286
165
|
</execution>
|
|
287
166
|
|
|
288
167
|
<error_codes>
|
|
@@ -21,75 +21,30 @@ Synchronous pipeline coordination using spawn_agent + wait_agent.
|
|
|
21
21
|
|
|
22
22
|
Read-only status report from tasks.json + team_msg progress, then STOP.
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
2. Count tasks by status (pending, in_progress, completed, failed, skipped)
|
|
26
|
-
3. Read worker progress from message bus:
|
|
27
|
-
```javascript
|
|
28
|
-
const progressMsgs = mcp__maestro-tools__team_msg({
|
|
29
|
-
operation: "list",
|
|
30
|
-
session_id: sessionId,
|
|
31
|
-
type: "progress",
|
|
32
|
-
last: 50
|
|
33
|
-
})
|
|
34
|
-
const blockerMsgs = mcp__maestro-tools__team_msg({
|
|
35
|
-
operation: "list",
|
|
36
|
-
session_id: sessionId,
|
|
37
|
-
type: "blocker",
|
|
38
|
-
last: 10
|
|
39
|
-
})
|
|
40
|
-
// Aggregate latest milestone per task
|
|
41
|
-
const taskProgress = {}
|
|
42
|
-
for (const msg of progressMsgs.result.messages) {
|
|
43
|
-
const tid = msg.data?.task_id
|
|
44
|
-
if (tid && (!taskProgress[tid] || msg.ts > taskProgress[tid].ts)) {
|
|
45
|
-
taskProgress[tid] = { phase: msg.data.phase, pct: msg.data.progress_pct, ts: msg.ts, summary: msg.summary }
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
4. Output enhanced status:
|
|
24
|
+
Read tasks.json + team_msg (type="progress", last=50) + team_msg (type="blocker", last=10). Aggregate latest milestone per task.
|
|
51
25
|
|
|
26
|
+
**Output format**:
|
|
52
27
|
```
|
|
53
|
-
[coordinator] Pipeline Status
|
|
54
|
-
[coordinator]
|
|
55
|
-
[coordinator]
|
|
56
|
-
[coordinator] Active Workers:
|
|
57
|
-
[coordinator] <task_id> <role> <milestone_phase> <pct>% "<summary>" <time_ago>
|
|
58
|
-
[coordinator] ...
|
|
59
|
-
[coordinator]
|
|
60
|
-
[coordinator] Blockers: <count> (or "none")
|
|
61
|
-
[coordinator] <task_id>: <blocker_detail> ← only if blockers exist
|
|
62
|
-
[coordinator]
|
|
28
|
+
[coordinator] Pipeline Status — Progress: <done>/<total> (<pct>%)
|
|
29
|
+
[coordinator] Active Workers: <task_id> <role> <milestone_phase> <pct>% "<summary>" <time_ago>
|
|
30
|
+
[coordinator] Blockers: <count or "none"> (detail per blocker if any)
|
|
63
31
|
[coordinator] Completed: <list>
|
|
64
32
|
[coordinator] Ready: <pending with resolved deps>
|
|
65
33
|
[coordinator] Commands: 'resume' to advance | 'check' to refresh
|
|
66
34
|
```
|
|
67
35
|
|
|
68
|
-
**CLI
|
|
69
|
-
```bash
|
|
70
|
-
maestro agent-msg list -s "<session_id>" --type progress --last 10
|
|
71
|
-
maestro agent-msg list -s "<session_id>" --type blocker
|
|
72
|
-
```
|
|
36
|
+
**CLI monitoring**: `maestro agent-msg list -s "<session_id>" --type progress --last 10`
|
|
73
37
|
|
|
74
38
|
## handleResume
|
|
75
39
|
|
|
76
|
-
**Agent Health Check** (v4):
|
|
40
|
+
**Agent Health Check** (v4): Cross-check `list_agents()` against `active_agents`. Missing agents -> reset task to pending. Crashed supervisor (resident + no CHECKPOINT in_progress + pending CHECKPOINT exists) -> respawn with recovery: true.
|
|
41
|
+
|
|
77
42
|
```
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
// - If agent NOT in runningAgents -> agent crashed
|
|
82
|
-
// - Reset that task to pending, remove from active_agents
|
|
83
|
-
// This prevents stale agent references from blocking the pipeline
|
|
43
|
+
Load active_agents -> route:
|
|
44
|
+
none -> handleSpawnNext
|
|
45
|
+
has agents -> health check, process completions -> handleSpawnNext
|
|
84
46
|
```
|
|
85
47
|
|
|
86
|
-
1. Read tasks.json, check active_agents
|
|
87
|
-
2. No active agents -> handleSpawnNext
|
|
88
|
-
3. Has active agents -> check each:
|
|
89
|
-
- If supervisor with `resident: true` + no CHECKPOINT in_progress + pending CHECKPOINT exists
|
|
90
|
-
-> supervisor may have crashed. Respawn via spawn_agent({ agent_type: "team_supervisor" }) with recovery: true
|
|
91
|
-
4. Proceed to handleSpawnNext
|
|
92
|
-
|
|
93
48
|
## handleSpawnNext
|
|
94
49
|
|
|
95
50
|
Find ready tasks, spawn workers, wait for completion, process results.
|
|
@@ -104,195 +59,48 @@ Find ready tasks, spawn workers, wait for completion, process results.
|
|
|
104
59
|
|
|
105
60
|
For each ready non-CHECKPOINT task:
|
|
106
61
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
task_name: task.id, // e.g., "PLAN-001" — enables named targeting
|
|
115
|
-
message: `## Role Assignment
|
|
116
|
-
role: ${task.role}
|
|
117
|
-
role_spec: ${skillRoot}/roles/${task.role}/role.md
|
|
118
|
-
session: ${sessionFolder}
|
|
119
|
-
session_id: ${sessionId}
|
|
120
|
-
requirement: ${requirement}
|
|
121
|
-
inner_loop: ${hasInnerLoop(task.role)}
|
|
122
|
-
|
|
123
|
-
Read role_spec file (${skillRoot}/roles/${task.role}/role.md) to load Phase 2-4 domain instructions.
|
|
124
|
-
Execute built-in Phase 1 (task discovery) -> role Phase 2-4 -> built-in Phase 5 (report).
|
|
125
|
-
|
|
62
|
+
**Spawn worker message template**:
|
|
63
|
+
```
|
|
64
|
+
## Role Assignment
|
|
65
|
+
role: <role> | role_spec: <skillRoot>/roles/<role>/role.md
|
|
66
|
+
session: <session-folder> | session_id: <session-id>
|
|
67
|
+
requirement: <requirement> | inner_loop: <true|false>
|
|
68
|
+
Read role_spec for Phase 2-4 instructions. Execute Phase 1 -> role Phase 2-4 -> Phase 5 (report).
|
|
126
69
|
## Task Context
|
|
127
|
-
task_id:
|
|
128
|
-
title: ${task.title}
|
|
129
|
-
description: ${task.description}
|
|
130
|
-
pipeline_phase: ${task.pipeline_phase}
|
|
131
|
-
|
|
70
|
+
task_id: <id> | title: <title> | description: <description> | pipeline_phase: <phase>
|
|
132
71
|
## Upstream Context
|
|
133
|
-
|
|
134
|
-
|
|
72
|
+
<prevContext>
|
|
135
73
|
## Progress Milestones
|
|
136
|
-
|
|
137
|
-
Report progress via team_msg at natural phase boundaries (context loaded → core work done → verification).
|
|
138
|
-
Report blockers immediately via team_msg type="blocker".
|
|
139
|
-
Report completion via team_msg type="task_complete" after report_agent_job_result.
|
|
140
|
-
See agent-instruction.md "Progress Milestone Protocol" for format.`
|
|
141
|
-
})
|
|
142
|
-
|
|
143
|
-
// 3) Track agent
|
|
144
|
-
state.active_agents[task.id] = { agentId, role: task.role, started_at: now }
|
|
74
|
+
Report progress via team_msg at phase boundaries. Blockers via type="blocker". Completion via type="task_complete" after report_agent_job_result.
|
|
145
75
|
```
|
|
146
76
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
```javascript
|
|
150
|
-
// 4) Batch wait — use task_name for stable targeting (v4)
|
|
151
|
-
const taskNames = Object.entries(state.active_agents)
|
|
152
|
-
.filter(([_, a]) => !a.resident)
|
|
153
|
-
.map(([taskId]) => taskId)
|
|
154
|
-
const waitResult = wait_agent({ timeout_ms: 1800000 }) // 30 min
|
|
155
|
-
// 4a) Drain progress from message bus (before collecting discoveries)
|
|
156
|
-
const progressMsgs = mcp__maestro-tools__team_msg({
|
|
157
|
-
operation: "list", session_id: sessionId, type: "progress", last: 100
|
|
158
|
-
})
|
|
159
|
-
const blockerMsgs = mcp__maestro-tools__team_msg({
|
|
160
|
-
operation: "list", session_id: sessionId, type: "blocker", last: 20
|
|
161
|
-
})
|
|
162
|
-
// Log execution trace
|
|
163
|
-
for (const msg of (progressMsgs.result?.messages || [])) {
|
|
164
|
-
console.log(`[coordinator] trace: ${msg.summary}`)
|
|
165
|
-
}
|
|
166
|
-
if (blockerMsgs.result?.messages?.length > 0) {
|
|
167
|
-
console.log(`[coordinator] WARNING: ${blockerMsgs.result.messages.length} blocker(s) reported during execution`)
|
|
168
|
-
for (const b of blockerMsgs.result.messages) {
|
|
169
|
-
console.log(`[coordinator] ${b.data?.task_id}: ${b.data?.blocker_detail}`)
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
if (waitResult.timed_out) {
|
|
174
|
-
// Use progress trace to understand where workers got stuck
|
|
175
|
-
for (const taskId of taskNames) {
|
|
176
|
-
// Status probe before closing
|
|
177
|
-
followup_task({ target: taskId, message: "STATUS_CHECK: Report current progress, findings so far, and estimated remaining work." })
|
|
178
|
-
const status = wait_agent({ timeout_ms: 180000 }) // 3 min
|
|
179
|
-
if (status.timed_out) {
|
|
180
|
-
followup_task({ target: taskId, message: "FINALIZE: Output all current findings immediately. Time limit reached.", interrupt: true })
|
|
181
|
-
const forced = wait_agent({ timeout_ms: 180000 }) // 3 min
|
|
182
|
-
if (forced.timed_out) {
|
|
183
|
-
const lastProgress = (progressMsgs.result?.messages || [])
|
|
184
|
-
.filter(m => m.data?.task_id === taskId)
|
|
185
|
-
.pop()
|
|
186
|
-
state.tasks[taskId].status = 'timed_out'
|
|
187
|
-
state.tasks[taskId].error = lastProgress
|
|
188
|
-
? `Timed out at ${lastProgress.data.phase} (${lastProgress.data.progress_pct}%)`
|
|
189
|
-
: 'Timed out with no progress reported'
|
|
190
|
-
close_agent({ target: taskId })
|
|
191
|
-
delete state.active_agents[taskId]
|
|
192
|
-
}
|
|
193
|
-
// else: forced output received, process result
|
|
194
|
-
}
|
|
195
|
-
// else: status received, continue processing
|
|
196
|
-
}
|
|
197
|
-
} else {
|
|
198
|
-
// 5) Collect results from discoveries/{task_id}.json
|
|
199
|
-
for (const [taskId, agent] of Object.entries(state.active_agents)) {
|
|
200
|
-
if (agent.resident) continue
|
|
201
|
-
try {
|
|
202
|
-
const disc = JSON.parse(Read(`${sessionFolder}/discoveries/${taskId}.json`))
|
|
203
|
-
state.tasks[taskId].status = disc.status || 'completed'
|
|
204
|
-
state.tasks[taskId].findings = disc.findings || ''
|
|
205
|
-
state.tasks[taskId].quality_score = disc.quality_score || null
|
|
206
|
-
state.tasks[taskId].error = disc.error || null
|
|
207
|
-
} catch {
|
|
208
|
-
state.tasks[taskId].status = 'failed'
|
|
209
|
-
state.tasks[taskId].error = 'No discovery file produced'
|
|
210
|
-
}
|
|
211
|
-
close_agent({ target: taskId }) // Use task_name, not agentId
|
|
212
|
-
delete state.active_agents[taskId]
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
**Cross-Agent Supplementary Context** (v4):
|
|
77
|
+
**Result collection**: `wait_agent({ timeout_ms: 1800000 })` (30 min), drain progress + blockers from team_msg, log execution trace.
|
|
218
78
|
|
|
219
|
-
|
|
79
|
+
**Timeout escalation**: STATUS_CHECK (3 min) -> FINALIZE with interrupt (3 min) -> mark timed_out with last progress context, close_agent. Normal completion -> read `discoveries/{task_id}.json` for status/findings/quality_score/error. Missing file -> status="failed". Close each agent (use task_name, not agentId).
|
|
220
80
|
|
|
221
|
-
|
|
222
|
-
// Example: Send planning results to running implementers
|
|
223
|
-
send_message({
|
|
224
|
-
target: "<running-agent-task-name>",
|
|
225
|
-
message: `## Supplementary Context\n${upstreamFindings}`
|
|
226
|
-
})
|
|
227
|
-
// Note: send_message queues info without interrupting the agent's current work
|
|
228
|
-
```
|
|
229
|
-
|
|
230
|
-
Use `send_message` (not `followup_task`) for supplementary info that enriches but doesn't redirect the agent's current task.
|
|
81
|
+
**Cross-Agent Supplementary Context** (v4): Use `send_message` (not `followup_task`) to deliver upstream results to running downstream workers as non-interrupting supplementary context.
|
|
231
82
|
|
|
232
83
|
### Handle CHECKPOINT Tasks
|
|
233
84
|
|
|
234
85
|
For each ready CHECKPOINT task:
|
|
235
86
|
|
|
236
|
-
1.
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
```javascript
|
|
241
|
-
followup_task({
|
|
242
|
-
target: supervisorId,
|
|
243
|
-
message: `## Checkpoint Request
|
|
244
|
-
task_id: ${task.id}
|
|
245
|
-
scope: [${task.deps.join(', ')}]
|
|
246
|
-
pipeline_progress: ${completedCount}/${totalCount} tasks completed`
|
|
247
|
-
})
|
|
248
|
-
const cpResult = wait_agent({ timeout_ms: 1800000 }) // 30 min
|
|
249
|
-
if (cpResult.timed_out) {
|
|
250
|
-
followup_task({ target: supervisorId, message: "STATUS_CHECK: Report current progress, findings so far, and estimated remaining work." })
|
|
251
|
-
const status = wait_agent({ timeout_ms: 180000 }) // 3 min
|
|
252
|
-
if (status.timed_out) {
|
|
253
|
-
followup_task({ target: supervisorId, message: "FINALIZE: Output all current findings immediately. Time limit reached.", interrupt: true })
|
|
254
|
-
const forced = wait_agent({ timeout_ms: 180000 }) // 3 min
|
|
255
|
-
if (forced.timed_out) { /* mark checkpoint timed_out, close supervisor, STOP */ }
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
```
|
|
259
|
-
4. Read checkpoint report from artifacts/${task.id}-report.md
|
|
260
|
-
5. Parse verdict (pass / warn / block):
|
|
87
|
+
1. Ensure supervisor in active_agents (resident: true). Not found -> spawn via SKILL.md Supervisor Spawn Template.
|
|
88
|
+
2. Wake supervisor via `followup_task` with checkpoint scope (dep task IDs) + pipeline progress.
|
|
89
|
+
3. `wait_agent` (30 min) with standard timeout escalation (STATUS_CHECK -> FINALIZE -> timed_out).
|
|
90
|
+
4. Read `artifacts/${task.id}-report.md`, parse verdict:
|
|
261
91
|
- **pass** -> mark completed, proceed
|
|
262
92
|
- **warn** -> log risks to wisdom, mark completed, proceed
|
|
263
93
|
- **block** -> request_user_input: Override / Revise upstream / Abort
|
|
264
94
|
|
|
265
95
|
### Persist and Loop
|
|
266
96
|
|
|
267
|
-
|
|
268
|
-
1. Write updated tasks.json
|
|
269
|
-
2. Check if more tasks are now ready (deps newly resolved)
|
|
270
|
-
3. If yes -> loop back to step 1 of handleSpawnNext
|
|
271
|
-
4. If no more ready and all done -> handleComplete
|
|
272
|
-
5. If no more ready but some still blocked -> report status, STOP
|
|
97
|
+
Write tasks.json -> more tasks ready? -> loop handleSpawnNext. All done -> handleComplete. Blocked -> report, STOP.
|
|
273
98
|
|
|
274
99
|
## handleComplete
|
|
275
100
|
|
|
276
|
-
**Cleanup Verification** (v4):
|
|
277
|
-
```
|
|
278
|
-
// Verify all agents are properly closed
|
|
279
|
-
const remaining = list_agents({})
|
|
280
|
-
// If any team agents still running -> close_agent each
|
|
281
|
-
// Ensures clean session shutdown
|
|
282
|
-
```
|
|
101
|
+
**Cleanup Verification** (v4): `list_agents()` -> close any still-running team agents (including resident supervisor).
|
|
283
102
|
|
|
284
|
-
Pipeline done. Generate
|
|
285
|
-
|
|
286
|
-
1. Shutdown resident supervisor (if active):
|
|
287
|
-
```javascript
|
|
288
|
-
close_agent({ target: supervisorId })
|
|
289
|
-
```
|
|
290
|
-
Remove from active_agents in tasks.json
|
|
291
|
-
2. Generate summary (deliverables, stats, discussions)
|
|
292
|
-
3. Read tasks.json completion_action:
|
|
293
|
-
- interactive -> request_user_input (Archive/Keep/Export)
|
|
294
|
-
- auto_archive -> Archive & Clean (rm -rf session folder)
|
|
295
|
-
- auto_keep -> Keep Active (update status to "paused")
|
|
103
|
+
Pipeline done. Generate summary (deliverables, stats, discussions). Route by completion_action: interactive (Archive/Keep/Export) | auto_archive | auto_keep.
|
|
296
104
|
|
|
297
105
|
## handleAdapt
|
|
298
106
|
|
|
@@ -79,57 +79,19 @@ Before calling ANY tool, apply this check:
|
|
|
79
79
|
|
|
80
80
|
### Worker Spawn Template
|
|
81
81
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
spawn_agent({
|
|
86
|
-
agent_type: "team_worker",
|
|
87
|
-
task_name: "<task-id>",
|
|
88
|
-
fork_turns: "none",
|
|
89
|
-
message: `## Role Assignment
|
|
90
|
-
role: <role>
|
|
91
|
-
role_spec: <skill_root>/roles/<role>/role.md
|
|
92
|
-
session: <session-folder>
|
|
93
|
-
session_id: <session-id>
|
|
94
|
-
requirement: <task-description>
|
|
95
|
-
inner_loop: <true|false>
|
|
96
|
-
|
|
97
|
-
Read role_spec file (<skill_root>/roles/<role>/role.md) to load Phase 2-4 domain instructions.
|
|
98
|
-
|
|
99
|
-
## Task Context
|
|
100
|
-
task_id: <task-id>
|
|
101
|
-
title: <task-title>
|
|
102
|
-
description: <task-description>
|
|
103
|
-
pipeline_phase: <pipeline-phase>
|
|
104
|
-
|
|
105
|
-
## Upstream Context
|
|
106
|
-
<prev_context>`
|
|
107
|
-
})
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
After spawning, use `wait_agent({ timeout_ms: 1800000 })` to collect results (30 min). If `result.timed_out`, send STATUS_CHECK via followup_task (wait 3 min), then FINALIZE with interrupt (wait 3 min), then mark timed_out and close agents. Use `close_agent({ target })` each worker.
|
|
82
|
+
Spawn via `team-worker` agent. Message includes: role, role_spec path, session folder/id, requirement, inner_loop flag, task context, upstream context. After spawning: `wait_agent` (30 min). Timeout: STATUS_CHECK (3 min) -> FINALIZE (3 min) -> close.
|
|
111
83
|
|
|
112
84
|
### Model Selection Guide
|
|
113
85
|
|
|
114
|
-
| Role |
|
|
115
|
-
|
|
116
|
-
| Scout (SCOUT-*) |
|
|
117
|
-
| Strategist (QASTRAT-*) |
|
|
118
|
-
| Generator (QAGEN-*) |
|
|
119
|
-
| Executor (QARUN-*) |
|
|
120
|
-
| Analyst (QAANA-*) |
|
|
86
|
+
| Role | reasoning_effort |
|
|
87
|
+
|------|-------------------|
|
|
88
|
+
| Scout (SCOUT-*) | medium |
|
|
89
|
+
| Strategist (QASTRAT-*) | high |
|
|
90
|
+
| Generator (QAGEN-*) | high |
|
|
91
|
+
| Executor (QARUN-*) | medium |
|
|
92
|
+
| Analyst (QAANA-*) | high |
|
|
121
93
|
|
|
122
|
-
Override model
|
|
123
|
-
```
|
|
124
|
-
spawn_agent({
|
|
125
|
-
agent_type: "team_worker",
|
|
126
|
-
task_name: "<task-id>",
|
|
127
|
-
fork_turns: "none",
|
|
128
|
-
model: "<model-override>",
|
|
129
|
-
reasoning_effort: "<effort-level>",
|
|
130
|
-
message: "..."
|
|
131
|
-
})
|
|
132
|
-
```
|
|
94
|
+
Override via `model`/`reasoning_effort` params in spawn_agent for cost optimization.
|
|
133
95
|
|
|
134
96
|
### User Commands
|
|
135
97
|
|
|
@@ -143,53 +105,17 @@ spawn_agent({
|
|
|
143
105
|
|
|
144
106
|
### v4 Agent Coordination
|
|
145
107
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
| Intent | API | Example |
|
|
149
|
-
|--------|-----|---------|
|
|
150
|
-
| Send scout findings to running strategist | `send_message` | Queue issue scan results to QASTRAT-* |
|
|
151
|
-
| Not used in this skill | `followup_task` | No resident agents -- all workers are one-shot |
|
|
152
|
-
| Check running agents | `list_agents` | Verify agent health during resume |
|
|
153
|
-
|
|
154
|
-
#### Pipeline Pattern
|
|
108
|
+
**Message Semantics**: `send_message` to queue scout findings to strategist. `list_agents` for health checks. `followup_task` not used (all one-shot workers).
|
|
155
109
|
|
|
156
|
-
Sequential
|
|
110
|
+
**Pipeline Pattern**: Sequential with GC loops: scout -> strategist -> generator -> executor -> analyst. Generator/executor may loop (max 3 rounds) when coverage below target.
|
|
157
111
|
|
|
158
|
-
|
|
112
|
+
**Agent Health Check**: Reconcile `tasks.json` with `list_agents({})`. Reset orphaned tasks to pending.
|
|
159
113
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
```
|
|
163
|
-
// Reconcile session state with actual running agents
|
|
164
|
-
const running = list_agents({})
|
|
165
|
-
// Compare with tasks.json active_agents
|
|
166
|
-
// Reset orphaned tasks (in_progress but agent gone) to pending
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
#### Named Agent Targeting
|
|
170
|
-
|
|
171
|
-
Workers are spawned with `task_name: "<task-id>"` enabling direct addressing:
|
|
172
|
-
- `send_message({ target: "QASTRAT-001", message: "..." })` -- queue scout findings to running strategist
|
|
173
|
-
- `close_agent({ target: "SCOUT-001" })` -- cleanup by name after completion
|
|
114
|
+
**Named Targeting**: `send_message({ target: "QASTRAT-001" })`, `close_agent({ target: "SCOUT-001" })`.
|
|
174
115
|
|
|
175
116
|
### Completion Action
|
|
176
117
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
```
|
|
180
|
-
request_user_input({
|
|
181
|
-
questions: [{
|
|
182
|
-
question: "Quality Assurance pipeline complete. What would you like to do?",
|
|
183
|
-
header: "Completion",
|
|
184
|
-
multiSelect: false,
|
|
185
|
-
options: [
|
|
186
|
-
{ label: "Archive & Clean (Recommended)", description: "Archive session, clean up" },
|
|
187
|
-
{ label: "Keep Active", description: "Keep session for follow-up work" },
|
|
188
|
-
{ label: "Export Results", description: "Export deliverables to target directory" }
|
|
189
|
-
]
|
|
190
|
-
}]
|
|
191
|
-
})
|
|
192
|
-
```
|
|
118
|
+
Present choice: **Archive & Clean** (recommended), **Keep Active**, **Export Results**.
|
|
193
119
|
|
|
194
120
|
### Session Directory
|
|
195
121
|
|