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
package/workflows/map.md
CHANGED
|
@@ -19,48 +19,20 @@ Codebase scanning with parallel mapper agents.
|
|
|
19
19
|
|
|
20
20
|
## Step 2: Spawn Parallel Mapper Agents
|
|
21
21
|
|
|
22
|
-
Spawn 4 parallel `workflow-codebase-mapper` agents
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
Scan: routes, handlers, components, services, models
|
|
37
|
-
Output: .workflow/research/FEATURES.md
|
|
38
|
-
Content: feature inventory, feature-to-file mapping, completeness assessment
|
|
39
|
-
|
|
40
|
-
Agent 4: concerns focus
|
|
41
|
-
Scan: error handling, logging, tests, config, security, performance
|
|
42
|
-
Output: .workflow/research/PITFALLS.md
|
|
43
|
-
Content: tech debt, missing tests, security gaps, performance concerns, known issues
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
If `$ARGUMENTS` (focus area) is provided, pass it to each agent as a focus filter: "Prioritize analysis of {focus_area} subsystem."
|
|
47
|
-
|
|
48
|
-
**Load project specs for mapper context:**
|
|
49
|
-
```
|
|
50
|
-
specs_content = maestro spec load --category arch
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
**Agent spawn pattern:**
|
|
54
|
-
```
|
|
55
|
-
For each agent (1-4) in parallel:
|
|
56
|
-
Agent({
|
|
57
|
-
subagent_type: "workflow-codebase-mapper",
|
|
58
|
-
prompt: "Focus: {focus}. Scan the codebase and write {output_file}.
|
|
59
|
-
Project specs for reference: ${specs_content}
|
|
60
|
-
Write directly to the file. Return only a confirmation with line count.",
|
|
61
|
-
run_in_background: false
|
|
62
|
-
})
|
|
63
|
-
```
|
|
22
|
+
Spawn 4 parallel `workflow-codebase-mapper` agents, each writing to `.workflow/research/`:
|
|
23
|
+
|
|
24
|
+
| Agent | Focus | Output | Content |
|
|
25
|
+
|-------|-------|--------|---------|
|
|
26
|
+
| 1 | tech | STACK.md | languages, frameworks, build tools, dependencies, versions |
|
|
27
|
+
| 2 | arch | ARCHITECTURE.md | architecture style, layers, module graph, key abstractions |
|
|
28
|
+
| 3 | features | FEATURES.md | feature inventory, feature-to-file mapping, completeness |
|
|
29
|
+
| 4 | concerns | PITFALLS.md | tech debt, missing tests, security gaps, performance issues |
|
|
30
|
+
|
|
31
|
+
If `$ARGUMENTS` provided, pass as focus filter to each agent.
|
|
32
|
+
|
|
33
|
+
Load project specs: `maestro spec load --category arch`
|
|
34
|
+
|
|
35
|
+
Each agent spawned in parallel as `workflow-codebase-mapper` subagent with specs context.
|
|
64
36
|
|
|
65
37
|
---
|
|
66
38
|
|
|
@@ -68,17 +40,8 @@ For each agent (1-4) in parallel:
|
|
|
68
40
|
|
|
69
41
|
After all 4 agents complete:
|
|
70
42
|
|
|
71
|
-
1. Verify all documents exist with
|
|
72
|
-
|
|
73
|
-
.workflow/research/STACK.md — exists, >10 lines
|
|
74
|
-
.workflow/research/ARCHITECTURE.md — exists, >10 lines
|
|
75
|
-
.workflow/research/FEATURES.md — exists, >10 lines
|
|
76
|
-
.workflow/research/PITFALLS.md — exists, >10 lines
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
2. If any document is missing or empty:
|
|
80
|
-
- Log which agent failed
|
|
81
|
-
- Re-spawn that specific agent (max 1 retry per agent)
|
|
43
|
+
1. Verify all 4 documents exist with >10 lines each.
|
|
44
|
+
2. If any missing/empty → log failure, re-spawn that agent (max 1 retry).
|
|
82
45
|
|
|
83
46
|
---
|
|
84
47
|
|
package/workflows/merge.md
CHANGED
|
@@ -8,25 +8,15 @@ Merges operate at the **milestone level** — one worktree per milestone, all ph
|
|
|
8
8
|
|
|
9
9
|
## Step 1: Parse Arguments and Flags
|
|
10
10
|
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const mFlagMatch = $ARGUMENTS.match(/-m\s+(\d+)/)
|
|
21
|
-
const cleaned = $ARGUMENTS
|
|
22
|
-
.replace(/--force|--dry-run|--no-cleanup|--continue|-m\s+\d+/g, '')
|
|
23
|
-
.trim()
|
|
24
|
-
const bareNumMatch = cleaned.match(/^(\d+)$/)
|
|
25
|
-
const milestoneNum = mFlagMatch
|
|
26
|
-
? parseInt(mFlagMatch[1])
|
|
27
|
-
: bareNumMatch
|
|
28
|
-
? parseInt(bareNumMatch[1])
|
|
29
|
-
: null
|
|
11
|
+
```
|
|
12
|
+
Timestamps use UTC+8 ISO format throughout.
|
|
13
|
+
|
|
14
|
+
Parse from $ARGUMENTS:
|
|
15
|
+
--force → force (skip incomplete-phase confirmation)
|
|
16
|
+
--dry-run → dryRun (preview only)
|
|
17
|
+
--no-cleanup → noCleanup (keep worktree after merge)
|
|
18
|
+
--continue → continueMode (resume after conflict resolution)
|
|
19
|
+
-m <N> or bare <N> → milestoneNum (1-based)
|
|
30
20
|
```
|
|
31
21
|
|
|
32
22
|
---
|
|
@@ -34,15 +24,9 @@ const milestoneNum = mFlagMatch
|
|
|
34
24
|
## Step 2: Validate Context
|
|
35
25
|
|
|
36
26
|
```
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
IF NOT file_exists(".workflow/worktrees.json"):
|
|
42
|
-
ERROR E002: "No worktree registry found. Nothing to merge."
|
|
43
|
-
EXIT
|
|
44
|
-
|
|
45
|
-
Read .workflow/worktrees.json → registry
|
|
27
|
+
Reject: .workflow/worktree-scope.json present (E001 — must run from main worktree).
|
|
28
|
+
Require: .workflow/worktrees.json (E002 — nothing to merge without registry).
|
|
29
|
+
Read registry from worktrees.json.
|
|
46
30
|
```
|
|
47
31
|
|
|
48
32
|
---
|
|
@@ -50,17 +34,8 @@ Read .workflow/worktrees.json → registry
|
|
|
50
34
|
## Step 3: Registry Health Check
|
|
51
35
|
|
|
52
36
|
```
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
IF NOT directory_exists(entry.path):
|
|
56
|
-
staleEntries.push(entry)
|
|
57
|
-
|
|
58
|
-
IF staleEntries.length > 0:
|
|
59
|
-
WARN W001: "Found {staleEntries.length} stale worktree entries (directories missing):"
|
|
60
|
-
for (entry of staleEntries):
|
|
61
|
-
Display " M{entry.milestone_num} ({entry.milestone}): {entry.path} — MISSING"
|
|
62
|
-
registry.worktrees = registry.worktrees.filter(w => !staleEntries.includes(w))
|
|
63
|
-
Write .workflow/worktrees.json: registry
|
|
37
|
+
Detect worktree entries whose directories no longer exist.
|
|
38
|
+
If stale entries found → warn (W001), remove from registry, rewrite worktrees.json.
|
|
64
39
|
```
|
|
65
40
|
|
|
66
41
|
---
|
|
@@ -68,31 +43,9 @@ IF staleEntries.length > 0:
|
|
|
68
43
|
## Step 4: Resolve Merge Target
|
|
69
44
|
|
|
70
45
|
```
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
EXIT
|
|
75
|
-
Read .workflow/.merge-state.json → mergeState
|
|
76
|
-
target = mergeState.target
|
|
77
|
-
GOTO Step_7
|
|
78
|
-
|
|
79
|
-
ELSE IF milestoneNum !== null:
|
|
80
|
-
target = registry.worktrees.find(w =>
|
|
81
|
-
w.milestone_num === milestoneNum && w.status === "active"
|
|
82
|
-
)
|
|
83
|
-
ELSE:
|
|
84
|
-
ERROR E004: "Milestone number required. Usage: maestro-merge -m <number>"
|
|
85
|
-
EXIT
|
|
86
|
-
|
|
87
|
-
IF NOT target:
|
|
88
|
-
activeList = registry.worktrees
|
|
89
|
-
.filter(w => w.status === "active")
|
|
90
|
-
.map(w => " M" + w.milestone_num + ": " + w.milestone + " (" + w.path + ")")
|
|
91
|
-
.join("\n")
|
|
92
|
-
Display "No active worktree for milestone {milestoneNum}."
|
|
93
|
-
IF activeList:
|
|
94
|
-
Display "Active worktrees:\n{activeList}"
|
|
95
|
-
EXIT
|
|
46
|
+
--continue → load target from .workflow/.merge-state.json (E003 if missing), skip to Step 7.
|
|
47
|
+
Otherwise → find active worktree for milestoneNum in registry (E004 if no milestone specified).
|
|
48
|
+
If no matching target → display active worktrees and exit.
|
|
96
49
|
```
|
|
97
50
|
|
|
98
51
|
---
|
|
@@ -100,37 +53,9 @@ IF NOT target:
|
|
|
100
53
|
## Step 5: Validate Readiness
|
|
101
54
|
|
|
102
55
|
```
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
// Read worktree state for artifact registry check
|
|
107
|
-
Read {target.path}/.workflow/state.json → wtState (if exists)
|
|
108
|
-
wtArtifacts = wtState?.artifacts ?? []
|
|
109
|
-
|
|
110
|
-
// Check phase completeness via artifact registry
|
|
111
|
-
for (phaseNum of target.owned_phases):
|
|
112
|
-
execArtifacts = wtArtifacts.filter(a => a.type === 'execute' && a.phase === phaseNum)
|
|
113
|
-
IF execArtifacts.some(a => a.status === 'completed'):
|
|
114
|
-
completedPhases.push({ phase: phaseNum })
|
|
115
|
-
ELSE:
|
|
116
|
-
status = execArtifacts.length > 0 ? execArtifacts[0].status : 'no_execute_artifact'
|
|
117
|
-
incompletePhases.push({ phase: phaseNum, status })
|
|
118
|
-
|
|
119
|
-
IF incompletePhases.length > 0 AND NOT force:
|
|
120
|
-
WARN W002: "M{target.milestone_num} ({target.milestone}) has incomplete phases:"
|
|
121
|
-
for (p of incompletePhases):
|
|
122
|
-
Display " Phase {p.phase}: {p.status}"
|
|
123
|
-
IF NOT dryRun:
|
|
124
|
-
AskUserQuestion: "Merge anyway? (y/n, or use --force)"
|
|
125
|
-
IF response !== 'y': EXIT
|
|
126
|
-
|
|
127
|
-
IF dryRun:
|
|
128
|
-
Display "=== DRY RUN ==="
|
|
129
|
-
Display " Would merge: {target.branch} → current branch"
|
|
130
|
-
Display " Milestone: M{target.milestone_num} ({target.milestone})"
|
|
131
|
-
Display " Completed: {completedPhases.map(p => p.phase).join(', ')}"
|
|
132
|
-
Display " Incomplete: {incompletePhases.map(p => p.phase + '(' + p.status + ')').join(', ')}"
|
|
133
|
-
EXIT
|
|
56
|
+
Check phase completeness via worktree artifact registry (execute artifacts → completed or incomplete).
|
|
57
|
+
If incomplete phases and not --force → warn (W002), confirm with user.
|
|
58
|
+
If --dry-run → display merge preview (branch, milestone, completed/incomplete phases) and exit.
|
|
134
59
|
```
|
|
135
60
|
|
|
136
61
|
---
|
|
@@ -138,39 +63,12 @@ IF dryRun:
|
|
|
138
63
|
## Step 6: Phase 1 — Git Merge
|
|
139
64
|
|
|
140
65
|
```
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
IF rebaseResult.exitCode !== 0:
|
|
148
|
-
WARN W003: "Conflict pulling main into worktree. Resolve in {target.path} first."
|
|
149
|
-
Display rebaseResult.output
|
|
150
|
-
Display "After resolving: cd {target.path} && git merge --continue"
|
|
151
|
-
Display "Then retry: /maestro-merge -m {target.milestone_num}"
|
|
152
|
-
EXIT
|
|
153
|
-
|
|
154
|
-
// 6b: Merge worktree branch into main
|
|
155
|
-
Display "Merging {target.branch} into current branch..."
|
|
156
|
-
mergeResult = Bash("git merge {target.branch} --no-ff -m 'merge: M{target.milestone_num} {target.milestone}' 2>&1")
|
|
157
|
-
|
|
158
|
-
IF mergeResult.exitCode !== 0:
|
|
159
|
-
Display "MERGE CONFLICT detected."
|
|
160
|
-
Display mergeResult.output
|
|
161
|
-
|
|
162
|
-
Write .workflow/.merge-state.json:
|
|
163
|
-
{
|
|
164
|
-
"target": target,
|
|
165
|
-
"phase": "git_merge_conflict",
|
|
166
|
-
"created_at": getUtc8ISOString()
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
Display ""
|
|
170
|
-
Display "Resolve conflicts, then:"
|
|
171
|
-
Display " git add <resolved-files> && git merge --continue"
|
|
172
|
-
Display " /maestro-merge --continue"
|
|
173
|
-
EXIT
|
|
66
|
+
6a: Pull main into worktree branch (cd {target.path} && git merge main --no-edit).
|
|
67
|
+
On conflict → warn (W003), instruct to resolve in worktree, exit.
|
|
68
|
+
|
|
69
|
+
6b: Merge worktree branch into main (git merge {target.branch} --no-ff).
|
|
70
|
+
On conflict → save .workflow/.merge-state.json {target, phase:"git_merge_conflict"},
|
|
71
|
+
instruct: resolve, git merge --continue, then /maestro-merge --continue. Exit.
|
|
174
72
|
|
|
175
73
|
Display "Git merge successful."
|
|
176
74
|
```
|
|
@@ -182,63 +80,19 @@ Display "Git merge successful."
|
|
|
182
80
|
```
|
|
183
81
|
Step_7:
|
|
184
82
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
IF directory_exists(srcDir):
|
|
199
|
-
Bash("mkdir -p {dstDir} && cp -r {srcDir}/* {dstDir}/")
|
|
200
|
-
|
|
201
|
-
// 7b: Merge artifact registries
|
|
202
|
-
mainArtifacts = mainState.artifacts ?? []
|
|
203
|
-
existingIds = new Set(mainArtifacts.map(a => a.id))
|
|
204
|
-
for (art of wtArtifacts):
|
|
205
|
-
IF existingIds.has(art.id):
|
|
206
|
-
// Update existing artifact status
|
|
207
|
-
idx = mainArtifacts.findIndex(a => a.id === art.id)
|
|
208
|
-
mainArtifacts[idx] = art
|
|
209
|
-
ELSE:
|
|
210
|
-
mainArtifacts.push(art)
|
|
211
|
-
mainState.artifacts = mainArtifacts
|
|
212
|
-
|
|
213
|
-
// Record merge in transition history
|
|
214
|
-
mainState.transition_history = mainState.transition_history ?? []
|
|
215
|
-
mainState.transition_history.push({
|
|
216
|
-
milestone_num: target.milestone_num,
|
|
217
|
-
milestone: target.milestone,
|
|
218
|
-
action: "worktree_merge",
|
|
219
|
-
completed_at: getUtc8ISOString(),
|
|
220
|
-
branch: target.branch,
|
|
221
|
-
phases: target.owned_phases
|
|
222
|
-
})
|
|
223
|
-
|
|
224
|
-
// Merge accumulated context from worktree
|
|
225
|
-
IF wtState?.accumulated_context:
|
|
226
|
-
for (decision of (wtState.accumulated_context.key_decisions ?? [])):
|
|
227
|
-
IF NOT mainState.accumulated_context.key_decisions.includes(decision):
|
|
228
|
-
mainState.accumulated_context.key_decisions.push(decision)
|
|
229
|
-
for (deferred of (wtState.accumulated_context.deferred ?? [])):
|
|
230
|
-
mainState.accumulated_context.deferred.push(deferred)
|
|
231
|
-
|
|
232
|
-
mainState.last_updated = getUtc8ISOString()
|
|
233
|
-
Write .workflow/state.json: mainState
|
|
234
|
-
|
|
235
|
-
// 7c: Update roadmap.md (mark completed phases)
|
|
236
|
-
Read .workflow/roadmap.md → roadmap
|
|
237
|
-
for (phaseNum of target.owned_phases):
|
|
238
|
-
isCompleted = completedPhases.some(p => p.phase === phaseNum)
|
|
239
|
-
IF isCompleted:
|
|
240
|
-
Append " ✅ COMPLETED" to phase title line in roadmap
|
|
241
|
-
Write .workflow/roadmap.md: roadmap
|
|
83
|
+
7a: Copy milestone artifact directories from worktree → main .workflow/.
|
|
84
|
+
Filter: artifacts matching target.milestone or target.owned_phases.
|
|
85
|
+
|
|
86
|
+
7b: Merge artifact registries — update existing by ID, append new entries.
|
|
87
|
+
|
|
88
|
+
7c: Record in mainState.transition_history:
|
|
89
|
+
{ milestone_num, milestone, action:"worktree_merge", completed_at, branch, phases }
|
|
90
|
+
|
|
91
|
+
7d: Merge accumulated_context — deduplicate key_decisions, append deferred items.
|
|
92
|
+
|
|
93
|
+
Update mainState.last_updated, write .workflow/state.json.
|
|
94
|
+
|
|
95
|
+
7e: Mark completed phases in .workflow/roadmap.md with completion indicator.
|
|
242
96
|
```
|
|
243
97
|
|
|
244
98
|
---
|
|
@@ -246,18 +100,9 @@ Write .workflow/roadmap.md: roadmap
|
|
|
246
100
|
## Step 8: Cleanup
|
|
247
101
|
|
|
248
102
|
```
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
Bash("git branch -D {target.branch}")
|
|
253
|
-
|
|
254
|
-
registry.worktrees = registry.worktrees.filter(w =>
|
|
255
|
-
!(w.milestone_num === target.milestone_num && w.branch === target.branch)
|
|
256
|
-
)
|
|
257
|
-
Write .workflow/worktrees.json: registry
|
|
258
|
-
|
|
259
|
-
IF file_exists(".workflow/.merge-state.json"):
|
|
260
|
-
Bash("rm .workflow/.merge-state.json")
|
|
103
|
+
Unless --no-cleanup: remove git worktree and delete branch.
|
|
104
|
+
Remove target entry from worktrees.json registry.
|
|
105
|
+
Clean up .workflow/.merge-state.json if present.
|
|
261
106
|
```
|
|
262
107
|
|
|
263
108
|
---
|
|
@@ -12,65 +12,27 @@ Cross-phase integration audit for milestone completion. Based on artifact regist
|
|
|
12
12
|
|
|
13
13
|
2. Parse `.workflow/roadmap.md` to identify all phases belonging to this milestone
|
|
14
14
|
|
|
15
|
-
3. Group artifacts by type
|
|
16
|
-
```
|
|
17
|
-
FROM state.json.artifacts
|
|
18
|
-
WHERE milestone = target_milestone
|
|
19
|
-
GROUP BY type
|
|
20
|
-
|
|
21
|
-
→ analyze_artifacts: [ANL-001, ANL-002, ...]
|
|
22
|
-
→ plan_artifacts: [PLN-001, PLN-002, ...]
|
|
23
|
-
→ execute_artifacts: [EXC-001, EXC-002, ...]
|
|
24
|
-
→ verify_artifacts: [VRF-001, ...]
|
|
25
|
-
```
|
|
15
|
+
3. Group milestone artifacts by type → `analyze_artifacts`, `plan_artifacts`, `execute_artifacts`, `verify_artifacts`
|
|
26
16
|
|
|
27
17
|
---
|
|
28
18
|
|
|
29
19
|
## Step 2: Phase Coverage Check
|
|
30
20
|
|
|
31
|
-
For each phase
|
|
21
|
+
Parse roadmap.md phases for this milestone. For each phase, verify completed artifacts exist for analyze, plan, and execute types.
|
|
32
22
|
|
|
33
|
-
|
|
34
|
-
phases_from_roadmap = parse roadmap.md → list of { number, slug, title }
|
|
35
|
-
|
|
36
|
-
coverage = {}
|
|
37
|
-
FOR each phase IN phases_from_roadmap:
|
|
38
|
-
has_analyze = artifacts.some(a => a.type == "analyze" && a.phase == phase.number && a.status == "completed")
|
|
39
|
-
has_plan = artifacts.some(a => a.type == "plan" && a.phase == phase.number && a.status == "completed")
|
|
40
|
-
has_execute = artifacts.some(a => a.type == "execute" && a.phase == phase.number && a.status == "completed")
|
|
41
|
-
|
|
42
|
-
coverage[phase.number] = { has_analyze, has_plan, has_execute }
|
|
43
|
-
|
|
44
|
-
IF NOT has_execute:
|
|
45
|
-
WARN: "Phase {phase.number} ({phase.title}) missing execute artifact"
|
|
46
|
-
```
|
|
23
|
+
WARN if any phase is missing its execute artifact: "Phase {number} ({title}) missing execute artifact"
|
|
47
24
|
|
|
48
25
|
---
|
|
49
26
|
|
|
50
27
|
## Step 3: Ad-hoc Completeness Check
|
|
51
28
|
|
|
52
|
-
|
|
53
|
-
adhoc_artifacts = artifacts.filter(a => a.scope == "adhoc" && a.milestone == target_milestone)
|
|
54
|
-
|
|
55
|
-
incomplete_adhoc = adhoc_artifacts.filter(a => a.status != "completed")
|
|
56
|
-
IF incomplete_adhoc.length > 0:
|
|
57
|
-
WARN: "Ad-hoc artifacts incomplete: {list ids}"
|
|
58
|
-
```
|
|
29
|
+
Check all ad-hoc artifacts (`scope == "adhoc"`) for this milestone are completed. WARN if any incomplete (list ids).
|
|
59
30
|
|
|
60
31
|
---
|
|
61
32
|
|
|
62
33
|
## Step 4: Execution Completeness Check
|
|
63
34
|
|
|
64
|
-
For each execute artifact, verify all tasks completed:
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
FOR each exc IN execute_artifacts:
|
|
68
|
-
plan_dir = exc.path
|
|
69
|
-
tasks = read all ${plan_dir}/.task/TASK-*.json
|
|
70
|
-
incomplete = tasks.filter(t => t.status != "completed" && t.status != "skipped")
|
|
71
|
-
IF incomplete.length > 0:
|
|
72
|
-
WARN: "Plan {plan_dir}: {incomplete.length} tasks not completed"
|
|
73
|
-
```
|
|
35
|
+
For each execute artifact, read `{path}/.task/TASK-*.json` and verify all tasks are completed or skipped. WARN if any tasks remain incomplete: "Plan {plan_dir}: {N} tasks not completed"
|
|
74
36
|
|
|
75
37
|
---
|
|
76
38
|
|
|
@@ -18,13 +18,7 @@ Archive completed milestone, move artifacts to history, and prepare for next.
|
|
|
18
18
|
- If NO → exit
|
|
19
19
|
- If verdict is FAIL: ERROR E002
|
|
20
20
|
|
|
21
|
-
3. Verify all artifacts completed
|
|
22
|
-
```
|
|
23
|
-
milestone_artifacts = state.json.artifacts.filter(a => a.milestone == target_milestone)
|
|
24
|
-
incomplete = milestone_artifacts.filter(a => a.status != "completed")
|
|
25
|
-
IF incomplete.length > 0:
|
|
26
|
-
ERROR E003: "Incomplete artifacts: {list ids and statuses}"
|
|
27
|
-
```
|
|
21
|
+
3. Verify all milestone artifacts have status "completed" → ERROR E003 if any incomplete (list ids and statuses)
|
|
28
22
|
|
|
29
23
|
---
|
|
30
24
|
|
|
@@ -40,12 +34,7 @@ Archive completed milestone, move artifacts to history, and prepare for next.
|
|
|
40
34
|
cp .workflow/roadmap.md .workflow/milestones/{milestone}/roadmap-snapshot.md
|
|
41
35
|
```
|
|
42
36
|
|
|
43
|
-
3. Archive scratch directories:
|
|
44
|
-
```
|
|
45
|
-
FOR each artifact IN milestone_artifacts:
|
|
46
|
-
IF directory exists at .workflow/{artifact.path}:
|
|
47
|
-
cp -r .workflow/{artifact.path} .workflow/milestones/{milestone}/artifacts/{basename}/
|
|
48
|
-
```
|
|
37
|
+
3. Archive scratch directories: copy each milestone artifact's `.workflow/{artifact.path}` to `.workflow/milestones/{milestone}/artifacts/{basename}/`
|
|
49
38
|
|
|
50
39
|
---
|
|
51
40
|
|
|
@@ -66,37 +55,16 @@ Check existing entries to avoid duplicates when appending in Step 3.
|
|
|
66
55
|
- Extract patterns discovered
|
|
67
56
|
- Extract pitfalls encountered
|
|
68
57
|
|
|
69
|
-
2. Aggregate learnings and append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format:
|
|
58
|
+
2. Aggregate learnings and append to `.workflow/specs/learnings.md` using `<spec-entry>` closed-tag format. Each entry (strategy adjustment, pattern, or pitfall) follows this template:
|
|
70
59
|
```
|
|
71
|
-
|
|
72
|
-
<spec-entry category="learning" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="milestone-complete">
|
|
73
|
-
|
|
74
|
-
### {summary}
|
|
75
|
-
|
|
76
|
-
{content}
|
|
77
|
-
Milestone: {milestone}
|
|
78
|
-
|
|
79
|
-
</spec-entry>
|
|
80
|
-
|
|
81
|
-
For each pattern:
|
|
82
|
-
<spec-entry category="learning" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="milestone-complete">
|
|
83
|
-
|
|
84
|
-
### {summary}
|
|
60
|
+
<spec-entry category="learning" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="milestone-complete">
|
|
85
61
|
|
|
86
|
-
|
|
87
|
-
Milestone: {milestone}
|
|
62
|
+
### {summary}
|
|
88
63
|
|
|
89
|
-
|
|
64
|
+
{content}
|
|
65
|
+
Milestone: {milestone}
|
|
90
66
|
|
|
91
|
-
|
|
92
|
-
<spec-entry category="learning" keywords="{auto-extracted}" date="{YYYY-MM-DD}" source="milestone-complete">
|
|
93
|
-
|
|
94
|
-
### {summary}
|
|
95
|
-
|
|
96
|
-
{content}
|
|
97
|
-
Milestone: {milestone}
|
|
98
|
-
|
|
99
|
-
</spec-entry>
|
|
67
|
+
</spec-entry>
|
|
100
68
|
```
|
|
101
69
|
|
|
102
70
|
**Keyword extraction**: Extract 3-5 domain-specific terms from the content (same rules as `spec-add`).
|
|
@@ -121,21 +89,9 @@ Check existing entries to avoid duplicates when appending in Step 3.
|
|
|
121
89
|
}
|
|
122
90
|
```
|
|
123
91
|
|
|
124
|
-
2. Clear artifacts array
|
|
125
|
-
```
|
|
126
|
-
state.json.artifacts = state.json.artifacts.filter(a => a.milestone != target_milestone)
|
|
127
|
-
```
|
|
92
|
+
2. Clear artifacts array: remove all entries where `milestone == target_milestone`
|
|
128
93
|
|
|
129
|
-
3. Advance to next milestone:
|
|
130
|
-
```
|
|
131
|
-
next_milestone = state.json.milestones.find(m => m.status == "pending")
|
|
132
|
-
IF next_milestone:
|
|
133
|
-
state.json.current_milestone = next_milestone.id
|
|
134
|
-
next_milestone.status = "active"
|
|
135
|
-
ELSE:
|
|
136
|
-
state.json.current_milestone = null
|
|
137
|
-
state.json.status = "completed"
|
|
138
|
-
```
|
|
94
|
+
3. Advance to next milestone: activate first pending milestone → set as `current_milestone`. If none pending → set `current_milestone = null`, `status = "completed"`
|
|
139
95
|
|
|
140
96
|
4. Write state.json (atomic)
|
|
141
97
|
|
|
@@ -143,12 +99,7 @@ Check existing entries to avoid duplicates when appending in Step 3.
|
|
|
143
99
|
|
|
144
100
|
## Step 5: Clean Scratch
|
|
145
101
|
|
|
146
|
-
Remove archived scratch directories:
|
|
147
|
-
```
|
|
148
|
-
FOR each artifact IN archived_artifacts:
|
|
149
|
-
IF directory exists at .workflow/{artifact.path}:
|
|
150
|
-
rm -rf .workflow/{artifact.path}
|
|
151
|
-
```
|
|
102
|
+
Remove archived scratch directories: delete `.workflow/{artifact.path}` for each archived artifact.
|
|
152
103
|
|
|
153
104
|
---
|
|
154
105
|
|