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
|
@@ -70,264 +70,96 @@ $ARGUMENTS — user intent text, or flags.
|
|
|
70
70
|
|
|
71
71
|
### Phase 1: Load Chain Graph
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
const args = $ARGUMENTS.trim();
|
|
75
|
-
const listMode = /\b--list\b/.test(args);
|
|
76
|
-
const autoYes = /\b(-y|--yes)\b/.test(args);
|
|
77
|
-
const resumeMode = /\b(-c|--continue)\b/.test(args);
|
|
78
|
-
const resumeId = args.match(/(?:-c|--continue)\s+(\S+)/)?.[1] || null;
|
|
79
|
-
const forcedChain = args.match(/--chain\s+(\S+)/)?.[1] || null;
|
|
80
|
-
const intent = args
|
|
81
|
-
.replace(/\b(-y|--yes|--list|-c|--continue)\b/g, '')
|
|
82
|
-
.replace(/(?:-c|--continue)\s+\S+/g, '')
|
|
83
|
-
.replace(/--chain\s+\S+/g, '')
|
|
84
|
-
.trim();
|
|
85
|
-
```
|
|
73
|
+
Parse `$ARGUMENTS` to extract: `listMode` (`--list`), `autoYes` (`-y`/`--yes`), `resumeMode` (`-c`/`--continue`), `resumeId`, `forcedChain` (`--chain <name>`), `intent` (remaining text).
|
|
86
74
|
|
|
87
75
|
**`--list`**: Scan `chains/*.json` and `chains/singles/*.json`, display names + descriptions, stop.
|
|
88
76
|
|
|
89
|
-
**`-c` (resume)**:
|
|
90
|
-
1. Glob `.workflow/.maestro-coordinate/MLC-*/state.json`, pick most recent (or by `resumeId`)
|
|
91
|
-
2. Load state → find first node with `status !== "completed"` → set as `current_node`
|
|
92
|
-
3. Jump to **Phase 2**
|
|
77
|
+
**`-c` (resume)**: Glob `.workflow/.maestro-coordinate/MLC-*/state.json`, pick most recent (or by `resumeId`). Load state → find first incomplete node → jump to Phase 2.
|
|
93
78
|
|
|
94
79
|
**Fresh session**:
|
|
95
80
|
1. Resolve chain: `--chain` direct or classify from intent using `chains/_intent-map.json`
|
|
96
81
|
2. Load chain JSON: try `chains/{name}.json` then `chains/singles/{name}.json`
|
|
97
82
|
3. Read `.workflow/state.json` for project context (phase, milestone)
|
|
98
|
-
4. Initialize session:
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
result: null // last command result, used by decision eval
|
|
111
|
-
},
|
|
112
|
-
visit_counts: {}, // nodeId → number
|
|
113
|
-
history: [], // { node_id, type, outcome, summary, timestamp }
|
|
114
|
-
};
|
|
115
|
-
Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
|
|
83
|
+
4. Initialize session state:
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"id": "MLC-{YYYYMMDD}-{HHmmss}",
|
|
88
|
+
"intent": "<intent>", "chain": "<graph.id>", "auto_mode": false,
|
|
89
|
+
"status": "in_progress", "started_at": "<ISO>",
|
|
90
|
+
"current_node": "<graph.entry>",
|
|
91
|
+
"context": { "phase": null, "description": "<intent>", "result": null },
|
|
92
|
+
"visit_counts": {},
|
|
93
|
+
"history": []
|
|
94
|
+
}
|
|
116
95
|
```
|
|
117
96
|
|
|
118
|
-
|
|
97
|
+
Session dir: `.workflow/.maestro-coordinate/{sessionId}/`
|
|
119
98
|
|
|
99
|
+
**`--dry-run`**: Display node walk order with types, stop.
|
|
120
100
|
**Confirm** (skip if `autoYes`): Display chain summary, prompt `Proceed?`.
|
|
121
101
|
|
|
122
102
|
### Phase 2: Walk Loop
|
|
123
103
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
if (!node) {
|
|
130
|
-
state.status = 'failed';
|
|
131
|
-
state.history.push({ node_id: nodeId, type: 'error', outcome: 'failed',
|
|
132
|
-
summary: `Node "${nodeId}" not found in graph`, timestamp: now() });
|
|
133
|
-
break;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
// max_visits guard
|
|
137
|
-
state.visit_counts[nodeId] = (state.visit_counts[nodeId] ?? 0) + 1;
|
|
138
|
-
if (node.max_visits && state.visit_counts[nodeId] > node.max_visits) {
|
|
139
|
-
state.status = 'failed';
|
|
140
|
-
state.history.push({ node_id: nodeId, type: node.type, outcome: 'max_visits_exceeded',
|
|
141
|
-
summary: `Exceeded max_visits (${node.max_visits})`, timestamp: now() });
|
|
142
|
-
break;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
switch (node.type) {
|
|
146
|
-
case 'command': handleCommand(state, graph, nodeId, node); break;
|
|
147
|
-
case 'decision': handleDecision(state, nodeId, node); break;
|
|
148
|
-
case 'gate': handleGate(state, nodeId, node); break;
|
|
149
|
-
case 'terminal': handleTerminal(state, nodeId, node); break;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// Persist after every node
|
|
153
|
-
Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
|
|
154
|
-
}
|
|
155
|
-
```
|
|
104
|
+
Loop while `state.status === 'in_progress'`:
|
|
105
|
+
1. Resolve `current_node` from graph — fail if not found
|
|
106
|
+
2. Increment `visit_counts[nodeId]` — fail if exceeds `node.max_visits`
|
|
107
|
+
3. Dispatch by `node.type`: command → handleCommand, decision → handleDecision, gate → handleGate, terminal → handleTerminal
|
|
108
|
+
4. Persist `state.json` after every node
|
|
156
109
|
|
|
157
110
|
#### handleCommand — spawn via CSV
|
|
158
111
|
|
|
112
|
+
1. Build `skill_call` from node config + context + auto_mode
|
|
113
|
+
2. Write single-row CSV: `wave-{nodeId}.csv` with columns `id,skill_call,topic`
|
|
114
|
+
3. Spawn:
|
|
115
|
+
|
|
159
116
|
```javascript
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
// 3. Spawn
|
|
170
|
-
spawn_agents_on_csv({
|
|
171
|
-
csv_path: csvPath,
|
|
172
|
-
id_column: "id",
|
|
173
|
-
instruction: AGENT_INSTRUCTION,
|
|
174
|
-
max_workers: 1,
|
|
175
|
-
max_runtime_seconds: 1800,
|
|
176
|
-
output_csv_path: `${sessionDir}/wave-${nodeId}-results.csv`,
|
|
177
|
-
output_schema: RESULT_SCHEMA
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
// 4. Read result
|
|
181
|
-
const results = readCSV(`${sessionDir}/wave-${nodeId}-results.csv`);
|
|
182
|
-
const result = results[0];
|
|
183
|
-
const outcome = result?.status === 'completed' ? 'success' : 'failed';
|
|
184
|
-
|
|
185
|
-
// 5. Update context with result (for downstream decision eval)
|
|
186
|
-
state.context.result = parseResultContext(result);
|
|
187
|
-
|
|
188
|
-
// 6. Record history
|
|
189
|
-
state.history.push({
|
|
190
|
-
node_id: nodeId, type: 'command', outcome,
|
|
191
|
-
summary: result?.summary ?? '', timestamp: now()
|
|
192
|
-
});
|
|
193
|
-
|
|
194
|
-
// 7. Advance or fail
|
|
195
|
-
if (outcome === 'failed') {
|
|
196
|
-
if (node.on_failure) {
|
|
197
|
-
state.current_node = node.on_failure;
|
|
198
|
-
} else {
|
|
199
|
-
state.status = 'failed';
|
|
200
|
-
}
|
|
201
|
-
} else {
|
|
202
|
-
state.current_node = node.next;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
117
|
+
spawn_agents_on_csv({
|
|
118
|
+
csv_path: csvPath,
|
|
119
|
+
id_column: "id",
|
|
120
|
+
instruction: AGENT_INSTRUCTION,
|
|
121
|
+
max_workers: 1,
|
|
122
|
+
max_runtime_seconds: 1800,
|
|
123
|
+
output_csv_path: `${sessionDir}/wave-${nodeId}-results.csv`,
|
|
124
|
+
output_schema: RESULT_SCHEMA
|
|
125
|
+
})
|
|
205
126
|
```
|
|
206
127
|
|
|
128
|
+
4. Read result → parse findings into `state.context.result` (for downstream decision eval)
|
|
129
|
+
5. Record history entry with outcome
|
|
130
|
+
6. Advance: success → `node.next`, failure → `node.on_failure` or fail state
|
|
131
|
+
|
|
207
132
|
#### handleDecision — in-process expr evaluation
|
|
208
133
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
const value = resolveExpr(evalKey, state.context);
|
|
214
|
-
|
|
215
|
-
// Match edge
|
|
216
|
-
let target = null;
|
|
217
|
-
let matchedLabel = null;
|
|
218
|
-
for (const edge of node.edges) {
|
|
219
|
-
if (edge.value !== undefined && String(edge.value) === String(value)) {
|
|
220
|
-
target = edge.target;
|
|
221
|
-
matchedLabel = edge.label ?? edge.description ?? String(edge.value);
|
|
222
|
-
break;
|
|
223
|
-
}
|
|
224
|
-
if (edge.match && new RegExp(edge.match).test(String(value))) {
|
|
225
|
-
target = edge.target;
|
|
226
|
-
matchedLabel = edge.label ?? edge.description ?? edge.match;
|
|
227
|
-
break;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
// Default fallback
|
|
231
|
-
if (!target) {
|
|
232
|
-
const defaultEdge = node.edges.find(e => e.default);
|
|
233
|
-
if (defaultEdge) {
|
|
234
|
-
target = defaultEdge.target;
|
|
235
|
-
matchedLabel = defaultEdge.label ?? defaultEdge.description ?? 'default';
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
state.history.push({
|
|
240
|
-
node_id: nodeId, type: 'decision',
|
|
241
|
-
outcome: target ? 'resolved' : 'no_match',
|
|
242
|
-
summary: `${evalKey} = "${value}" → ${matchedLabel ?? 'none'}`,
|
|
243
|
-
timestamp: now()
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
if (target) {
|
|
247
|
-
state.current_node = target;
|
|
248
|
-
} else {
|
|
249
|
-
state.status = 'failed';
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
```
|
|
134
|
+
1. Evaluate `node.eval` expression (e.g. `ctx.result.verification_status`) against `state.context` via dot-path resolution
|
|
135
|
+
2. Match against `node.edges[]`: first by exact `edge.value`, then by regex `edge.match`, finally `edge.default`
|
|
136
|
+
3. Record history: `evalKey = "value" → matchedLabel`
|
|
137
|
+
4. Advance to matched `edge.target` — fail if no match found
|
|
253
138
|
|
|
254
139
|
#### handleGate — condition check
|
|
255
140
|
|
|
256
|
-
|
|
257
|
-
function handleGate(state, nodeId, node) {
|
|
258
|
-
const passed = resolveExpr(node.condition, state.context);
|
|
259
|
-
state.history.push({
|
|
260
|
-
node_id: nodeId, type: 'gate',
|
|
261
|
-
outcome: passed ? 'passed' : 'blocked',
|
|
262
|
-
summary: `${node.condition} → ${passed}`,
|
|
263
|
-
timestamp: now()
|
|
264
|
-
});
|
|
265
|
-
state.current_node = passed ? node.on_pass : node.on_fail;
|
|
266
|
-
}
|
|
267
|
-
```
|
|
141
|
+
Evaluate `node.condition` against context. Route to `node.on_pass` or `node.on_fail`. Record history with passed/blocked outcome.
|
|
268
142
|
|
|
269
143
|
#### handleTerminal
|
|
270
144
|
|
|
271
|
-
|
|
272
|
-
function handleTerminal(state, nodeId, node) {
|
|
273
|
-
state.status = node.status === 'success' ? 'completed' : 'failed';
|
|
274
|
-
state.history.push({
|
|
275
|
-
node_id: nodeId, type: 'terminal',
|
|
276
|
-
outcome: node.status ?? 'completed',
|
|
277
|
-
summary: node.summary ?? 'Chain walk complete',
|
|
278
|
-
timestamp: now()
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
```
|
|
145
|
+
Set `state.status` to completed/failed based on `node.status`. Record final history entry.
|
|
282
146
|
|
|
283
147
|
### Shared Utilities
|
|
284
148
|
|
|
285
|
-
|
|
286
|
-
const AUTO_FLAG_MAP = {
|
|
287
|
-
'maestro-analyze': '-y', 'maestro-brainstorm': '-y',
|
|
288
|
-
'maestro-ui-design': '-y', 'maestro-plan': '--auto',
|
|
289
|
-
'maestro-spec-generate': '-y', 'quality-test': '--auto-fix',
|
|
290
|
-
'quality-retrospective': '--auto-yes', 'maestro-roadmap': '-y',
|
|
291
|
-
};
|
|
149
|
+
**AUTO_FLAG_MAP** (skill → auto-confirm flag):
|
|
292
150
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
if (autoMode) {
|
|
300
|
-
const flag = node.auto_flag ?? AUTO_FLAG_MAP[node.cmd];
|
|
301
|
-
if (flag && !args.includes(flag)) args = args ? `${args} ${flag}` : flag;
|
|
302
|
-
}
|
|
303
|
-
return `$${node.cmd} ${args}`.trim();
|
|
304
|
-
}
|
|
151
|
+
| Skill | Flag |
|
|
152
|
+
|-------|------|
|
|
153
|
+
| `maestro-analyze`, `maestro-brainstorm`, `maestro-ui-design`, `maestro-spec-generate`, `maestro-roadmap` | `-y` |
|
|
154
|
+
| `maestro-plan` | `--auto` |
|
|
155
|
+
| `quality-test` | `--auto-fix` |
|
|
156
|
+
| `quality-retrospective` | `--auto-yes` |
|
|
305
157
|
|
|
306
|
-
|
|
307
|
-
// expr is "ctx.result.verification_status" or "all_phases_completed"
|
|
308
|
-
// Navigate dot-path from context root
|
|
309
|
-
if (!expr) return undefined;
|
|
310
|
-
const path = expr.replace(/^ctx\./, '').split('.');
|
|
311
|
-
let val = ctx;
|
|
312
|
-
for (const key of path) {
|
|
313
|
-
if (val == null) return undefined;
|
|
314
|
-
val = val[key];
|
|
315
|
-
}
|
|
316
|
-
return val;
|
|
317
|
-
}
|
|
158
|
+
**buildSkillCall(node, ctx, autoMode)**: Substitute `{phase}`, `{description}`, `{issue_id}`, `{milestone_num}` from context into `node.args`. If autoMode, append auto flag from `node.auto_flag` or AUTO_FLAG_MAP. Return `$${node.cmd} ${resolvedArgs}`.
|
|
318
159
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
try {
|
|
323
|
-
const parsed = typeof result.findings === 'string'
|
|
324
|
-
? JSON.parse(result.findings) : result.findings;
|
|
325
|
-
return { ...parsed, _raw_summary: result.summary, _status: result.status };
|
|
326
|
-
} catch {
|
|
327
|
-
return { _raw_summary: result.summary ?? '', _status: result.status ?? 'unknown' };
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
```
|
|
160
|
+
**resolveExpr(expr, ctx)**: Navigate dot-path (e.g. `ctx.result.verification_status`) from context root. Strip `ctx.` prefix, walk path segments, return leaf value or undefined.
|
|
161
|
+
|
|
162
|
+
**parseResultContext(result)**: Parse `result.findings` as JSON if string, merge with `_raw_summary` and `_status`. Fallback to raw summary on parse failure.
|
|
331
163
|
|
|
332
164
|
### Sub-Agent Instruction Template
|
|
333
165
|
|
|
@@ -375,12 +207,7 @@ const RESULT_SCHEMA = {
|
|
|
375
207
|
|
|
376
208
|
### Phase 3: Completion Report
|
|
377
209
|
|
|
378
|
-
|
|
379
|
-
state.completed_at = new Date().toISOString();
|
|
380
|
-
Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
|
|
381
|
-
```
|
|
382
|
-
|
|
383
|
-
Display:
|
|
210
|
+
Set `state.completed_at`, persist final `state.json`. Display:
|
|
384
211
|
```
|
|
385
212
|
=== LINK-COORDINATE COMPLETE ===
|
|
386
213
|
Session: {sessionId}
|
|
@@ -31,57 +31,28 @@ $maestro-milestone-audit "M1"
|
|
|
31
31
|
|
|
32
32
|
### Step 1: Parse Arguments
|
|
33
33
|
|
|
34
|
-
Extract milestone identifier from arguments.
|
|
35
|
-
If empty: read `current_milestone` from `.workflow/state.json`.
|
|
36
|
-
If still empty: error E001.
|
|
34
|
+
Extract milestone identifier from arguments. Fallback: read `current_milestone` from `.workflow/state.json`. If still empty: E001.
|
|
37
35
|
|
|
38
36
|
### Step 2: Load Artifact Registry
|
|
39
37
|
|
|
40
|
-
|
|
41
|
-
cat .workflow/state.json
|
|
42
|
-
cat .workflow/roadmap.md
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
- Parse `state.json.artifacts[]` filtered by milestone
|
|
46
|
-
- Parse `roadmap.md` for phase list in this milestone
|
|
47
|
-
- Group artifacts by type and phase
|
|
38
|
+
Read `.workflow/state.json` and `.workflow/roadmap.md`. Filter `artifacts[]` by milestone, parse phase list, group by type and phase.
|
|
48
39
|
|
|
49
40
|
### Step 3: Phase Coverage Check
|
|
50
41
|
|
|
51
|
-
For each phase
|
|
52
|
-
- Check for completed analyze artifact (optional but noted)
|
|
53
|
-
- Check for completed plan artifact (required)
|
|
54
|
-
- Check for completed execute artifact (required)
|
|
55
|
-
|
|
56
|
-
Report coverage matrix.
|
|
42
|
+
For each phase: check for completed analyze (optional), plan (required), execute (required) artifacts. Report coverage matrix.
|
|
57
43
|
|
|
58
44
|
### Step 4: Ad-hoc & Execution Completeness
|
|
59
45
|
|
|
60
|
-
|
|
61
|
-
- For each execute artifact, verify tasks in plan dir are all completed
|
|
46
|
+
Verify all adhoc-scoped artifacts completed. For each execute artifact, verify all tasks in plan dir completed.
|
|
62
47
|
|
|
63
48
|
### Step 5: Integration Check
|
|
64
49
|
|
|
65
|
-
Spawn Agent for cross-phase
|
|
66
|
-
- Shared interfaces compatibility
|
|
67
|
-
- Dependency chain satisfaction
|
|
68
|
-
- Data contract consistency
|
|
69
|
-
- API endpoint consistency
|
|
70
|
-
|
|
71
|
-
Write report to `.workflow/milestones/{milestone}/audit-report.md`
|
|
50
|
+
Spawn Agent for cross-phase validation: shared interfaces, dependency chains, data contracts, API consistency. Write report to `.workflow/milestones/{milestone}/audit-report.md`.
|
|
72
51
|
|
|
73
52
|
### Step 6: Verdict
|
|
74
53
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
- All phases have EXC artifacts (completed)
|
|
78
|
-
- No critical integration gaps
|
|
79
|
-
- All adhoc artifacts completed
|
|
80
|
-
|
|
81
|
-
FAIL if:
|
|
82
|
-
- Missing EXC artifacts for any phase
|
|
83
|
-
- Critical integration gaps found
|
|
84
|
-
```
|
|
54
|
+
**PASS**: All phases have completed EXC artifacts, no critical integration gaps, all adhoc completed.
|
|
55
|
+
**FAIL**: Missing EXC artifacts or critical integration gaps found.
|
|
85
56
|
|
|
86
57
|
Display structured audit report with next-step routing.
|
|
87
58
|
|
|
@@ -33,121 +33,39 @@ $maestro-milestone-complete --force "M1" # skip audit check
|
|
|
33
33
|
|
|
34
34
|
### Step 1: Parse & Validate
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
2. Determine target milestone (from args or current_milestone)
|
|
38
|
-
3. Check `--force` flag
|
|
39
|
-
4. If no milestone: **E001**
|
|
40
|
-
5. Check audit report exists at `.workflow/milestones/{milestone}/audit-report.md`
|
|
41
|
-
- Missing + not --force: **E002**
|
|
42
|
-
- Verdict FAIL + not --force: **E002**
|
|
43
|
-
6. Check all milestone artifacts completed:
|
|
44
|
-
- `state.json.artifacts.filter(a => a.milestone == target && a.status != "completed")`
|
|
45
|
-
- If any incomplete + not --force: **E003**
|
|
36
|
+
Read `.workflow/state.json` for `current_milestone`, `artifacts[]`, `milestones[]`. Determine target from args or current_milestone (E001 if none). Validate audit report at `.workflow/milestones/{milestone}/audit-report.md` with PASS verdict (E002 unless `--force`). Verify all milestone artifacts completed (E003 unless `--force`).
|
|
46
37
|
|
|
47
38
|
### Step 2: Archive Scratch Dirs
|
|
48
39
|
|
|
49
|
-
|
|
50
|
-
mkdir -p .workflow/milestones/{milestone}/artifacts/
|
|
51
|
-
|
|
52
|
-
# For each artifact path, copy to archive
|
|
53
|
-
for artifact in milestone_artifacts:
|
|
54
|
-
if dir exists .workflow/{artifact.path}:
|
|
55
|
-
cp -r .workflow/{artifact.path} .workflow/milestones/{milestone}/artifacts/$(basename {artifact.path})/
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Snapshot roadmap:
|
|
59
|
-
```bash
|
|
60
|
-
cp .workflow/roadmap.md .workflow/milestones/{milestone}/roadmap-snapshot.md
|
|
61
|
-
```
|
|
40
|
+
Copy each milestone artifact's directory to `.workflow/milestones/{milestone}/artifacts/`. Snapshot `roadmap.md` as `roadmap-snapshot.md` in the milestone archive.
|
|
62
41
|
|
|
63
42
|
### Step 3: Extract Learnings
|
|
64
43
|
|
|
65
|
-
|
|
66
|
-
- Read `reflection-log.md` if exists
|
|
67
|
-
- Extract patterns, pitfalls, strategy adjustments
|
|
68
|
-
- Check existing entries via `maestro spec load --category learning` (dedup)
|
|
69
|
-
- Append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format (category=`learning`, auto-extract keywords, date=today, source=`milestone-complete`)
|
|
70
|
-
- Avoid duplicates (check existing entries)
|
|
44
|
+
Read `.summaries/` and `reflection-log.md` from execute artifacts. Extract patterns, pitfalls, strategy adjustments. Dedup against existing entries via `maestro spec load --category learning`. Append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format (category=`learning`, auto-extract keywords, date=today, source=`milestone-complete`).
|
|
71
45
|
|
|
72
46
|
### Step 3b: Knowledge Promotion Inquiry
|
|
73
47
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
→ Ask: "Keyword '{keyword}' appears in {N} learning entries. Should this be promoted to a formal coding convention? (`/spec-add coding`)"
|
|
78
|
-
|
|
79
|
-
2. **Convention drift detection**: Compare executed task summaries against `coding-conventions.md` and `architecture-constraints.md`:
|
|
80
|
-
→ Ask: "Were any established conventions bypassed during this milestone? Should conventions be updated?"
|
|
48
|
+
1. **High-frequency patterns**: Scan learning entries for keyword overlap (>=2 entries) -- offer promotion to coding convention via `/spec-add coding`
|
|
49
|
+
2. **Convention drift**: Compare summaries against `coding-conventions.md` and `architecture-constraints.md` -- ask if conventions need updating
|
|
50
|
+
3. **Wiki island check**: Auto-trigger `wiki-connect --fix` to link new knowledge
|
|
81
51
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
If user confirms, append promoted `<spec-entry>` to target category file, preserving original date and source traceability.
|
|
52
|
+
If user confirms promotion, append `<spec-entry>` to target category file preserving original date and source.
|
|
85
53
|
|
|
86
54
|
### Step 4: Archive Artifact Entries
|
|
87
55
|
|
|
88
|
-
Move
|
|
89
|
-
|
|
90
|
-
```json
|
|
91
|
-
{
|
|
92
|
-
"milestone_history": [
|
|
93
|
-
...existing,
|
|
94
|
-
{
|
|
95
|
-
"id": "{milestone}",
|
|
96
|
-
"name": "{milestone_name}",
|
|
97
|
-
"status": "completed",
|
|
98
|
-
"completed_at": "{now}",
|
|
99
|
-
"archive_path": "milestones/{milestone}/",
|
|
100
|
-
"archived_artifacts": [ ...all milestone artifact entries... ]
|
|
101
|
-
}
|
|
102
|
-
]
|
|
103
|
-
}
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
Remove from `artifacts[]`:
|
|
107
|
-
```
|
|
108
|
-
state.json.artifacts = state.json.artifacts.filter(a => a.milestone != target)
|
|
109
|
-
```
|
|
56
|
+
Move milestone artifacts from `state.json.artifacts[]` to `milestone_history[]` with completion metadata (id, name, status, completed_at, archive_path, archived_artifacts). Remove from active `artifacts[]`.
|
|
110
57
|
|
|
111
58
|
### Step 5: Advance State
|
|
112
59
|
|
|
113
|
-
|
|
114
|
-
next = state.json.milestones.find(m => m.status == "pending")
|
|
115
|
-
if next:
|
|
116
|
-
state.json.current_milestone = next.id
|
|
117
|
-
next.status = "active"
|
|
118
|
-
else:
|
|
119
|
-
state.json.current_milestone = null
|
|
120
|
-
state.json.status = "completed"
|
|
121
|
-
|
|
122
|
-
state.json.last_updated = now()
|
|
123
|
-
Write state.json (atomic)
|
|
124
|
-
```
|
|
60
|
+
Set `current_milestone` to next pending milestone (mark it active), or set project `status: "completed"` if none remain. Atomic write to `state.json`.
|
|
125
61
|
|
|
126
62
|
### Step 6: Clean Scratch
|
|
127
63
|
|
|
128
|
-
|
|
129
|
-
for artifact in archived_artifacts:
|
|
130
|
-
rm -rf .workflow/{artifact.path}
|
|
131
|
-
```
|
|
64
|
+
Remove archived artifact directories from `.workflow/`.
|
|
132
65
|
|
|
133
66
|
### Step 7: Generate Summary & Report
|
|
134
67
|
|
|
135
|
-
Write `.workflow/milestones/{milestone}/summary.md` with outcomes and learnings.
|
|
136
|
-
Update `.workflow/project.md` Context section.
|
|
137
|
-
|
|
138
|
-
```
|
|
139
|
-
=== MILESTONE COMPLETE ===
|
|
140
|
-
Milestone: {milestone} ({name})
|
|
141
|
-
Artifacts: {count} archived
|
|
142
|
-
Next: {next_milestone or "Project complete"}
|
|
143
|
-
|
|
144
|
-
Next steps:
|
|
145
|
-
$maestro-milestone-release -- Cut release
|
|
146
|
-
$maestro-analyze -- Start next milestone
|
|
147
|
-
$manage-status -- View state
|
|
148
|
-
$manage-wiki health -- Check wiki graph health
|
|
149
|
-
$wiki-digest -- Generate knowledge digest
|
|
150
|
-
```
|
|
68
|
+
Write `.workflow/milestones/{milestone}/summary.md` with outcomes and learnings. Update `.workflow/project.md` Context section. Display completion report with next steps: `$maestro-milestone-release`, `$maestro-analyze`, `$manage-status`, `$manage-wiki health`, `$wiki-digest`.
|
|
151
69
|
|
|
152
70
|
</execution>
|
|
153
71
|
|
|
@@ -53,33 +53,15 @@ $maestro-overlay "--remove cli-verify-after-execute"
|
|
|
53
53
|
|
|
54
54
|
### Step 1: Parse User Intent
|
|
55
55
|
|
|
56
|
-
```javascript
|
|
57
|
-
functions.update_plan({
|
|
58
|
-
explanation: "Parsing overlay intent",
|
|
59
|
-
plan: [
|
|
60
|
-
{ step: "Parse intent", status: "in_progress" },
|
|
61
|
-
{ step: "Identify targets and injection points", status: "pending" },
|
|
62
|
-
{ step: "Draft overlay JSON", status: "pending" },
|
|
63
|
-
{ step: "Install and report", status: "pending" }
|
|
64
|
-
]
|
|
65
|
-
})
|
|
66
|
-
```
|
|
67
|
-
|
|
68
56
|
**Quick-exit paths**:
|
|
69
|
-
- `--list` → `
|
|
70
|
-
- `--remove <name>` → `
|
|
71
|
-
|
|
72
|
-
**Ambiguous intent**: If
|
|
73
|
-
```javascript
|
|
74
|
-
functions.request_user_input({
|
|
75
|
-
id: "overlay-clarify",
|
|
76
|
-
message: "Which command(s) should this overlay target? (e.g. maestro-execute, maestro-plan)"
|
|
77
|
-
})
|
|
78
|
-
```
|
|
57
|
+
- `--list` → run `maestro overlay list`, then stop
|
|
58
|
+
- `--remove <name>` → run `maestro overlay remove <name>`, then stop
|
|
59
|
+
|
|
60
|
+
**Ambiguous intent**: If target command or injection point unclear, ask up to 2 focused questions.
|
|
79
61
|
|
|
80
62
|
### Step 2: Identify Targets and Injection Points
|
|
81
63
|
|
|
82
|
-
|
|
64
|
+
Read pristine command source from `$PKG_ROOT/.claude/commands/<name>.md` (fallback: `~/.claude/commands/<name>.md`). Select injection point:
|
|
83
65
|
|
|
84
66
|
| Intent type | Section | Mode |
|
|
85
67
|
|-------------|---------|------|
|
|
@@ -91,81 +73,30 @@ For each likely target command, read the pristine source from `$PKG_ROOT/.claude
|
|
|
91
73
|
|
|
92
74
|
### Step 3: Draft Overlay JSON
|
|
93
75
|
|
|
94
|
-
Build
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
+ "mode": "<append|prepend|replace|new-section>",
|
|
110
|
-
+ "content": "<injected markdown content with (overlay) heading>"
|
|
111
|
-
+ }
|
|
112
|
-
+ ]
|
|
113
|
-
+}
|
|
114
|
-
*** End Patch
|
|
76
|
+
Build slug from intent (kebab-case, lowercase, max 40 chars). Write overlay to `~/.maestro/overlays/<slug>.json`:
|
|
77
|
+
|
|
78
|
+
```json
|
|
79
|
+
{
|
|
80
|
+
"name": "<slug>",
|
|
81
|
+
"description": "<short summary>",
|
|
82
|
+
"targets": ["<command-name>"],
|
|
83
|
+
"priority": 50,
|
|
84
|
+
"enabled": true,
|
|
85
|
+
"patches": [{
|
|
86
|
+
"section": "<section>",
|
|
87
|
+
"mode": "<append|prepend|replace|new-section>",
|
|
88
|
+
"content": "<injected markdown with (overlay) heading>"
|
|
89
|
+
}]
|
|
90
|
+
}
|
|
115
91
|
```
|
|
116
92
|
|
|
117
|
-
**Content guidelines**:
|
|
118
|
-
- Lead injected block with heading including `(overlay)` e.g. `## CLI Verification (overlay)`
|
|
119
|
-
- `@~/.maestro/...` references are encouraged for docs
|
|
120
|
-
- Keep content concise — overlay adds a step, not rewrites the command
|
|
121
|
-
|
|
122
|
-
```javascript
|
|
123
|
-
functions.update_plan({
|
|
124
|
-
explanation: "Overlay JSON drafted",
|
|
125
|
-
plan: [
|
|
126
|
-
{ step: "Parse intent", status: "completed" },
|
|
127
|
-
{ step: "Identify targets and injection points", status: "completed" },
|
|
128
|
-
{ step: "Draft overlay JSON", status: "completed" },
|
|
129
|
-
{ step: "Install and report", status: "in_progress" }
|
|
130
|
-
]
|
|
131
|
-
})
|
|
132
|
-
```
|
|
93
|
+
**Content guidelines**: Lead with `## Title (overlay)` heading. Use `@~/.maestro/...` references. Keep concise.
|
|
133
94
|
|
|
134
95
|
### Step 4: Install via CLI and Report
|
|
135
96
|
|
|
136
|
-
|
|
137
|
-
functions.exec_command({
|
|
138
|
-
cmd: "maestro overlay add ~/.maestro/overlays/<slug>.json",
|
|
139
|
-
workdir: "."
|
|
140
|
-
})
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
On validation failure, fix the JSON and re-run (max 2 retries).
|
|
144
|
-
|
|
145
|
-
```javascript
|
|
146
|
-
functions.update_plan({
|
|
147
|
-
explanation: "Overlay installed",
|
|
148
|
-
plan: [
|
|
149
|
-
{ step: "Parse intent", status: "completed" },
|
|
150
|
-
{ step: "Identify targets and injection points", status: "completed" },
|
|
151
|
-
{ step: "Draft overlay JSON", status: "completed" },
|
|
152
|
-
{ step: "Install and report", status: "completed" }
|
|
153
|
-
]
|
|
154
|
-
})
|
|
155
|
-
```
|
|
97
|
+
Run `maestro overlay add ~/.maestro/overlays/<slug>.json`. On validation failure, fix JSON and retry (max 2).
|
|
156
98
|
|
|
157
|
-
Display report
|
|
158
|
-
```
|
|
159
|
-
=== OVERLAY INSTALLED ===
|
|
160
|
-
Name: <slug>
|
|
161
|
-
Path: ~/.maestro/overlays/<slug>.json
|
|
162
|
-
Targets: <command> (applied), <command> (skipped: missing)
|
|
163
|
-
Scopes: [global]
|
|
164
|
-
|
|
165
|
-
Re-apply: maestro overlay apply
|
|
166
|
-
Remove: maestro overlay remove <slug>
|
|
167
|
-
Inspect: maestro overlay list
|
|
168
|
-
```
|
|
99
|
+
Display report with name, path, targets (applied/skipped), and commands for re-apply/remove/inspect.
|
|
169
100
|
|
|
170
101
|
</execution>
|
|
171
102
|
|