maestro-flow 0.3.19 → 0.3.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/learn-investigate.md +195 -195
- package/.claude/commands/learn-retro.md +303 -303
- package/.claude/commands/learn-second-opinion.md +167 -167
- package/.claude/commands/maestro-amend.md +300 -300
- package/.claude/commands/maestro-analyze.md +126 -126
- package/.claude/commands/maestro-composer.md +354 -354
- package/.claude/commands/maestro-execute.md +114 -114
- package/.claude/commands/maestro-learn.md +140 -140
- package/.claude/commands/maestro-milestone-audit.md +68 -68
- package/.claude/commands/maestro-milestone-complete.md +75 -75
- package/.claude/commands/maestro-milestone-release.md +96 -96
- package/.claude/commands/maestro-plan.md +138 -138
- package/.claude/commands/maestro-player.md +404 -404
- package/.claude/commands/maestro-update.md +176 -176
- package/.claude/commands/maestro-verify.md +90 -90
- package/.claude/commands/manage-codebase-rebuild.md +75 -75
- package/.claude/commands/manage-knowhow-capture.md +193 -193
- package/.claude/commands/manage-knowhow.md +77 -77
- package/.claude/commands/manage-learn.md +67 -67
- package/.claude/commands/manage-wiki.md +62 -62
- package/.claude/commands/quality-business-test.md +110 -110
- package/.claude/commands/quality-retrospective.md +78 -78
- package/.claude/commands/spec-add.md +49 -49
- package/.claude/commands/spec-load.md +51 -51
- package/.claude/commands/spec-remove.md +51 -51
- package/.claude/commands/wiki-connect.md +62 -62
- package/.claude/commands/wiki-digest.md +69 -69
- package/.codex/skills/maestro/SKILL.md +1 -1
- package/.codex/skills/maestro-analyze/SKILL.md +2 -2
- package/.codex/skills/maestro-brainstorm/SKILL.md +2 -2
- package/.codex/skills/maestro-execute/SKILL.md +1 -1
- package/.codex/skills/maestro-link-coordinate/SKILL.md +6 -6
- package/.codex/skills/maestro-plan/SKILL.md +2 -2
- package/.codex/skills/maestro-player/SKILL.md +6 -6
- package/.codex/skills/maestro-roadmap/SKILL.md +1 -1
- package/.codex/skills/maestro-spec-generate/SKILL.md +1 -1
- package/.codex/skills/maestro-verify/SKILL.md +1 -1
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +1 -1
- package/.codex/skills/manage-issue-discover/SKILL.md +1 -1
- package/.codex/skills/quality-debug/SKILL.md +2 -2
- package/.codex/skills/quality-integration-test/SKILL.md +1 -1
- package/.codex/skills/quality-review/SKILL.md +1 -1
- package/.codex/skills/quality-test-gen/SKILL.md +1 -1
- package/.codex/skills/spec-map/SKILL.md +1 -1
- package/.codex/skills/team-coordinate/roles/coordinator/role.md +1 -0
- package/.codex/skills/team-executor/roles/executor/role.md +3 -0
- package/.codex/skills/team-lifecycle-v4/roles/coordinator/role.md +1 -0
- package/.codex/skills/team-quality-assurance/roles/coordinator/role.md +1 -0
- package/.codex/skills/team-review/roles/coordinator/role.md +1 -0
- package/.codex/skills/team-tech-debt/roles/coordinator/role.md +1 -0
- package/.codex/skills/team-testing/roles/coordinator/role.md +1 -0
- package/dashboard/dist-server/dashboard/src/server/coordinator/workflow-coordinator.js +3 -3
- package/dashboard/dist-server/dashboard/src/server/coordinator/workflow-coordinator.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/execution/execution-scheduler.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/execution/execution-scheduler.js.map +1 -1
- package/dist/src/commands/coordinate.js +2 -2
- package/dist/src/commands/coordinate.js.map +1 -1
- package/dist/src/hooks/coordinator-tracker.d.ts +1 -1
- package/dist/src/hooks/coordinator-tracker.js +3 -3
- package/dist/src/hooks/coordinator-tracker.js.map +1 -1
- package/package.json +1 -1
- package/workflows/maestro-link-coordinate.md +3 -3
- package/workflows/maestro.codex.md +2 -2
- package/workflows/maestro-coordinate.codex.md +0 -281
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: wiki-digest
|
|
3
|
-
description: Generate knowledge digest from wiki entries with theme clustering, gap analysis, and coverage heatmap
|
|
4
|
-
argument-hint: "[<topic>|--recent N] [--type <type>] [--format brief|full]"
|
|
5
|
-
allowed-tools:
|
|
6
|
-
- Read
|
|
7
|
-
- Write
|
|
8
|
-
- Bash
|
|
9
|
-
- Glob
|
|
10
|
-
- Grep
|
|
11
|
-
- Agent
|
|
12
|
-
- AskUserQuestion
|
|
13
|
-
---
|
|
14
|
-
<purpose>
|
|
15
|
-
Knowledge synthesis command that generates actionable digests from the wiki knowledge graph. Clusters entries by semantic theme, identifies knowledge gaps, and produces a coverage heatmap. Unique to maestro — leverages the wiki graph (BM25 search, backlinks, health) to surface trends and missing knowledge.
|
|
16
|
-
|
|
17
|
-
Unlike `maestro wiki list` which shows raw entries, this command synthesizes and interprets the knowledge base, producing a curated summary with gap analysis and recommended next actions.
|
|
18
|
-
</purpose>
|
|
19
|
-
|
|
20
|
-
<required_reading>
|
|
21
|
-
@~/.maestro/workflows/wiki-digest.md
|
|
22
|
-
</required_reading>
|
|
23
|
-
|
|
24
|
-
<deferred_reading>
|
|
25
|
-
- @~/.maestro/workflows/issue.md (issues.jsonl canonical schema for `--create-issues` routing)
|
|
26
|
-
</deferred_reading>
|
|
27
|
-
|
|
28
|
-
<context>
|
|
29
|
-
Arguments: $ARGUMENTS
|
|
30
|
-
|
|
31
|
-
Flags, scope resolution, storage paths, and CLI commands defined in workflow wiki-digest.md.
|
|
32
|
-
</context>
|
|
33
|
-
|
|
34
|
-
<execution>
|
|
35
|
-
Follow '~/.maestro/workflows/wiki-digest.md' completely (Stages 1-8).
|
|
36
|
-
|
|
37
|
-
**Next-step routing:**
|
|
38
|
-
- Deep dive on a theme → `/learn-follow <wiki-id>`
|
|
39
|
-
- Fix graph gaps → `/wiki-connect --fix`
|
|
40
|
-
- Decompose code for missing patterns → `/learn-decompose <path>`
|
|
41
|
-
- Create missing entries → `maestro wiki create --type <type> --slug <slug>`
|
|
42
|
-
- Triage gap issues → `/manage-issue list --source wiki-digest`
|
|
43
|
-
</execution>
|
|
44
|
-
|
|
45
|
-
<error_codes>
|
|
46
|
-
| Code | Severity | Condition | Recovery |
|
|
47
|
-
|------|----------|-----------|----------|
|
|
48
|
-
| E001 | error | No wiki entries found (empty index) | Initialize wiki content first |
|
|
49
|
-
| E002 | error | Topic search returned 0 results | Broaden topic or check wiki content |
|
|
50
|
-
| W001 | warning | Too few entries (<5) for meaningful theme clustering | Digest produced but themes may be trivial |
|
|
51
|
-
| W002 | warning | lessons.jsonl not found — skipping cross-reference | Proceed without lesson context |
|
|
52
|
-
| W003 | warning | Some entry bodies failed to load — partial summaries | Note incomplete entries in digest |
|
|
53
|
-
</error_codes>
|
|
54
|
-
|
|
55
|
-
<success_criteria>
|
|
56
|
-
- [ ] Scope parsed and entries loaded
|
|
57
|
-
- [ ] Baseline health score recorded
|
|
58
|
-
- [ ] Entries clustered into 3-5 semantic themes
|
|
59
|
-
- [ ] Per-theme analysis: summary, key entries, gaps, health
|
|
60
|
-
- [ ] Cross-reference with lessons.jsonl completed
|
|
61
|
-
- [ ] Coverage heatmap generated (type × theme matrix)
|
|
62
|
-
- [ ] Knowledge gaps identified with suggested actions
|
|
63
|
-
- [ ] If `--create-issues`: gap issues created in `issues.jsonl` (deduped)
|
|
64
|
-
- [ ] Digest written to `digest-{slug}-{date}.md`
|
|
65
|
-
- [ ] Meta-insights appended to `lessons.jsonl`
|
|
66
|
-
- [ ] `learning-index.json` updated
|
|
67
|
-
- [ ] No files modified outside `.workflow/learning/` and `.workflow/issues/` (issues only when `--create-issues`)
|
|
68
|
-
- [ ] Summary displayed with key findings and next-step routing
|
|
69
|
-
</success_criteria>
|
|
1
|
+
---
|
|
2
|
+
name: wiki-digest
|
|
3
|
+
description: Generate knowledge digest from wiki entries with theme clustering, gap analysis, and coverage heatmap
|
|
4
|
+
argument-hint: "[<topic>|--recent N] [--type <type>] [--format brief|full]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- Agent
|
|
12
|
+
- AskUserQuestion
|
|
13
|
+
---
|
|
14
|
+
<purpose>
|
|
15
|
+
Knowledge synthesis command that generates actionable digests from the wiki knowledge graph. Clusters entries by semantic theme, identifies knowledge gaps, and produces a coverage heatmap. Unique to maestro — leverages the wiki graph (BM25 search, backlinks, health) to surface trends and missing knowledge.
|
|
16
|
+
|
|
17
|
+
Unlike `maestro wiki list` which shows raw entries, this command synthesizes and interprets the knowledge base, producing a curated summary with gap analysis and recommended next actions.
|
|
18
|
+
</purpose>
|
|
19
|
+
|
|
20
|
+
<required_reading>
|
|
21
|
+
@~/.maestro/workflows/wiki-digest.md
|
|
22
|
+
</required_reading>
|
|
23
|
+
|
|
24
|
+
<deferred_reading>
|
|
25
|
+
- @~/.maestro/workflows/issue.md (issues.jsonl canonical schema for `--create-issues` routing)
|
|
26
|
+
</deferred_reading>
|
|
27
|
+
|
|
28
|
+
<context>
|
|
29
|
+
Arguments: $ARGUMENTS
|
|
30
|
+
|
|
31
|
+
Flags, scope resolution, storage paths, and CLI commands defined in workflow wiki-digest.md.
|
|
32
|
+
</context>
|
|
33
|
+
|
|
34
|
+
<execution>
|
|
35
|
+
Follow '~/.maestro/workflows/wiki-digest.md' completely (Stages 1-8).
|
|
36
|
+
|
|
37
|
+
**Next-step routing:**
|
|
38
|
+
- Deep dive on a theme → `/learn-follow <wiki-id>`
|
|
39
|
+
- Fix graph gaps → `/wiki-connect --fix`
|
|
40
|
+
- Decompose code for missing patterns → `/learn-decompose <path>`
|
|
41
|
+
- Create missing entries → `maestro wiki create --type <type> --slug <slug>`
|
|
42
|
+
- Triage gap issues → `/manage-issue list --source wiki-digest`
|
|
43
|
+
</execution>
|
|
44
|
+
|
|
45
|
+
<error_codes>
|
|
46
|
+
| Code | Severity | Condition | Recovery |
|
|
47
|
+
|------|----------|-----------|----------|
|
|
48
|
+
| E001 | error | No wiki entries found (empty index) | Initialize wiki content first |
|
|
49
|
+
| E002 | error | Topic search returned 0 results | Broaden topic or check wiki content |
|
|
50
|
+
| W001 | warning | Too few entries (<5) for meaningful theme clustering | Digest produced but themes may be trivial |
|
|
51
|
+
| W002 | warning | lessons.jsonl not found — skipping cross-reference | Proceed without lesson context |
|
|
52
|
+
| W003 | warning | Some entry bodies failed to load — partial summaries | Note incomplete entries in digest |
|
|
53
|
+
</error_codes>
|
|
54
|
+
|
|
55
|
+
<success_criteria>
|
|
56
|
+
- [ ] Scope parsed and entries loaded
|
|
57
|
+
- [ ] Baseline health score recorded
|
|
58
|
+
- [ ] Entries clustered into 3-5 semantic themes
|
|
59
|
+
- [ ] Per-theme analysis: summary, key entries, gaps, health
|
|
60
|
+
- [ ] Cross-reference with lessons.jsonl completed
|
|
61
|
+
- [ ] Coverage heatmap generated (type × theme matrix)
|
|
62
|
+
- [ ] Knowledge gaps identified with suggested actions
|
|
63
|
+
- [ ] If `--create-issues`: gap issues created in `issues.jsonl` (deduped)
|
|
64
|
+
- [ ] Digest written to `digest-{slug}-{date}.md`
|
|
65
|
+
- [ ] Meta-insights appended to `lessons.jsonl`
|
|
66
|
+
- [ ] `learning-index.json` updated
|
|
67
|
+
- [ ] No files modified outside `.workflow/learning/` and `.workflow/issues/` (issues only when `--create-issues`)
|
|
68
|
+
- [ ] Summary displayed with key findings and next-step routing
|
|
69
|
+
</success_criteria>
|
|
@@ -141,7 +141,7 @@ After each barrier skill completes, read its artifacts and update `state.context
|
|
|
141
141
|
spawn_agents_on_csv({
|
|
142
142
|
csv_path: "{sessionDir}/wave-{N}.csv",
|
|
143
143
|
id_column: "id", instruction: WAVE_INSTRUCTION,
|
|
144
|
-
max_workers: <wave size>, max_runtime_seconds:
|
|
144
|
+
max_workers: <wave size>, max_runtime_seconds: 3600,
|
|
145
145
|
output_csv_path: "{sessionDir}/wave-{N}-results.csv",
|
|
146
146
|
output_schema: RESULT_SCHEMA
|
|
147
147
|
})
|
|
@@ -252,7 +252,7 @@ spawn_agents_on_csv({
|
|
|
252
252
|
id_column: "id",
|
|
253
253
|
instruction: buildExplorationInstruction(sessionFolder),
|
|
254
254
|
max_concurrency: maxConcurrency,
|
|
255
|
-
max_runtime_seconds:
|
|
255
|
+
max_runtime_seconds: 3600,
|
|
256
256
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
257
257
|
output_schema: { id, status: ["completed"|"failed"], findings, score, recommendations, error }
|
|
258
258
|
// required: id, status, findings
|
|
@@ -277,7 +277,7 @@ spawn_agents_on_csv({
|
|
|
277
277
|
id_column: "id",
|
|
278
278
|
instruction: buildScoringInstruction(sessionFolder),
|
|
279
279
|
max_concurrency: maxConcurrency,
|
|
280
|
-
max_runtime_seconds:
|
|
280
|
+
max_runtime_seconds: 3600,
|
|
281
281
|
output_csv_path: `${sessionFolder}/wave-2-results.csv`,
|
|
282
282
|
output_schema: { id, status: ["completed"|"failed"], findings, score, recommendations, error }
|
|
283
283
|
// required: id, status, findings, score
|
|
@@ -230,7 +230,7 @@ spawn_agents_on_csv({
|
|
|
230
230
|
csv_path: `${sessionFolder}/wave-1.csv`,
|
|
231
231
|
id_column: "id",
|
|
232
232
|
instruction: buildGuidanceInstruction(sessionFolder, topicArg),
|
|
233
|
-
max_concurrency: 1, max_runtime_seconds:
|
|
233
|
+
max_concurrency: 1, max_runtime_seconds: 3600,
|
|
234
234
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
235
235
|
output_schema: { id, status: [completed|failed], findings, analysis_file, error }
|
|
236
236
|
})
|
|
@@ -258,7 +258,7 @@ spawn_agents_on_csv({
|
|
|
258
258
|
csv_path: `${sessionFolder}/wave-2.csv`,
|
|
259
259
|
id_column: "id",
|
|
260
260
|
instruction: buildRoleAnalysisInstruction(sessionFolder),
|
|
261
|
-
max_concurrency: maxConcurrency, max_runtime_seconds:
|
|
261
|
+
max_concurrency: maxConcurrency, max_runtime_seconds: 3600,
|
|
262
262
|
output_csv_path: `${sessionFolder}/wave-2-results.csv`,
|
|
263
263
|
output_schema: { id, status: [completed|failed], findings, analysis_file, error }
|
|
264
264
|
})
|
|
@@ -219,7 +219,7 @@ spawn_agents_on_csv({
|
|
|
219
219
|
csv_path: `${sessionFolder}/wave-${N}.csv`,
|
|
220
220
|
id_column: "id",
|
|
221
221
|
instruction: buildExecutorInstruction(sessionFolder, phaseDir, autoCommit, specsContent),
|
|
222
|
-
max_concurrency: maxConcurrency, max_runtime_seconds:
|
|
222
|
+
max_concurrency: maxConcurrency, max_runtime_seconds: 3600,
|
|
223
223
|
output_csv_path: `${sessionFolder}/wave-${N}-results.csv`,
|
|
224
224
|
output_schema: { id, status: [completed|failed|blocked], findings, files_modified, tests_passed, error }
|
|
225
225
|
})
|
|
@@ -52,7 +52,7 @@ $ARGUMENTS — user intent text, or flags.
|
|
|
52
52
|
- `--chain <name>` — Force a specific chain graph
|
|
53
53
|
- `-y / --yes` — Auto mode: no confirmations between nodes
|
|
54
54
|
|
|
55
|
-
**Session state**: `.workflow/.maestro
|
|
55
|
+
**Session state**: `.workflow/.maestro/{session-id}/`
|
|
56
56
|
**Chain graphs**: `chains/` and `chains/singles/` directories (JSON files)
|
|
57
57
|
</context>
|
|
58
58
|
|
|
@@ -74,7 +74,7 @@ Parse `$ARGUMENTS` to extract: `listMode` (`--list`), `autoYes` (`-y`/`--yes`),
|
|
|
74
74
|
|
|
75
75
|
**`--list`**: Scan `chains/*.json` and `chains/singles/*.json`, display names + descriptions, stop.
|
|
76
76
|
|
|
77
|
-
**`-c` (resume)**: Glob `.workflow/.maestro
|
|
77
|
+
**`-c` (resume)**: Glob `.workflow/.maestro/MLC-*/state.json`, pick most recent (or by `resumeId`). Load state → find first incomplete node → jump to Phase 2.
|
|
78
78
|
|
|
79
79
|
**Fresh session**:
|
|
80
80
|
1. Resolve chain: `--chain` direct or classify from intent using `chains/_intent-map.json`
|
|
@@ -94,7 +94,7 @@ Parse `$ARGUMENTS` to extract: `listMode` (`--list`), `autoYes` (`-y`/`--yes`),
|
|
|
94
94
|
}
|
|
95
95
|
```
|
|
96
96
|
|
|
97
|
-
Session dir: `.workflow/.maestro
|
|
97
|
+
Session dir: `.workflow/.maestro/{sessionId}/`
|
|
98
98
|
|
|
99
99
|
**`--dry-run`**: Display node walk order with types, stop.
|
|
100
100
|
**Confirm** (skip if `autoYes`): Display chain summary, prompt `Proceed?`.
|
|
@@ -119,7 +119,7 @@ spawn_agents_on_csv({
|
|
|
119
119
|
id_column: "id",
|
|
120
120
|
instruction: AGENT_INSTRUCTION,
|
|
121
121
|
max_workers: 1,
|
|
122
|
-
max_runtime_seconds:
|
|
122
|
+
max_runtime_seconds: 3600,
|
|
123
123
|
output_csv_path: `${sessionDir}/wave-${nodeId}-results.csv`,
|
|
124
124
|
output_schema: RESULT_SCHEMA
|
|
125
125
|
})
|
|
@@ -173,7 +173,7 @@ Set `state.status` to completed/failed based on `node.status`. Record final hist
|
|
|
173
173
|
{topic}
|
|
174
174
|
|
|
175
175
|
限制:
|
|
176
|
-
- 不要修改 .workflow/.maestro
|
|
176
|
+
- 不要修改 .workflow/.maestro/ 下的 state 文件
|
|
177
177
|
- skill 内部有自己的 session 管理,按 skill SKILL.md 执行即可
|
|
178
178
|
|
|
179
179
|
最后必须调用 `report_agent_job_result`,返回 JSON:
|
|
@@ -222,7 +222,7 @@ NODE WALK:
|
|
|
222
222
|
[✓] test (command) — success — All tests passing
|
|
223
223
|
|
|
224
224
|
Nodes: {completed}/{total} | Visits: {total_visits}
|
|
225
|
-
State: .workflow/.maestro
|
|
225
|
+
State: .workflow/.maestro/{sessionId}/state.json
|
|
226
226
|
Resume: $maestro-link-coordinate -c {sessionId}
|
|
227
227
|
```
|
|
228
228
|
|
|
@@ -227,7 +227,7 @@ spawn_agents_on_csv({
|
|
|
227
227
|
id_column: "id",
|
|
228
228
|
instruction: buildExplorationInstruction(sessionFolder, phaseDir),
|
|
229
229
|
max_concurrency: maxConcurrency,
|
|
230
|
-
max_runtime_seconds:
|
|
230
|
+
max_runtime_seconds: 3600,
|
|
231
231
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
232
232
|
output_schema: { // required: id, status, findings
|
|
233
233
|
id: "string", status: "completed|failed", findings: "string", error: "string"
|
|
@@ -268,7 +268,7 @@ spawn_agents_on_csv({
|
|
|
268
268
|
contextMd, indexJson, specRef, docIndex, designRef, gapsContext
|
|
269
269
|
}),
|
|
270
270
|
max_concurrency: 1, // Single planning agent
|
|
271
|
-
max_runtime_seconds:
|
|
271
|
+
max_runtime_seconds: 3600,
|
|
272
272
|
output_csv_path: `${sessionFolder}/wave-2-results.csv`,
|
|
273
273
|
output_schema: { // required: id, status, findings
|
|
274
274
|
id: "string", status: "completed|failed", findings: "string", error: "string"
|
|
@@ -14,7 +14,7 @@ Aligned with maestro codex coordinator pattern:
|
|
|
14
14
|
- ALL skill execution via `spawn_agents_on_csv` — coordinator never executes directly
|
|
15
15
|
- Barrier nodes (checkpoints + artifact-producing skills) execute solo
|
|
16
16
|
- Non-barrier nodes grouped into parallel waves
|
|
17
|
-
- Session state at `.workflow/.maestro
|
|
17
|
+
- Session state at `.workflow/.maestro/{session-id}/`
|
|
18
18
|
- Resume from last completed wave via `-c`
|
|
19
19
|
|
|
20
20
|
```
|
|
@@ -57,7 +57,7 @@ $ARGUMENTS — template slug/path, or flags.
|
|
|
57
57
|
| Constant | Value |
|
|
58
58
|
|----------|-------|
|
|
59
59
|
| Session prefix | `MCP` (Maestro Composer Player) |
|
|
60
|
-
| Session dir | `.workflow/.maestro
|
|
60
|
+
| Session dir | `.workflow/.maestro/MCP-<YYYYMMDD>-<HHmmss>/` |
|
|
61
61
|
| State file | `state.json` |
|
|
62
62
|
| Wave CSV | `wave-{N}.csv` |
|
|
63
63
|
| Wave results | `wave-{N}-results.csv` |
|
|
@@ -199,7 +199,7 @@ spawn_agents_on_csv({
|
|
|
199
199
|
id_column: "id",
|
|
200
200
|
instruction: PLAYER_INSTRUCTION,
|
|
201
201
|
max_workers: waveSteps.length,
|
|
202
|
-
max_runtime_seconds:
|
|
202
|
+
max_runtime_seconds: 3600,
|
|
203
203
|
output_csv_path: `${sessionDir}/wave-${waveNum}-results.csv`,
|
|
204
204
|
output_schema: RESULT_SCHEMA
|
|
205
205
|
})
|
|
@@ -223,7 +223,7 @@ spawn_agents_on_csv({
|
|
|
223
223
|
{topic}
|
|
224
224
|
|
|
225
225
|
限制:
|
|
226
|
-
- 不要修改 .workflow/.maestro
|
|
226
|
+
- 不要修改 .workflow/.maestro/ 下的 state 文件
|
|
227
227
|
- skill 内部有自己的 session 管理,按 skill SKILL.md 执行即可
|
|
228
228
|
|
|
229
229
|
最后必须调用 `report_agent_job_result`,返回 JSON:
|
|
@@ -266,7 +266,7 @@ const RESULT_SCHEMA = {
|
|
|
266
266
|
[W3] $quality-test {phase} → ✓ all tests pass
|
|
267
267
|
$quality-review {phase} → ✓ no issues
|
|
268
268
|
|
|
269
|
-
State: .workflow/.maestro
|
|
269
|
+
State: .workflow/.maestro/<session_id>/state.json
|
|
270
270
|
Resume: $maestro-player -c
|
|
271
271
|
============================================================
|
|
272
272
|
```
|
|
@@ -310,7 +310,7 @@ Written by `spawn_agents_on_csv`. Contains result per agent.
|
|
|
310
310
|
<success_criteria>
|
|
311
311
|
- [ ] Template loaded from `~/.maestro/templates/workflows/` and validated
|
|
312
312
|
- [ ] All required context variables bound
|
|
313
|
-
- [ ] Session dir at `.workflow/.maestro
|
|
313
|
+
- [ ] Session dir at `.workflow/.maestro/MCP-*/` with `state.json`
|
|
314
314
|
- [ ] DAG nodes converted to waves (barrier=solo, non-barrier=parallel)
|
|
315
315
|
- [ ] Every skill invocation goes through `spawn_agents_on_csv` — none in coordinator
|
|
316
316
|
- [ ] Checkpoint nodes handled inline (state save, optional user pause)
|
|
@@ -198,7 +198,7 @@ spawn_agents_on_csv({
|
|
|
198
198
|
id_column: "id",
|
|
199
199
|
instruction: buildAnalysisInstruction(sessionFolder, requirementArg, strategy),
|
|
200
200
|
max_concurrency: 3,
|
|
201
|
-
max_runtime_seconds:
|
|
201
|
+
max_runtime_seconds: 3600,
|
|
202
202
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
203
203
|
output_schema: {
|
|
204
204
|
type: "object",
|
|
@@ -218,7 +218,7 @@ spawn_agents_on_csv({
|
|
|
218
218
|
id_column: "id",
|
|
219
219
|
instruction: buildResearchInstruction(sessionFolder, topicArg),
|
|
220
220
|
max_concurrency: 3,
|
|
221
|
-
max_runtime_seconds:
|
|
221
|
+
max_runtime_seconds: 3600,
|
|
222
222
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
223
223
|
output_schema: {
|
|
224
224
|
type: "object",
|
|
@@ -235,7 +235,7 @@ spawn_agents_on_csv({
|
|
|
235
235
|
id_column: "id",
|
|
236
236
|
instruction: buildVerifyInstruction(sessionFolder, "wave1"),
|
|
237
237
|
max_concurrency: maxConcurrency,
|
|
238
|
-
max_runtime_seconds:
|
|
238
|
+
max_runtime_seconds: 3600,
|
|
239
239
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
240
240
|
output_schema: { id, status: ["completed"|"failed"], findings, gaps_found, fix_plan, error }
|
|
241
241
|
// required: id, status, findings
|
|
@@ -200,7 +200,7 @@ spawn_agents_on_csv({
|
|
|
200
200
|
id_column: "id",
|
|
201
201
|
instruction: buildRebuildInstruction(sessionFolder, sourceDirs),
|
|
202
202
|
max_concurrency: maxConcurrency,
|
|
203
|
-
max_runtime_seconds:
|
|
203
|
+
max_runtime_seconds: 3600,
|
|
204
204
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
205
205
|
output_schema: {
|
|
206
206
|
type: "object",
|
|
@@ -247,7 +247,7 @@ spawn_agents_on_csv({
|
|
|
247
247
|
id_column: "id",
|
|
248
248
|
instruction: buildDiscoverInstruction(sessionFolder, discoveryDir, mode),
|
|
249
249
|
max_concurrency: maxConcurrency,
|
|
250
|
-
max_runtime_seconds:
|
|
250
|
+
max_runtime_seconds: 3600,
|
|
251
251
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
252
252
|
output_schema: { // required: id, status, findings
|
|
253
253
|
id: "string", status: "completed|failed",
|
|
@@ -205,7 +205,7 @@ spawn_agents_on_csv({
|
|
|
205
205
|
csv_path: `${sessionFolder}/wave-1.csv`,
|
|
206
206
|
id_column: "id",
|
|
207
207
|
instruction: buildInvestigationInstruction(sessionFolder),
|
|
208
|
-
max_concurrency: maxConcurrency, max_runtime_seconds:
|
|
208
|
+
max_concurrency: maxConcurrency, max_runtime_seconds: 3600,
|
|
209
209
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
210
210
|
output_schema: { id, status: [confirmed|refuted|inconclusive|failed], findings, evidence_for, evidence_against, error }
|
|
211
211
|
})
|
|
@@ -225,7 +225,7 @@ spawn_agents_on_csv({
|
|
|
225
225
|
csv_path: `${sessionFolder}/wave-2.csv`,
|
|
226
226
|
id_column: "id",
|
|
227
227
|
instruction: buildFixInstruction(sessionFolder),
|
|
228
|
-
max_concurrency: maxConcurrency, max_runtime_seconds:
|
|
228
|
+
max_concurrency: maxConcurrency, max_runtime_seconds: 3600,
|
|
229
229
|
output_csv_path: `${sessionFolder}/wave-2-results.csv`,
|
|
230
230
|
output_schema: { id, status: [fixed|fix_failed|failed], findings, fix_applied, verified, error }
|
|
231
231
|
})
|
|
@@ -231,7 +231,7 @@ spawn_agents_on_csv({
|
|
|
231
231
|
id_column: "id",
|
|
232
232
|
instruction: buildL0Instruction(sessionFolder),
|
|
233
233
|
max_concurrency: maxConcurrency,
|
|
234
|
-
max_runtime_seconds:
|
|
234
|
+
max_runtime_seconds: 3600,
|
|
235
235
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
236
236
|
output_schema: { id, status: ["completed"|"failed"], findings, tests_passed, tests_failed, coverage, error }
|
|
237
237
|
// required: id, status, findings
|
|
@@ -204,7 +204,7 @@ spawn_agents_on_csv({
|
|
|
204
204
|
id_column: "id",
|
|
205
205
|
instruction: buildReviewInstruction(sessionFolder),
|
|
206
206
|
max_concurrency: maxConcurrency,
|
|
207
|
-
max_runtime_seconds:
|
|
207
|
+
max_runtime_seconds: 3600,
|
|
208
208
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
209
209
|
output_schema: {
|
|
210
210
|
type: "object",
|
|
@@ -214,7 +214,7 @@ spawn_agents_on_csv({
|
|
|
214
214
|
csv_path: `${sessionFolder}/wave-1.csv`,
|
|
215
215
|
id_column: "id",
|
|
216
216
|
instruction: buildTestGenInstruction(sessionFolder),
|
|
217
|
-
max_concurrency: maxConcurrency, max_runtime_seconds:
|
|
217
|
+
max_concurrency: maxConcurrency, max_runtime_seconds: 3600,
|
|
218
218
|
output_csv_path: `${sessionFolder}/wave-1-results.csv`,
|
|
219
219
|
output_schema: { id, status: [completed|failed], findings, tests_created, coverage_delta, error }
|
|
220
220
|
})
|
|
@@ -106,7 +106,7 @@ Generate 4 mapper rows. If focus area specified, scope descriptions to that area
|
|
|
106
106
|
|
|
107
107
|
### Phase 2: Wave Execution
|
|
108
108
|
|
|
109
|
-
Single wave -- all 4 mappers via `spawn_agents_on_csv` (max_concurrency: 4,
|
|
109
|
+
Single wave -- all 4 mappers via `spawn_agents_on_csv` (max_concurrency: 4, 3600s timeout). Each agent returns: id, status (completed/failed), findings, error.
|
|
110
110
|
|
|
111
111
|
### Phase 3: Write Output Files
|
|
112
112
|
|
|
@@ -385,6 +385,7 @@ Delegate to `@commands/dispatch.md` which creates the full task chain:
|
|
|
385
385
|
### Agent Lifecycle Management
|
|
386
386
|
- **list_agents({})**: Returns all running agents. Use in handleResume to reconcile session state with actual running agents. Use in handleComplete to verify clean shutdown.
|
|
387
387
|
- **Named targeting**: Workers spawned with `task_name: "<task-id>"` can be addressed by name in send_message, followup_task, and close_agent calls.
|
|
388
|
+
- **Close agents promptly**: Call `close_agent` immediately after collecting a worker's result — do NOT leave completed agents running. Idle agents waste resources. At pipeline end, verify all agents closed via `list_agents`.
|
|
388
389
|
|
|
389
390
|
## Error Handling
|
|
390
391
|
|
|
@@ -155,6 +155,9 @@ Initialize session folder if needed.
|
|
|
155
155
|
|
|
156
156
|
---
|
|
157
157
|
|
|
158
|
+
## Agent Lifecycle Management
|
|
159
|
+
- **Close agents promptly**: Call `close_agent` immediately after collecting a worker's result — do NOT leave completed agents running. Idle agents waste resources. At pipeline end, verify all agents closed via `list_agents`.
|
|
160
|
+
|
|
158
161
|
## Error Handling
|
|
159
162
|
|
|
160
163
|
| Error | Resolution |
|
|
@@ -175,6 +175,7 @@ Delegate to @commands/monitor.md#handleSpawnNext:
|
|
|
175
175
|
### Agent Lifecycle Management
|
|
176
176
|
- **list_agents({})**: Returns all running agents. Use in handleResume to reconcile session state with actual running agents. Use in handleComplete to verify clean shutdown.
|
|
177
177
|
- **Named targeting**: Workers spawned with `task_name: "<task-id>"` can be addressed by name in send_message, followup_task, and close_agent calls.
|
|
178
|
+
- **Close agents promptly**: Call `close_agent` immediately after collecting a worker's result — do NOT leave completed agents running. Idle agents waste resources. At pipeline end, verify all agents closed via `list_agents`.
|
|
178
179
|
|
|
179
180
|
## Error Handling
|
|
180
181
|
|
|
@@ -162,6 +162,7 @@ Delegate to @commands/monitor.md#handleSpawnNext:
|
|
|
162
162
|
### Agent Lifecycle Management
|
|
163
163
|
- **list_agents({})**: Returns all running agents. Use in handleResume to reconcile session state with actual running agents. Use in handleComplete to verify clean shutdown.
|
|
164
164
|
- **Named targeting**: Workers spawned with `task_name: "<task-id>"` can be addressed by name in send_message, followup_task, and close_agent calls.
|
|
165
|
+
- **Close agents promptly**: Call `close_agent` immediately after collecting a worker's result — do NOT leave completed agents running. Idle agents waste resources. At pipeline end, verify all agents closed via `list_agents`.
|
|
165
166
|
|
|
166
167
|
## Error Handling
|
|
167
168
|
|
|
@@ -162,6 +162,7 @@ Delegate to @commands/monitor.md#handleSpawnNext:
|
|
|
162
162
|
### Agent Lifecycle Management
|
|
163
163
|
- **list_agents({})**: Returns all running agents. Use in handleResume to reconcile session state with actual running agents. Use in handleComplete to verify clean shutdown.
|
|
164
164
|
- **Named targeting**: Workers spawned with `task_name: "<task-id>"` can be addressed by name in send_message, followup_task, and close_agent calls.
|
|
165
|
+
- **Close agents promptly**: Call `close_agent` immediately after collecting a worker's result — do NOT leave completed agents running. Idle agents waste resources. At pipeline end, verify all agents closed via `list_agents`.
|
|
165
166
|
|
|
166
167
|
## Error Handling
|
|
167
168
|
|
|
@@ -158,6 +158,7 @@ Delegate to @commands/monitor.md#handleSpawnNext:
|
|
|
158
158
|
### Agent Lifecycle Management
|
|
159
159
|
- **list_agents({})**: Returns all running agents. Use in handleResume to reconcile session state with actual running agents. Use in handleComplete to verify clean shutdown.
|
|
160
160
|
- **Named targeting**: Workers spawned with `task_name: "<task-id>"` can be addressed by name in send_message, followup_task, and close_agent calls.
|
|
161
|
+
- **Close agents promptly**: Call `close_agent` immediately after collecting a worker's result — do NOT leave completed agents running. Idle agents waste resources. At pipeline end, verify all agents closed via `list_agents`.
|
|
161
162
|
|
|
162
163
|
## Error Handling
|
|
163
164
|
|
|
@@ -171,6 +171,7 @@ Delegate to @commands/monitor.md#handleSpawnNext:
|
|
|
171
171
|
### Agent Lifecycle Management
|
|
172
172
|
- **list_agents({})**: Returns all running agents. Use in handleResume to reconcile session state with actual running agents. Use in handleComplete to verify clean shutdown.
|
|
173
173
|
- **Named targeting**: Workers spawned with `task_name: "<task-id>"` can be addressed by name in send_message, followup_task, and close_agent calls.
|
|
174
|
+
- **Close agents promptly**: Call `close_agent` immediately after collecting a worker's result — do NOT leave completed agents running. Idle agents waste resources. At pipeline end, verify all agents closed via `list_agents`.
|
|
174
175
|
|
|
175
176
|
## Error Handling
|
|
176
177
|
|
|
@@ -35,7 +35,7 @@ export class WorkflowCoordinator {
|
|
|
35
35
|
if (this.graphWalker)
|
|
36
36
|
return this.graphWalker;
|
|
37
37
|
if (!this.graphWalkerInitPromise) {
|
|
38
|
-
const sessionDir = join(this.workflowRoot, '.workflow', '.maestro
|
|
38
|
+
const sessionDir = join(this.workflowRoot, '.workflow', '.maestro');
|
|
39
39
|
this.graphWalkerInitPromise = this.factory.create({
|
|
40
40
|
agentManager: this.agentManager,
|
|
41
41
|
eventBus: this.eventBus,
|
|
@@ -204,7 +204,7 @@ export class WorkflowCoordinator {
|
|
|
204
204
|
get sessionDir() {
|
|
205
205
|
if (!this.session)
|
|
206
206
|
throw new Error('No active session');
|
|
207
|
-
return join(this.workflowRoot, '.workflow', '.maestro
|
|
207
|
+
return join(this.workflowRoot, '.workflow', '.maestro', this.session.sessionId);
|
|
208
208
|
}
|
|
209
209
|
async persistState() {
|
|
210
210
|
if (!this.session)
|
|
@@ -223,7 +223,7 @@ export class WorkflowCoordinator {
|
|
|
223
223
|
try {
|
|
224
224
|
let stateDir;
|
|
225
225
|
if (sessionId) {
|
|
226
|
-
stateDir = join(this.workflowRoot, '.workflow', '.maestro
|
|
226
|
+
stateDir = join(this.workflowRoot, '.workflow', '.maestro', sessionId);
|
|
227
227
|
}
|
|
228
228
|
else if (this.session) {
|
|
229
229
|
stateDir = this.sessionDir;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-coordinator.js","sourceRoot":"","sources":["../../../../../src/server/coordinator/workflow-coordinator.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,mEAAmE;AACnE,8EAA8E;AAE9E,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAUjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAarE,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,MAAM,OAAO,mBAAmB;IAWX;IACA;IACA;IACA;IAbX,OAAO,GAA6B,IAAI,CAAC;IAEhC,eAAe,CAAuB;IAEvD,wDAAwD;IACvC,OAAO,CAAqB;IACrC,WAAW,GAA6D,IAAI,CAAC;IAC7E,sBAAsB,GAAsE,IAAI,CAAC;IAEzG,YACmB,QAA2B,EAC3B,YAA0B,EAC1B,YAA0B,EAC1B,YAAoB;QAHpB,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,iBAAY,GAAZ,YAAY,CAAc;QAC1B,iBAAY,GAAZ,YAAY,CAAc;QAC1B,iBAAY,GAAZ,YAAY,CAAQ;QAErC,IAAI,CAAC,OAAO,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACxC,IAAI,CAAC,eAAe,GAAG,IAAI,oBAAoB,EAAE,CAAC;IACpD,CAAC;IAED,kDAAkD;IAC1C,KAAK,CAAC,cAAc;QAC1B,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"workflow-coordinator.js","sourceRoot":"","sources":["../../../../../src/server/coordinator/workflow-coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -485,7 +485,7 @@ export class ExecutionScheduler {
|
|
|
485
485
|
// Create GraphWalker via factory
|
|
486
486
|
try {
|
|
487
487
|
const bridge = new WalkerEventBridge('coordinate', this.eventBus, `chain-${issue.id}`);
|
|
488
|
-
const sessionDir = join(workDir, '.workflow', '.maestro
|
|
488
|
+
const sessionDir = join(workDir, '.workflow', '.maestro', `chain-${issue.id}`);
|
|
489
489
|
const { walker } = await this.factory.create({
|
|
490
490
|
agentManager: this.agentManager,
|
|
491
491
|
eventBus: this.eventBus,
|