maestro-flow 0.3.48 → 0.3.49
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/impeccable-agent.md +99 -0
- package/.claude/commands/maestro-analyze.md +2 -2
- package/.claude/commands/maestro-brainstorm.md +116 -112
- package/.claude/commands/maestro-composer.md +5 -0
- package/.claude/commands/maestro-impeccable.md +46 -9
- package/.claude/commands/maestro-merge.md +3 -0
- package/.claude/commands/maestro-roadmap.md +5 -1
- package/.claude/commands/maestro-ui-craft.md +56 -4
- package/.claude/commands/maestro.md +1 -1
- package/.claude/commands/manage-issue-discover.md +4 -0
- package/.claude/commands/quality-refactor.md +3 -0
- package/.claude/skills/maestro-help/index/catalog.json +1 -1
- package/.claude/skills/maestro-help/phases/01-parse-intent.md +1 -1
- package/.claude/skills/maestro-impeccable/SKILL.md +3 -1
- package/.codex/skills/maestro/SKILL.md +3 -3
- package/.codex/skills/maestro-brainstorm/SKILL.md +19 -2
- package/.codex/skills/maestro-composer/SKILL.md +5 -0
- package/.codex/skills/maestro-help/catalog.json +1 -1
- package/.codex/skills/maestro-impeccable/SKILL.md +24 -5
- package/.codex/skills/maestro-merge/SKILL.md +3 -0
- package/.codex/skills/maestro-milestone-audit/SKILL.md +64 -7
- package/.codex/skills/maestro-quick/SKILL.md +1 -1
- package/.codex/skills/maestro-roadmap/SKILL.md +1 -1
- package/.codex/skills/maestro-tools-execute/SKILL.md +1 -1
- package/.codex/skills/maestro-tools-register/SKILL.md +1 -1
- package/.codex/skills/maestro-ui-craft/SKILL.md +51 -6
- package/.codex/skills/quality-refactor/SKILL.md +114 -22
- package/chains/_intent-map.json +1 -1
- package/chains/singles/ui-design.json +4 -4
- package/chains/{ui-design-driven.json → ui-craft-build.json} +8 -8
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +3 -3
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +12 -7
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/impeccable.d.ts +2 -1
- package/dist/src/commands/impeccable.d.ts.map +1 -1
- package/dist/src/commands/impeccable.js +80 -1
- package/dist/src/commands/impeccable.js.map +1 -1
- package/package.json +1 -1
- package/templates/planning-roles/ui-designer.md +86 -99
- package/templates/workflows/specs/node-catalog.md +1 -1
- package/workflows/brainstorm.md +26 -0
- package/workflows/cli-tools-usage.md +9 -26
- package/workflows/delegate-usage.md +301 -343
- package/workflows/impeccable/design.md +462 -0
- package/workflows/impeccable/explore.md +157 -0
- package/workflows/impeccable/shape.md +4 -0
- package/workflows/impeccable/ui-search/__pycache__/core.cpython-313.pyc +0 -0
- package/workflows/impeccable/ui-search/__pycache__/design_system.cpython-313.pyc +0 -0
- package/workflows/impeccable/ui-search/core.py +262 -0
- package/workflows/impeccable/ui-search/data/app-interface.csv +31 -0
- package/workflows/impeccable/ui-search/data/charts.csv +26 -0
- package/workflows/impeccable/ui-search/data/colors.csv +162 -0
- package/workflows/impeccable/ui-search/data/design.csv +1776 -0
- package/workflows/impeccable/ui-search/data/draft.csv +1779 -0
- package/workflows/impeccable/ui-search/data/google-fonts.csv +1924 -0
- package/workflows/impeccable/ui-search/data/icons.csv +106 -0
- package/workflows/impeccable/ui-search/data/landing.csv +35 -0
- package/workflows/impeccable/ui-search/data/products.csv +162 -0
- package/workflows/impeccable/ui-search/data/react-performance.csv +45 -0
- package/workflows/impeccable/ui-search/data/stacks/angular.csv +51 -0
- package/workflows/impeccable/ui-search/data/stacks/astro.csv +54 -0
- package/workflows/impeccable/ui-search/data/stacks/flutter.csv +53 -0
- package/workflows/impeccable/ui-search/data/stacks/html-tailwind.csv +56 -0
- package/workflows/impeccable/ui-search/data/stacks/jetpack-compose.csv +53 -0
- package/workflows/impeccable/ui-search/data/stacks/laravel.csv +51 -0
- package/workflows/impeccable/ui-search/data/stacks/nextjs.csv +53 -0
- package/workflows/impeccable/ui-search/data/stacks/nuxt-ui.csv +51 -0
- package/workflows/impeccable/ui-search/data/stacks/nuxtjs.csv +59 -0
- package/workflows/impeccable/ui-search/data/stacks/react-native.csv +52 -0
- package/workflows/impeccable/ui-search/data/stacks/react.csv +54 -0
- package/workflows/impeccable/ui-search/data/stacks/shadcn.csv +61 -0
- package/workflows/impeccable/ui-search/data/stacks/svelte.csv +54 -0
- package/workflows/impeccable/ui-search/data/stacks/swiftui.csv +51 -0
- package/workflows/impeccable/ui-search/data/stacks/threejs.csv +54 -0
- package/workflows/impeccable/ui-search/data/stacks/vue.csv +50 -0
- package/workflows/impeccable/ui-search/data/styles.csv +85 -0
- package/workflows/impeccable/ui-search/data/typography.csv +74 -0
- package/workflows/impeccable/ui-search/data/ui-reasoning.csv +162 -0
- package/workflows/impeccable/ui-search/data/ux-guidelines.csv +100 -0
- package/workflows/impeccable/ui-search/design_system.py +1148 -0
- package/workflows/impeccable/ui-search/prototype-template.html +511 -0
- package/workflows/impeccable/ui-search/render-prototype.js +208 -0
- package/workflows/impeccable/ui-search/search.py +114 -0
- package/workflows/maestro-chain-execute.md +2 -2
- package/workflows/maestro.codex.md +3 -3
- package/workflows/maestro.md +5 -5
- package/workflows/plan.md +1 -1
- package/workflows/ui-design.md +1 -1
- package/workflows/ui-style.md +1 -1
- package/.claude/commands/maestro-ui-design.md +0 -104
- package/.codex/skills/maestro-ui-design/SKILL.md +0 -242
|
@@ -1,17 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: maestro-ui-craft
|
|
3
3
|
description: Chain maestro-impeccable commands with intelligent routing and quality gate loops for automated UI production
|
|
4
|
-
argument-hint: "<intent|target> [--chain build|improve|enhance|harden|live] [--enhance <cmd>] [--threshold <score>] [--max-loops <n>] [-y] [-c]"
|
|
5
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep,
|
|
4
|
+
argument-hint: "<intent|target> [--chain build|improve|enhance|harden|live] [--enhance <cmd>] [--threshold <score>] [--max-loops <n>] [--skip-design-explore] [--skip-design] [--styles <N>] [--stack <stack>] [-y] [-c]"
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, request_user_input
|
|
6
6
|
---
|
|
7
7
|
<purpose>
|
|
8
8
|
Orchestrate maestro-impeccable skill commands via intelligent intent routing + quality gate auto-iteration.
|
|
9
9
|
Chain: Build → Evaluate → Auto-Refine → Re-evaluate → Verify.
|
|
10
10
|
|
|
11
11
|
Core innovation: critique/audit scores drive automatic command selection and iteration loops.
|
|
12
|
-
maestro-impeccable has
|
|
12
|
+
maestro-impeccable has 24 commands across 6 categories -- this command chains them into automated pipelines
|
|
13
13
|
with quality gates that loop until design quality meets the threshold.
|
|
14
14
|
|
|
15
|
+
Includes integrated design-explore: delegates to `impeccable explore` for multi-variant design system generation,
|
|
16
|
+
HTML prototype rendering for visual comparison, and automatic bridge to DESIGN.md format.
|
|
17
|
+
|
|
15
18
|
Prerequisite: maestro-impeccable skill available (auto-discovered by harness).
|
|
16
19
|
|
|
17
20
|
Session: `.workflow/.maestro/ui-craft-{YYYYMMDD-HHmmss}/status.json`
|
|
@@ -47,6 +50,9 @@ $maestro-ui-craft -y "create pricing page --chain build"
|
|
|
47
50
|
- `--max-loops <n>` -- Maximum quality gate iterations (default: 3)
|
|
48
51
|
- `-c` / `--continue` -- Resume previous ui-craft session
|
|
49
52
|
- `-y` -- Auto mode: auto-select at ambiguous routing, skip confirmations where maestro-impeccable allows
|
|
53
|
+
- `--skip-design-explore` / `--skip-design` -- Skip design-explore (prototype comparison) and bridge (use existing DESIGN.md or full shape interview)
|
|
54
|
+
- `--styles <N>` -- Number of design system variants to generate (2-5, default 3). Only used in build chain design step
|
|
55
|
+
- `--stack <stack>` -- Tech stack for supplementary guidelines (default: html-tailwind). Passed to ui-search
|
|
50
56
|
</context>
|
|
51
57
|
|
|
52
58
|
<chains>
|
|
@@ -55,13 +61,14 @@ $maestro-ui-craft -y "create pricing page --chain build"
|
|
|
55
61
|
|
|
56
62
|
| Chain | Sequence | Gate Condition |
|
|
57
63
|
|-------|----------|----------------|
|
|
58
|
-
| **build** | teach? → shape → craft → **critique** → [refine loop] → audit → polish | critique >= threshold AND P0 == 0 |
|
|
64
|
+
| **build** | teach? → **design_explore?** → shape → craft → **critique** → [refine loop] → audit → polish | critique >= threshold AND P0 == 0 |
|
|
59
65
|
| **improve** | **critique** → [refine loop] → polish → audit | critique >= threshold AND P0 == 0 |
|
|
60
66
|
| **enhance** | {cmd} → **critique** → polish (if needed) | critique >= threshold |
|
|
61
67
|
| **harden** | harden → **audit** → polish | audit >= threshold*0.5 |
|
|
62
68
|
| **live** | live | -- (interactive, no gate) |
|
|
63
69
|
|
|
64
70
|
- `teach?` -- conditional: only if PRODUCT.md missing/placeholder
|
|
71
|
+
- `design_explore?` -- conditional: only if DESIGN.md missing AND `--skip-design-explore` not set. Delegates to `impeccable explore` which handles variant generation, prototype rendering, visual comparison, user selection/mix, AND bridge to DESIGN.md internally
|
|
65
72
|
- `[refine loop]` -- quality gate loop: extract suggested commands from critique → execute → re-critique
|
|
66
73
|
|
|
67
74
|
### Intent → Chain Routing
|
|
@@ -69,6 +76,7 @@ $maestro-ui-craft -y "create pricing page --chain build"
|
|
|
69
76
|
| Intent Pattern | Chain |
|
|
70
77
|
|---------------|-------|
|
|
71
78
|
| create, build, new, landing, feature, page | build |
|
|
79
|
+
| design, style, theme, visual, design system | build |
|
|
72
80
|
| improve, fix, iterate, better, optimize | improve |
|
|
73
81
|
| animate, color, type, bold, delight, enhance | enhance |
|
|
74
82
|
| production, harden, ship, edge case, i18n | harden |
|
|
@@ -85,6 +93,7 @@ S_PARSE -- parse args, intent classification, chain selection PERSIST
|
|
|
85
93
|
S_RESUME -- scan existing ui-craft sessions, resume execution PERSIST: --
|
|
86
94
|
S_SETUP -- load context, check PRODUCT.md PERSIST: --
|
|
87
95
|
S_CREATE -- create session + status.json PERSIST: session (full)
|
|
96
|
+
S_DESIGN_EXPLORE -- delegate to impeccable explore: multi-variant generation, prototype comparison, selection/mix, auto bridge to DESIGN.md PERSIST: explore_completed, design_md_path
|
|
88
97
|
S_CHAIN -- execute chain steps in sequence PERSIST: step progress, executed commands
|
|
89
98
|
S_GATE -- quality gate: parse scores, decide PERSIST: scores, loop count
|
|
90
99
|
S_REFINE -- execute auto-selected refine commands PERSIST: refine commands, loop state
|
|
@@ -110,10 +119,16 @@ S_CREATE:
|
|
|
110
119
|
→ S_CHAIN DO: A_CREATE_SESSION
|
|
111
120
|
|
|
112
121
|
S_CHAIN:
|
|
122
|
+
→ S_DESIGN_EXPLORE WHEN: current step is 'design_explore' AND DESIGN.md missing AND --skip-design-explore not set AND --skip-design not set
|
|
113
123
|
→ S_GATE WHEN: current step is gate command (critique/audit)
|
|
124
|
+
→ S_CHAIN WHEN: step is design_explore but skip conditions met → advance
|
|
114
125
|
→ S_CHAIN WHEN: step is normal command → execute → advance
|
|
115
126
|
→ S_REPORT WHEN: all steps complete
|
|
116
127
|
|
|
128
|
+
S_DESIGN_EXPLORE:
|
|
129
|
+
→ S_CHAIN WHEN: explore completed (DESIGN.md produced) → advance to shape
|
|
130
|
+
→ S_CHAIN WHEN: explore failed → W004 → advance to shape (full interview fallback)
|
|
131
|
+
|
|
117
132
|
S_GATE:
|
|
118
133
|
→ S_CHAIN WHEN: PASS (score >= threshold AND P0 == 0) → advance
|
|
119
134
|
→ S_REFINE WHEN: FAIL (score < threshold OR P0 > 0)
|
|
@@ -161,6 +176,15 @@ S_REPORT:
|
|
|
161
176
|
```
|
|
162
177
|
3. Write status.json before executing any step
|
|
163
178
|
|
|
179
|
+
### A_DESIGN_EXPLORE
|
|
180
|
+
|
|
181
|
+
Delegate to impeccable explore as a black-box command. The explore command internally handles:
|
|
182
|
+
variant generation, prototype rendering, visual comparison, user review, mix protocol, rejected variant harvest, bridge to DESIGN.md, and spec registration.
|
|
183
|
+
|
|
184
|
+
1. Execute: `$maestro-impeccable explore --styles {styles_count}`
|
|
185
|
+
2. On completion: verify `.workflow/impeccable/DESIGN.md` exists
|
|
186
|
+
3. Update status.json: `explore_completed: true`, `design_md_path`
|
|
187
|
+
|
|
164
188
|
### A_FINAL_REPORT
|
|
165
189
|
|
|
166
190
|
1. Read critique trend if available (impeccable's critique persists snapshots automatically)
|
|
@@ -210,11 +234,26 @@ Step {n}/{total}: $maestro-impeccable {command} {target}
|
|
|
210
234
|
|
|
211
235
|
After each step: update status.json `current_step` and step `status`.
|
|
212
236
|
|
|
213
|
-
**
|
|
237
|
+
**Step-specific logic:**
|
|
238
|
+
|
|
239
|
+
### 4a. Design-explore step (build chain only)
|
|
240
|
+
|
|
241
|
+
When current step is `design_explore`:
|
|
242
|
+
|
|
243
|
+
1. Check if `.workflow/impeccable/DESIGN.md` already exists → skip, advance to shape
|
|
244
|
+
2. Check if `--skip-design-explore` or `--skip-design` is set → skip, advance to shape
|
|
245
|
+
3. Otherwise → execute A_DESIGN_EXPLORE:
|
|
246
|
+
- `$maestro-impeccable explore --styles {styles_count}`
|
|
247
|
+
- explore handles everything internally: variant generation, prototype rendering, visual comparison, user selection/mix, bridge to DESIGN.md, spec registration
|
|
248
|
+
4. On completion → verify DESIGN.md exists, advance to shape
|
|
249
|
+
5. On failure → W004, advance to shape (full interview fallback, no DESIGN.md)
|
|
250
|
+
|
|
251
|
+
### 4c. Normal steps
|
|
252
|
+
|
|
214
253
|
- `teach`, `shape`, `craft` are interactive -- do NOT suppress their user gates
|
|
215
254
|
- After `teach` completes → re-run context loader for fresh PRODUCT.md
|
|
216
255
|
- After `craft` completes → the build exists, ready for evaluation
|
|
217
|
-
- Gate steps (critique/audit) → transition to quality gate logic
|
|
256
|
+
- Gate steps (critique/audit) → transition to quality gate logic (Section 5)
|
|
218
257
|
|
|
219
258
|
## 5. Quality Gate
|
|
220
259
|
|
|
@@ -313,6 +352,7 @@ When critique/audit findings lack explicit "Suggested command", map by category:
|
|
|
313
352
|
| overdrive | Requires explicit user vision |
|
|
314
353
|
| critique | Gate command, not a fix |
|
|
315
354
|
| audit | Gate command, not a fix |
|
|
355
|
+
| explore | Design system exploration (setup, has own user interaction) |
|
|
316
356
|
|
|
317
357
|
</quality_gate_routing>
|
|
318
358
|
|
|
@@ -327,6 +367,11 @@ When critique/audit findings lack explicit "Suggested command", map by category:
|
|
|
327
367
|
| W001 | warning | PRODUCT.md missing, prepending teach to chain |
|
|
328
368
|
| W002 | warning | Max quality gate loops exceeded, forcing continue |
|
|
329
369
|
| W003 | warning | Could not parse score from critique/audit output |
|
|
370
|
+
| E006 | error | Python 3 not available for design system generation |
|
|
371
|
+
| E007 | error | ui-search scripts not found at expected path |
|
|
372
|
+
| W004 | warning | Design system generation failed, skipping design+bridge |
|
|
373
|
+
| W005 | warning | Bridge transformation failed, continuing without DESIGN.md |
|
|
374
|
+
| W008 | warning | Node.js not available for prototype rendering, falling back to text-only variant comparison |
|
|
330
375
|
</error_codes>
|
|
331
376
|
|
|
332
377
|
<success_criteria>
|
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
name: quality-refactor
|
|
3
3
|
description: Reduce tech debt with reflection-driven iteration
|
|
4
4
|
argument-hint: "<phase|--dir path> [--max-iterations N]"
|
|
5
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep,
|
|
5
|
+
allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
<purpose>
|
|
9
|
-
Iterative refactoring cycle
|
|
9
|
+
Iterative refactoring cycle via `spawn_agents_on_csv`: analyze scope for tech debt -> plan refactoring tasks -> execute each as single-row CSV wave with test verification -> reflect on strategy per round -> repeat if needed. Every change is verified against existing tests. Failed changes are reverted and retried with adjusted strategy.
|
|
10
|
+
|
|
11
|
+
**Core workflow**: Parse Scope -> Analyze -> Plan -> CSV Wave-by-Wave Execution -> Reflect -> Verdict
|
|
10
12
|
</purpose>
|
|
11
13
|
|
|
12
14
|
<context>
|
|
@@ -28,8 +30,61 @@ $quality-refactor "--dir .workflow/scratch/refactor-auth-2026-03-18" # resume e
|
|
|
28
30
|
- `--max-iterations N`: Max refactoring rounds (default: 3)
|
|
29
31
|
|
|
30
32
|
**Output**: `.workflow/scratch/refactor-{slug}-{date}/` with index.json, plan.json, reflection-log.md, .task/, .summaries/
|
|
33
|
+
|
|
34
|
+
**Session**: `.workflow/.csv-wave/{YYYYMMDD}-refactor-{slug}/`
|
|
31
35
|
</context>
|
|
32
36
|
|
|
37
|
+
<csv_schema>
|
|
38
|
+
|
|
39
|
+
### tasks.csv (Master State)
|
|
40
|
+
|
|
41
|
+
```csv
|
|
42
|
+
id,title,description,category,scope,convergence_criteria,read_first,verification_cmd,risk,deps,wave,status,findings,files_modified,tests_passed,retry_count,strategy_adjustment,error
|
|
43
|
+
"TASK-001","Extract shared validation","Extract duplicated email/phone validation logic into shared utils module","duplication","src/auth/login.ts;src/auth/register.ts","src/utils/validation.ts contains export function validateEmail(; grep -r 'validateEmail' shows single import source","src/auth/login.ts;src/auth/register.ts;src/utils/","npm test","low","","1","","","","","0","",""
|
|
44
|
+
"TASK-002","Simplify token refresh","Reduce cyclomatic complexity in token refresh handler from 12 to <6","complexity","src/auth/token.ts","src/auth/token.ts function refreshToken has no more than 2 levels of nesting","src/auth/token.ts;src/auth/types.ts","npm test -- --grep token","medium","","2","","","","","0","",""
|
|
45
|
+
"TASK-003","Remove dead session code","Remove unused session cleanup functions identified in analysis","dead_code","src/session/","grep -r 'cleanupExpired' returns 0 matches outside test files","src/session/cleanup.ts","npm test","low","","1","","","","","0","",""
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Columns**:
|
|
49
|
+
|
|
50
|
+
| Column | Phase | Description |
|
|
51
|
+
|--------|-------|-------------|
|
|
52
|
+
| `id` | Input | Task ID (TASK-NNN, from plan.json) |
|
|
53
|
+
| `title` | Input | Short refactoring task title |
|
|
54
|
+
| `description` | Input | What to refactor and why |
|
|
55
|
+
| `category` | Input | Tech debt category: duplication / complexity / naming / dependencies / dead_code / pattern_violations |
|
|
56
|
+
| `scope` | Input | Semicolon-separated target files/directories |
|
|
57
|
+
| `convergence_criteria` | Input | Grep-verifiable completion criteria (semicolon-separated) |
|
|
58
|
+
| `read_first` | Input | Files to read before implementing (context) |
|
|
59
|
+
| `verification_cmd` | Input | Test command to run after change |
|
|
60
|
+
| `risk` | Input | `low` / `medium` / `high` |
|
|
61
|
+
| `deps` | Input | Semicolon-separated dependency task IDs |
|
|
62
|
+
| `wave` | Computed | Wave number — same-risk independent tasks can share a wave |
|
|
63
|
+
| `status` | Output | `pending` -> `completed` / `failed` / `blocked` / `skipped` |
|
|
64
|
+
| `findings` | Output | Implementation notes (max 500 chars) |
|
|
65
|
+
| `files_modified` | Output | Semicolon-separated list of changed files |
|
|
66
|
+
| `tests_passed` | Output | `true` / `false` — verification result |
|
|
67
|
+
| `retry_count` | State | Current retry count (max 2) |
|
|
68
|
+
| `strategy_adjustment` | State | Strategy change note for retry |
|
|
69
|
+
| `error` | Output | Error message if failed |
|
|
70
|
+
|
|
71
|
+
### Per-Wave CSV (Temporary)
|
|
72
|
+
|
|
73
|
+
Each wave generates `wave-{N}.csv` with extra `prev_context` column populated from predecessor task findings.
|
|
74
|
+
|
|
75
|
+
### Session Structure
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
.workflow/.csv-wave/{YYYYMMDD}-refactor-{slug}/
|
|
79
|
+
+-- tasks.csv
|
|
80
|
+
+-- results.csv
|
|
81
|
+
+-- discoveries.ndjson
|
|
82
|
+
+-- reflection-log.md
|
|
83
|
+
+-- wave-{N}.csv (temporary)
|
|
84
|
+
+-- wave-{N}-results.csv
|
|
85
|
+
```
|
|
86
|
+
</csv_schema>
|
|
87
|
+
|
|
33
88
|
<invariants>
|
|
34
89
|
1. **Test after every change** -- zero regressions tolerated
|
|
35
90
|
2. **Revert on failure** -- never leave broken state
|
|
@@ -37,7 +92,7 @@ $quality-refactor "--dir .workflow/scratch/refactor-auth-2026-03-18" # resume e
|
|
|
37
92
|
4. **Reflection-driven** -- every round records strategy, outcome, adjustment
|
|
38
93
|
5. **User approval required** before execution (Step 4)
|
|
39
94
|
6. **Quick wins first** -- order by risk (low first) and dependency
|
|
40
|
-
7. **
|
|
95
|
+
7. **CSV waves execute synchronously** — each refactoring task dispatched as single-row wave, wait for completion before next
|
|
41
96
|
8. **Incremental safety** -- each task is independently safe to apply or revert
|
|
42
97
|
</invariants>
|
|
43
98
|
|
|
@@ -88,28 +143,62 @@ Confirm with user before proceeding.
|
|
|
88
143
|
4. Update `index.json` plan fields
|
|
89
144
|
5. Present plan to user via AskUserQuestion -- show affected files, risk areas, ask for approval
|
|
90
145
|
|
|
91
|
-
### Step 5: Execute with Reflection
|
|
92
|
-
|
|
93
|
-
Initialize
|
|
146
|
+
### Step 5: Execute with Reflection via CSV Waves
|
|
147
|
+
|
|
148
|
+
Initialize session folder `.workflow/.csv-wave/{dateStr}-refactor-{slug}/`.
|
|
149
|
+
Initialize `reflection-log.md` and `discoveries.ndjson` in session folder.
|
|
150
|
+
Build `tasks.csv` from plan.json tasks using csv_schema columns.
|
|
151
|
+
|
|
152
|
+
**Wave computation**: Group independent same-risk tasks into shared waves. Dependent tasks go to later waves. Low-risk tasks wave first, high-risk last.
|
|
153
|
+
|
|
154
|
+
For each wave N in ascending order:
|
|
155
|
+
|
|
156
|
+
**5a. Build and spawn wave:**
|
|
157
|
+
|
|
158
|
+
1. Extract wave N pending rows from master `tasks.csv`
|
|
159
|
+
2. Build `prev_context` per task from completed predecessor findings
|
|
160
|
+
3. Write `wave-{N}.csv`, then execute:
|
|
161
|
+
|
|
162
|
+
```javascript
|
|
163
|
+
spawn_agents_on_csv({
|
|
164
|
+
csv_path: `${sessionFolder}/wave-${N}.csv`,
|
|
165
|
+
id_column: "id",
|
|
166
|
+
instruction: `You are a refactoring executor. For each task:
|
|
167
|
+
1. Read files listed in read_first to understand context
|
|
168
|
+
2. Apply refactoring described in description targeting scope files
|
|
169
|
+
3. Verify convergence_criteria via grep (all criteria must pass)
|
|
170
|
+
4. Run verification_cmd and report test result
|
|
171
|
+
5. If tests fail: revert ALL changes for this task, set status=failed
|
|
172
|
+
6. Append discoveries to ${sessionFolder}/discoveries.ndjson
|
|
173
|
+
Report: files_modified (semicolon-separated), tests_passed (true/false), findings (what was changed and why)`,
|
|
174
|
+
max_concurrency: 1, max_runtime_seconds: 1800,
|
|
175
|
+
output_csv_path: `${sessionFolder}/wave-${N}-results.csv`,
|
|
176
|
+
output_schema: { id, status: [completed|failed|blocked], findings, files_modified, tests_passed, error }
|
|
177
|
+
})
|
|
178
|
+
```
|
|
94
179
|
|
|
95
|
-
|
|
180
|
+
4. Merge results into master `tasks.csv`, delete `wave-{N}.csv`
|
|
96
181
|
|
|
97
|
-
**
|
|
182
|
+
**5b. Reflect per wave:**
|
|
98
183
|
|
|
99
|
-
|
|
184
|
+
Append to `reflection-log.md`:
|
|
185
|
+
- Wave number, tasks attempted, pass/fail counts
|
|
186
|
+
- Per-task: title, strategy, outcome, test result, files changed
|
|
187
|
+
- Strategy adjustment notes for failed tasks
|
|
100
188
|
|
|
101
|
-
**5c.
|
|
189
|
+
**5c. Handle failures (retry loop):**
|
|
102
190
|
|
|
103
|
-
|
|
104
|
-
1.
|
|
105
|
-
2.
|
|
106
|
-
|
|
107
|
-
|
|
191
|
+
For each failed task in wave results:
|
|
192
|
+
1. Increment `retry_count` in master CSV
|
|
193
|
+
2. If `retry_count < 2`:
|
|
194
|
+
- Record failure analysis in `strategy_adjustment` column
|
|
195
|
+
- Re-add to next wave with adjusted description incorporating failure learnings
|
|
196
|
+
3. If `retry_count >= 2`: mark task `blocked`, skip dependents
|
|
108
197
|
|
|
109
|
-
**
|
|
110
|
-
- `.task/TASK-{NNN}.json` status
|
|
111
|
-
- `.summaries/TASK-{NNN}-summary.md` written
|
|
112
|
-
- `index.json` execution and reflection
|
|
198
|
+
**5d. Update state per wave:**
|
|
199
|
+
- `.task/TASK-{NNN}.json` status synced from CSV
|
|
200
|
+
- `.summaries/TASK-{NNN}-summary.md` written per completed task
|
|
201
|
+
- `index.json` execution and reflection counters updated
|
|
113
202
|
|
|
114
203
|
### Step 6: Final Verification
|
|
115
204
|
|
|
@@ -143,9 +232,12 @@ Display report: scope, tasks completed/blocked, reflection rounds, strategy adju
|
|
|
143
232
|
- [ ] Scope resolved and scratch directory created
|
|
144
233
|
- [ ] Tech debt analysis completed with categorized findings
|
|
145
234
|
- [ ] Refactoring plan approved by user
|
|
146
|
-
- [ ]
|
|
147
|
-
- [ ]
|
|
148
|
-
- [ ]
|
|
235
|
+
- [ ] tasks.csv built from plan with proper wave assignment
|
|
236
|
+
- [ ] Each wave executed via spawn_agents_on_csv with test verification
|
|
237
|
+
- [ ] Failed tasks reverted, retried with strategy adjustment (max 2 retries)
|
|
238
|
+
- [ ] Reflection log records every wave's strategy and outcome
|
|
239
|
+
- [ ] discoveries.ndjson append-only throughout execution
|
|
149
240
|
- [ ] Final test suite passes with zero regressions
|
|
241
|
+
- [ ] results.csv exported with all task outcomes
|
|
150
242
|
- [ ] Completion report with key learnings displayed
|
|
151
243
|
</success_criteria>
|
package/chains/_intent-map.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "../chain-graph.schema.json",
|
|
3
3
|
"id": "singles/ui-design",
|
|
4
4
|
"name": "UI Design",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "UI design-driven production via maestro-ui-craft build chain",
|
|
6
6
|
"version": "1.0.0",
|
|
7
7
|
"tags": [
|
|
8
8
|
"maestro",
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
"nodes": {
|
|
19
19
|
"ui_design": {
|
|
20
20
|
"type": "command",
|
|
21
|
-
"cmd": "maestro-ui-
|
|
21
|
+
"cmd": "maestro-ui-craft",
|
|
22
22
|
"next": "done",
|
|
23
23
|
"analyze": false,
|
|
24
|
-
"args": "{phase}",
|
|
25
|
-
"description": "
|
|
24
|
+
"args": "\"{phase}\" --chain build",
|
|
25
|
+
"description": "UI design-driven production via maestro-ui-craft build chain"
|
|
26
26
|
},
|
|
27
27
|
"done": {
|
|
28
28
|
"type": "terminal",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "./chain-graph.schema.json",
|
|
3
|
-
"id": "ui-
|
|
4
|
-
"name": "UI
|
|
5
|
-
"description": "UI
|
|
3
|
+
"id": "ui-craft-build",
|
|
4
|
+
"name": "UI Craft Build",
|
|
5
|
+
"description": "UI Craft Build -> Plan -> Execute -> Verify pipeline",
|
|
6
6
|
"version": "1.0.0",
|
|
7
7
|
"tags": ["lifecycle", "ui-design"],
|
|
8
8
|
"entry": "ui_design",
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
"nodes": {
|
|
14
14
|
"ui_design": {
|
|
15
15
|
"type": "command",
|
|
16
|
-
"cmd": "maestro-ui-
|
|
17
|
-
"description": "
|
|
18
|
-
"args": "{phase}",
|
|
16
|
+
"cmd": "maestro-ui-craft",
|
|
17
|
+
"description": "UI design-driven production via maestro-ui-craft build chain",
|
|
18
|
+
"args": "\"{phase}\" --chain build",
|
|
19
19
|
"auto_flag": "-y",
|
|
20
20
|
"next": "plan"
|
|
21
21
|
},
|
|
@@ -53,12 +53,12 @@
|
|
|
53
53
|
"done": {
|
|
54
54
|
"type": "terminal",
|
|
55
55
|
"status": "success",
|
|
56
|
-
"summary": "UI
|
|
56
|
+
"summary": "UI craft build pipeline completed successfully"
|
|
57
57
|
},
|
|
58
58
|
"done_with_issues": {
|
|
59
59
|
"type": "terminal",
|
|
60
60
|
"status": "paused",
|
|
61
|
-
"summary": "UI
|
|
61
|
+
"summary": "UI craft build pipeline completed with verification issues"
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
}
|
|
@@ -56,7 +56,7 @@ export const CHAIN_MAP = {
|
|
|
56
56
|
'status': [{ cmd: 'manage-status' }],
|
|
57
57
|
'init': [{ cmd: 'maestro-init' }],
|
|
58
58
|
'analyze': [{ cmd: 'maestro-analyze', args: '{phase}' }],
|
|
59
|
-
'ui_design': [{ cmd: 'maestro-ui-
|
|
59
|
+
'ui_design': [{ cmd: 'maestro-ui-craft', args: '"{phase}" --chain build' }],
|
|
60
60
|
'plan': [{ cmd: 'maestro-plan', args: '{phase}' }],
|
|
61
61
|
'execute': [{ cmd: 'maestro-execute', args: '{phase}' }],
|
|
62
62
|
'verify': [{ cmd: 'maestro-verify', args: '{phase}' }],
|
|
@@ -93,7 +93,7 @@ export const CHAIN_MAP = {
|
|
|
93
93
|
// Multi-step chains
|
|
94
94
|
'spec-driven': [{ cmd: 'maestro-init' }, { cmd: 'maestro-roadmap', args: '--mode full "{description}"' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
|
|
95
95
|
'brainstorm-driven': [{ cmd: 'maestro-brainstorm', args: '"{description}"' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
|
|
96
|
-
'ui-
|
|
96
|
+
'ui-craft-build': [{ cmd: 'maestro-ui-craft', args: '"{phase}" --chain build' }, { cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
|
|
97
97
|
'full-lifecycle': [{ cmd: 'maestro-plan', args: '{phase}' }, { cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }, { cmd: 'quality-review', args: '{phase}' }, { cmd: 'quality-test', args: '{phase}' }, { cmd: 'maestro-milestone-audit' }, { cmd: 'maestro-milestone-complete' }],
|
|
98
98
|
'execute-verify': [{ cmd: 'maestro-execute', args: '{phase}' }, { cmd: 'maestro-verify', args: '{phase}' }],
|
|
99
99
|
'quality-loop': [{ cmd: 'maestro-verify', args: '{phase}' }, { cmd: 'quality-review', args: '{phase}' }, { cmd: 'quality-test', args: '{phase}' }, { cmd: 'quality-debug', args: '--from-uat {phase}' }, { cmd: 'maestro-plan', args: '{phase} --gaps' }, { cmd: 'maestro-execute', args: '{phase}' }],
|
|
@@ -115,7 +115,7 @@ export const TASK_TO_CHAIN = {
|
|
|
115
115
|
export const AUTO_FLAG_MAP = {
|
|
116
116
|
'maestro-analyze': '-y',
|
|
117
117
|
'maestro-brainstorm': '-y',
|
|
118
|
-
'maestro-ui-
|
|
118
|
+
'maestro-ui-craft': '-y',
|
|
119
119
|
'maestro-plan': '--auto',
|
|
120
120
|
'maestro-roadmap': '-y',
|
|
121
121
|
'quality-test': '--auto-fix',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain-map.js","sourceRoot":"","sources":["../../../../../src/server/coordinator/chain-map.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,6EAA6E;AAC7E,iEAAiE;AACjE,8EAA8E;AAa9E,8EAA8E;AAC9E,sEAAsE;AACtE,kCAAkC;AAClC,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAA4B;IACtD,CAAC,gBAAgB,EAAK,8BAA8B,CAAC;IACrD,CAAC,QAAQ,EAAa,0BAA0B,CAAC;IACjD,CAAC,eAAe,EAAM,yCAAyC,CAAC;IAChE,CAAC,YAAY,EAAS,4BAA4B,CAAC;IACnD,CAAC,SAAS,EAAY,oDAAoD,CAAC;IAC3E,CAAC,WAAW,EAAU,gDAAgD,CAAC;IACvE,CAAC,MAAM,EAAe,8BAA8B,CAAC;IACrD,CAAC,MAAM,EAAe,kCAAkC,CAAC;IACzD,CAAC,SAAS,EAAY,6CAA6C,CAAC;IACpE,CAAC,QAAQ,EAAa,mCAAmC,CAAC;IAC1D,CAAC,QAAQ,EAAa,qCAAqC,CAAC;IAC5D,CAAC,UAAU,EAAW,wCAAwC,CAAC;IAC/D,CAAC,MAAM,EAAe,mBAAmB,CAAC;IAC1C,CAAC,OAAO,EAAc,4CAA4C,CAAC;IACnE,CAAC,kBAAkB,EAAG,0BAA0B,CAAC;IACjD,CAAC,UAAU,EAAW,6BAA6B,CAAC;IACpD,CAAC,MAAM,EAAe,4BAA4B,CAAC;IACnD,CAAC,kBAAkB,EAAG,uCAAuC,CAAC;IAC9D,CAAC,WAAW,EAAU,+BAA+B,CAAC;IACtD,CAAC,iBAAiB,EAAI,2BAA2B,CAAC;IAClD,CAAC,oBAAoB,EAAE,2BAA2B,CAAC;IACnD,CAAC,eAAe,EAAM,oCAAoC,CAAC;IAC3D,CAAC,YAAY,EAAS,8BAA8B,CAAC;IACrD,CAAC,eAAe,EAAM,4BAA4B,CAAC;IACnD,CAAC,OAAO,EAAc,8BAA8B,CAAC;IACrD,CAAC,kBAAkB,EAAG,2BAA2B,CAAC;IAClD,CAAC,kBAAkB,EAAG,2BAA2B,CAAC;IAClD,CAAC,YAAY,EAAS,sBAAsB,CAAC;IAC7C,CAAC,UAAU,EAAW,mBAAmB,CAAC;IAC1C,CAAC,WAAW,EAAU,oBAAoB,CAAC;IAC3C,CAAC,UAAU,EAAW,mBAAmB,CAAC;IAC1C,CAAC,iBAAiB,EAAI,wCAAwC,CAAC;IAC/D,CAAC,SAAS,EAAY,aAAa,CAAC;IACpC,CAAC,gBAAgB,EAAK,2BAA2B,CAAC;IAClD,CAAC,iBAAiB,EAAI,yBAAyB,CAAC;IAChD,CAAC,SAAS,EAAY,4BAA4B,CAAC;IACnD,CAAC,WAAW,EAAU,oBAAoB,CAAC;IAC3C,CAAC,aAAa,EAAQ,sBAAsB,CAAC;IAC7C,CAAC,gBAAgB,EAAK,2BAA2B,CAAC;IAClD,CAAC,OAAO,EAAc,kCAAkC,CAAC;CAC1D,CAAC;AAEF,8EAA8E;AAC9E,iDAAiD;AACjD,8EAA8E;AAE9E,MAAM,CAAC,MAAM,SAAS,GAAmC;IACvD,qBAAqB;IACrB,QAAQ,EAAc,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC;IAChD,MAAM,EAAgB,CAAC,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;IAC/C,SAAS,EAAa,CAAC,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACnE,WAAW,EAAW,CAAC,EAAE,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"chain-map.js","sourceRoot":"","sources":["../../../../../src/server/coordinator/chain-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../../src/commands/delegate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAkB,MAAM,gCAAgC,CAAC;AAKjF,OAAO,EAAE,oBAAoB,EAA8F,MAAM,mBAAmB,CAAC;AA+BrJ,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;CACrD;AAED,UAAU,gBAAgB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;CACf;AAED,UAAU,SAAS;IACjB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,gBAAgB,CAAC;CACrF;AAED,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAqDD,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,wBAAwB,EACjC,WAAW,SAAkB,GAC5B,MAAM,EAAE,CA2BV;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,wBAAwB,EACjC,OAAO,GAAE,6BAAkC,GAC1C,IAAI,CAsCN;AAWD,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CA6BpE;AA8BD,mFAAmF;AACnF,wBAAgB,kBAAkB,IAAI,OAAO,CAO5C;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../../src/commands/delegate.ts"],"names":[],"mappings":"AAIA,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAkB,MAAM,gCAAgC,CAAC;AAKjF,OAAO,EAAE,oBAAoB,EAA8F,MAAM,mBAAmB,CAAC;AA+BrJ,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;CACrD;AAED,UAAU,gBAAgB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;CACf;AAED,UAAU,SAAS;IACjB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,gBAAgB,CAAC;CACrF;AAED,MAAM,WAAW,6BAA6B;IAC5C,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAqDD,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,wBAAwB,EACjC,WAAW,SAAkB,GAC5B,MAAM,EAAE,CA2BV;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,wBAAwB,EACjC,OAAO,GAAE,6BAAkC,GAC1C,IAAI,CAsCN;AAWD,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CA6BpE;AA8BD,mFAAmF;AACnF,wBAAgB,kBAAkB,IAAI,OAAO,CAO5C;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmf9D"}
|
|
@@ -332,11 +332,12 @@ export function registerDelegateCommand(program) {
|
|
|
332
332
|
}
|
|
333
333
|
const runner = new CliAgentRunner();
|
|
334
334
|
const syncMode = !opts.worker;
|
|
335
|
-
// Sync mode: emit ONE broker event at start so any active
|
|
336
|
-
// subscriber
|
|
337
|
-
//
|
|
338
|
-
//
|
|
335
|
+
// Sync mode: emit exec ID + ONE broker event at start so any active
|
|
336
|
+
// channel subscriber sees a "started" notification. Output and status
|
|
337
|
+
// summary are auto-appended on completion — callers don't need separate
|
|
338
|
+
// `delegate output` or `delegate status` commands.
|
|
339
339
|
if (syncMode) {
|
|
340
|
+
process.stderr.write(`[MAESTRO_EXEC_ID=${execId}]\n`);
|
|
340
341
|
try {
|
|
341
342
|
const broker = new DelegateBrokerClient();
|
|
342
343
|
broker.publishEvent({
|
|
@@ -358,12 +359,17 @@ export function registerDelegateCommand(program) {
|
|
|
358
359
|
}
|
|
359
360
|
}
|
|
360
361
|
const exitCode = await runner.run({ ...request, sync: syncMode });
|
|
361
|
-
// In sync mode,
|
|
362
|
+
// In sync mode, auto-append status summary + output so callers get
|
|
363
|
+
// everything in a single background callback — no manual `output`/`status`.
|
|
362
364
|
if (syncMode) {
|
|
363
365
|
const store = new CliHistoryStore();
|
|
366
|
+
const finalStatus = exitCode === 130 ? 'cancelled' : exitCode === 0 ? 'completed' : 'failed';
|
|
367
|
+
// Status summary line
|
|
368
|
+
process.stderr.write(`\n[DELEGATE ${finalStatus.toUpperCase()}] ${execId} ${toolName}/${mode}\n`);
|
|
369
|
+
// Output
|
|
364
370
|
const output = store.getOutput(execId, { lastReply: true });
|
|
365
371
|
if (output) {
|
|
366
|
-
process.stderr.write('
|
|
372
|
+
process.stderr.write('--- Output ---\n');
|
|
367
373
|
process.stdout.write(output);
|
|
368
374
|
if (!output.endsWith('\n'))
|
|
369
375
|
process.stdout.write('\n');
|
|
@@ -372,7 +378,6 @@ export function registerDelegateCommand(program) {
|
|
|
372
378
|
// The runner skips broker events in sync mode, so we emit it here.
|
|
373
379
|
try {
|
|
374
380
|
const broker = new DelegateBrokerClient();
|
|
375
|
-
const finalStatus = exitCode === 130 ? 'cancelled' : exitCode === 0 ? 'completed' : 'failed';
|
|
376
381
|
broker.publishEvent({
|
|
377
382
|
jobId: execId,
|
|
378
383
|
type: finalStatus,
|