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
|
@@ -53,7 +53,14 @@ $ARGUMENTS — user intent text, or special flags.
|
|
|
53
53
|
| refactor, cleanup, debt | `quality-refactor` | $quality-refactor |
|
|
54
54
|
| feature, implement, add, build | `feature` | $maestro-plan → $maestro-execute → $maestro-verify |
|
|
55
55
|
| review, check, audit | `quality-review` | $quality-review |
|
|
56
|
-
| deploy, release, ship | `deploy` | $maestro-verify → $maestro-
|
|
56
|
+
| deploy, release, ship | `deploy` | $maestro-verify → $maestro-milestone-release |
|
|
57
|
+
| brainstorm, explore, ideate | `brainstorm-driven` | $maestro-brainstorm → $maestro-plan → $maestro-execute → $maestro-verify |
|
|
58
|
+
| plan, design, architect | `plan` | $maestro-plan |
|
|
59
|
+
| debug, diagnose, troubleshoot | `debug` | $quality-debug |
|
|
60
|
+
| continue, next, go | `state_continue` | (from project state) |
|
|
61
|
+
| status, dashboard | `status` | $manage-status |
|
|
62
|
+
|
|
63
|
+
Full chain map with 40+ chains: see `@~/.maestro/workflows/maestro.codex.md` §3c
|
|
57
64
|
</chain_map>
|
|
58
65
|
|
|
59
66
|
<barrier_skills>
|
|
@@ -72,36 +79,15 @@ After a barrier skill completes **in its spawned sub-agent**, coordinator reads
|
|
|
72
79
|
|
|
73
80
|
### Barrier Analysis Logic
|
|
74
81
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
break;
|
|
85
|
-
case 'maestro-plan':
|
|
86
|
-
const planJson = JSON.parse(Read(`${artifactPath}/plan.json`));
|
|
87
|
-
ctx.plan_dir = artifactPath;
|
|
88
|
-
ctx.task_count = planJson.tasks?.length ?? 0;
|
|
89
|
-
ctx.wave_count = planJson.waves?.length ?? 0;
|
|
90
|
-
break;
|
|
91
|
-
case 'maestro-brainstorm':
|
|
92
|
-
ctx.brainstorm_dir = artifactPath;
|
|
93
|
-
break;
|
|
94
|
-
case 'maestro-spec-generate':
|
|
95
|
-
ctx.spec_session_id = extractSpecId(artifactPath);
|
|
96
|
-
break;
|
|
97
|
-
case 'maestro-execute':
|
|
98
|
-
const execResults = Read(`${artifactPath}/results.csv`);
|
|
99
|
-
ctx.exec_completed = countStatus(execResults, 'completed');
|
|
100
|
-
ctx.exec_failed = countStatus(execResults, 'failed');
|
|
101
|
-
break;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
```
|
|
82
|
+
After each barrier skill completes, read its artifacts and update `state.context`:
|
|
83
|
+
|
|
84
|
+
| Barrier Skill | Read | Context Updates |
|
|
85
|
+
|---------------|------|-----------------|
|
|
86
|
+
| `maestro-analyze` | `{artifacts}/context.md` | `analysis_dir`, `gaps` (extracted), `phase` (if unset) |
|
|
87
|
+
| `maestro-plan` | `{artifacts}/plan.json` | `plan_dir`, `task_count`, `wave_count` from plan JSON |
|
|
88
|
+
| `maestro-brainstorm` | `{artifacts}/` | `brainstorm_dir` |
|
|
89
|
+
| `maestro-spec-generate` | `{artifacts}/` | `spec_session_id` (extracted) |
|
|
90
|
+
| `maestro-execute` | `{artifacts}/results.csv` | `exec_completed`, `exec_failed` (counted by status) |
|
|
105
91
|
</barrier_skills>
|
|
106
92
|
|
|
107
93
|
<execution>
|
|
@@ -116,23 +102,17 @@ function analyzeBarrierArtifacts(step, result, ctx) {
|
|
|
116
102
|
3. Otherwise classify intent via keyword heuristics (see chain_map)
|
|
117
103
|
4. No match + not AUTO_YES → one clarifying question via `AskUserQuestion`
|
|
118
104
|
5. Resolve chain's skill list
|
|
119
|
-
6.
|
|
120
|
-
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
waves: [],
|
|
131
|
-
steps: chain.map((skill, i) => ({
|
|
132
|
-
step_n: i + 1, skill: skill.cmd, args: skill.args ?? '',
|
|
133
|
-
status: "pending", wave_n: null
|
|
134
|
-
}))
|
|
135
|
-
}, null, 2));
|
|
105
|
+
6. Create session dir `.workflow/.maestro-coordinate/MCC-{dateStr}-{timeStr}/` and write `state.json`:
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"id": "MCC-{dateStr}-{timeStr}", "intent": "...", "chain": "...",
|
|
110
|
+
"auto_yes": false, "status": "in_progress", "started_at": "ISO",
|
|
111
|
+
"context": { "phase": null, "plan_dir": null, "analysis_dir": null,
|
|
112
|
+
"brainstorm_dir": null, "spec_session_id": null, "gaps": null },
|
|
113
|
+
"waves": [],
|
|
114
|
+
"steps": [{ "step_n": 1, "skill": "...", "args": "", "status": "pending", "wave_n": null }]
|
|
115
|
+
}
|
|
136
116
|
```
|
|
137
117
|
|
|
138
118
|
**`--dry-run`**: Display chain with `[BARRIER]` markers, stop.
|
|
@@ -141,95 +121,41 @@ Write(`${sessionDir}/state.json`, JSON.stringify({
|
|
|
141
121
|
|
|
142
122
|
### Phase 2: Wave Execution Loop
|
|
143
123
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
output_csv_path: `${sessionDir}/wave-${waveNum}-results.csv`,
|
|
163
|
-
output_schema: RESULT_SCHEMA
|
|
164
|
-
});
|
|
165
|
-
|
|
166
|
-
// Read results, update status
|
|
167
|
-
const results = readCSV(`${sessionDir}/wave-${waveNum}-results.csv`);
|
|
168
|
-
for (const row of results) {
|
|
169
|
-
const step = state.steps.find(s => s.step_n === parseInt(row.id));
|
|
170
|
-
step.status = row.status; step.findings = row.findings; step.wave_n = waveNum;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// Barrier: read artifacts, update context (NOT execute — skill already ran in sub-agent)
|
|
174
|
-
if (isBarrier(waveSteps[0].skill)) {
|
|
175
|
-
analyzeBarrierArtifacts(waveSteps[0], results[0], state.context);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// Persist + abort check
|
|
179
|
-
state.waves.push({ wave_n: waveNum, steps: waveSteps.map(s => s.step_n), results });
|
|
180
|
-
Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
|
|
181
|
-
|
|
182
|
-
if (results.some(r => r.status === 'failed')) {
|
|
183
|
-
state.status = 'aborted';
|
|
184
|
-
state.steps.filter(s => s.status === 'pending').forEach(s => s.status = 'skipped');
|
|
185
|
-
Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
|
|
186
|
-
break;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
```
|
|
124
|
+
**While pending steps remain**, increment `waveNum` and repeat:
|
|
125
|
+
|
|
126
|
+
1. **Build wave**: Select next wave steps via `buildNextWave` (barrier = solo, non-barriers = grouped)
|
|
127
|
+
2. **Write CSV**: `{sessionDir}/wave-{N}.csv` with columns `id,skill_call,topic` — one row per step, skill_call assembled with resolved context
|
|
128
|
+
3. **Spawn**:
|
|
129
|
+
```
|
|
130
|
+
spawn_agents_on_csv({
|
|
131
|
+
csv_path: "{sessionDir}/wave-{N}.csv",
|
|
132
|
+
id_column: "id", instruction: WAVE_INSTRUCTION,
|
|
133
|
+
max_workers: <wave size>, max_runtime_seconds: 1800,
|
|
134
|
+
output_csv_path: "{sessionDir}/wave-{N}-results.csv",
|
|
135
|
+
output_schema: RESULT_SCHEMA
|
|
136
|
+
})
|
|
137
|
+
```
|
|
138
|
+
4. **Read results**: Update each step's `status`, `findings`, `wave_n` from results CSV
|
|
139
|
+
5. **Barrier check**: If wave was a barrier skill, run barrier analysis logic (read artifacts, update context)
|
|
140
|
+
6. **Persist**: Append wave to `state.waves[]`, write `state.json`
|
|
141
|
+
7. **Abort on failure**: If any result `status === 'failed'` → mark remaining steps `skipped`, set `state.status = 'aborted'`, break
|
|
190
142
|
|
|
191
143
|
### Skill Call Assembly
|
|
192
144
|
|
|
193
|
-
|
|
194
|
-
const BARRIER_SKILLS = new Set([
|
|
195
|
-
'maestro-analyze', 'maestro-plan', 'maestro-brainstorm',
|
|
196
|
-
'maestro-spec-generate', 'maestro-execute'
|
|
197
|
-
]);
|
|
198
|
-
const AUTO_FLAG_MAP = {
|
|
199
|
-
'maestro-analyze': '-y', 'maestro-brainstorm': '-y',
|
|
200
|
-
'maestro-ui-design': '-y', 'maestro-plan': '--auto',
|
|
201
|
-
'maestro-spec-generate': '-y', 'quality-test': '--auto-fix',
|
|
202
|
-
'quality-retrospective': '--auto-yes',
|
|
203
|
-
};
|
|
204
|
-
|
|
205
|
-
function buildSkillCall(step, ctx) {
|
|
206
|
-
let args = (step.args ?? '')
|
|
207
|
-
.replace(/{phase}/g, ctx.phase ?? '')
|
|
208
|
-
.replace(/{description}/g, state.intent ?? '')
|
|
209
|
-
.replace(/{issue_id}/g, ctx.issue_id ?? '')
|
|
210
|
-
.replace(/{plan_dir}/g, ctx.plan_dir ?? '')
|
|
211
|
-
.replace(/{analysis_dir}/g, ctx.analysis_dir ?? '')
|
|
212
|
-
.replace(/{brainstorm_dir}/g, ctx.brainstorm_dir ?? '')
|
|
213
|
-
.replace(/{spec_session_id}/g, ctx.spec_session_id ?? '');
|
|
214
|
-
if (state.auto_yes) {
|
|
215
|
-
const flag = AUTO_FLAG_MAP[step.skill];
|
|
216
|
-
if (flag && !args.includes(flag)) args = args ? `${args} ${flag}` : flag;
|
|
217
|
-
}
|
|
218
|
-
return `$${step.skill} ${args}`.trim();
|
|
219
|
-
}
|
|
145
|
+
**Barrier skills**: `maestro-analyze`, `maestro-plan`, `maestro-brainstorm`, `maestro-spec-generate`, `maestro-execute`
|
|
220
146
|
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
147
|
+
**Auto-yes flag map** (appended when `state.auto_yes` is true):
|
|
148
|
+
|
|
149
|
+
| Skill | Flag |
|
|
150
|
+
|-------|------|
|
|
151
|
+
| `maestro-analyze`, `maestro-brainstorm`, `maestro-ui-design`, `maestro-spec-generate` | `-y` |
|
|
152
|
+
| `maestro-plan` | `--auto` |
|
|
153
|
+
| `quality-test` | `--auto-fix` |
|
|
154
|
+
| `quality-retrospective` | `--auto-yes` |
|
|
155
|
+
|
|
156
|
+
**`buildSkillCall(step, ctx)`**: Replace placeholders `{phase}`, `{description}`, `{issue_id}`, `{plan_dir}`, `{analysis_dir}`, `{brainstorm_dir}`, `{spec_session_id}` in `step.args` with corresponding `ctx` values. Append auto-yes flag if applicable. Return `$<skill> <args>`.
|
|
157
|
+
|
|
158
|
+
**`buildNextWave(steps)`**: Take first pending step. If it is a barrier skill, return it solo. Otherwise, collect consecutive non-barrier pending steps into one wave (stop at first barrier).
|
|
233
159
|
|
|
234
160
|
### Sub-Agent Instruction Template
|
|
235
161
|
|
|
@@ -252,19 +178,7 @@ function buildNextWave(steps) {
|
|
|
252
178
|
|
|
253
179
|
### Result Schema
|
|
254
180
|
|
|
255
|
-
|
|
256
|
-
const RESULT_SCHEMA = {
|
|
257
|
-
type: "object",
|
|
258
|
-
properties: {
|
|
259
|
-
status: { type: "string", enum: ["completed", "failed"] },
|
|
260
|
-
skill_call: { type: "string" },
|
|
261
|
-
summary: { type: "string" },
|
|
262
|
-
artifacts: { type: "string" },
|
|
263
|
-
error: { type: "string" }
|
|
264
|
-
},
|
|
265
|
-
required: ["status", "skill_call", "summary", "artifacts", "error"]
|
|
266
|
-
};
|
|
267
|
-
```
|
|
181
|
+
Object with all fields required: `status` ("completed"|"failed"), `skill_call` (string), `summary` (string), `artifacts` (path or ""), `error` (reason or "").
|
|
268
182
|
|
|
269
183
|
### Phase 3: Completion Report
|
|
270
184
|
|
|
@@ -161,71 +161,37 @@ Each wave generates `wave-{N}.csv` with extra `prev_context` column.
|
|
|
161
161
|
|
|
162
162
|
### Session Initialization
|
|
163
163
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
// --gaps → issue root cause analysis
|
|
196
|
-
scope = 'gaps'
|
|
197
|
-
slug = gapsIssueId ? gapsIssueId.toLowerCase().replace(/[^a-z0-9]+/g, '-') : 'issue-gaps'
|
|
198
|
-
} else if (subjectArg === '') {
|
|
199
|
-
// No args → milestone-wide
|
|
200
|
-
if (state.current_milestone && fileExists('.workflow/roadmap.md')) {
|
|
201
|
-
scope = 'milestone'
|
|
202
|
-
slug = slugify(state.milestones.find(m => m.id === state.current_milestone)?.name || state.current_milestone)
|
|
203
|
-
} else {
|
|
204
|
-
ERROR('E001: No args and no roadmap — provide topic text or create roadmap first')
|
|
205
|
-
}
|
|
206
|
-
} else if (/^\d+$/.test(subjectArg)) {
|
|
207
|
-
// Phase number
|
|
208
|
-
if (state.current_milestone && fileExists('.workflow/roadmap.md')) {
|
|
209
|
-
scope = 'phase'
|
|
210
|
-
phaseNum = parseInt(subjectArg)
|
|
211
|
-
slug = resolvePhaseSlugFromRoadmap(phaseNum) // parse roadmap.md for phase N slug
|
|
212
|
-
} else {
|
|
213
|
-
ERROR('Phase number requires init + roadmap')
|
|
214
|
-
}
|
|
215
|
-
} else {
|
|
216
|
-
// Text → adhoc or standalone
|
|
217
|
-
slug = subjectArg.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
|
|
218
|
-
scope = state.current_milestone ? 'adhoc' : 'standalone'
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
const dateStr = getUtc8ISOString().substring(0, 10)
|
|
222
|
-
const sessionId = `${dateStr}-analyze-${slug}`
|
|
223
|
-
const sessionFolder = `.workflow/.csv-wave/${sessionId}`
|
|
224
|
-
const scratchDir = `.workflow/scratch/${dateStr}-analyze-${slug}`
|
|
225
|
-
|
|
226
|
-
Bash(`mkdir -p ${sessionFolder}`)
|
|
227
|
-
Bash(`mkdir -p ${scratchDir}`)
|
|
228
|
-
```
|
|
164
|
+
**Parse from `$ARGUMENTS`**:
|
|
165
|
+
|
|
166
|
+
| Variable | Source | Default |
|
|
167
|
+
|----------|--------|---------|
|
|
168
|
+
| `AUTO_YES` | `--yes` or `-y` | false |
|
|
169
|
+
| `continueMode` | `--continue` | false |
|
|
170
|
+
| `maxConcurrency` | `--concurrency N` or `-c N` | 6 |
|
|
171
|
+
| `QUICK_MODE` | `-q` or `--quick` | false |
|
|
172
|
+
| `GAPS_MODE` | `--gaps` | false |
|
|
173
|
+
| `gapsIssueId` | `--gaps ISS-{id}` | null |
|
|
174
|
+
| `subjectArg` | remaining text after flag removal | "" |
|
|
175
|
+
|
|
176
|
+
**Auto-bootstrap**: If `.workflow/state.json` missing, create minimal `{ project: null, status: "active", current_milestone: null, artifacts: [] }`.
|
|
177
|
+
|
|
178
|
+
**Scope determination** (from `state.json` + `subjectArg`):
|
|
179
|
+
|
|
180
|
+
| Condition | Scope | Slug |
|
|
181
|
+
|-----------|-------|------|
|
|
182
|
+
| `GAPS_MODE` | `gaps` | `gapsIssueId` slugified or `"issue-gaps"` |
|
|
183
|
+
| Empty subject + milestone + roadmap | `milestone` | milestone name slugified |
|
|
184
|
+
| Empty subject, no roadmap | ERROR: `"E001: No args and no roadmap"` | — |
|
|
185
|
+
| Numeric subject + milestone + roadmap | `phase` | phase slug from roadmap |
|
|
186
|
+
| Numeric subject, no roadmap | ERROR: `"Phase number requires init + roadmap"` | — |
|
|
187
|
+
| Text subject + milestone | `adhoc` | subject slugified (max 40 chars) |
|
|
188
|
+
| Text subject, no milestone | `standalone` | subject slugified (max 40 chars) |
|
|
189
|
+
|
|
190
|
+
**Session paths** (UTC+8 date prefix):
|
|
191
|
+
- `sessionFolder`: `.workflow/.csv-wave/{YYYYMMDD}-analyze-{slug}/`
|
|
192
|
+
- `scratchDir`: `.workflow/scratch/{YYYYMMDD}-analyze-{slug}/`
|
|
193
|
+
|
|
194
|
+
Create both directories.
|
|
229
195
|
|
|
230
196
|
### Phase 1: Subject Resolution -> CSV
|
|
231
197
|
|
|
@@ -278,11 +244,7 @@ Available exploration dimensions:
|
|
|
278
244
|
|
|
279
245
|
#### Wave 1: CLI Exploration (Parallel) [SKIP in -q mode]
|
|
280
246
|
|
|
281
|
-
1
|
|
282
|
-
2. Filter rows where `wave == 1` AND `status == pending`
|
|
283
|
-
3. No prev_context needed (wave 1 has no predecessors)
|
|
284
|
-
4. Write `wave-1.csv`
|
|
285
|
-
5. Execute:
|
|
247
|
+
Filter `wave == 1 && status == pending` from master CSV. No prev_context (no predecessors). Write `wave-1.csv`.
|
|
286
248
|
|
|
287
249
|
```javascript
|
|
288
250
|
spawn_agents_on_csv({
|
|
@@ -292,43 +254,22 @@ spawn_agents_on_csv({
|
|
|
292
254
|
max_concurrency: maxConcurrency,
|
|
293
255
|
max_runtime_seconds: 600,
|
|
294
256
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
295
|
-
output_schema: {
|
|
296
|
-
|
|
297
|
-
properties: {
|
|
298
|
-
id: { type: "string" },
|
|
299
|
-
status: { type: "string", enum: ["completed", "failed"] },
|
|
300
|
-
findings: { type: "string" },
|
|
301
|
-
score: { type: "string" },
|
|
302
|
-
recommendations: { type: "string" },
|
|
303
|
-
error: { type: "string" }
|
|
304
|
-
},
|
|
305
|
-
required: ["id", "status", "findings"]
|
|
306
|
-
}
|
|
257
|
+
output_schema: { id, status: ["completed"|"failed"], findings, score, recommendations, error }
|
|
258
|
+
// required: id, status, findings
|
|
307
259
|
})
|
|
308
260
|
```
|
|
309
261
|
|
|
310
|
-
|
|
311
|
-
7. Delete `wave-1.csv`
|
|
262
|
+
Merge results into master `tasks.csv`, delete `wave-1.csv`.
|
|
312
263
|
|
|
313
|
-
**Exploration agent responsibilities
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
- Layer 3: Code Anchor Extraction (detail) -- each key finding: extract code snippet (20-50 lines) with file:line
|
|
264
|
+
**Exploration agent responsibilities** (3-layer per dimension):
|
|
265
|
+
1. **Module Discovery** (breadth) -- keyword search, relevant files, module boundaries
|
|
266
|
+
2. **Structure Tracing** (depth) -- top 3-5 files: call chains 2-3 levels, data flow
|
|
267
|
+
3. **Code Anchor Extraction** (detail) -- code snippet (20-50 lines) with file:line per finding
|
|
318
268
|
- Share findings via discovery board
|
|
319
269
|
|
|
320
270
|
#### Wave 2: 6-Dimension Scoring (Parallel) [SKIP in -q mode]
|
|
321
271
|
|
|
322
|
-
|
|
323
|
-
2. Filter rows where `wave == 2` AND `status == pending`
|
|
324
|
-
3. Build `prev_context` from wave 1 findings:
|
|
325
|
-
```
|
|
326
|
-
[Task 1: Explore Architecture] Module boundaries: src/auth/, src/api/, src/core/. Key pattern: repository layer...
|
|
327
|
-
[Task 2: Explore Implementation] Error handling: Result type pattern. Type coverage: 85%...
|
|
328
|
-
[Task 3: Explore Performance] Hot path: request handler chain (3 middleware). No async bottlenecks...
|
|
329
|
-
```
|
|
330
|
-
4. Write `wave-2.csv` with `prev_context` column
|
|
331
|
-
5. Execute:
|
|
272
|
+
Filter `wave == 2 && status == pending` from master CSV. Build `prev_context` from wave 1 findings (format: `[Task N: Title] summary...` per exploration task). Write `wave-2.csv` with `prev_context` column.
|
|
332
273
|
|
|
333
274
|
```javascript
|
|
334
275
|
spawn_agents_on_csv({
|
|
@@ -338,23 +279,12 @@ spawn_agents_on_csv({
|
|
|
338
279
|
max_concurrency: maxConcurrency,
|
|
339
280
|
max_runtime_seconds: 600,
|
|
340
281
|
output_csv_path: `${sessionFolder}/wave-2-results.csv`,
|
|
341
|
-
output_schema: {
|
|
342
|
-
|
|
343
|
-
properties: {
|
|
344
|
-
id: { type: "string" },
|
|
345
|
-
status: { type: "string", enum: ["completed", "failed"] },
|
|
346
|
-
findings: { type: "string" },
|
|
347
|
-
score: { type: "string" },
|
|
348
|
-
recommendations: { type: "string" },
|
|
349
|
-
error: { type: "string" }
|
|
350
|
-
},
|
|
351
|
-
required: ["id", "status", "findings", "score"]
|
|
352
|
-
}
|
|
282
|
+
output_schema: { id, status: ["completed"|"failed"], findings, score, recommendations, error }
|
|
283
|
+
// required: id, status, findings, score
|
|
353
284
|
})
|
|
354
285
|
```
|
|
355
286
|
|
|
356
|
-
|
|
357
|
-
7. Delete `wave-2.csv`
|
|
287
|
+
Merge results into master `tasks.csv`, delete `wave-2.csv`.
|
|
358
288
|
|
|
359
289
|
**Scoring agent responsibilities** (6 dimensions):
|
|
360
290
|
|
|
@@ -371,22 +301,13 @@ Each score MUST include specific evidence (code refs, data points from explorati
|
|
|
371
301
|
|
|
372
302
|
#### Wave 3: Decision Synthesis (Single Agent)
|
|
373
303
|
|
|
374
|
-
1
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
[Task 5: Score Impact] Score: 90. High user value, significant DX improvement...
|
|
382
|
-
[Task 6: Score Risk] Score: 40. Main risk: auth regression. Mitigation: incremental rollout...
|
|
383
|
-
...
|
|
384
|
-
```
|
|
385
|
-
- Quick mode: from loaded project context (project.md, roadmap, brainstorm artifacts)
|
|
386
|
-
5. Write `wave-3.csv` (or `wave-1.csv` in quick mode) with `prev_context` column
|
|
387
|
-
6. Execute `spawn_agents_on_csv` for synthesis agent
|
|
388
|
-
7. Merge results into master `tasks.csv`
|
|
389
|
-
8. Delete temporary CSV
|
|
304
|
+
Filter `wave == 3` (or wave 1 in quick mode) `&& status == pending`. If full mode and all wave 2 failed, fall back to available exploration context.
|
|
305
|
+
|
|
306
|
+
**prev_context source**:
|
|
307
|
+
- Full mode: wave 2 scoring findings (format: `[Task N: Score Dim] Score: X. summary...`)
|
|
308
|
+
- Quick mode: loaded project context (project.md, roadmap, brainstorm artifacts)
|
|
309
|
+
|
|
310
|
+
Write wave CSV with `prev_context`, execute `spawn_agents_on_csv` for synthesis agent, merge results, delete temp CSV.
|
|
390
311
|
|
|
391
312
|
**Synthesis agent responsibilities**:
|
|
392
313
|
- Compile dimension scores into analysis.md (full mode):
|
|
@@ -486,28 +407,9 @@ Each score MUST include specific evidence (code refs, data points from explorati
|
|
|
486
407
|
}
|
|
487
408
|
```
|
|
488
409
|
|
|
489
|
-
6. **Auto-create issues from Deferred items**:
|
|
490
|
-
|
|
491
|
-
```
|
|
492
|
-
deferred_items = decisions.filter(d => d.classification == "Deferred")
|
|
493
|
-
|
|
494
|
-
IF deferred_items.length > 0:
|
|
495
|
-
mkdir -p ".workflow/issues"
|
|
496
|
-
FOR each item IN deferred_items:
|
|
497
|
-
Append issue to .workflow/issues/issues.jsonl
|
|
498
|
-
Print: "Created {N} deferred issues for tracking"
|
|
499
|
-
```
|
|
410
|
+
6. **Auto-create issues from Deferred items**: Filter decisions with `classification == "Deferred"`, append each as issue to `.workflow/issues/issues.jsonl`.
|
|
500
411
|
|
|
501
|
-
7. **Register artifact in state.json**:
|
|
502
|
-
```
|
|
503
|
-
Read .workflow/state.json
|
|
504
|
-
next_id = max ANL-NNN + 1 (or 1 if none)
|
|
505
|
-
Push artifact: { id: "ANL-{next_id}", type: "analyze", milestone: current_milestone,
|
|
506
|
-
phase: phaseNum, scope: scope, path: scratchDir (relative to .workflow/),
|
|
507
|
-
status: "completed", depends_on: null, harvested: false,
|
|
508
|
-
created_at: session_start, completed_at: now() }
|
|
509
|
-
Write state.json (atomic)
|
|
510
|
-
```
|
|
412
|
+
7. **Register artifact in state.json**: Append `{ id: "ANL-{next_id}", type: "analyze", milestone, phase, scope, path: scratchDir, status: "completed", depends_on: null, harvested: false, created_at, completed_at }`.
|
|
511
413
|
8. Copy final outputs (context.md, analysis.md, conclusions.json) from CSV session folder to `scratchDir`
|
|
512
414
|
9. Display summary
|
|
513
415
|
|