maestro-flow 0.3.15 → 0.3.17
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/agents/workflow-planner.md +24 -8
- package/.claude/commands/maestro-amend.md +300 -0
- package/.claude/commands/maestro-analyze.md +1 -49
- 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-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/.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 +4 -76
- 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 +70 -166
- package/.codex/skills/maestro-player/SKILL.md +24 -149
- 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/install-ui/ExecutionView.d.ts.map +1 -1
- package/dist/src/commands/install-ui/ExecutionView.js +4 -1
- package/dist/src/commands/install-ui/ExecutionView.js.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.js +4 -1
- package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/commands/install.js +5 -5
- package/dist/src/commands/install.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/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +31 -21
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/core/manifest.d.ts +8 -1
- package/dist/src/core/manifest.d.ts.map +1 -1
- package/dist/src/core/manifest.js +3 -1
- package/dist/src/core/manifest.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/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 +188 -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
|
@@ -144,30 +144,16 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
|
|
|
144
144
|
|
|
145
145
|
### Session Initialization
|
|
146
146
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
const maxConcurrency = concurrencyMatch ? parseInt(concurrencyMatch[1]) : 6
|
|
155
|
-
|
|
156
|
-
// Parse review-specific flags
|
|
157
|
-
const levelMatch = $ARGUMENTS.match(/--level\s+(quick|standard|deep)/)
|
|
158
|
-
const dimsMatch = $ARGUMENTS.match(/--dimensions\s+([\w,]+)/)
|
|
159
|
-
|
|
160
|
-
// Clean phase text
|
|
161
|
-
const phaseArg = $ARGUMENTS
|
|
162
|
-
.replace(/--yes|-y|--continue|--concurrency\s+\d+|-c\s+\d+|--level\s+\w+|--dimensions\s+[\w,]+/g, '')
|
|
163
|
-
.trim()
|
|
147
|
+
Parse `$ARGUMENTS` to extract:
|
|
148
|
+
- `AUTO_YES` from `--yes` / `-y`
|
|
149
|
+
- `continueMode` from `--continue`
|
|
150
|
+
- `maxConcurrency` from `--concurrency N` / `-c N` (default: 6)
|
|
151
|
+
- `levelMatch` from `--level quick|standard|deep`
|
|
152
|
+
- `dimsMatch` from `--dimensions <list>`
|
|
153
|
+
- `phaseArg` = remaining text after stripping all flags
|
|
164
154
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
168
|
-
|
|
169
|
-
Bash(`mkdir -p ${sessionFolder}`)
|
|
170
|
-
```
|
|
155
|
+
Session ID: `{YYYYMMDD}-review-P{phaseArg}-{phaseSlug}` (phaseSlug from index.json or roadmap)
|
|
156
|
+
Session folder: `.workflow/.csv-wave/{sessionId}/` — create via `mkdir -p`
|
|
171
157
|
|
|
172
158
|
### Phase 1: Phase Resolution -> CSV
|
|
173
159
|
|
|
@@ -175,10 +161,10 @@ Bash(`mkdir -p ${sessionFolder}`)
|
|
|
175
161
|
|
|
176
162
|
**Decomposition Rules**:
|
|
177
163
|
|
|
178
|
-
1. **Phase resolution**: Resolve `{phaseArg}` via
|
|
179
|
-
2. **Related session discovery**: Query `state.json.artifacts[]` for
|
|
180
|
-
3. **File collection**: Read `.task/TASK-*.json`
|
|
181
|
-
|
|
164
|
+
1. **Phase resolution**: Resolve `{phaseArg}` via `state.json` artifact registry to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`
|
|
165
|
+
2. **Related session discovery**: Query `state.json.artifacts[]` for matching phase + milestone. Extract prior quality context (verdicts, root causes, UAT gaps) from artifact outputs by type (execute → .summaries/.task/, review → review.json, debug → understanding.md, test → uat.md)
|
|
166
|
+
3. **File collection**: Read `.task/TASK-*.json` → collect `files[].path` where action != "read"
|
|
167
|
+
4. **Level detection**:
|
|
182
168
|
|
|
183
169
|
| Condition | Level |
|
|
184
170
|
|-----------|-------|
|
|
@@ -187,7 +173,7 @@ Bash(`mkdir -p ${sessionFolder}`)
|
|
|
187
173
|
| 4-19 changed files | standard |
|
|
188
174
|
| >=20 files OR phase marked critical | deep |
|
|
189
175
|
|
|
190
|
-
|
|
176
|
+
5. **Dimension selection**:
|
|
191
177
|
|
|
192
178
|
| Level | Dimensions |
|
|
193
179
|
|-------|------------|
|
|
@@ -197,9 +183,8 @@ Bash(`mkdir -p ${sessionFolder}`)
|
|
|
197
183
|
|
|
198
184
|
If `--dimensions` flag provided, override with explicit list.
|
|
199
185
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
6. **CSV generation**: One row per dimension + one aggregation row.
|
|
186
|
+
6. **Specs loading**: Read `.workflow/specs/` for project conventions (unless `--skip-specs`)
|
|
187
|
+
7. **CSV generation**: One row per dimension + one aggregation row
|
|
203
188
|
|
|
204
189
|
**Wave computation**: Simple 2-wave -- all dimension tasks = wave 1, aggregation = wave 2.
|
|
205
190
|
|
|
@@ -211,11 +196,7 @@ If `--dimensions` flag provided, override with explicit list.
|
|
|
211
196
|
|
|
212
197
|
#### Wave 1: Dimension Reviews (Parallel)
|
|
213
198
|
|
|
214
|
-
|
|
215
|
-
2. Filter rows where `wave == 1` AND `status == pending`
|
|
216
|
-
3. No prev_context needed (wave 1 has no predecessors)
|
|
217
|
-
4. Write `wave-1.csv`
|
|
218
|
-
5. Execute:
|
|
199
|
+
Filter master `tasks.csv` for `wave == 1 AND status == pending` → write `wave-1.csv` (no prev_context needed).
|
|
219
200
|
|
|
220
201
|
```javascript
|
|
221
202
|
spawn_agents_on_csv({
|
|
@@ -240,32 +221,20 @@ spawn_agents_on_csv({
|
|
|
240
221
|
})
|
|
241
222
|
```
|
|
242
223
|
|
|
243
|
-
|
|
244
|
-
7. Delete `wave-1.csv`
|
|
224
|
+
Merge `wave-1-results.csv` into master `tasks.csv`, delete `wave-1.csv`.
|
|
245
225
|
|
|
246
226
|
#### Wave 2: Aggregation + Deep-Dive
|
|
247
227
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
```
|
|
253
|
-
[Task 1: Correctness Review] Found 2 critical issues: null pointer in login handler...
|
|
254
|
-
[Task 2: Security Review] Found 1 high issue: SQL injection in query builder...
|
|
255
|
-
...
|
|
256
|
-
```
|
|
257
|
-
5. Write `wave-2.csv` with `prev_context` column
|
|
258
|
-
6. Execute `spawn_agents_on_csv` for aggregation agent
|
|
259
|
-
7. Merge results into master `tasks.csv`
|
|
260
|
-
8. Delete `wave-2.csv`
|
|
228
|
+
Filter master `tasks.csv` for `wave == 2 AND status == pending`. If all wave 1 tasks failed, skip aggregation.
|
|
229
|
+
|
|
230
|
+
Build `prev_context` from wave 1 findings (format: `[Task N: Title] summary...` per task).
|
|
231
|
+
Write `wave-2.csv` with `prev_context` column → execute `spawn_agents_on_csv` → merge results → delete `wave-2.csv`.
|
|
261
232
|
|
|
262
233
|
### Phase 3: Results Aggregation
|
|
263
234
|
|
|
264
235
|
**Objective**: Generate final results and human-readable report.
|
|
265
236
|
|
|
266
|
-
|
|
267
|
-
2. Export as `results.csv`
|
|
268
|
-
3. Build `review.json`:
|
|
237
|
+
Export master `tasks.csv` as `results.csv`. Build `review.json`:
|
|
269
238
|
|
|
270
239
|
```json
|
|
271
240
|
{
|
|
@@ -282,7 +251,7 @@ spawn_agents_on_csv({
|
|
|
282
251
|
}
|
|
283
252
|
```
|
|
284
253
|
|
|
285
|
-
|
|
254
|
+
Generate `context.md`:
|
|
286
255
|
|
|
287
256
|
```markdown
|
|
288
257
|
# Code Review Report -- Phase {phase}
|
|
@@ -315,7 +284,7 @@ spawn_agents_on_csv({
|
|
|
315
284
|
{list of created issue IDs}
|
|
316
285
|
```
|
|
317
286
|
|
|
318
|
-
|
|
287
|
+
**Verdict determination**:
|
|
319
288
|
|
|
320
289
|
| Condition | Verdict |
|
|
321
290
|
|-----------|---------|
|
|
@@ -325,7 +294,7 @@ spawn_agents_on_csv({
|
|
|
325
294
|
| Medium findings > 5 | WARN |
|
|
326
295
|
| Otherwise | PASS |
|
|
327
296
|
|
|
328
|
-
|
|
297
|
+
**Issue creation** by level threshold:
|
|
329
298
|
|
|
330
299
|
| Level | Create Issues For |
|
|
331
300
|
|-------|------------------|
|
|
@@ -333,11 +302,11 @@ spawn_agents_on_csv({
|
|
|
333
302
|
| standard | critical + high |
|
|
334
303
|
| deep | critical + high + medium |
|
|
335
304
|
|
|
336
|
-
|
|
305
|
+
**Phase index update**: Update `{artifact_dir}/index.json` with review status.
|
|
337
306
|
|
|
338
|
-
|
|
307
|
+
**Register artifact**: Append to `state.json.artifacts[]` with `type: "review"`, `id: REV-NNN`, `path: "scratch/{YYYYMMDD}-review-P{N}-{slug}"`, `depends_on: exec_art.id`. Output directory is independent scratch, not shared with plan.
|
|
339
308
|
|
|
340
|
-
|
|
309
|
+
Display summary.
|
|
341
310
|
|
|
342
311
|
### Shared Discovery Board Protocol
|
|
343
312
|
|
|
@@ -362,11 +331,7 @@ spawn_agents_on_csv({
|
|
|
362
331
|
|
|
363
332
|
#### Protocol
|
|
364
333
|
|
|
365
|
-
|
|
366
|
-
2. **Skip covered**: If discovery of same type + dedup key exists, skip
|
|
367
|
-
3. **Write immediately**: Append findings as found
|
|
368
|
-
4. **Append-only**: Never modify or delete
|
|
369
|
-
5. **Deduplicate**: Check before writing
|
|
334
|
+
Read `{session_folder}/discoveries.ndjson` before own review. Deduplicate by type + dedup key before writing. Append-only — never modify or delete.
|
|
370
335
|
|
|
371
336
|
```bash
|
|
372
337
|
echo '{"ts":"<ISO>","worker":"{id}","type":"vulnerability","data":{"location":"src/auth/login.ts:42","type":"sql_injection","severity":"critical","cwe":"CWE-89"}}' >> {session_folder}/discoveries.ndjson
|
|
@@ -30,9 +30,7 @@ $quality-sync "--since abc123 --dry-run"
|
|
|
30
30
|
|
|
31
31
|
### Step 1: Validate
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
test -d .workflow || exit 1 # E001: not initialized
|
|
35
|
-
```
|
|
33
|
+
Verify `.workflow/` directory exists — if missing, raise E001.
|
|
36
34
|
|
|
37
35
|
### Step 2: Detect Changes
|
|
38
36
|
|
|
@@ -72,14 +70,7 @@ Update `state.json`:
|
|
|
72
70
|
|
|
73
71
|
Update affected `index.json` files in phase directories if task files were modified.
|
|
74
72
|
|
|
75
|
-
Display summary:
|
|
76
|
-
```
|
|
77
|
-
=== SYNC COMPLETE ===
|
|
78
|
-
Files changed: {N}
|
|
79
|
-
Components affected: {C}
|
|
80
|
-
Features affected: {F}
|
|
81
|
-
Docs updated: {D}
|
|
82
|
-
```
|
|
73
|
+
Display summary: files changed, components affected, features affected, docs updated.
|
|
83
74
|
|
|
84
75
|
</execution>
|
|
85
76
|
|
|
@@ -55,10 +55,7 @@ No auto mode -- UAT is inherently interactive. `--auto-fix` only automates gap c
|
|
|
55
55
|
|
|
56
56
|
### Step 2: Check Active Sessions
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
find .workflow/scratch -name "uat.md" -type f 2>/dev/null | head -5
|
|
60
|
-
find .workflow/phases -name "uat.md" -type f 2>/dev/null | head -5
|
|
61
|
-
```
|
|
58
|
+
Scan `.workflow/scratch` and `.workflow/phases` for existing `uat.md` files.
|
|
62
59
|
|
|
63
60
|
- If active sessions exist and no target specified: display session table, ask user to resume or start new
|
|
64
61
|
- If `--session ID` specified: resume that session directly (skip to Step 9)
|
|
@@ -88,21 +85,7 @@ Write `{target_dir}/uat.md` with frontmatter (status, target, started), Current
|
|
|
88
85
|
|
|
89
86
|
### Step 7: Present Test (Interactive Loop)
|
|
90
87
|
|
|
91
|
-
Present one test at a time:
|
|
92
|
-
```
|
|
93
|
-
------------------------------------------------------------
|
|
94
|
-
TEST {number}/{total}: {name}
|
|
95
|
-
------------------------------------------------------------
|
|
96
|
-
|
|
97
|
-
Expected behavior:
|
|
98
|
-
{expected}
|
|
99
|
-
|
|
100
|
-
------------------------------------------------------------
|
|
101
|
-
> Type "pass" or describe what's wrong
|
|
102
|
-
------------------------------------------------------------
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
Wait for user response (plain text).
|
|
88
|
+
Present one test at a time: show `TEST {number}/{total}: {name}`, expected behavior, then prompt user to type "pass" or describe what is wrong. Wait for user response (plain text).
|
|
106
89
|
|
|
107
90
|
### Step 8: Process Response
|
|
108
91
|
|
|
@@ -142,18 +125,7 @@ Read `uat.md`, find first `result: [pending]` test, announce progress, continue
|
|
|
142
125
|
|
|
143
126
|
### Step 11: Auto-Diagnose
|
|
144
127
|
|
|
145
|
-
Cluster related gaps by component/area. Spawn one debug Agent per cluster:
|
|
146
|
-
|
|
147
|
-
```
|
|
148
|
-
Agent({
|
|
149
|
-
subagent_type: "general-purpose",
|
|
150
|
-
description: "Diagnose UAT gap cluster: {cluster_name}",
|
|
151
|
-
prompt: "Investigate UAT failures. Gaps: {gap list}. Find root cause, fix direction, affected files, evidence (file:line).",
|
|
152
|
-
run_in_background: false
|
|
153
|
-
})
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
Update `uat.md` gaps with diagnosis results (root_cause, fix_direction, affected_files).
|
|
128
|
+
Cluster related gaps by component/area. Spawn one debug Agent per cluster to investigate UAT failures — find root cause, fix direction, affected files, evidence (file:line). Update `uat.md` gaps with diagnosis results.
|
|
157
129
|
|
|
158
130
|
### Step 12: Gap Closure Decision
|
|
159
131
|
|
|
@@ -169,20 +141,7 @@ Update issue lifecycle during gap-fix loop (registered -> planning -> executing
|
|
|
169
141
|
|
|
170
142
|
### Step 13: Report
|
|
171
143
|
|
|
172
|
-
|
|
173
|
-
=== UAT RESULTS ===
|
|
174
|
-
Target: {target}
|
|
175
|
-
Smoke Tests: {smoke_count} run, {smoke_pass} passed
|
|
176
|
-
UAT Tests: {total} total
|
|
177
|
-
Passed: {passed}
|
|
178
|
-
Issues: {issues} ({blocker_count} blockers, {major_count} major)
|
|
179
|
-
Skipped: {skipped}
|
|
180
|
-
Diagnosis: {diagnosed_count}/{issues} gaps diagnosed
|
|
181
|
-
Auto-fix: {fixed_count} gaps resolved
|
|
182
|
-
|
|
183
|
-
Next steps:
|
|
184
|
-
{suggested_next_command}
|
|
185
|
-
```
|
|
144
|
+
Display summary: target, smoke test results, UAT counts (passed/issues/skipped with severity breakdown), diagnosis coverage, auto-fix results, and suggested next command.
|
|
186
145
|
</execution>
|
|
187
146
|
|
|
188
147
|
<error_codes>
|
|
@@ -139,29 +139,21 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column (empty for w
|
|
|
139
139
|
|
|
140
140
|
### Session Initialization
|
|
141
141
|
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
.replace(/--yes|-y|--continue|--concurrency\s+\d+|-c\s+\d+|--type\s+\w+|--framework\s+[\w]+/g, '')
|
|
158
|
-
.trim()
|
|
159
|
-
|
|
160
|
-
const dateStr = getUtc8ISOString().substring(0, 10).replace(/-/g, '')
|
|
161
|
-
const sessionId = `${dateStr}-testgen-P${phaseArg}-${phaseSlug}` // phaseSlug from index.json or roadmap
|
|
162
|
-
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
163
|
-
|
|
164
|
-
Bash(`mkdir -p ${sessionFolder}`)
|
|
142
|
+
```
|
|
143
|
+
Parse from $ARGUMENTS:
|
|
144
|
+
AUTO_YES ← --yes | -y
|
|
145
|
+
continueMode ← --continue
|
|
146
|
+
maxConcurrency ← --concurrency | -c N (default: 6)
|
|
147
|
+
typeFilter ← --type unit|integration|e2e (default: all)
|
|
148
|
+
framework ← --framework jest|vitest|... (default: auto-detect)
|
|
149
|
+
phaseArg ← remaining text after flag removal
|
|
150
|
+
|
|
151
|
+
Derive:
|
|
152
|
+
dateStr ← UTC+8 YYYYMMDD
|
|
153
|
+
sessionId ← "{dateStr}-testgen-P{phaseArg}-{phaseSlug}"
|
|
154
|
+
sessionFolder ← ".workflow/.csv-wave/{sessionId}"
|
|
155
|
+
|
|
156
|
+
mkdir -p {sessionFolder}
|
|
165
157
|
```
|
|
166
158
|
|
|
167
159
|
### Phase 1: Gap Analysis -> CSV
|
|
@@ -172,14 +164,9 @@ Bash(`mkdir -p ${sessionFolder}`)
|
|
|
172
164
|
|
|
173
165
|
1. **Phase resolution**: Resolve `{phaseArg}` via artifact registry in `state.json` to `.workflow/scratch/{YYYYMMDD}-{type}-{slug}/`
|
|
174
166
|
|
|
175
|
-
2. **Related session discovery**: Query `state.json.artifacts[]` for
|
|
167
|
+
2. **Related session discovery**: Query `state.json.artifacts[]` for matching phase+milestone. Extract relevant outputs by type: review -> review.json (focused test targets), debug -> understanding.md (regression targets), test -> uat.md (behavior gaps).
|
|
176
168
|
|
|
177
|
-
3. **Test infrastructure discovery**:
|
|
178
|
-
- Find config files: `jest.config.*`, `vitest.config.*`, `pytest.ini`, `.mocharc.*`
|
|
179
|
-
- Find existing test files: `*.test.*`, `*.spec.*`, `test_*`
|
|
180
|
-
- Find test utilities: `test-utils.*`, `testHelper*`, `conftest.py`
|
|
181
|
-
- Read 2-3 existing tests to learn patterns (imports, assertions, mocking)
|
|
182
|
-
- If no framework detected: Error E003
|
|
169
|
+
3. **Test infrastructure discovery**: Scan for config files (`jest.config.*`, `vitest.config.*`, `pytest.ini`, `.mocharc.*`), existing test files (`*.test.*`, `*.spec.*`, `test_*`), and test utilities. Read 2-3 existing tests to learn patterns. Error E003 if no framework detected.
|
|
183
170
|
|
|
184
171
|
3. **Gap identification**:
|
|
185
172
|
|
|
@@ -219,72 +206,35 @@ Bash(`mkdir -p ${sessionFolder}`)
|
|
|
219
206
|
|
|
220
207
|
#### Wave 1: Test Generation (Independent Parallel)
|
|
221
208
|
|
|
222
|
-
1.
|
|
223
|
-
2.
|
|
224
|
-
3. No prev_context needed (single wave, no predecessors)
|
|
225
|
-
4. Write `wave-1.csv`
|
|
226
|
-
5. Execute:
|
|
209
|
+
1. Extract wave 1 pending rows from master `tasks.csv` into `wave-1.csv` (no prev_context needed)
|
|
210
|
+
2. Execute:
|
|
227
211
|
|
|
228
212
|
```javascript
|
|
229
213
|
spawn_agents_on_csv({
|
|
230
214
|
csv_path: `${sessionFolder}/wave-1.csv`,
|
|
231
215
|
id_column: "id",
|
|
232
216
|
instruction: buildTestGenInstruction(sessionFolder),
|
|
233
|
-
max_concurrency: maxConcurrency,
|
|
234
|
-
max_runtime_seconds: 600,
|
|
217
|
+
max_concurrency: maxConcurrency, max_runtime_seconds: 600,
|
|
235
218
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
236
|
-
output_schema: {
|
|
237
|
-
type: "object",
|
|
238
|
-
properties: {
|
|
239
|
-
id: { type: "string" },
|
|
240
|
-
status: { type: "string", enum: ["completed", "failed"] },
|
|
241
|
-
findings: { type: "string" },
|
|
242
|
-
tests_created: { type: "string" },
|
|
243
|
-
coverage_delta: { type: "string" },
|
|
244
|
-
error: { type: "string" }
|
|
245
|
-
},
|
|
246
|
-
required: ["id", "status", "findings"]
|
|
247
|
-
}
|
|
219
|
+
output_schema: { id, status: [completed|failed], findings, tests_created, coverage_delta, error }
|
|
248
220
|
})
|
|
249
221
|
```
|
|
250
222
|
|
|
251
|
-
|
|
252
|
-
7. Delete `wave-1.csv`
|
|
253
|
-
|
|
254
|
-
**Agent Instruction Template** (`buildTestGenInstruction`):
|
|
223
|
+
3. Merge results into master `tasks.csv`, delete `wave-1.csv`
|
|
255
224
|
|
|
256
|
-
Each agent receives:
|
|
257
|
-
- Source file path and test type classification
|
|
258
|
-
- Detected framework and existing test patterns
|
|
259
|
-
- Gap references (requirement IDs, descriptions)
|
|
260
|
-
- RED-GREEN methodology rules:
|
|
261
|
-
1. **RED**: Write test that fails if behavior is broken (not trivially passing)
|
|
262
|
-
2. **Verify RED**: Run test -- if passes, strengthen; if fails with expected error, good
|
|
263
|
-
3. **GREEN assessment**: If source satisfies, gap was missing test; if fails, record as bug discovery
|
|
264
|
-
- Discovery board protocol for sharing test patterns and fixtures
|
|
265
|
-
- Instruction to NOT fix source code -- failing tests are valuable bug documentation
|
|
225
|
+
**Agent Instruction** (`buildTestGenInstruction`): Each agent receives source file path, test type, detected framework, existing patterns, gap references, and RED-GREEN methodology (RED: write failing test -> verify it fails -> GREEN: assess if source satisfies). Agents must NOT fix source code -- failing tests document bugs. Discovery board protocol included.
|
|
266
226
|
|
|
267
227
|
### Phase 3: Results Aggregation
|
|
268
228
|
|
|
269
229
|
**Objective**: Run full suite, generate final results and human-readable report.
|
|
270
230
|
|
|
271
|
-
1.
|
|
272
|
-
2. Export as `results.csv`
|
|
231
|
+
1. Export final `tasks.csv` as `results.csv`
|
|
273
232
|
|
|
274
|
-
|
|
275
|
-
```bash
|
|
276
|
-
{test_run_command} 2>&1 | tail -50
|
|
277
|
-
```
|
|
278
|
-
Categorize: new passing (gap filled), new failing (bug discovered), existing broken (regression).
|
|
233
|
+
2. **Run full test suite**: Categorize results as new passing (gap filled), new failing (bug discovered), existing broken (regression).
|
|
279
234
|
|
|
280
|
-
|
|
281
|
-
```
|
|
282
|
-
IF file exists "{artifact_dir}/.tests/test-gen-report.json":
|
|
283
|
-
mkdir -p "{artifact_dir}/.history"
|
|
284
|
-
mv to "{artifact_dir}/.history/test-gen-report-{TIMESTAMP}.json"
|
|
285
|
-
```
|
|
235
|
+
3. **Archive previous artifacts**: Move existing `test-gen-report.json` to `.history/` with timestamp before overwriting.
|
|
286
236
|
|
|
287
|
-
|
|
237
|
+
4. Build `test-gen-report.json`:
|
|
288
238
|
|
|
289
239
|
```json
|
|
290
240
|
{
|
|
@@ -324,49 +274,15 @@ Each agent receives:
|
|
|
324
274
|
}
|
|
325
275
|
```
|
|
326
276
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
```markdown
|
|
330
|
-
# Test Generation Report -- Phase {phase}
|
|
331
|
-
|
|
332
|
-
## Summary
|
|
333
|
-
- Framework: {framework}
|
|
334
|
-
- Source files analyzed: {file_count}
|
|
335
|
-
- Test type filter: {type_filter or "all"}
|
|
336
|
-
|
|
337
|
-
## Classification
|
|
338
|
-
| Category | Files |
|
|
339
|
-
|----------|-------|
|
|
340
|
-
| Unit | {N} |
|
|
341
|
-
| Integration | {N} |
|
|
342
|
-
| E2E | {N} |
|
|
343
|
-
| Skipped | {N} |
|
|
344
|
-
|
|
345
|
-
## Generation Results
|
|
346
|
-
| # | Source File | Type | Tests | Status | Bugs |
|
|
347
|
-
|---|-----------|------|-------|--------|------|
|
|
348
|
-
| 1 | validate.ts | unit | 4 | passing | 0 |
|
|
349
|
-
| 2 | ChatWindow.tsx | e2e | 3 | mixed | 1 |
|
|
350
|
-
|
|
351
|
-
## Test Suite Verification
|
|
352
|
-
- New tests passing: {N} (coverage gaps filled)
|
|
353
|
-
- New tests failing: {N} (bugs discovered)
|
|
354
|
-
- Existing tests broken: {N} (regressions)
|
|
355
|
-
|
|
356
|
-
## Bugs Discovered
|
|
357
|
-
{list of failing tests with descriptions -- NOT fixed, documented only}
|
|
358
|
-
|
|
359
|
-
## Next Steps
|
|
360
|
-
{suggested_next_command}
|
|
361
|
-
```
|
|
277
|
+
5. **Generate context.md**: Report with summary (framework, file count, type filter), classification table (unit/integration/e2e/skipped counts), generation results per file (source, type, tests, status, bugs), test suite verification (passing/failing/regression counts), discovered bugs, and next steps.
|
|
362
278
|
|
|
363
|
-
|
|
279
|
+
6. **Update validation.json**: Change MISSING -> COVERED for gaps that now have tests.
|
|
364
280
|
|
|
365
|
-
|
|
281
|
+
7. **Copy** `test-gen-report.json` to phase `.tests/` directory.
|
|
366
282
|
|
|
367
|
-
|
|
283
|
+
8. **Register artifact**: Append to `state.json.artifacts[]` with `type: "test"`, `id: TST-NNN`, `depends_on: exec_art.id`.
|
|
368
284
|
|
|
369
|
-
|
|
285
|
+
9. Display summary.
|
|
370
286
|
|
|
371
287
|
**Next step routing**:
|
|
372
288
|
|
|
@@ -400,11 +316,7 @@ Each agent receives:
|
|
|
400
316
|
|
|
401
317
|
#### Protocol
|
|
402
318
|
|
|
403
|
-
|
|
404
|
-
2. **Skip covered**: If discovery of same type + dedup key exists, skip
|
|
405
|
-
3. **Write immediately**: Append findings as found
|
|
406
|
-
4. **Append-only**: Never modify or delete
|
|
407
|
-
5. **Deduplicate**: Check before writing
|
|
319
|
+
Read `discoveries.ndjson` before test generation. Append-only: dedup by type+key before writing, never modify/delete.
|
|
408
320
|
|
|
409
321
|
```bash
|
|
410
322
|
echo '{"ts":"<ISO>","worker":"{id}","type":"test_pattern","data":{"name":"api-endpoint-test","file":"src/api/__tests__/users.test.ts","framework":"vitest","description":"supertest + vitest pattern for REST endpoints"}}' >> {session_folder}/discoveries.ndjson
|
|
@@ -50,9 +50,7 @@ Extract category (first token) and content (remainder) from arguments.
|
|
|
50
50
|
|
|
51
51
|
### Step 2: Validate Specs Directory
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
test -d .workflow/specs || exit 1 # E002: not initialized
|
|
55
|
-
```
|
|
53
|
+
Verify `.workflow/specs/` exists (E002).
|
|
56
54
|
|
|
57
55
|
### Step 3: Route to File
|
|
58
56
|
|
|
@@ -81,12 +79,7 @@ Append `<spec-entry>` closed-tag block to target file:
|
|
|
81
79
|
|
|
82
80
|
### Step 6: Confirm
|
|
83
81
|
|
|
84
|
-
|
|
85
|
-
Added [{category}] to {target_file}
|
|
86
|
-
Keywords: {kw1}, {kw2}, {kw3}
|
|
87
|
-
Verify: /spec-load --keyword {kw1}
|
|
88
|
-
Remove: /spec-remove <entry-id>
|
|
89
|
-
```
|
|
82
|
+
Display: category, target file, extracted keywords, and commands for verify (`/spec-load`) and remove (`/spec-remove`).
|
|
90
83
|
</execution>
|
|
91
84
|
|
|
92
85
|
<error_codes>
|
|
@@ -46,29 +46,19 @@ Extended types (`bug`, `pattern`, `decision`, `rule`, `validation`) are stored i
|
|
|
46
46
|
|
|
47
47
|
### Step 1: Validate Specs Directory
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
test -d .workflow/specs || exit 1 # E001: not initialized
|
|
51
|
-
```
|
|
49
|
+
Verify `.workflow/specs/` exists (E001).
|
|
52
50
|
|
|
53
51
|
### Step 2: Parse Arguments
|
|
54
52
|
|
|
55
|
-
Extract optional `--category` and `--keyword` flags
|
|
53
|
+
Extract optional `--category` and `--keyword` flags.
|
|
56
54
|
|
|
57
55
|
### Step 3: Load via CLI
|
|
58
56
|
|
|
59
|
-
|
|
60
|
-
maestro spec load [--category <cat>] [--keyword <word>]
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
If CLI unavailable, read files directly and apply keyword filter.
|
|
57
|
+
Run `maestro spec load [--category <cat>] [--keyword <word>]`. If CLI unavailable, read files directly and apply keyword filter.
|
|
64
58
|
|
|
65
59
|
### Step 4: Display Results
|
|
66
60
|
|
|
67
|
-
|
|
68
|
-
=== SPECS: {category} {keyword ? "keyword=" + keyword : ""} ===
|
|
69
|
-
--- {filename} ({category}) ---
|
|
70
|
-
{matched entry content (tags stripped)}
|
|
71
|
-
```
|
|
61
|
+
Show matched entries grouped by filename and category, with `<spec-entry>` tags stripped.
|
|
72
62
|
</execution>
|
|
73
63
|
|
|
74
64
|
<error_codes>
|
|
@@ -98,52 +98,19 @@ id,title,description,focus_area,output_file,deps,context_from,wave,status,findin
|
|
|
98
98
|
|
|
99
99
|
### Session Initialization
|
|
100
100
|
|
|
101
|
-
|
|
102
|
-
const AUTO_YES = $ARGUMENTS.includes('--yes') || $ARGUMENTS.includes('-y')
|
|
103
|
-
const focusArea = $ARGUMENTS.replace(/--yes|-y|--continue|--concurrency\s+\d+|-c\s+\d+/g, '').trim() || 'full'
|
|
104
|
-
const dateStr = new Date(Date.now() + 8*60*60*1000).toISOString().substring(0,10).replace(/-/g,'')
|
|
105
|
-
const sessionId = `${dateStr}-map-${focusArea.substring(0,20)}`
|
|
106
|
-
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
107
|
-
|
|
108
|
-
Bash(`mkdir -p ${sessionFolder}`)
|
|
109
|
-
Bash(`mkdir -p .workflow/codebase`)
|
|
110
|
-
```
|
|
101
|
+
Parse flags from `$ARGUMENTS` (`-y`, `-c N`, `--continue`). Extract focus area (default: "full"). Generate session ID: `{YYYYMMDD}-map-{focusArea}`. Create session folder at `.workflow/.csv-wave/{sessionId}/` and `.workflow/codebase/`.
|
|
111
102
|
|
|
112
103
|
### Phase 1: Generate tasks.csv
|
|
113
104
|
|
|
114
|
-
Generate 4 mapper rows. If
|
|
105
|
+
Generate 4 mapper rows. If focus area specified, scope descriptions to that area.
|
|
115
106
|
|
|
116
107
|
### Phase 2: Wave Execution
|
|
117
108
|
|
|
118
|
-
Single wave
|
|
119
|
-
|
|
120
|
-
```javascript
|
|
121
|
-
spawn_agents_on_csv({
|
|
122
|
-
csv_path: `${sessionFolder}/wave-1.csv`,
|
|
123
|
-
id_column: "id",
|
|
124
|
-
instruction: buildMapperInstruction(sessionFolder, focusArea),
|
|
125
|
-
max_concurrency: 4,
|
|
126
|
-
max_runtime_seconds: 600,
|
|
127
|
-
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
128
|
-
output_schema: {
|
|
129
|
-
type: "object",
|
|
130
|
-
properties: {
|
|
131
|
-
id: { type: "string" },
|
|
132
|
-
status: { type: "string", enum: ["completed", "failed"] },
|
|
133
|
-
findings: { type: "string" },
|
|
134
|
-
error: { type: "string" }
|
|
135
|
-
},
|
|
136
|
-
required: ["id", "status", "findings"]
|
|
137
|
-
}
|
|
138
|
-
})
|
|
139
|
-
```
|
|
109
|
+
Single wave -- all 4 mappers via `spawn_agents_on_csv` (max_concurrency: 4, 600s timeout). Each agent returns: id, status (completed/failed), findings, error.
|
|
140
110
|
|
|
141
111
|
### Phase 3: Write Output Files
|
|
142
112
|
|
|
143
|
-
|
|
144
|
-
2. Write to `.workflow/codebase/{output_file}`
|
|
145
|
-
3. Generate context.md summary
|
|
146
|
-
4. Display report
|
|
113
|
+
Read each agent's findings, write to `.workflow/codebase/{output_file}`, generate `context.md` summary, display report.
|
|
147
114
|
|
|
148
115
|
### Shared Discovery Board Protocol
|
|
149
116
|
|
|
@@ -35,51 +35,19 @@ Extract entry ID from arguments.
|
|
|
35
35
|
|
|
36
36
|
### Step 2: Lookup Entry
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
maestro wiki get <entry-id> --json
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
- Validate entry exists (E003 if not found)
|
|
43
|
-
- Validate entry is spec sub-node: `type` = "spec" and `parent` field set (E004 if not)
|
|
44
|
-
- Extract: title, category, keywords, container path, body preview
|
|
38
|
+
Run `maestro wiki get <entry-id> --json`. Validate: entry exists (E003), is spec sub-node with `type="spec"` and `parent` set (E004). Extract title, category, keywords, container path.
|
|
45
39
|
|
|
46
40
|
### Step 3: Confirm
|
|
47
41
|
|
|
48
42
|
Display entry details. Ask user to confirm unless `-y` flag present.
|
|
49
43
|
|
|
50
|
-
```
|
|
51
|
-
== Spec Entry to Remove ==
|
|
52
|
-
ID: {entry-id}
|
|
53
|
-
Title: {title}
|
|
54
|
-
Category: {category}
|
|
55
|
-
Keywords: {keywords}
|
|
56
|
-
Container: .workflow/specs/{filename}
|
|
57
|
-
|
|
58
|
-
Remove this entry? [y/N]
|
|
59
|
-
```
|
|
60
|
-
|
|
61
44
|
### Step 4: Remove
|
|
62
45
|
|
|
63
|
-
|
|
64
|
-
maestro wiki remove-entry <entry-id>
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
WikiIndexer auto-updates `.workflow/wiki-index.json`.
|
|
46
|
+
Run `maestro wiki remove-entry <entry-id>`. WikiIndexer auto-updates `wiki-index.json`.
|
|
68
47
|
|
|
69
48
|
### Step 5: Verify & Report
|
|
70
49
|
|
|
71
|
-
|
|
72
|
-
maestro wiki get <entry-id> # should return not-found
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
== Entry Removed ==
|
|
77
|
-
ID: {entry-id}
|
|
78
|
-
From: .workflow/specs/{filename}
|
|
79
|
-
|
|
80
|
-
To verify: maestro wiki list --type spec --category {category}
|
|
81
|
-
To re-add: /spec-add {category} {content}
|
|
82
|
-
```
|
|
50
|
+
Confirm removal via `maestro wiki get <entry-id>` (should return not-found). Display removed ID, source file, and commands for verify/re-add.
|
|
83
51
|
</execution>
|
|
84
52
|
|
|
85
53
|
<error_codes>
|