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
|
@@ -1,62 +1,54 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: maestro-coordinate
|
|
3
|
-
description: CLI-based coordinator — analyze intent → select command chain → execute sequentially via
|
|
4
|
-
argument-hint: "\"intent text\" [-y] [-c] [--dry-run] [--chain <name>]
|
|
3
|
+
description: CLI-based coordinator — analyze intent → select command chain → execute sequentially via maestro delegate with auto-confirm. Async state machine with template-driven prompts and gemini analysis between steps.
|
|
4
|
+
argument-hint: "\"intent text\" [-y] [-c] [--dry-run] [--chain <name>]"
|
|
5
5
|
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
# Maestro Coordinate (CLI Delegate)
|
|
13
|
-
|
|
14
|
-
## Usage
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
$maestro-coordinate "implement user authentication with JWT"
|
|
18
|
-
$maestro-coordinate -y "refactor the payment module"
|
|
19
|
-
$maestro-coordinate --continue
|
|
20
|
-
$maestro-coordinate --dry-run "add rate limiting to API endpoints"
|
|
21
|
-
$maestro-coordinate --chain feature "add dark mode toggle"
|
|
22
|
-
$maestro-coordinate --tool gemini "fix auth regression"
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
**Flags**:
|
|
26
|
-
- `-y, --yes` — Auto mode: skip all prompts, inject auto-confirm into delegates
|
|
27
|
-
- `-c, --continue` — Resume previous session from last incomplete step
|
|
28
|
-
- `--dry-run` — Show planned chain without executing
|
|
29
|
-
- `--chain <name>` — Force a specific chain (skips intent classification)
|
|
30
|
-
- `--tool <tool>` — CLI tool override (default: codex)
|
|
31
|
-
|
|
32
|
-
**Session state**: `.workflow/.maestro-coordinate/{session-id}/state.json`
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## Overview
|
|
37
|
-
|
|
38
|
-
Sequential CLI-delegate coordinator. Each chain step is executed via `codex delegate "prompt" --to <tool> --mode write` with a template-driven prompt. After each step completes, a gemini analysis evaluates output quality and generates optimization hints for subsequent steps. All execution is background-async with hook callbacks.
|
|
8
|
+
<purpose>
|
|
9
|
+
Sequential CLI-delegate coordinator. Each chain step executes via `maestro delegate "prompt" --to <tool> --mode write`
|
|
10
|
+
with a template-driven prompt. After each step, gemini analysis evaluates output quality and generates
|
|
11
|
+
optimization hints for subsequent steps. All execution is background-async with hook callbacks.
|
|
39
12
|
|
|
40
13
|
```
|
|
41
14
|
Intent → Resolve Chain → Step 1 → Analysis → Step 2 → Analysis → … → Report
|
|
42
15
|
(chainMap) delegate gemini delegate gemini
|
|
43
16
|
callback callback callback callback
|
|
44
17
|
```
|
|
45
|
-
|
|
46
|
-
---
|
|
47
|
-
|
|
48
|
-
## Implementation
|
|
49
|
-
|
|
50
|
-
> **Full implementation reference**: The complete `detectTaskType`, `detectNextAction`, and `chainMap` definitions (35+ intent patterns, 40+ chain types) are in `~/.maestro/workflows/maestro-coordinate.codex.md`. Read that file for authoritative logic before executing any step.
|
|
18
|
+
</purpose>
|
|
51
19
|
|
|
52
20
|
<required_reading>
|
|
53
|
-
@~/.maestro/workflows/maestro-coordinate.codex.md
|
|
21
|
+
@~/.maestro/workflows/maestro-coordinate.codex.md — authoritative `detectTaskType`, `detectNextAction`, `chainMap` (35+ intent patterns, 40+ chain types). Read before executing any step.
|
|
54
22
|
</required_reading>
|
|
55
23
|
|
|
56
24
|
<deferred_reading>
|
|
57
25
|
- [coordinate template](~/.maestro/templates/cli/prompts/coordinate-step.txt) — read when filling step prompts
|
|
58
26
|
</deferred_reading>
|
|
59
27
|
|
|
28
|
+
<context>
|
|
29
|
+
$ARGUMENTS — user intent text, or special flags.
|
|
30
|
+
|
|
31
|
+
**Flags:**
|
|
32
|
+
- `-y, --yes` — Auto mode: skip all prompts, inject auto-confirm into delegates
|
|
33
|
+
- `-c, --continue` — Resume previous session from last incomplete step
|
|
34
|
+
- `--dry-run` — Show planned chain without executing
|
|
35
|
+
- `--chain <name>` — Force specific chain (skips intent classification)
|
|
36
|
+
|
|
37
|
+
**Session state**: `.workflow/.maestro-coordinate/{session-id}/state.json`
|
|
38
|
+
</context>
|
|
39
|
+
|
|
40
|
+
<invariants>
|
|
41
|
+
1. **STOP after each delegate call**: Background execution via `run_in_background: true`, wait for hook callback.
|
|
42
|
+
2. **State machine**: Advance via `current_step`, no sync loops for async operations.
|
|
43
|
+
3. **Template-driven**: All steps use `coordinate-step.txt`, no per-command prompt assembly.
|
|
44
|
+
4. **Context propagation**: Parse PHASE / spec session ID / scratch_dir / issue_id from each step output, feed to next step.
|
|
45
|
+
5. **Gemini analysis after each step**: Evaluate output quality, generate hints for next step, chain via `--resume`.
|
|
46
|
+
6. **Auto-confirm injection**: `{{AUTO_DIRECTIVE}}` in template prevents blocking during background execution.
|
|
47
|
+
7. **Resumable**: `-c` reads `state.json`, jumps to first pending step.
|
|
48
|
+
8. **Delegate tool**: `maestro delegate --to codex` for all execution steps; `--to gemini` only for post-step analysis.</invariants>
|
|
49
|
+
|
|
50
|
+
<execution>
|
|
51
|
+
|
|
60
52
|
### Step 1: Parse Arguments
|
|
61
53
|
|
|
62
54
|
```javascript
|
|
@@ -65,70 +57,34 @@ const AUTO_YES = /\b(-y|--yes)\b/.test(args);
|
|
|
65
57
|
const RESUME = /\b(-c|--continue)\b/.test(args);
|
|
66
58
|
const DRY_RUN = /\b--dry-run\b/.test(args);
|
|
67
59
|
const forcedChain = args.match(/--chain\s+(\S+)/)?.[1] || null;
|
|
68
|
-
const cliTool = args.match(/--tool\s+(\S+)/)?.[1] || 'codex';
|
|
69
60
|
const intent = args
|
|
70
61
|
.replace(/\b(-y|--yes|-c|--continue|--dry-run)\b/g, '')
|
|
71
|
-
.replace(/--
|
|
62
|
+
.replace(/--chain\s+\S+/g, '')
|
|
72
63
|
.trim();
|
|
73
64
|
```
|
|
74
65
|
|
|
75
|
-
**If RESUME
|
|
76
|
-
1. Find latest `state.json` in `.workflow/.maestro-coordinate/`
|
|
77
|
-
2. Load state → set `current_step` to first non-completed step
|
|
78
|
-
3. Jump to **Step 6**
|
|
79
|
-
|
|
80
|
-
---
|
|
81
|
-
|
|
82
|
-
### Step 2: Read Project State
|
|
83
|
-
|
|
84
|
-
Read `.workflow/state.json` + `.workflow/roadmap.md` + current phase `index.json`.
|
|
85
|
-
|
|
86
|
-
**If missing:** `projectState = { initialized: false }`. If intent also empty → Error E001.
|
|
87
|
-
|
|
88
|
-
---
|
|
89
|
-
|
|
90
|
-
### Step 3: Classify Intent & Select Chain
|
|
91
|
-
|
|
92
|
-
Follow `~/.maestro/workflows/maestro-coordinate.md` Steps 3a–3d exactly:
|
|
93
|
-
- Exact-match keywords (fast path)
|
|
94
|
-
- Structured intent extraction (action × object matrix)
|
|
95
|
-
- State-based routing for `state_continue`
|
|
96
|
-
- Chain map lookup
|
|
97
|
-
- Phase/issue ID resolution
|
|
98
|
-
|
|
99
|
-
If clarity < 2 and not AUTO_YES: clarify via AskUserQuestion (max 2 rounds).
|
|
100
|
-
|
|
101
|
-
---
|
|
66
|
+
**If RESUME**: Find latest `state.json` in `.workflow/.maestro-coordinate/`, load → jump to Step 6.
|
|
102
67
|
|
|
103
|
-
### Step 4: Confirm
|
|
68
|
+
### Step 2–4: Classify Intent → Confirm
|
|
104
69
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
2. [{cmd}] {args}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
**If not AUTO_YES:** AskUserQuestion — Execute / Execute from step N / Cancel.
|
|
114
|
-
|
|
115
|
-
---
|
|
70
|
+
1. Read `.workflow/state.json` + `.workflow/roadmap.md` + current phase
|
|
71
|
+
2. If `--chain` given → use directly; else classify via `detectTaskType` + `chainMap`
|
|
72
|
+
3. If clarity < 2 and not AUTO_YES → clarify via AskUserQuestion (max 2 rounds)
|
|
73
|
+
4. **`--dry-run`**: Display chain and exit
|
|
74
|
+
5. **User confirmation** (skip if AUTO_YES): Execute / Execute from step N / Cancel
|
|
116
75
|
|
|
117
76
|
### Step 5: Setup Session
|
|
118
77
|
|
|
119
78
|
```javascript
|
|
120
79
|
const sessionId = `coord-${new Date().toISOString().replace(/[-:T]/g, '').slice(0, 15)}`;
|
|
121
80
|
const sessionDir = `.workflow/.maestro-coordinate/${sessionId}`;
|
|
122
|
-
Bash(`mkdir -p "${sessionDir}"`);
|
|
123
81
|
|
|
124
82
|
const state = {
|
|
125
83
|
session_id: sessionId, status: 'running',
|
|
126
84
|
created_at: new Date().toISOString(),
|
|
127
85
|
intent, task_type: taskType, chain_name: chainName,
|
|
128
|
-
|
|
129
|
-
current_step: 0,
|
|
130
|
-
gemini_session_id: null,
|
|
131
|
-
step_analyses: [],
|
|
86
|
+
auto_mode: AUTO_YES, phase: resolvedPhase,
|
|
87
|
+
current_step: 0, gemini_session_id: null, step_analyses: [],
|
|
132
88
|
steps: chain.map((s, i) => ({
|
|
133
89
|
index: i, cmd: s.cmd, args: s.args || '',
|
|
134
90
|
status: 'pending', exec_id: null, analysis: null
|
|
@@ -137,9 +93,7 @@ const state = {
|
|
|
137
93
|
Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
|
|
138
94
|
```
|
|
139
95
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
### Step 6: Execute Step via codex delegate
|
|
96
|
+
### Step 6: Execute Step via maestro delegate
|
|
143
97
|
|
|
144
98
|
#### 6a: Assemble args
|
|
145
99
|
|
|
@@ -165,28 +119,12 @@ function assembleArgs(step) {
|
|
|
165
119
|
}
|
|
166
120
|
```
|
|
167
121
|
|
|
168
|
-
#### 6b: Build prompt from template
|
|
122
|
+
#### 6b: Build prompt from template + launch
|
|
169
123
|
|
|
170
124
|
Read `~/.maestro/templates/cli/prompts/coordinate-step.txt`, fill placeholders.
|
|
171
|
-
If previous step has analysis hints, inject
|
|
125
|
+
If previous step has analysis hints, inject as `{{ANALYSIS_HINTS}}`.
|
|
172
126
|
|
|
173
127
|
```javascript
|
|
174
|
-
function escapeForShell(str) { return "'" + str.replace(/'/g, "'\\''") + "'"; }
|
|
175
|
-
|
|
176
|
-
const assembledArgs = assembleArgs(step);
|
|
177
|
-
const template = Read('~/.maestro/templates/cli/prompts/coordinate-step.txt');
|
|
178
|
-
|
|
179
|
-
let analysisHints = '';
|
|
180
|
-
const prevAnalysis = (state.step_analyses || []).find(a => a.step_index === state.current_step - 1);
|
|
181
|
-
if (prevAnalysis?.next_step_hints) {
|
|
182
|
-
const h = prevAnalysis.next_step_hints;
|
|
183
|
-
const parts = [];
|
|
184
|
-
if (h.prompt_additions) parts.push(h.prompt_additions);
|
|
185
|
-
if (h.cautions?.length) parts.push('Cautions: ' + h.cautions.join('; '));
|
|
186
|
-
if (h.context_to_carry) parts.push('Context from prior step: ' + h.context_to_carry);
|
|
187
|
-
if (parts.length) analysisHints = parts.join('\n');
|
|
188
|
-
}
|
|
189
|
-
|
|
190
128
|
const prompt = template
|
|
191
129
|
.replace('{{COMMAND}}', `/${step.cmd}`)
|
|
192
130
|
.replace('{{ARGS}}', assembledArgs)
|
|
@@ -194,41 +132,18 @@ const prompt = template
|
|
|
194
132
|
.replace('{{AUTO_DIRECTIVE}}', state.auto_mode ? 'Auto-confirm all prompts. No interactive questions.' : '')
|
|
195
133
|
.replace('{{CHAIN_NAME}}', state.chain_name)
|
|
196
134
|
.replace('{{ANALYSIS_HINTS}}', analysisHints);
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
#### 6c: Launch via codex delegate
|
|
200
|
-
|
|
201
|
-
```
|
|
202
|
-
------------------------------------------------------------
|
|
203
|
-
STEP {i+1}/{total}: {step.cmd} | Tool: {cliTool}
|
|
204
|
-
------------------------------------------------------------
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
```javascript
|
|
208
|
-
state.steps[state.current_step].status = 'running';
|
|
209
|
-
state.steps[state.current_step].started_at = new Date().toISOString();
|
|
210
|
-
Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
|
|
211
135
|
|
|
212
136
|
Bash({
|
|
213
|
-
command: `
|
|
137
|
+
command: `maestro delegate ${escapeForShell(prompt)} --to codex --mode write`,
|
|
214
138
|
run_in_background: true, timeout: 600000
|
|
215
139
|
});
|
|
216
140
|
// ■ STOP — wait for hook callback
|
|
217
141
|
```
|
|
218
142
|
|
|
219
|
-
---
|
|
220
|
-
|
|
221
143
|
### Step 7: Post-Step Callback
|
|
222
144
|
|
|
223
145
|
```javascript
|
|
224
|
-
|
|
225
|
-
const step = state.steps[stepIdx];
|
|
226
|
-
const output = /* callback output */;
|
|
227
|
-
|
|
228
|
-
step.exec_id = /* from callback stderr */;
|
|
229
|
-
step.completed_at = new Date().toISOString();
|
|
230
|
-
|
|
231
|
-
// Context propagation
|
|
146
|
+
// Context propagation from output
|
|
232
147
|
const phaseMatch = output.match(/PHASE:\s*(\d+)/m);
|
|
233
148
|
if (phaseMatch) context.current_phase = phaseMatch[1];
|
|
234
149
|
const specMatch = output.match(/SPEC-[\w-]+/);
|
|
@@ -238,107 +153,34 @@ if (scratchMatch) context.scratch_dir = scratchMatch[1].trim();
|
|
|
238
153
|
|
|
239
154
|
// Success/failure
|
|
240
155
|
const failed = /^STATUS:\s*FAILURE/m.test(output);
|
|
241
|
-
if (!failed) {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
if (!step.retried) { step.retried = true; /* re-execute Step 6c */ return; }
|
|
245
|
-
step.status = 'skipped';
|
|
246
|
-
} else {
|
|
247
|
-
// AskUserQuestion: Retry / Skip / Abort
|
|
248
|
-
}
|
|
156
|
+
if (!failed) { step.status = 'completed'; }
|
|
157
|
+
else if (state.auto_mode && !step.retried) { step.retried = true; /* re-execute Step 6 */ return; }
|
|
158
|
+
else { step.status = 'skipped'; /* or AskUserQuestion: Retry / Skip / Abort */ }
|
|
249
159
|
|
|
250
160
|
Write(`${sessionDir}/step-${stepIdx + 1}-output.txt`, output);
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
// → Step 7b: Gemini analysis (skip if step failed/skipped or single-step chain)
|
|
254
|
-
if (step.status === 'completed' && state.steps.length > 1) {
|
|
255
|
-
// → Step 7b
|
|
256
|
-
} else {
|
|
257
|
-
state.current_step = stepIdx + 1;
|
|
258
|
-
Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
|
|
259
|
-
if (state.current_step < state.steps.length) { /* → Step 6 */ }
|
|
260
|
-
else { /* → Step 8 */ }
|
|
261
|
-
}
|
|
161
|
+
// → Step 7b (gemini analysis) if completed + multi-step chain
|
|
162
|
+
// → else advance current_step, loop to Step 6 or Step 8
|
|
262
163
|
```
|
|
263
164
|
|
|
264
|
-
---
|
|
265
|
-
|
|
266
165
|
### Step 7b: Analyze Step Output (via gemini)
|
|
267
166
|
|
|
268
|
-
After each step completes, call gemini to evaluate execution quality and generate optimization hints.
|
|
269
|
-
|
|
270
167
|
```javascript
|
|
271
|
-
|
|
272
|
-
CHAIN: ${state.chain_name} | Intent: ${state.intent}
|
|
273
|
-
COMMAND: /${step.cmd} ${step.args || ''}
|
|
274
|
-
STEP OUTPUT (last 200 lines):
|
|
275
|
-
${output.split('\n').slice(-200).join('\n')}
|
|
276
|
-
NEXT STEP: ${nextStep ? `/${nextStep.cmd} ${nextStep.args || ''}` : 'None (last step)'}
|
|
277
|
-
EXPECTED OUTPUT (strict JSON):
|
|
278
|
-
{
|
|
279
|
-
"quality_score": <0-100>,
|
|
280
|
-
"execution_assessment": { "success": <bool>, "completeness": "<full|partial|minimal>", "key_outputs": [], "missing_outputs": [] },
|
|
281
|
-
"issues": [{ "severity": "critical|high|medium|low", "description": "" }],
|
|
282
|
-
"next_step_hints": {
|
|
283
|
-
"prompt_additions": "<extra context or constraints to inject into next step prompt>",
|
|
284
|
-
"cautions": ["<things next step should watch out for>"],
|
|
285
|
-
"context_to_carry": "<key facts from this step's output that next step needs>"
|
|
286
|
-
},
|
|
287
|
-
"step_summary": ""
|
|
288
|
-
}`;
|
|
289
|
-
|
|
290
|
-
let delegateCmd = `codex delegate ${escapeForShell(analysisPrompt)} --to gemini --mode analysis --rule analysis-review-code-quality`;
|
|
168
|
+
let delegateCmd = `maestro delegate ${escapeForShell(analysisPrompt)} --to gemini --mode analysis --rule analysis-review-code-quality`;
|
|
291
169
|
if (state.gemini_session_id) delegateCmd += ` --resume ${state.gemini_session_id}`;
|
|
292
170
|
Bash({ command: delegateCmd, run_in_background: true, timeout: 300000 });
|
|
293
171
|
// ■ STOP — wait for hook callback
|
|
294
172
|
```
|
|
295
173
|
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
```javascript
|
|
299
|
-
const analysisResult = /* parsed JSON from callback output */;
|
|
300
|
-
state.gemini_session_id = /* from callback stderr */;
|
|
301
|
-
|
|
302
|
-
if (!state.step_analyses) state.step_analyses = [];
|
|
303
|
-
state.step_analyses.push({
|
|
304
|
-
step_index: stepIdx, cmd: step.cmd,
|
|
305
|
-
quality_score: analysisResult.quality_score,
|
|
306
|
-
issues: analysisResult.issues,
|
|
307
|
-
next_step_hints: analysisResult.next_step_hints,
|
|
308
|
-
summary: analysisResult.step_summary
|
|
309
|
-
});
|
|
310
|
-
step.analysis = {
|
|
311
|
-
quality_score: analysisResult.quality_score,
|
|
312
|
-
issue_count: (analysisResult.issues || []).length
|
|
313
|
-
};
|
|
314
|
-
Write(`${sessionDir}/step-${stepIdx + 1}-analysis.json`, JSON.stringify(analysisResult, null, 2));
|
|
315
|
-
|
|
316
|
-
// Advance
|
|
317
|
-
state.current_step = stepIdx + 1;
|
|
318
|
-
Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
|
|
319
|
-
|
|
320
|
-
if (state.current_step < state.steps.length) { /* → Step 6 */ }
|
|
321
|
-
else { /* → Step 8 */ }
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
---
|
|
174
|
+
Post-analyze: store quality_score + issues + next_step_hints in `state.step_analyses[]`, chain gemini sessions via `--resume`.
|
|
325
175
|
|
|
326
176
|
### Step 8: Completion Report
|
|
327
177
|
|
|
328
|
-
```javascript
|
|
329
|
-
const done = state.steps.filter(s => s.status === 'completed').length;
|
|
330
|
-
state.status = state.steps.some(s => s.status === 'failed') ? 'completed_with_errors' : 'completed';
|
|
331
|
-
state.completed_at = new Date().toISOString();
|
|
332
|
-
Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
|
|
333
|
-
```
|
|
334
|
-
|
|
335
178
|
```
|
|
336
179
|
============================================================
|
|
337
180
|
MAESTRO-COORDINATE COMPLETE
|
|
338
181
|
============================================================
|
|
339
182
|
Session: {session_id}
|
|
340
183
|
Chain: {chain_name} ({done}/{total})
|
|
341
|
-
Tool: {cliTool}
|
|
342
184
|
|
|
343
185
|
Steps:
|
|
344
186
|
[✓] 1. maestro-plan — completed (quality: 85/100)
|
|
@@ -348,32 +190,24 @@ Write(`${sessionDir}/state.json`, JSON.stringify(state, null, 2));
|
|
|
348
190
|
Next: $maestro-coordinate --continue
|
|
349
191
|
============================================================
|
|
350
192
|
```
|
|
193
|
+
</execution>
|
|
351
194
|
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
## Error Handling
|
|
355
|
-
|
|
195
|
+
<error_codes>
|
|
356
196
|
| Code | Severity | Description | Recovery |
|
|
357
197
|
|------|----------|-------------|----------|
|
|
358
198
|
| E001 | error | No intent and project not initialized | Suggest $maestro-init |
|
|
359
199
|
| E002 | error | Clarity too low after 2 rounds | Ask to rephrase |
|
|
360
200
|
| E003 | error | Step failed + abort | Suggest resume with -c |
|
|
361
201
|
| E004 | error | Resume session not found | Show available sessions |
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
7. **Tool fallback** — if `codex delegate` fails: retry with same tool once, then try `gemini` → `qwen`
|
|
375
|
-
8. **Auto-confirm injection** — `{{AUTO_DIRECTIVE}}` in template prevents blocking during background execution
|
|
376
|
-
9. **Resumable** — `-c` reads `state.json`, jumps to first pending step
|
|
377
|
-
10. **Gemini analysis after each step** — evaluate output quality via `codex delegate --to gemini --mode analysis`, chained via `--resume`
|
|
378
|
-
11. **Session capture** — after each gemini callback, capture exec_id → `gemini_session_id` for resume chain
|
|
379
|
-
12. **Analysis skip conditions** — skip gemini analysis for: failed/skipped steps, single-step chains
|
|
202
|
+
</error_codes>
|
|
203
|
+
|
|
204
|
+
<success_criteria>
|
|
205
|
+
- [ ] Intent classified and chain selected via detectTaskType + chainMap
|
|
206
|
+
- [ ] Each step executed via `maestro delegate` with coordinate-step template
|
|
207
|
+
- [ ] Auto-confirm injected, structured return parsed
|
|
208
|
+
- [ ] Each completed step analyzed via `maestro delegate --to gemini --mode analysis`
|
|
209
|
+
- [ ] Analysis hints injected into next step prompt via `{{ANALYSIS_HINTS}}`
|
|
210
|
+
- [ ] Gemini sessions chained via `--resume` for accumulated context
|
|
211
|
+
- [ ] Session state at .workflow/.maestro-coordinate/{session_id}/
|
|
212
|
+
- [ ] Completion report with per-step status and quality scores
|
|
213
|
+
</success_criteria>
|