maestro-flow 0.3.10 → 0.3.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/conceptual-planning-agent.md +1 -0
- package/.claude/agents/workflow-analyzer.md +114 -114
- package/.claude/agents/workflow-collab-planner.md +144 -144
- package/.claude/agents/workflow-debugger.md +102 -103
- package/.claude/agents/workflow-executor.md +127 -128
- package/.claude/agents/workflow-integration-checker.md +82 -82
- package/.claude/agents/workflow-nyquist-auditor.md +85 -84
- package/.claude/agents/workflow-phase-researcher.md +85 -85
- package/.claude/agents/workflow-plan-checker.md +90 -90
- package/.claude/agents/workflow-planner.md +178 -178
- package/.claude/agents/workflow-roadmapper.md +81 -83
- package/.claude/agents/workflow-verifier.md +119 -119
- package/.claude/commands/learn-decompose.md +176 -176
- package/.claude/commands/learn-follow.md +167 -167
- package/.claude/commands/learn-retro.md +3 -3
- package/.claude/commands/learn-second-opinion.md +2 -2
- package/.claude/commands/maestro-brainstorm.md +1 -0
- package/.claude/commands/maestro-coordinate.md +1 -3
- package/.claude/commands/maestro-fork.md +133 -111
- package/.claude/commands/maestro-merge.md +85 -77
- package/.claude/commands/maestro-plan.md +88 -2
- package/.claude/commands/maestro-roadmap.md +113 -2
- package/.claude/commands/maestro.md +1 -0
- package/.claude/commands/manage-harvest.md +131 -131
- package/.claude/commands/manage-issue.md +2 -2
- package/.claude/commands/quality-business-test.md +5 -5
- package/.claude/commands/quality-debug.md +3 -2
- package/.claude/commands/quality-retrospective.md +6 -4
- package/.claude/commands/quality-review.md +1 -1
- package/.claude/commands/quality-test-gen.md +5 -4
- package/.claude/commands/spec-add.md +67 -56
- package/.claude/commands/spec-load.md +66 -64
- package/.claude/commands/spec-setup.md +5 -9
- package/.codex/skills/learn-decompose/SKILL.md +119 -0
- package/.codex/skills/learn-follow/SKILL.md +83 -0
- package/.codex/skills/learn-investigate/SKILL.md +83 -0
- package/.codex/skills/learn-retro/SKILL.md +83 -0
- package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
- package/.codex/skills/maestro/SKILL.md +151 -279
- package/.codex/skills/maestro-analyze/SKILL.md +59 -71
- package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
- package/.codex/skills/maestro-chain/SKILL.md +95 -110
- package/.codex/skills/maestro-coordinate/SKILL.md +68 -234
- package/.codex/skills/maestro-execute/SKILL.md +435 -446
- package/.codex/skills/maestro-fork/SKILL.md +98 -0
- package/.codex/skills/maestro-init/SKILL.md +172 -167
- package/.codex/skills/maestro-learn/SKILL.md +80 -0
- package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
- package/.codex/skills/maestro-merge/SKILL.md +69 -0
- package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
- package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
- package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
- package/.codex/skills/maestro-overlay/SKILL.md +188 -185
- package/.codex/skills/maestro-plan/SKILL.md +58 -69
- package/.codex/skills/maestro-quick/SKILL.md +26 -23
- package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
- package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
- package/.codex/skills/maestro-ui-design/SKILL.md +35 -32
- package/.codex/skills/maestro-verify/SKILL.md +556 -566
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
- package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
- package/.codex/skills/manage-harvest/SKILL.md +82 -0
- package/.codex/skills/manage-issue/SKILL.md +80 -65
- package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
- package/.codex/skills/manage-learn/SKILL.md +190 -186
- package/.codex/skills/manage-memory/SKILL.md +95 -72
- package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
- package/.codex/skills/manage-status/SKILL.md +102 -89
- package/.codex/skills/quality-business-test/SKILL.md +228 -223
- package/.codex/skills/quality-debug/SKILL.md +54 -66
- package/.codex/skills/quality-integration-test/SKILL.md +532 -544
- package/.codex/skills/quality-refactor/SKILL.md +197 -191
- package/.codex/skills/quality-retrospective/SKILL.md +512 -505
- package/.codex/skills/quality-review/SKILL.md +95 -107
- package/.codex/skills/quality-sync/SKILL.md +101 -89
- package/.codex/skills/quality-test/SKILL.md +202 -198
- package/.codex/skills/quality-test-gen/SKILL.md +94 -105
- package/.codex/skills/spec-add/SKILL.md +58 -39
- package/.codex/skills/spec-load/SKILL.md +45 -40
- package/.codex/skills/spec-map/SKILL.md +180 -182
- package/.codex/skills/spec-setup/SKILL.md +94 -76
- package/.codex/skills/team-coordinate/SKILL.md +346 -357
- package/.codex/skills/team-executor/SKILL.md +70 -112
- package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
- package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
- package/.codex/skills/team-review/SKILL.md +232 -225
- package/.codex/skills/team-tech-debt/SKILL.md +78 -100
- package/.codex/skills/team-testing/SKILL.md +242 -235
- package/.codex/skills/wiki-connect/SKILL.md +75 -0
- package/.codex/skills/wiki-digest/SKILL.md +87 -0
- package/README.md +9 -4
- package/README.zh-CN.md +9 -4
- package/dashboard/dist/assets/{ArtifactsPage-DZNCi6tn.js → ArtifactsPage-CUrrDGgN.js} +1 -1
- package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +49 -0
- package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +27 -0
- package/dashboard/dist/assets/{CollabPage-B4NAHXS2.js → CollabPage-DIUXeazv.js} +1 -1
- package/dashboard/dist/assets/{ExecutionPanel-CFt4LJyq.js → ExecutionPanel-VmYeADFj.js} +1 -1
- package/dashboard/dist/assets/KanbanPage-DLq8v7hg.js +21 -0
- package/dashboard/dist/assets/{MarkdownRenderer-X4af_WNb.js → MarkdownRenderer-D7AehrnR.js} +1 -1
- package/dashboard/dist/assets/{McpPage-BKfCVIyU.js → McpPage-BY0SjTgw.js} +2 -2
- package/dashboard/dist/assets/{OutputPanel-BlBQFJSW.js → OutputPanel-B-Rjwgmv.js} +1 -1
- package/dashboard/dist/assets/{ProblemsPanel-De3DLvoI.js → ProblemsPanel-GEpF-oi4.js} +1 -1
- package/dashboard/dist/assets/RequirementBoardPage-xs8uDM7I.js +6 -0
- package/dashboard/dist/assets/{RequirementPage-Bllxe2XI.js → RequirementPage-BKDSFwjA.js} +5 -10
- package/dashboard/dist/assets/SpecsPage-DLFb9ZH0.js +36 -0
- package/dashboard/dist/assets/SupervisorPage-SOki_kgz.js +6 -0
- package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +11 -0
- package/dashboard/dist/assets/{TreeBrowser-Q12qobZs.js → TreeBrowser-B9DHdULE.js} +1 -1
- package/dashboard/dist/assets/{WorkflowPage-D_Fzdy3_.js → WorkflowPage-C8hWbYim.js} +1 -1
- package/dashboard/dist/assets/{check-u6fGOwQO.js → check-DJDk3A2a.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-Csu22t58.js → chevron-right-C7bVDreZ.js} +1 -1
- package/dashboard/dist/assets/{circle-CMrkbRNg.js → circle-Qfgy4LB_.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-c3tH1P4z.js → circle-alert-Na1vf6qQ.js} +1 -1
- package/dashboard/dist/assets/{circle-check-gYxxSYuH.js → circle-check-CEGgy3NV.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-TDSeWstm.js → circle-check-big-3JB8zRYj.js} +1 -1
- package/dashboard/dist/assets/{code-CFN2uX9V.js → code-Ble63Idz.js} +1 -1
- package/dashboard/dist/assets/{columns-3-38xIDlzy.js → columns-3-BUcKlxve.js} +1 -1
- package/dashboard/dist/assets/{download-DC7KkKyP.js → download-CMqkfn8x.js} +1 -1
- package/dashboard/dist/assets/{folder-CWq_lAnf.js → folder-B9ewx9LL.js} +1 -1
- package/dashboard/dist/assets/index-C2Mcb4TJ.js +231 -0
- package/dashboard/dist/assets/index-DyBbPc18.css +1 -0
- package/dashboard/dist/assets/{index-Do71weNR.js → index-JTmGteaT.js} +1 -1
- package/dashboard/dist/assets/{list-CgIP_2A-.js → list-DI8Wn2aT.js} +1 -1
- package/dashboard/dist/assets/loader-B5F6PzFT.js +11 -0
- package/dashboard/dist/assets/{minus-DYoN5UGk.js → minus-Lp_BfctG.js} +1 -1
- package/dashboard/dist/assets/{pen-line-Bh_WKYHm.js → pen-line-Ch7sphzZ.js} +1 -1
- package/dashboard/dist/assets/pencil-_yRMHmGT.js +6 -0
- package/dashboard/dist/assets/{proxy-BKxDAKTj.js → proxy-D72Y8a4Y.js} +1 -1
- package/dashboard/dist/assets/{search-SieXnOgr.js → search-BS6fI6Bg.js} +1 -1
- package/dashboard/dist/assets/{shallow-Bme1JY57.js → shallow-BXasQBvr.js} +1 -1
- package/dashboard/dist/assets/table-CeGlFjlP.js +6 -0
- package/dashboard/dist/assets/{terminal-BB3Xfuv5.js → terminal-BJic2yW-.js} +1 -1
- package/dashboard/dist/assets/{trash-2-C8f4vFFM.js → trash-2-Czz4X8Fb.js} +1 -1
- package/dashboard/dist/assets/{zap-4uwlzVm0.js → zap-C3H0jVFA.js} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +16 -1
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js +1 -2
- package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js +2 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/index.js +3 -0
- package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/collab.js +124 -0
- package/dashboard/dist-server/dashboard/src/server/routes/collab.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.d.ts +10 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js +73 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.d.ts +31 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.js +28 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +10 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/coordinate-types.d.ts +22 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +12 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.js +12 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +22 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js +7 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +28 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
- package/dashboard/dist-server/shared/agent-types.d.ts +4 -0
- package/dashboard/dist-server/src/hooks/constants.d.ts +3 -1
- package/dashboard/dist-server/src/hooks/constants.js +4 -2
- package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
- package/dist/shared/agent-types.d.ts +4 -0
- package/dist/shared/agent-types.d.ts.map +1 -1
- package/dist/src/commands/collab.js +4 -4
- package/dist/src/commands/collab.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +66 -1
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +29 -18
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +7 -2
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.js +23 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -1
- package/dist/src/hooks/constants.d.ts +3 -1
- package/dist/src/hooks/constants.d.ts.map +1 -1
- package/dist/src/hooks/constants.js +4 -2
- package/dist/src/hooks/constants.js.map +1 -1
- package/dist/src/hooks/guards/index.d.ts +1 -0
- package/dist/src/hooks/guards/index.d.ts.map +1 -1
- package/dist/src/hooks/guards/index.js +1 -0
- package/dist/src/hooks/guards/index.js.map +1 -1
- package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
- package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
- package/dist/src/hooks/guards/spec-validator.js +66 -0
- package/dist/src/hooks/guards/spec-validator.js.map +1 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
- package/dist/src/hooks/keyword-spec-injector.js +96 -0
- package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
- package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
- package/dist/src/hooks/skill-context.d.ts +3 -0
- package/dist/src/hooks/skill-context.d.ts.map +1 -1
- package/dist/src/hooks/skill-context.js +95 -9
- package/dist/src/hooks/skill-context.js.map +1 -1
- package/dist/src/hooks/spec-bridge.d.ts +40 -0
- package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
- package/dist/src/hooks/spec-bridge.js +97 -0
- package/dist/src/hooks/spec-bridge.js.map +1 -0
- package/dist/src/hooks/spec-injector.d.ts.map +1 -1
- package/dist/src/hooks/spec-injector.js +18 -12
- package/dist/src/hooks/spec-injector.js.map +1 -1
- package/dist/src/hooks/statusline.d.ts.map +1 -1
- package/dist/src/hooks/statusline.js +6 -3
- package/dist/src/hooks/statusline.js.map +1 -1
- package/dist/src/team/phase-orchestrator.d.ts +52 -0
- package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
- package/dist/src/team/phase-orchestrator.js +165 -0
- package/dist/src/team/phase-orchestrator.js.map +1 -0
- package/dist/src/team/phase-types.d.ts +51 -0
- package/dist/src/team/phase-types.d.ts.map +1 -0
- package/dist/src/team/phase-types.js +41 -0
- package/dist/src/team/phase-types.js.map +1 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +6 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/merge-validator.d.ts.map +1 -1
- package/dist/src/tools/merge-validator.js +114 -16
- package/dist/src/tools/merge-validator.js.map +1 -1
- package/dist/src/tools/spec-entry-parser.d.ts +56 -0
- package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
- package/dist/src/tools/spec-entry-parser.js +196 -0
- package/dist/src/tools/spec-entry-parser.js.map +1 -0
- package/dist/src/tools/spec-init.d.ts.map +1 -1
- package/dist/src/tools/spec-init.js +66 -92
- package/dist/src/tools/spec-init.js.map +1 -1
- package/dist/src/tools/spec-keyword-index.d.ts +30 -0
- package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
- package/dist/src/tools/spec-keyword-index.js +101 -0
- package/dist/src/tools/spec-keyword-index.js.map +1 -0
- package/dist/src/tools/spec-loader.d.ts +3 -3
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +49 -23
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tools/team-agents.d.ts +27 -0
- package/dist/src/tools/team-agents.d.ts.map +1 -0
- package/dist/src/tools/team-agents.js +362 -0
- package/dist/src/tools/team-agents.js.map +1 -0
- package/dist/src/tools/team-mailbox.d.ts +40 -0
- package/dist/src/tools/team-mailbox.d.ts.map +1 -0
- package/dist/src/tools/team-mailbox.js +384 -0
- package/dist/src/tools/team-mailbox.js.map +1 -0
- package/dist/src/tools/team-msg.d.ts +17 -8
- package/dist/src/tools/team-msg.d.ts.map +1 -1
- package/dist/src/tools/team-msg.js +110 -13
- package/dist/src/tools/team-msg.js.map +1 -1
- package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
- package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
- package/dist/src/tools/team-tasks-mcp.js +408 -0
- package/dist/src/tools/team-tasks-mcp.js.map +1 -0
- package/package.json +2 -1
- package/shared/agent-types.ts +4 -0
- package/templates/worktree-scope.json +9 -10
- package/templates/worktrees.json +26 -27
- package/workflows/analyze.md +816 -816
- package/workflows/brainstorm.md +480 -471
- package/workflows/codebase-rebuild.md +332 -332
- package/workflows/codebase-refresh.md +240 -240
- package/workflows/debug.md +16 -6
- package/workflows/execute.md +1 -1
- package/workflows/fork.md +100 -36
- package/workflows/harvest.md +420 -420
- package/workflows/integration-test.md +355 -343
- package/workflows/issue-discover.md +414 -414
- package/workflows/issue.md +14 -4
- package/workflows/learn.md +19 -5
- package/workflows/maestro.md +1 -0
- package/workflows/map.md +111 -111
- package/workflows/merge.md +113 -55
- package/workflows/milestone-complete.md +176 -176
- package/workflows/plan.md +1 -1
- package/workflows/quick.md +497 -497
- package/workflows/refactor.md +300 -300
- package/workflows/retrospective.md +61 -22
- package/workflows/review.md +17 -4
- package/workflows/roadmap.md +335 -335
- package/workflows/spec-generate.md +640 -640
- package/workflows/specs-add.md +46 -81
- package/workflows/specs-load.md +15 -17
- package/workflows/specs-setup.md +40 -161
- package/workflows/test.md +12 -2
- package/workflows/ui-style.md +9 -2
- package/dashboard/dist/assets/ChatInput-Bvr-FeEq.js +0 -49
- package/dashboard/dist/assets/ChatPage-D9zTkJZo.js +0 -22
- package/dashboard/dist/assets/KanbanPage-C8USth6H.js +0 -21
- package/dashboard/dist/assets/RequirementBoardPage-Bf1trzqs.js +0 -11
- package/dashboard/dist/assets/SpecsPage-9lwxKT27.js +0 -36
- package/dashboard/dist/assets/SupervisorPage-SusdfHFq.js +0 -6
- package/dashboard/dist/assets/TeamsPage-DsuM6OwC.js +0 -6
- package/dashboard/dist/assets/arrow-left-Bqtb2hle.js +0 -6
- package/dashboard/dist/assets/index-DWG-WrzT.js +0 -231
- package/dashboard/dist/assets/index-GUNJodSR.css +0 -1
- package/dashboard/dist/assets/table-llyEtj-7.js +0 -6
package/workflows/fork.md
CHANGED
|
@@ -121,12 +121,25 @@ IF syncMode:
|
|
|
121
121
|
## Step 5: Validate & Confirm
|
|
122
122
|
|
|
123
123
|
```
|
|
124
|
-
// Load phase
|
|
124
|
+
// Load phase status — artifact registry first, fallback to legacy phases/
|
|
125
125
|
phaseList = []
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
126
|
+
artifacts = projectState.artifacts ?? []
|
|
127
|
+
useArtifactRegistry = artifacts.length > 0
|
|
128
|
+
|
|
129
|
+
IF useArtifactRegistry:
|
|
130
|
+
// Derive phase status from artifact registry
|
|
131
|
+
for (phaseNum of milestonePhases):
|
|
132
|
+
execArtifacts = artifacts.filter(a => a.type === 'execute' && a.phase === phaseNum)
|
|
133
|
+
status = execArtifacts.some(a => a.status === 'completed') ? 'completed'
|
|
134
|
+
: execArtifacts.length > 0 ? 'in_progress'
|
|
135
|
+
: 'pending'
|
|
136
|
+
phaseList.push({ phase: phaseNum, title: "Phase " + phaseNum, status })
|
|
137
|
+
ELSE:
|
|
138
|
+
// Legacy: load from phases/ directory
|
|
139
|
+
for (phaseNum of milestonePhases):
|
|
140
|
+
Glob: .workflow/phases/{NN}-*/index.json where NN matches phaseNum
|
|
141
|
+
Read index.json → phaseIndex
|
|
142
|
+
phaseList.push(phaseIndex)
|
|
130
143
|
|
|
131
144
|
// Validate: milestone should have at least one non-completed phase
|
|
132
145
|
nonCompleted = phaseList.filter(p => p.status !== "completed")
|
|
@@ -172,7 +185,7 @@ Bash("git branch -D {branch}") // ignore errors (may not exist)
|
|
|
172
185
|
Bash("git worktree add -b {branch} {wtPath} {baseBranch}")
|
|
173
186
|
|
|
174
187
|
// 6c: Create .workflow/ structure in worktree
|
|
175
|
-
Bash("mkdir -p {wtPath}/.workflow/
|
|
188
|
+
Bash("mkdir -p {wtPath}/.workflow/scratch")
|
|
176
189
|
|
|
177
190
|
// 6d: Copy shared context (read-only)
|
|
178
191
|
Copy .workflow/project.md → {wtPath}/.workflow/project.md
|
|
@@ -182,46 +195,92 @@ IF file_exists(".workflow/config.json"):
|
|
|
182
195
|
IF directory_exists(".workflow/specs"):
|
|
183
196
|
Copy .workflow/specs/ → {wtPath}/.workflow/specs/
|
|
184
197
|
|
|
185
|
-
// 6e: Copy
|
|
186
|
-
ownedPhaseNumbers =
|
|
187
|
-
for (p of phaseList):
|
|
188
|
-
NN = String(p.phase).padStart(2, '0')
|
|
189
|
-
Copy .workflow/phases/{NN}-{p.slug}/ → {wtPath}/.workflow/phases/{NN}-{p.slug}/
|
|
190
|
-
ownedPhaseNumbers.push(p.phase)
|
|
191
|
-
|
|
192
|
-
// 6f: Copy completed dependency phase dirs outside this milestone (read-only reference)
|
|
193
|
-
allDeps = new Set()
|
|
194
|
-
for (p of phaseList):
|
|
195
|
-
for (dep of p.depends_on):
|
|
196
|
-
IF NOT ownedPhaseNumbers.includes(dep):
|
|
197
|
-
allDeps.add(dep)
|
|
198
|
+
// 6e: Copy milestone artifacts to worktree
|
|
199
|
+
ownedPhaseNumbers = milestonePhases.slice() // all phases in this milestone
|
|
198
200
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
201
|
+
IF useArtifactRegistry:
|
|
202
|
+
// Copy scratch dirs for this milestone's artifacts
|
|
203
|
+
milestoneArtifacts = artifacts.filter(a =>
|
|
204
|
+
a.milestone === milestoneName && a.path
|
|
205
|
+
)
|
|
206
|
+
for (art of milestoneArtifacts):
|
|
207
|
+
IF directory_exists(".workflow/" + art.path):
|
|
208
|
+
Copy .workflow/{art.path}/ → {wtPath}/.workflow/{art.path}/
|
|
209
|
+
ELSE:
|
|
210
|
+
// Legacy: copy phase directories
|
|
211
|
+
Bash("mkdir -p {wtPath}/.workflow/phases")
|
|
212
|
+
for (p of phaseList):
|
|
213
|
+
NN = String(p.phase).padStart(2, '0')
|
|
214
|
+
Copy .workflow/phases/{NN}-{p.slug}/ → {wtPath}/.workflow/phases/{NN}-{p.slug}/
|
|
215
|
+
|
|
216
|
+
// 6f: Copy dependency artifacts (phases outside this milestone)
|
|
217
|
+
IF useArtifactRegistry:
|
|
218
|
+
// Collect dependency phases from roadmap milestone entry
|
|
219
|
+
// (cross-milestone dependencies are defined in milestoneEntry.depends_on or roadmap)
|
|
220
|
+
depPhases = new Set()
|
|
221
|
+
IF milestoneEntry.depends_on:
|
|
222
|
+
for (dep of milestoneEntry.depends_on):
|
|
223
|
+
IF NOT ownedPhaseNumbers.includes(dep):
|
|
224
|
+
depPhases.add(dep)
|
|
225
|
+
// Copy dependency artifacts from main
|
|
226
|
+
for (dep of depPhases):
|
|
227
|
+
depArtifacts = artifacts.filter(a => a.phase === dep && a.path)
|
|
228
|
+
for (art of depArtifacts):
|
|
229
|
+
IF directory_exists(".workflow/" + art.path):
|
|
230
|
+
Copy .workflow/{art.path}/ → {wtPath}/.workflow/{art.path}/
|
|
231
|
+
ELSE:
|
|
232
|
+
// Legacy: copy completed dependency phase dirs
|
|
233
|
+
allDeps = new Set()
|
|
234
|
+
for (p of phaseList):
|
|
235
|
+
IF p.depends_on:
|
|
236
|
+
for (dep of p.depends_on):
|
|
237
|
+
IF NOT ownedPhaseNumbers.includes(dep):
|
|
238
|
+
allDeps.add(dep)
|
|
239
|
+
for (dep of allDeps):
|
|
240
|
+
depNN = String(dep).padStart(2, '0')
|
|
241
|
+
Glob: .workflow/phases/{depNN}-*/index.json
|
|
242
|
+
Read → depIndex
|
|
243
|
+
Copy .workflow/phases/{depNN}-{depIndex.slug}/ → {wtPath}/.workflow/phases/{depNN}-{depIndex.slug}/
|
|
244
|
+
|
|
245
|
+
// 6g: Build phase_dependencies map for worktree-scope
|
|
246
|
+
phaseDeps = {}
|
|
247
|
+
IF useArtifactRegistry:
|
|
248
|
+
IF milestoneEntry.depends_on:
|
|
249
|
+
for (phaseNum of ownedPhaseNumbers):
|
|
250
|
+
phaseDeps[String(phaseNum)] = milestoneEntry.depends_on
|
|
251
|
+
.filter(d => !ownedPhaseNumbers.includes(d))
|
|
252
|
+
ELSE:
|
|
253
|
+
for (p of phaseList):
|
|
254
|
+
IF p.depends_on:
|
|
255
|
+
externalDeps = p.depends_on.filter(d => !ownedPhaseNumbers.includes(d))
|
|
256
|
+
IF externalDeps.length > 0:
|
|
257
|
+
phaseDeps[String(p.phase)] = externalDeps
|
|
204
258
|
|
|
205
|
-
//
|
|
259
|
+
// 6h: Write worktree-scope.json
|
|
206
260
|
Write {wtPath}/.workflow/worktree-scope.json:
|
|
207
261
|
{
|
|
208
262
|
"worktree": true,
|
|
209
263
|
"milestone_num": milestoneNum,
|
|
210
264
|
"milestone": milestoneName,
|
|
211
265
|
"owned_phases": ownedPhaseNumbers,
|
|
266
|
+
"phase_dependencies": phaseDeps,
|
|
212
267
|
"main_worktree": resolve(cwd),
|
|
213
268
|
"branch": branch,
|
|
214
269
|
"base_commit": baseCommit,
|
|
215
270
|
"created_at": getUtc8ISOString()
|
|
216
271
|
}
|
|
217
272
|
|
|
218
|
-
//
|
|
273
|
+
// 6i: Write scoped state.json
|
|
219
274
|
Read .workflow/state.json → mainState
|
|
220
275
|
firstPending = phaseList.find(p => p.status !== "completed")
|
|
221
276
|
scopedState = {
|
|
222
277
|
...mainState,
|
|
223
278
|
current_phase: firstPending?.phase ?? phaseList[0].phase,
|
|
224
|
-
current_milestone: milestoneName
|
|
279
|
+
current_milestone: milestoneName,
|
|
280
|
+
// Carry over milestone-scoped artifacts to worktree
|
|
281
|
+
artifacts: useArtifactRegistry
|
|
282
|
+
? artifacts.filter(a => a.milestone === milestoneName || ownedPhaseNumbers.includes(a.phase))
|
|
283
|
+
: []
|
|
225
284
|
}
|
|
226
285
|
Write {wtPath}/.workflow/state.json: scopedState
|
|
227
286
|
```
|
|
@@ -260,14 +319,20 @@ registry.fork_sessions.push({
|
|
|
260
319
|
|
|
261
320
|
Write .workflow/worktrees.json: registry
|
|
262
321
|
|
|
263
|
-
// Mark milestone phases as "forked"
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
322
|
+
// Mark milestone phases as "forked"
|
|
323
|
+
IF useArtifactRegistry:
|
|
324
|
+
// In artifact registry model, worktrees.json tracks forked state.
|
|
325
|
+
// No per-phase marking needed — the registry entry signals ownership.
|
|
326
|
+
// (worktrees.json already updated above with owned_phases)
|
|
327
|
+
ELSE:
|
|
328
|
+
// Legacy: mark phase index.json as forked
|
|
329
|
+
for (p of phaseList):
|
|
330
|
+
IF p.status !== "completed":
|
|
331
|
+
NN = String(p.phase).padStart(2, '0')
|
|
332
|
+
Read .workflow/phases/{NN}-{p.slug}/index.json → idx
|
|
333
|
+
idx.status = "forked"
|
|
334
|
+
idx.updated_at = getUtc8ISOString()
|
|
335
|
+
Write .workflow/phases/{NN}-{p.slug}/index.json: idx
|
|
271
336
|
|
|
272
337
|
mainState.last_updated = getUtc8ISOString()
|
|
273
338
|
Write .workflow/state.json: mainState
|
|
@@ -295,7 +360,6 @@ Display:
|
|
|
295
360
|
/maestro-plan {firstPending.phase}
|
|
296
361
|
/maestro-execute {firstPending.phase}
|
|
297
362
|
/maestro-verify {firstPending.phase}
|
|
298
|
-
/maestro-phase-transition {firstPending.phase}
|
|
299
363
|
# ... repeat for next phases in milestone
|
|
300
364
|
|
|
301
365
|
Or delegate (automated):
|