maestro-flow 0.3.14 → 0.3.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/maestro-amend.md +300 -0
- package/.claude/commands/maestro-analyze.md +1 -49
- package/.claude/commands/maestro-composer.md +354 -0
- package/.claude/commands/maestro-execute.md +2 -56
- package/.claude/commands/maestro-fork.md +3 -50
- package/.claude/commands/maestro-merge.md +2 -26
- package/.claude/commands/maestro-milestone-audit.md +1 -5
- package/.claude/commands/maestro-milestone-complete.md +1 -7
- package/.claude/commands/maestro-plan.md +6 -127
- package/.claude/commands/maestro-player.md +404 -0
- package/.claude/commands/maestro-roadmap.md +3 -101
- package/.claude/commands/maestro-spec-generate.md +1 -25
- package/.claude/commands/maestro-ui-design.md +14 -73
- package/.claude/commands/maestro-verify.md +1 -32
- package/.claude/commands/maestro.md +13 -30
- package/.claude/commands/manage-harvest.md +7 -44
- package/.claude/commands/manage-knowhow-capture.md +193 -0
- package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
- package/.claude/commands/manage-learn.md +3 -28
- package/.claude/commands/manage-status.md +1 -20
- package/.claude/commands/manage-wiki.md +1 -1
- package/.claude/commands/quality-business-test.md +1 -1
- package/.claude/commands/quality-debug.md +3 -18
- package/.claude/commands/quality-integration-test.md +3 -23
- package/.claude/commands/quality-retrospective.md +1 -28
- package/.claude/commands/quality-review.md +3 -52
- package/.claude/commands/quality-test-gen.md +1 -10
- package/.claude/commands/quality-test.md +3 -25
- package/.claude/commands/spec-add.md +1 -21
- package/.claude/commands/spec-load.md +1 -16
- package/.claude/commands/wiki-connect.md +2 -112
- package/.claude/commands/wiki-digest.md +2 -141
- package/.claude/skills/skill-iter-tune/SKILL.md +382 -0
- package/.claude/skills/skill-iter-tune/phases/01-setup.md +144 -0
- package/.claude/skills/skill-iter-tune/phases/02-execute.md +292 -0
- package/.claude/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
- package/.claude/skills/skill-iter-tune/phases/04-improve.md +186 -0
- package/.claude/skills/skill-iter-tune/phases/05-report.md +166 -0
- package/.claude/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
- package/.claude/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
- package/.claude/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
- package/.claude/skills/workflow-skill-designer/SKILL.md +496 -0
- package/.claude/skills/workflow-skill-designer/phases/01-requirements-analysis.md +356 -0
- package/.claude/skills/workflow-skill-designer/phases/02-orchestrator-design.md +444 -0
- package/.claude/skills/workflow-skill-designer/phases/03-phase-design.md +458 -0
- package/.claude/skills/workflow-skill-designer/phases/04-validation.md +471 -0
- package/.codex/skills/learn-decompose/SKILL.md +2 -8
- package/.codex/skills/maestro/SKILL.md +60 -146
- package/.codex/skills/maestro-analyze/SKILL.md +52 -150
- package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
- package/.codex/skills/maestro-composer/SKILL.md +213 -0
- package/.codex/skills/maestro-execute/SKILL.md +46 -177
- package/.codex/skills/maestro-init/SKILL.md +7 -51
- package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
- package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
- package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
- package/.codex/skills/maestro-overlay/SKILL.md +23 -92
- package/.codex/skills/maestro-plan/SKILL.md +42 -166
- package/.codex/skills/maestro-player/SKILL.md +323 -0
- package/.codex/skills/maestro-quick/SKILL.md +5 -48
- package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
- package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
- package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
- package/.codex/skills/maestro-verify/SKILL.md +39 -136
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
- package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
- package/.codex/skills/manage-issue/SKILL.md +1 -6
- package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
- package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
- package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
- package/.codex/skills/manage-learn/SKILL.md +17 -71
- package/.codex/skills/manage-status/SKILL.md +4 -35
- package/.codex/skills/manage-wiki/SKILL.md +1 -1
- package/.codex/skills/quality-business-test/SKILL.md +2 -14
- package/.codex/skills/quality-debug/SKILL.md +41 -133
- package/.codex/skills/quality-integration-test/SKILL.md +36 -145
- package/.codex/skills/quality-refactor/SKILL.md +6 -59
- package/.codex/skills/quality-retrospective/SKILL.md +292 -531
- package/.codex/skills/quality-review/SKILL.md +30 -65
- package/.codex/skills/quality-sync/SKILL.md +2 -11
- package/.codex/skills/quality-test/SKILL.md +4 -45
- package/.codex/skills/quality-test-gen/SKILL.md +33 -121
- package/.codex/skills/spec-add/SKILL.md +2 -9
- package/.codex/skills/spec-load/SKILL.md +4 -14
- package/.codex/skills/spec-map/SKILL.md +4 -37
- package/.codex/skills/spec-remove/SKILL.md +3 -35
- package/.codex/skills/spec-setup/SKILL.md +2 -19
- package/.codex/skills/team-coordinate/SKILL.md +20 -132
- package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
- package/.codex/skills/team-executor/SKILL.md +7 -66
- package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
- package/.codex/skills/team-executor/specs/session-schema.md +22 -56
- package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
- package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
- package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
- package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
- package/.codex/skills/team-review/SKILL.md +12 -86
- package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
- package/.codex/skills/team-tech-debt/SKILL.md +11 -50
- package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
- package/.codex/skills/team-testing/SKILL.md +14 -99
- package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
- package/.codex/skills/wiki-connect/SKILL.md +2 -5
- package/README.md +6 -0
- package/README.zh-CN.md +6 -0
- package/chains/_intent-map.json +7 -7
- package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
- package/chains/singles/{memory.json → knowhow.json} +6 -6
- package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
- package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
- package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
- package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
- package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
- package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
- package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
- package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
- package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
- package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
- package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
- package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
- package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
- package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
- package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
- package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
- package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
- package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
- package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
- package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
- package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
- package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
- package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
- package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
- package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
- package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
- package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
- package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
- package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
- package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
- package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
- package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
- package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
- package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
- package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
- package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
- package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
- package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
- package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
- package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
- package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
- package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
- package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
- package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
- package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
- package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
- package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
- package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
- package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
- package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
- package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
- package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
- package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
- package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
- package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
- package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
- package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
- package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
- package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
- package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
- package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
- package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
- package/dashboard/dist-server/src/commands/delegate.js +11 -8
- package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
- package/dist/shared/agent-types.d.ts +2 -0
- package/dist/shared/agent-types.d.ts.map +1 -1
- package/dist/src/cli.js +2 -2
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +11 -8
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts +1 -1
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +1 -1
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/knowhow.d.ts +10 -0
- package/dist/src/commands/knowhow.d.ts.map +1 -0
- package/dist/src/commands/knowhow.js +217 -0
- package/dist/src/commands/knowhow.js.map +1 -0
- package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
- package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
- package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
- package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
- package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
- package/dist/src/commands/overlay-ui/index.js +70 -44
- package/dist/src/commands/overlay-ui/index.js.map +1 -1
- package/dist/src/commands/overlay.d.ts.map +1 -1
- package/dist/src/commands/overlay.js +4 -3
- package/dist/src/commands/overlay.js.map +1 -1
- package/dist/src/core/overlay/applier.d.ts +1 -1
- package/dist/src/core/overlay/applier.d.ts.map +1 -1
- package/dist/src/core/overlay/applier.js +40 -13
- package/dist/src/core/overlay/applier.js.map +1 -1
- package/dist/src/core/overlay/loader.d.ts.map +1 -1
- package/dist/src/core/overlay/loader.js +6 -0
- package/dist/src/core/overlay/loader.js.map +1 -1
- package/dist/src/core/overlay/types.d.ts +5 -1
- package/dist/src/core/overlay/types.d.ts.map +1 -1
- package/dist/src/core/overlay/types.js +1 -1
- package/dist/src/core/overlay/types.js.map +1 -1
- package/dist/src/hooks/context-monitor.js +1 -1
- package/dist/src/hooks/context-monitor.js.map +1 -1
- package/dist/src/hooks/skill-context.js +1 -1
- package/dist/src/hooks/skill-context.js.map +1 -1
- package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
- package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
- package/dist/src/mcp/delegate-channel-relay.js +73 -4
- package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
- package/dist/src/tools/index.js +2 -2
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/store-knowhow.d.ts +21 -0
- package/dist/src/tools/store-knowhow.d.ts.map +1 -0
- package/dist/src/tools/store-knowhow.js +295 -0
- package/dist/src/tools/store-knowhow.js.map +1 -0
- package/package.json +1 -1
- package/shared/agent-types.ts +2 -0
- package/templates/workflows/specs/node-catalog.md +170 -0
- package/templates/workflows/specs/template-schema.md +157 -0
- package/workflows/analyze.md +61 -185
- package/workflows/brainstorm.md +3 -23
- package/workflows/codebase-rebuild.md +79 -191
- package/workflows/codebase-refresh.md +26 -124
- package/workflows/debug.md +21 -141
- package/workflows/execute.md +183 -350
- package/workflows/fork.md +72 -230
- package/workflows/harvest.md +12 -79
- package/workflows/init.md +3 -17
- package/workflows/integration-test.md +21 -190
- package/workflows/issue-analyze.md +35 -153
- package/workflows/issue-discover.md +88 -263
- package/workflows/issue-execute.md +29 -208
- package/workflows/issue-plan.md +33 -154
- package/workflows/issue.md +44 -202
- package/workflows/knowhow.md +374 -0
- package/workflows/learn.md +30 -177
- package/workflows/maestro-coordinate.codex.md +77 -362
- package/workflows/maestro-link-coordinate.md +12 -61
- package/workflows/maestro.codex.md +124 -457
- package/workflows/maestro.md +562 -976
- package/workflows/map.md +16 -53
- package/workflows/merge.md +42 -197
- package/workflows/milestone-audit.md +5 -43
- package/workflows/milestone-complete.md +11 -60
- package/workflows/plan.md +176 -387
- package/workflows/quick.md +25 -174
- package/workflows/refactor.md +28 -221
- package/workflows/retrospective.md +104 -443
- package/workflows/review.md +87 -299
- package/workflows/roadmap.md +117 -97
- package/workflows/spec-generate.md +22 -118
- package/workflows/specs-add.md +5 -25
- package/workflows/specs-load.md +1 -5
- package/workflows/specs-remove.md +0 -11
- package/workflows/specs-setup.md +11 -47
- package/workflows/status.md +58 -200
- package/workflows/sync.md +28 -141
- package/workflows/test-gen.md +23 -100
- package/workflows/test.md +15 -125
- package/workflows/ui-design.md +139 -465
- package/workflows/ui-style.md +36 -228
- package/workflows/verify.md +52 -273
- package/workflows/wiki-connect.md +9 -46
- package/workflows/wiki-digest.md +7 -50
- package/workflows/wiki-manage.md +11 -108
- package/.claude/commands/maestro-coordinate.md +0 -63
- package/.claude/commands/manage-memory-capture.md +0 -59
- package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
- package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
- package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
- package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
- package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
- package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
- package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
- package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
- package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
- package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
- package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
- package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
- package/workflows/maestro-coordinate.md +0 -582
- package/workflows/memory.md +0 -451
package/workflows/fork.md
CHANGED
|
@@ -8,25 +8,13 @@ Worktrees operate at the **milestone level** — all phases within a milestone a
|
|
|
8
8
|
|
|
9
9
|
## Step 1: Parse Arguments and Flags
|
|
10
10
|
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
// Parse milestone number: -m <N> or bare <N>
|
|
20
|
-
const mFlagMatch = $ARGUMENTS.match(/-m\s+(\d+)/)
|
|
21
|
-
const cleaned = $ARGUMENTS
|
|
22
|
-
.replace(/--sync|--base\s+\S+|-m\s+\d+/g, '')
|
|
23
|
-
.trim()
|
|
24
|
-
const bareNumMatch = cleaned.match(/^(\d+)$/)
|
|
25
|
-
const milestoneNum = mFlagMatch
|
|
26
|
-
? parseInt(mFlagMatch[1])
|
|
27
|
-
: bareNumMatch
|
|
28
|
-
? parseInt(bareNumMatch[1])
|
|
29
|
-
: null
|
|
11
|
+
```
|
|
12
|
+
Timestamps use UTC+8 ISO format throughout.
|
|
13
|
+
|
|
14
|
+
Parse from $ARGUMENTS:
|
|
15
|
+
--sync → syncMode (sync existing worktree instead of forking)
|
|
16
|
+
--base <ref> → baseBranch (default: HEAD)
|
|
17
|
+
-m <N> or bare <N> → milestoneNum (1-based)
|
|
30
18
|
```
|
|
31
19
|
|
|
32
20
|
---
|
|
@@ -34,25 +22,10 @@ const milestoneNum = mFlagMatch
|
|
|
34
22
|
## Step 2: Validate Prerequisites
|
|
35
23
|
|
|
36
24
|
```
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
EXIT
|
|
40
|
-
|
|
41
|
-
IF NOT file_exists(".workflow/roadmap.md"):
|
|
42
|
-
ERROR E002: "No roadmap found. Run maestro-roadmap first."
|
|
43
|
-
EXIT
|
|
44
|
-
|
|
45
|
-
IF file_exists(".workflow/worktree-scope.json"):
|
|
46
|
-
ERROR E003: "Cannot fork from inside a worktree. Run from the main worktree."
|
|
47
|
-
EXIT
|
|
48
|
-
|
|
49
|
-
IF milestoneNum === null:
|
|
50
|
-
ERROR E004: "Milestone number required. Usage: maestro-fork -m <number>"
|
|
51
|
-
EXIT
|
|
52
|
-
|
|
53
|
-
Read .workflow/state.json → projectState
|
|
54
|
-
Read .workflow/config.json → config (if exists, else use defaults)
|
|
25
|
+
Require: .workflow/state.json (E001), .workflow/roadmap.md (E002), milestoneNum (E004).
|
|
26
|
+
Reject: .workflow/worktree-scope.json present (E003 — cannot fork from inside a worktree).
|
|
55
27
|
|
|
28
|
+
Read projectState from state.json, config from config.json (defaults if missing).
|
|
56
29
|
worktreeRoot = config.worktree?.root ?? ".worktrees"
|
|
57
30
|
branchPrefix = config.worktree?.branch_prefix ?? "milestone/"
|
|
58
31
|
```
|
|
@@ -62,25 +35,11 @@ branchPrefix = config.worktree?.branch_prefix ?? "milestone/"
|
|
|
62
35
|
## Step 3: Resolve Milestone
|
|
63
36
|
|
|
64
37
|
```
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
// milestones[] is 0-indexed, milestoneNum is 1-based
|
|
71
|
-
milestoneEntry = projectState.milestones[milestoneNum - 1]
|
|
72
|
-
|
|
73
|
-
IF NOT milestoneEntry:
|
|
74
|
-
availableList = projectState.milestones
|
|
75
|
-
.map((m, i) => " M" + (i + 1) + ": " + m.name + " (" + m.title + ")")
|
|
76
|
-
.join("\n")
|
|
77
|
-
ERROR E006: "Milestone {milestoneNum} not found.\nAvailable:\n{availableList}"
|
|
78
|
-
EXIT
|
|
79
|
-
|
|
80
|
-
milestoneName = milestoneEntry.name // e.g. "Production"
|
|
81
|
-
milestoneTitle = milestoneEntry.title // e.g. "生产就绪"
|
|
82
|
-
milestonePhases = milestoneEntry.phases // e.g. [3, 4]
|
|
83
|
-
milestoneSlug = milestoneName.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 40)
|
|
38
|
+
Lookup milestoneEntry from projectState.milestones[milestoneNum - 1] (1-based).
|
|
39
|
+
E005 if no milestones array; E006 if index out of range (list available milestones).
|
|
40
|
+
|
|
41
|
+
Extract: milestoneName (.name), milestoneTitle (.title), milestonePhases (.phases).
|
|
42
|
+
milestoneSlug = kebab-case of milestoneName, max 40 chars.
|
|
84
43
|
```
|
|
85
44
|
|
|
86
45
|
---
|
|
@@ -91,29 +50,10 @@ If `syncMode` is true, this is a sync operation on an existing worktree, not a f
|
|
|
91
50
|
|
|
92
51
|
```
|
|
93
52
|
IF syncMode:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
IF NOT entry:
|
|
100
|
-
ERROR E007: "No active worktree for milestone {milestoneNum} ({milestoneName})"
|
|
101
|
-
EXIT
|
|
102
|
-
|
|
103
|
-
// Step 4a: Pull source code
|
|
104
|
-
Bash("cd {entry.path} && git merge main")
|
|
105
|
-
IF conflict:
|
|
106
|
-
WARN "Merge conflict in worktree. Resolve in {entry.path} before continuing."
|
|
107
|
-
EXIT
|
|
108
|
-
|
|
109
|
-
// Step 4b: Re-copy shared context
|
|
110
|
-
Copy .workflow/project.md → {entry.path}/.workflow/project.md
|
|
111
|
-
Copy .workflow/roadmap.md → {entry.path}/.workflow/roadmap.md
|
|
112
|
-
Copy .workflow/config.json → {entry.path}/.workflow/config.json (if exists)
|
|
113
|
-
Copy .workflow/specs/ → {entry.path}/.workflow/specs/ (if exists)
|
|
114
|
-
|
|
115
|
-
Display "Worktree for M{milestoneNum} ({milestoneName}) synced with main."
|
|
116
|
-
EXIT (sync complete)
|
|
53
|
+
Find active worktree entry for milestoneNum in worktrees.json → E007 if not found.
|
|
54
|
+
Git merge main into worktree → warn and exit on conflict.
|
|
55
|
+
Re-copy shared context: project.md, roadmap.md, config.json (if exists), specs/ (if exists).
|
|
56
|
+
Display sync confirmation. EXIT.
|
|
117
57
|
```
|
|
118
58
|
|
|
119
59
|
---
|
|
@@ -121,41 +61,12 @@ IF syncMode:
|
|
|
121
61
|
## Step 5: Validate & Confirm
|
|
122
62
|
|
|
123
63
|
```
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
execArtifacts = artifacts.filter(a => a.type === 'execute' && a.phase === phaseNum)
|
|
131
|
-
status = execArtifacts.some(a => a.status === 'completed') ? 'completed'
|
|
132
|
-
: execArtifacts.length > 0 ? 'in_progress'
|
|
133
|
-
: 'pending'
|
|
134
|
-
phaseList.push({ phase: phaseNum, title: "Phase " + phaseNum, status })
|
|
135
|
-
|
|
136
|
-
// Validate: milestone should have at least one non-completed phase
|
|
137
|
-
nonCompleted = phaseList.filter(p => p.status !== "completed")
|
|
138
|
-
IF nonCompleted.length === 0:
|
|
139
|
-
Display "All phases in M{milestoneNum} ({milestoneName}) are already completed. Nothing to fork."
|
|
140
|
-
EXIT
|
|
141
|
-
|
|
142
|
-
// Check for already-forked milestone
|
|
143
|
-
IF file_exists(".workflow/worktrees.json"):
|
|
144
|
-
Read .workflow/worktrees.json → existingRegistry
|
|
145
|
-
alreadyForked = existingRegistry.worktrees.find(w =>
|
|
146
|
-
w.milestone_num === milestoneNum && w.status === "active"
|
|
147
|
-
)
|
|
148
|
-
IF alreadyForked:
|
|
149
|
-
ERROR E008: "M{milestoneNum} already has an active worktree at {alreadyForked.path}. Merge or cleanup first."
|
|
150
|
-
EXIT
|
|
151
|
-
|
|
152
|
-
Display "Fork Milestone {milestoneNum}: {milestoneName} ({milestoneTitle})"
|
|
153
|
-
Display "Phases ({phaseList.length}):"
|
|
154
|
-
for (p of phaseList):
|
|
155
|
-
Display " Phase {p.phase}: {p.title} [{p.status}]"
|
|
156
|
-
|
|
157
|
-
AskUserQuestion: "Create worktree for this milestone? (y/n)"
|
|
158
|
-
IF response !== 'y': EXIT
|
|
64
|
+
Derive phase statuses from artifact registry (execute artifacts → completed/in_progress/pending).
|
|
65
|
+
Reject if all phases completed (nothing to fork).
|
|
66
|
+
Reject if milestone already has active worktree (E008).
|
|
67
|
+
|
|
68
|
+
Display milestone info and phase list with statuses.
|
|
69
|
+
Confirm with user → exit if declined.
|
|
159
70
|
```
|
|
160
71
|
|
|
161
72
|
---
|
|
@@ -163,87 +74,43 @@ IF response !== 'y': EXIT
|
|
|
163
74
|
## Step 6: Create Worktree
|
|
164
75
|
|
|
165
76
|
```
|
|
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
|
-
|
|
196
|
-
|
|
197
|
-
for (art of milestoneArtifacts):
|
|
198
|
-
IF directory_exists(".workflow/" + art.path):
|
|
199
|
-
Copy .workflow/{art.path}/ → {wtPath}/.workflow/{art.path}/
|
|
200
|
-
|
|
201
|
-
// 6f: Copy dependency artifacts (phases outside this milestone)
|
|
202
|
-
// Collect dependency phases from roadmap milestone entry
|
|
203
|
-
// (cross-milestone dependencies are defined in milestoneEntry.depends_on or roadmap)
|
|
204
|
-
depPhases = new Set()
|
|
205
|
-
IF milestoneEntry.depends_on:
|
|
206
|
-
for (dep of milestoneEntry.depends_on):
|
|
207
|
-
IF NOT ownedPhaseNumbers.includes(dep):
|
|
208
|
-
depPhases.add(dep)
|
|
209
|
-
// Copy dependency artifacts from main
|
|
210
|
-
for (dep of depPhases):
|
|
211
|
-
depArtifacts = artifacts.filter(a => a.phase === dep && a.path)
|
|
212
|
-
for (art of depArtifacts):
|
|
213
|
-
IF directory_exists(".workflow/" + art.path):
|
|
214
|
-
Copy .workflow/{art.path}/ → {wtPath}/.workflow/{art.path}/
|
|
215
|
-
|
|
216
|
-
// 6g: Build phase_dependencies map for worktree-scope
|
|
217
|
-
phaseDeps = {}
|
|
218
|
-
IF milestoneEntry.depends_on:
|
|
219
|
-
for (phaseNum of ownedPhaseNumbers):
|
|
220
|
-
phaseDeps[String(phaseNum)] = milestoneEntry.depends_on
|
|
221
|
-
.filter(d => !ownedPhaseNumbers.includes(d))
|
|
222
|
-
|
|
223
|
-
// 6h: Write worktree-scope.json
|
|
224
|
-
Write {wtPath}/.workflow/worktree-scope.json:
|
|
225
|
-
{
|
|
226
|
-
"worktree": true,
|
|
227
|
-
"milestone_num": milestoneNum,
|
|
228
|
-
"milestone": milestoneName,
|
|
229
|
-
"owned_phases": ownedPhaseNumbers,
|
|
230
|
-
"phase_dependencies": phaseDeps,
|
|
231
|
-
"main_worktree": resolve(cwd),
|
|
232
|
-
"branch": branch,
|
|
233
|
-
"base_commit": baseCommit,
|
|
234
|
-
"created_at": getUtc8ISOString()
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
// 6i: Write scoped state.json
|
|
238
|
-
Read .workflow/state.json → mainState
|
|
239
|
-
firstPending = phaseList.find(p => p.status !== "completed")
|
|
240
|
-
scopedState = {
|
|
241
|
-
...mainState,
|
|
242
|
-
current_milestone: milestoneName,
|
|
243
|
-
// Carry over milestone-scoped artifacts to worktree
|
|
244
|
-
artifacts: artifacts.filter(a => a.milestone === milestoneName || ownedPhaseNumbers.includes(a.phase))
|
|
77
|
+
forkSessionId = "fork-{UTC8_compact_timestamp}"
|
|
78
|
+
baseCommit = git rev-parse HEAD
|
|
79
|
+
branch = {branchPrefix}{milestoneSlug}
|
|
80
|
+
wtPath = {worktreeRoot}/m{milestoneNum}-{milestoneSlug}
|
|
81
|
+
|
|
82
|
+
6a: Clean up stale worktree/branch at wtPath if exists (ignore errors).
|
|
83
|
+
6b: git worktree add -b {branch} {wtPath} {baseBranch}
|
|
84
|
+
6c: mkdir -p {wtPath}/.workflow/scratch
|
|
85
|
+
|
|
86
|
+
6d: Copy shared context → wtPath/.workflow/:
|
|
87
|
+
project.md, roadmap.md, config.json (if exists), specs/ (if exists)
|
|
88
|
+
|
|
89
|
+
6e: Copy milestone artifacts — all artifacts matching milestoneName.
|
|
90
|
+
6f: Copy dependency artifacts — phases from milestoneEntry.depends_on not in owned phases.
|
|
91
|
+
|
|
92
|
+
6g: Build phase_dependencies map (external deps per owned phase).
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Write `{wtPath}/.workflow/worktree-scope.json`:
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"worktree": true,
|
|
100
|
+
"milestone_num": "{milestoneNum}",
|
|
101
|
+
"milestone": "{milestoneName}",
|
|
102
|
+
"owned_phases": ["{ownedPhaseNumbers}"],
|
|
103
|
+
"phase_dependencies": "{phaseDeps}",
|
|
104
|
+
"main_worktree": "{resolve(cwd)}",
|
|
105
|
+
"branch": "{branch}",
|
|
106
|
+
"base_commit": "{baseCommit}",
|
|
107
|
+
"created_at": "{UTC8_ISO}"
|
|
245
108
|
}
|
|
246
|
-
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
6i: Write scoped state.json — clone mainState with current_milestone set,
|
|
113
|
+
artifacts filtered to milestone-owned phases only.
|
|
247
114
|
```
|
|
248
115
|
|
|
249
116
|
---
|
|
@@ -251,42 +118,17 @@ Write {wtPath}/.workflow/state.json: scopedState
|
|
|
251
118
|
## Step 7: Update Main Registry
|
|
252
119
|
|
|
253
120
|
```
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
base_commit: baseCommit,
|
|
266
|
-
status: "active",
|
|
267
|
-
created_at: getUtc8ISOString(),
|
|
268
|
-
owned_phases: ownedPhaseNumbers,
|
|
269
|
-
fork_session: forkSessionId
|
|
270
|
-
})
|
|
271
|
-
|
|
272
|
-
registry.fork_sessions.push({
|
|
273
|
-
session_id: forkSessionId,
|
|
274
|
-
created_at: getUtc8ISOString(),
|
|
275
|
-
milestone_num: milestoneNum,
|
|
276
|
-
milestone: milestoneName,
|
|
277
|
-
base_branch: baseBranch,
|
|
278
|
-
base_commit: baseCommit
|
|
279
|
-
})
|
|
280
|
-
|
|
281
|
-
Write .workflow/worktrees.json: registry
|
|
282
|
-
|
|
283
|
-
// Mark milestone phases as "forked"
|
|
284
|
-
// In artifact registry model, worktrees.json tracks forked state.
|
|
285
|
-
// No per-phase marking needed — the registry entry signals ownership.
|
|
286
|
-
// (worktrees.json already updated above with owned_phases)
|
|
287
|
-
|
|
288
|
-
mainState.last_updated = getUtc8ISOString()
|
|
289
|
-
Write .workflow/state.json: mainState
|
|
121
|
+
Load or initialize .workflow/worktrees.json (default: { version:"1.0", worktrees:[], fork_sessions:[] }).
|
|
122
|
+
|
|
123
|
+
Append to worktrees[]:
|
|
124
|
+
{ milestone_num, milestone, slug, branch, path:wtPath, base_commit, status:"active",
|
|
125
|
+
created_at, owned_phases, fork_session:forkSessionId }
|
|
126
|
+
|
|
127
|
+
Append to fork_sessions[]:
|
|
128
|
+
{ session_id:forkSessionId, created_at, milestone_num, milestone, base_branch, base_commit }
|
|
129
|
+
|
|
130
|
+
Write worktrees.json. Update mainState.last_updated, write state.json.
|
|
131
|
+
Note: worktrees.json owned_phases tracks forked state — no per-phase marking needed.
|
|
290
132
|
```
|
|
291
133
|
|
|
292
134
|
---
|
package/workflows/harvest.md
CHANGED
|
@@ -43,20 +43,11 @@ Unlike `retrospective.md` which is phase-scoped and post-execution, harvest oper
|
|
|
43
43
|
## Stage 1: parse_input
|
|
44
44
|
|
|
45
45
|
```
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
mode = "scan" | "session" | "path"
|
|
52
|
-
target_filter = "auto" | "wiki" | "spec" | "issue"
|
|
53
|
-
source_filter = "all" | specific source type
|
|
54
|
-
recent_days = 30 (or --recent value)
|
|
55
|
-
dry_run = false
|
|
56
|
-
auto_yes = false
|
|
57
|
-
min_confidence = 0.5
|
|
58
|
-
4. Validate --to value. Unknown target → error E002.
|
|
59
|
-
5. Validate --source value. Unknown source → error E003.
|
|
46
|
+
Verify .workflow/ exists (else E001). Parse flags and first non-flag token:
|
|
47
|
+
mode: "scan" (no target) | "session" (ID match) | "path" (explicit path)
|
|
48
|
+
Defaults: target_filter=auto, source_filter=all, recent_days=30,
|
|
49
|
+
dry_run=false, auto_yes=false, min_confidence=0.5
|
|
50
|
+
Invalid --to → E002. Invalid --source → E003.
|
|
60
51
|
```
|
|
61
52
|
|
|
62
53
|
---
|
|
@@ -78,22 +69,7 @@ Scan `.workflow/` for harvestable artifacts. Each source type has a known struct
|
|
|
78
69
|
| `session` | `.workflow/active/WFS-*/` | `workflow-session.json` | `WFS-*` |
|
|
79
70
|
| `learning` | `.workflow/learning/` | `lessons.jsonl`, `digest-*.md`, `*.md` | filename |
|
|
80
71
|
|
|
81
|
-
|
|
82
|
-
candidates = []
|
|
83
|
-
FOR each source_type in source_registry:
|
|
84
|
-
IF source_filter != "all" AND source_filter != source_type: SKIP
|
|
85
|
-
Glob for directories/files matching scan_path
|
|
86
|
-
FOR each match:
|
|
87
|
-
stat = file modification time
|
|
88
|
-
IF stat.mtime < (now - recent_days): SKIP
|
|
89
|
-
Read key files, extract:
|
|
90
|
-
- session_id or directory name
|
|
91
|
-
- title (from JSON title field or markdown H1)
|
|
92
|
-
- created_at / updated_at
|
|
93
|
-
- summary (first paragraph or JSON summary field)
|
|
94
|
-
- file_count (number of artifact files)
|
|
95
|
-
candidates.push({ source_type, id, path, title, updated_at, summary, file_count })
|
|
96
|
-
```
|
|
72
|
+
Scan each source type (filtered by `--source`). For each matching directory/file within `--recent` window, extract: `source_type`, `id`, `path`, `title` (from JSON or H1), `updated_at`, `summary`, `file_count`.
|
|
97
73
|
|
|
98
74
|
### Display candidates
|
|
99
75
|
|
|
@@ -219,20 +195,11 @@ For each fragment, determine the best routing target (unless `--to` forces a spe
|
|
|
219
195
|
|
|
220
196
|
### Override with `--to`
|
|
221
197
|
|
|
222
|
-
|
|
223
|
-
If `--to spec`: all fragments → spec entries
|
|
224
|
-
If `--to issue`: all fragments → issue entries
|
|
225
|
-
If `--to auto`: use classification rules above
|
|
198
|
+
`--to wiki|spec|issue` forces all fragments to that target. `--to auto` (default) uses classification rules above.
|
|
226
199
|
|
|
227
200
|
### Build routing plan
|
|
228
201
|
|
|
229
|
-
|
|
230
|
-
routing_plan = {
|
|
231
|
-
wiki: [{ fragment, wiki_type, slug, title, tags, body }],
|
|
232
|
-
spec: [{ fragment, spec_type, content }],
|
|
233
|
-
issue: [{ fragment, title, severity, description }]
|
|
234
|
-
}
|
|
235
|
-
```
|
|
202
|
+
Group fragments into three buckets: `wiki` (fragment, wiki_type, slug, title, tags, body), `spec` (fragment, spec_type, content), `issue` (fragment, title, severity, description).
|
|
236
203
|
|
|
237
204
|
---
|
|
238
205
|
|
|
@@ -262,11 +229,7 @@ Fragments extracted: 8 (filtered from 12 by confidence ≥ 0.5)
|
|
|
262
229
|
Total: 3 wiki + 2 spec + 3 issue = 8 routed items
|
|
263
230
|
```
|
|
264
231
|
|
|
265
|
-
|
|
266
|
-
If NOT `--dry-run` AND NOT `-y`:
|
|
267
|
-
AskUserQuestion: "Apply this routing plan? (yes/edit/skip)" with options.
|
|
268
|
-
- `edit`: re-display with per-item accept/reject
|
|
269
|
-
- `skip`: exit without writing
|
|
232
|
+
`--dry-run` → display and exit. Otherwise (unless `-y`), AskUserQuestion: "yes" (apply), "edit" (per-item accept/reject), "skip" (abort).
|
|
270
233
|
|
|
271
234
|
---
|
|
272
235
|
|
|
@@ -276,32 +239,11 @@ Execute the routing plan. Each target uses existing infrastructure:
|
|
|
276
239
|
|
|
277
240
|
### 6a. Wiki routing
|
|
278
241
|
|
|
279
|
-
|
|
280
|
-
```bash
|
|
281
|
-
maestro wiki create --type <wiki_type> --slug harvest-<source_type>-<short_id> \
|
|
282
|
-
--title "<title>" --tags "<tags>" --body "<body>"
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
Wiki types mapping:
|
|
286
|
-
- `note` → `--type note`
|
|
287
|
-
- `lesson` → `--type lesson`
|
|
288
|
-
- `spec` → `--type spec`
|
|
289
|
-
|
|
290
|
-
If `maestro wiki create` fails, fall back to writing `.workflow/harvest/wiki-pending-{id}.md` with frontmatter.
|
|
242
|
+
Create via `maestro wiki create --type <wiki_type> --slug harvest-<source_type>-<short_id> --title --tags --body`. Types: note/lesson/spec. Fallback on failure: write `.workflow/harvest/wiki-pending-{id}.md` with frontmatter.
|
|
291
243
|
|
|
292
244
|
### 6b. Spec routing
|
|
293
245
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
```
|
|
297
|
-
Skill({ skill: "spec-add", args: "<spec_type> <content>" })
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
Where `spec_type` maps from fragment category:
|
|
301
|
-
- `pattern` → `pattern`
|
|
302
|
-
- `decision` → `decision`
|
|
303
|
-
- `bug` → `bug`
|
|
304
|
-
- `lesson` → `rule` (if it prescribes a rule)
|
|
246
|
+
Route via `Skill({ skill: "spec-add", args: "<spec_type> <content>" })`. Category mapping: pattern→pattern, decision→decision, bug→bug, lesson→rule.
|
|
305
247
|
|
|
306
248
|
### 6c. Issue routing
|
|
307
249
|
|
|
@@ -345,16 +287,7 @@ This log prevents duplicate harvesting in future runs.
|
|
|
345
287
|
|
|
346
288
|
## Stage 7: dedup_check
|
|
347
289
|
|
|
348
|
-
Before writing any item in Stage 6, check for duplicates
|
|
349
|
-
|
|
350
|
-
1. **harvest-log.jsonl**: Has this fragment_id already been routed?
|
|
351
|
-
2. **Wiki**: `maestro wiki search "<title>"` — does a similar entry exist?
|
|
352
|
-
3. **Issues**: Search `issues.jsonl` for matching title/description
|
|
353
|
-
4. **Specs**: Search `learnings.md` for similar content
|
|
354
|
-
|
|
355
|
-
If duplicate found:
|
|
356
|
-
- Skip with `[SKIP-DUP]` marker
|
|
357
|
-
- Log to harvest report
|
|
290
|
+
Before writing any item in Stage 6, check for duplicates across `harvest-log.jsonl` (by fragment_id), wiki (by title search), `issues.jsonl` (by title/description), and `learnings.md` (by content). Duplicates are skipped with `[SKIP-DUP]` marker and logged to harvest report.
|
|
358
291
|
|
|
359
292
|
---
|
|
360
293
|
|
package/workflows/init.md
CHANGED
|
@@ -7,10 +7,7 @@ Project initialization with automatic state detection. Creates project infrastru
|
|
|
7
7
|
## Worktree Guard
|
|
8
8
|
|
|
9
9
|
```
|
|
10
|
-
|
|
11
|
-
IF file_exists(".workflow/worktree-scope.json"):
|
|
12
|
-
ERROR "Cannot run maestro-init inside a worktree. Run from the main worktree."
|
|
13
|
-
EXIT
|
|
10
|
+
If .workflow/worktree-scope.json exists: error "Cannot run maestro-init inside a worktree." and exit.
|
|
14
11
|
```
|
|
15
12
|
|
|
16
13
|
## Step 1: State Detection
|
|
@@ -18,11 +15,7 @@ IF file_exists(".workflow/worktree-scope.json"):
|
|
|
18
15
|
Detect current project state to determine initialization path.
|
|
19
16
|
|
|
20
17
|
```
|
|
21
|
-
|
|
22
|
-
YES → Path C (existing project)
|
|
23
|
-
NO → CHECK if directory has source code files (*.ts, *.js, *.py, *.java, *.go, etc.)
|
|
24
|
-
YES → Path B (brownfield)
|
|
25
|
-
NO → Path A (greenfield)
|
|
18
|
+
state.json exists → Path C (existing) | source files exist → Path B (brownfield) | else → Path A (greenfield)
|
|
26
19
|
```
|
|
27
20
|
|
|
28
21
|
### Path A: Empty/Greenfield Project
|
|
@@ -73,14 +66,7 @@ CHECK .workflow/state.json exists?
|
|
|
73
66
|
Write `.workflow/config.json` from template + user selections.
|
|
74
67
|
If `--auto`: use defaults (standard, parallel, commit, all agents on).
|
|
75
68
|
|
|
76
|
-
3. **Research** (optional, based on config.workflow.research) -- Spawn 4 parallel `workflow-project-researcher` agents
|
|
77
|
-
```
|
|
78
|
-
Agent 1: Stack → .workflow/research/STACK.md (standard tech stack for domain)
|
|
79
|
-
Agent 2: Features → .workflow/research/FEATURES.md (table stakes vs differentiators)
|
|
80
|
-
Agent 3: Arch → .workflow/research/ARCHITECTURE.md (component boundaries, data flow)
|
|
81
|
-
Agent 4: Pitfalls → .workflow/research/PITFALLS.md (common mistakes, prevention)
|
|
82
|
-
```
|
|
83
|
-
Each agent writes directly to `.workflow/research/` -- orchestrator receives confirmation only.
|
|
69
|
+
3. **Research** (optional, based on config.workflow.research) -- Spawn 4 parallel `workflow-project-researcher` agents writing to `.workflow/research/`: STACK.md, FEATURES.md, ARCHITECTURE.md, PITFALLS.md.
|
|
84
70
|
|
|
85
71
|
4. **Synthesize** -- Spawn `workflow-research-synthesizer` agent:
|
|
86
72
|
- Input: all `.workflow/research/` documents
|