maestro-flow 0.4.7 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/maestro-ralph.md +548 -377
- package/.claude/commands/maestro.md +220 -191
- package/.codex/skills/maestro/SKILL.md +495 -462
- package/.codex/skills/maestro-ralph/SKILL.md +491 -339
- package/dashboard/dist/assets/{ArtifactsPage-CVh0Z2I2.js → ArtifactsPage-BLvAqQlQ.js} +1 -1
- package/dashboard/dist/assets/{ChatInput-CBI3qHQQ.js → ChatInput-DU9YGZKX.js} +1 -1
- package/dashboard/dist/assets/{ChatPage-BjJ9CYox.js → ChatPage-DYHfheXC.js} +1 -1
- package/dashboard/dist/assets/{CollabPage-CprGGO9y.js → CollabPage-CSlmvEa-.js} +1 -1
- package/dashboard/dist/assets/{ExecutionPanel-CClxD7cH.js → ExecutionPanel-RYWf0dYC.js} +1 -1
- package/dashboard/dist/assets/{KanbanPage-copqjdPg.js → KanbanPage-N55Iv0-X.js} +1 -1
- package/dashboard/dist/assets/{MaestroCoordinatePage-CioZjQ9N.js → MaestroCoordinatePage-BxwZ6yy5.js} +1 -1
- package/dashboard/dist/assets/{MarkdownRenderer-CtUhoxCT.js → MarkdownRenderer-ZGtOY7Ti.js} +1 -1
- package/dashboard/dist/assets/{McpPage-BcPPcJpr.js → McpPage-Im6s4pGR.js} +1 -1
- package/dashboard/dist/assets/{MeetingRoomPage-BgmAKxU-.js → MeetingRoomPage-CxHRn1xx.js} +1 -1
- package/dashboard/dist/assets/{OutputPanel-DgT3gMyp.js → OutputPanel-DaL8c1i5.js} +1 -1
- package/dashboard/dist/assets/{ProblemsPanel-BmG7rxoG.js → ProblemsPanel-BQTd5812.js} +1 -1
- package/dashboard/dist/assets/{RequirementBoardPage-k8YoeQ0r.js → RequirementBoardPage-22y9u1qh.js} +1 -1
- package/dashboard/dist/assets/{RequirementPage-Da2354px.js → RequirementPage-_mO743Xm.js} +1 -1
- package/dashboard/dist/assets/{RoomsPage-BtqDiYaU.js → RoomsPage-CExTbOGr.js} +1 -1
- package/dashboard/dist/assets/{SpecsPage-ByPVH_M3.js → SpecsPage-gr4KX51-.js} +1 -1
- package/dashboard/dist/assets/{TeamsPage-sFDLN30L.js → TeamsPage-BxEXLb5g.js} +1 -1
- package/dashboard/dist/assets/{TreeBrowser-oEx8YJXV.js → TreeBrowser-CVtPF5C9.js} +1 -1
- package/dashboard/dist/assets/{WorkflowPage-JrX7CVHh.js → WorkflowPage-BoN18Lhs.js} +1 -1
- package/dashboard/dist/assets/{arrow-left-DYvgSdIH.js → arrow-left-C5ROg97G.js} +1 -1
- package/dashboard/dist/assets/{check-jcgYBWVR.js → check-Bs8PM0tQ.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-DvZ5sMOg.js → chevron-right-SmErd_1F.js} +1 -1
- package/dashboard/dist/assets/{circle-DYT-zoRZ.js → circle-CjpslL_D.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-Bfbv3gt4.js → circle-alert-CuzAg2fd.js} +1 -1
- package/dashboard/dist/assets/{circle-check-D82WnpbI.js → circle-check-BIkDU5D5.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-CPVD1GKF.js → circle-check-big-CYctV8bK.js} +1 -1
- package/dashboard/dist/assets/{code-B3bKFGI4.js → code-DoB7rfxt.js} +1 -1
- package/dashboard/dist/assets/{columns-3-BeMAQCix.js → columns-3-Ch5KIyRa.js} +1 -1
- package/dashboard/dist/assets/{download-BCtpoWYB.js → download-DadtG2Nr.js} +1 -1
- package/dashboard/dist/assets/{folder-CTj6SNNu.js → folder-B8ODoZfb.js} +1 -1
- package/dashboard/dist/assets/{index-BxR_3IbJ.js → index-BL4h1OKY.js} +1 -1
- package/dashboard/dist/assets/{index-DpcPd-UG.js → index-DQIlX2w_.js} +4 -4
- package/dashboard/dist/assets/{index-CWBJLu42.js → index-DaFwSmVJ.js} +10 -10
- package/dashboard/dist/assets/{list-BMv8pIQn.js → list-CI-XIPZh.js} +1 -1
- package/dashboard/dist/assets/{loader-DdM4VOgF.js → loader-DpdMoQvh.js} +1 -1
- package/dashboard/dist/assets/{minus-D15s2E__.js → minus-BVbfXGrC.js} +1 -1
- package/dashboard/dist/assets/{pen-line-DO6o4xWz.js → pen-line-CR8GaHt-.js} +1 -1
- package/dashboard/dist/assets/{pencil-qGxg9jOe.js → pencil-I7GE0y29.js} +1 -1
- package/dashboard/dist/assets/{proxy-DOffTzwA.js → proxy-CcYyZZWI.js} +1 -1
- package/dashboard/dist/assets/{refresh-cw-C9UNdLCy.js → refresh-cw-BG9V_T4R.js} +1 -1
- package/dashboard/dist/assets/{rows-2-CifAA5SL.js → rows-2-DP6NjQFk.js} +1 -1
- package/dashboard/dist/assets/{search-pe7pU1YN.js → search-b78eLlw2.js} +1 -1
- package/dashboard/dist/assets/{shallow-r7YynQYA.js → shallow-CJEesgtu.js} +1 -1
- package/dashboard/dist/assets/{table-Bh772iIw.js → table-B_lk-a1d.js} +1 -1
- package/dashboard/dist/assets/{team-types-C_HqX2p2.js → team-types-Se7f9LfJ.js} +1 -1
- package/dashboard/dist/assets/{terminal-EpmtGBlw.js → terminal-DXx4tvzq.js} +1 -1
- package/dashboard/dist/assets/{trash-2-Xen46iNQ.js → trash-2-CVh9mnRj.js} +1 -1
- package/dashboard/dist/assets/{users-BLueDPxF.js → users-Da9zGME5.js} +1 -1
- package/dashboard/dist/assets/{zap-DsQCPF61.js → zap-C0zaC7gJ.js} +1 -1
- package/dashboard/dist/index.html +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/adapter-factory.js +4 -0
- package/dashboard/dist-server/dashboard/src/server/agents/adapter-factory.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/agy-adapter.d.ts +39 -0
- package/dashboard/dist-server/dashboard/src/server/agents/agy-adapter.js +423 -0
- package/dashboard/dist-server/dashboard/src/server/agents/agy-adapter.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +25 -33
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js +9 -3
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/codex-app-server-adapter.js +5 -2
- package/dashboard/dist-server/dashboard/src/server/agents/codex-app-server-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.d.ts +6 -0
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js +129 -8
- package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.js +6 -3
- package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.test.js +7 -1
- package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/opencode-adapter.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/server/agents/opencode-adapter.js +40 -15
- package/dashboard/dist-server/dashboard/src/server/agents/opencode-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.js +59 -0
- package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.test.js +78 -0
- package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.d.ts +25 -0
- package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.js +40 -0
- package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.test.js +89 -0
- package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js +19 -8
- package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.d.ts +6 -0
- package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.js +7 -1
- package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.test.js +46 -0
- package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js +2 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/shared/agent-types.d.ts +7 -1
- package/dist/shared/agent-types.d.ts +7 -1
- package/dist/shared/agent-types.d.ts.map +1 -1
- package/dist/src/agents/cli-agent-runner.d.ts +3 -0
- package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
- package/dist/src/agents/cli-agent-runner.js +4 -0
- package/dist/src/agents/cli-agent-runner.js.map +1 -1
- package/dist/src/commands/delegate.d.ts +2 -0
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +18 -0
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/hooks.d.ts +64 -0
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +107 -0
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install.d.ts.map +1 -1
- package/dist/src/commands/install.js +17 -3
- package/dist/src/commands/install.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +53 -0
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/config/cli-tools-config.d.ts +22 -5
- package/dist/src/config/cli-tools-config.d.ts.map +1 -1
- package/dist/src/config/cli-tools-config.js +77 -32
- package/dist/src/config/cli-tools-config.js.map +1 -1
- package/dist/src/config/cli-tools-defaults.json +2 -1
- package/dist/src/core/component-defs.d.ts.map +1 -1
- package/dist/src/core/component-defs.js +53 -0
- package/dist/src/core/component-defs.js.map +1 -1
- package/dist/src/tui/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/tui/install-ui/InstallExecution.js +5 -3
- package/dist/src/tui/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/utils/update-notices.d.ts +62 -0
- package/dist/src/utils/update-notices.d.ts.map +1 -0
- package/dist/src/utils/update-notices.js +178 -0
- package/dist/src/utils/update-notices.js.map +1 -0
- package/package.json +82 -82
- package/shared/agent-types.ts +237 -231
- package/workflows/agy-instructions.md +124 -0
|
@@ -1,462 +1,495 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: maestro
|
|
3
|
-
description: Auto-route intent to optimal command chain
|
|
4
|
-
argument-hint: "\"intent text\" [-y] [-c|--continue] [--dry-run] [--super]"
|
|
5
|
-
allowed-tools:
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
<purpose>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
Entry points:
|
|
13
|
-
- **`$maestro "intent"`** — Classify → chain → execute
|
|
14
|
-
- **`$maestro --continue`** — Resume from
|
|
15
|
-
- **`$maestro --dry-run "intent"`** — Show chain, no execution
|
|
16
|
-
- **`$maestro --super "intent"`** — Production-ready mode (read maestro-super.md)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
S_CLASSIFY:
|
|
72
|
-
→
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
→
|
|
80
|
-
→
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
→
|
|
91
|
-
→
|
|
92
|
-
→
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
→
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
→
|
|
103
|
-
→
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
|
158
|
-
|
|
159
|
-
| `
|
|
160
|
-
| `
|
|
161
|
-
| `
|
|
162
|
-
| `
|
|
163
|
-
| `
|
|
164
|
-
| `
|
|
165
|
-
| `
|
|
166
|
-
| `
|
|
167
|
-
| `
|
|
168
|
-
| `
|
|
169
|
-
| `
|
|
170
|
-
| `
|
|
171
|
-
| `
|
|
172
|
-
| `
|
|
173
|
-
| `
|
|
174
|
-
| `
|
|
175
|
-
| `
|
|
176
|
-
| `
|
|
177
|
-
| `
|
|
178
|
-
| `
|
|
179
|
-
| `
|
|
180
|
-
| `
|
|
181
|
-
| `
|
|
182
|
-
| `
|
|
183
|
-
| `
|
|
184
|
-
| `
|
|
185
|
-
| `
|
|
186
|
-
| `
|
|
187
|
-
| `
|
|
188
|
-
| `
|
|
189
|
-
| `
|
|
190
|
-
| `
|
|
191
|
-
| `
|
|
192
|
-
| `
|
|
193
|
-
| `
|
|
194
|
-
| `
|
|
195
|
-
| `
|
|
196
|
-
| `
|
|
197
|
-
| `
|
|
198
|
-
| `
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
|
222
|
-
|
|
223
|
-
|
|
|
224
|
-
|
|
|
225
|
-
|
|
|
226
|
-
|
|
|
227
|
-
|
|
|
228
|
-
|
|
|
229
|
-
|
|
|
230
|
-
|
|
|
231
|
-
|
|
|
232
|
-
| verifying, passed
|
|
233
|
-
|
|
|
234
|
-
|
|
|
235
|
-
|
|
|
236
|
-
|
|
|
237
|
-
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
###
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
**
|
|
300
|
-
|
|
301
|
-
|
|
|
302
|
-
|
|
303
|
-
|
|
|
304
|
-
|
|
|
305
|
-
|
|
|
306
|
-
|
|
|
307
|
-
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
|
356
|
-
|
|
357
|
-
| `
|
|
358
|
-
| `
|
|
359
|
-
| `
|
|
360
|
-
| `
|
|
361
|
-
| `
|
|
362
|
-
| `
|
|
363
|
-
| `
|
|
364
|
-
| `
|
|
365
|
-
| `
|
|
366
|
-
| `
|
|
367
|
-
| `
|
|
368
|
-
| `
|
|
369
|
-
| `
|
|
370
|
-
| `
|
|
371
|
-
| `
|
|
372
|
-
| `
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
|
377
|
-
|
|
378
|
-
| `
|
|
379
|
-
| `
|
|
380
|
-
| `
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
|
385
|
-
|
|
386
|
-
|
|
|
387
|
-
|
|
|
388
|
-
|
|
|
389
|
-
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
|
424
|
-
|
|
425
|
-
|
|
|
426
|
-
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
1
|
+
---
|
|
2
|
+
name: maestro
|
|
3
|
+
description: Auto-route intent to optimal command chain
|
|
4
|
+
argument-hint: "\"intent text\" [-y] [-c|--continue] [--dry-run] [--super]"
|
|
5
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<purpose>
|
|
9
|
+
Sequential pipeline coordinator. Classify intent → decompose (broad lifecycle intents) →
|
|
10
|
+
resolve chain → **directly invoke each skill in-context, one at a time** → report.
|
|
11
|
+
|
|
12
|
+
Entry points:
|
|
13
|
+
- **`$maestro "intent"`** — Classify → decompose → chain → execute
|
|
14
|
+
- **`$maestro --continue`** — Resume from first pending step
|
|
15
|
+
- **`$maestro --dry-run "intent"`** — Show chain, no execution
|
|
16
|
+
- **`$maestro --super "intent"`** — Production-ready mode (read maestro-super.md)
|
|
17
|
+
|
|
18
|
+
Codex specifics (parity with maestro-ralph):
|
|
19
|
+
- **No agent spawning** — skills run directly in coordinator context, sequentially.
|
|
20
|
+
- **Goal created via built-in tool** — `create_goal` binds the decomposed sub-goal checklist;
|
|
21
|
+
`update_plan` mirrors steps; `update_goal` releases on convergence.
|
|
22
|
+
</purpose>
|
|
23
|
+
|
|
24
|
+
<deferred_reading>
|
|
25
|
+
- [maestro-super.md](~/.maestro/workflows/maestro-super.md) — read when `--super` flag is active
|
|
26
|
+
</deferred_reading>
|
|
27
|
+
|
|
28
|
+
<context>
|
|
29
|
+
$ARGUMENTS — user intent text, or special flags.
|
|
30
|
+
|
|
31
|
+
**Flags:**
|
|
32
|
+
- `-y, --yes` — Auto mode: skip all prompts; propagate `-y` to each skill
|
|
33
|
+
- `--continue` — Resume latest paused session from first pending step
|
|
34
|
+
- `--dry-run` — Display planned chain without executing
|
|
35
|
+
- `--super` — Read and follow `maestro-super.md` completely
|
|
36
|
+
|
|
37
|
+
**Session state**: `.workflow/.maestro/{session-id}/`
|
|
38
|
+
</context>
|
|
39
|
+
|
|
40
|
+
<invariants>
|
|
41
|
+
1. **Skills invoked DIRECTLY in-context** — coordinator runs `$skill {resolved_args}` itself, sequentially. NO spawn_agents_on_csv, NO wave/CSV/worker.
|
|
42
|
+
2. **Coordinator owns the loop** — classify → decompose → resolve chain → for each step: resolve args → invoke skill → read result → persist → next.
|
|
43
|
+
3. **Decomposition contract shared with maestro-ralph** — broad/lifecycle intents run S_DECOMPOSE producing the SAME additive block (`boundary_contract`, `execution_criteria`, `task_decomposition`, `goal_checklist_path`) + `goal-checklist.md`. Reference maestro-ralph `A_DECOMPOSE_TASKS`; do not duplicate logic.
|
|
44
|
+
4. **Goal is tool-created** — `A_DECOMPOSE_TASKS` calls `create_goal` with sub-goal success criteria. `update_goal` on convergence; held while aborted/paused.
|
|
45
|
+
5. **Status JSON: schema-additive + step-dynamic** — decomposition fields OPTIONAL (absent → old flat-chain behavior); `steps[]` is a living array grown at runtime by `post-goal-audit`. `goal_ref` traces dynamically-added steps. Never remove/rename existing fields. `waves` kept as empty array for backward-compat (spawning removed).
|
|
46
|
+
6. **Sequential execution** — one step at a time in index order; each step's result read before the next starts.
|
|
47
|
+
7. **Abort on failure** — failed step → mark remaining skipped → report (goal stays bound for `--continue`).
|
|
48
|
+
</invariants>
|
|
49
|
+
|
|
50
|
+
<state_machine>
|
|
51
|
+
|
|
52
|
+
<states>
|
|
53
|
+
S_PARSE — 解析参数、检测 flags PERSIST: —
|
|
54
|
+
S_CONTINUE — 加载已有 session,定位 resume 点 PERSIST: session (loaded)
|
|
55
|
+
S_CLASSIFY — 意图分类、解析 chain (A_CLASSIFY) PERSIST: —
|
|
56
|
+
S_DECOMPOSE — 边界澄清、写执行准则+子目标、建 goal PERSIST: session.boundary_contract, .execution_criteria, .task_decomposition
|
|
57
|
+
S_CREATE — 创建 session + status.json PERSIST: session.status, session.steps[]
|
|
58
|
+
S_DRY_RUN — 显示 chain 后结束 PERSIST: —
|
|
59
|
+
S_CONFIRM — 用户确认(auto_mode 跳过) PERSIST: —
|
|
60
|
+
S_STEP_LOOP — 逐步直接调用 skill → 读结果 → 循环 PERSIST: session.current_step, session.steps[], session.context
|
|
61
|
+
S_DECISION_EVAL — 评估 post-goal-audit 决策节点 PERSIST: —
|
|
62
|
+
S_COMPLETE — 标记完成、释放目标 PERSIST: session.status = "completed"
|
|
63
|
+
S_ABORTED — 失败中止、标记剩余 skipped PERSIST: session.status = "aborted"
|
|
64
|
+
S_FALLBACK — 意图无法分类,请求输入 PERSIST: —
|
|
65
|
+
</states>
|
|
66
|
+
|
|
67
|
+
<transitions>
|
|
68
|
+
|
|
69
|
+
S_PARSE:
|
|
70
|
+
→ S_CONTINUE WHEN: --continue flag
|
|
71
|
+
→ S_CLASSIFY WHEN: intent text present
|
|
72
|
+
→ S_FALLBACK WHEN: no intent AND no flags
|
|
73
|
+
|
|
74
|
+
S_CONTINUE:
|
|
75
|
+
→ S_STEP_LOOP WHEN: session found, has pending steps DO: A_RESUME_SESSION
|
|
76
|
+
→ S_FALLBACK WHEN: no session found
|
|
77
|
+
|
|
78
|
+
S_CLASSIFY:
|
|
79
|
+
→ S_DECOMPOSE WHEN: chain resolved DO: A_CLASSIFY
|
|
80
|
+
→ S_FALLBACK WHEN: no match AND auto_mode
|
|
81
|
+
→ S_CLASSIFY WHEN: no match AND not auto_mode DO: A_CLARIFY_INTENT
|
|
82
|
+
GUARD: max 1 clarification attempt → S_FALLBACK
|
|
83
|
+
|
|
84
|
+
S_DECOMPOSE:
|
|
85
|
+
→ S_CREATE DO: A_DECOMPOSE_TASKS
|
|
86
|
+
GUARD: broad intent (重构/全面/重写/迁移/overhaul/migrate/rewrite) on multi-step lifecycle chain → MUST clarify even if auto_mode
|
|
87
|
+
GUARD: single-step chain OR narrow intent OR chain ∈ {status,init,quick} → skip decomposition (pass through)
|
|
88
|
+
|
|
89
|
+
S_CREATE:
|
|
90
|
+
→ S_DRY_RUN WHEN: --dry-run flag DO: A_CREATE_SESSION
|
|
91
|
+
→ S_CONFIRM WHEN: not auto_mode DO: A_CREATE_SESSION
|
|
92
|
+
→ S_STEP_LOOP WHEN: auto_mode DO: A_CREATE_SESSION
|
|
93
|
+
|
|
94
|
+
S_DRY_RUN:
|
|
95
|
+
→ END DO: display chain with step types + sub-goal summary
|
|
96
|
+
|
|
97
|
+
S_CONFIRM:
|
|
98
|
+
→ S_STEP_LOOP WHEN: user confirms
|
|
99
|
+
→ S_ABORTED WHEN: user cancels
|
|
100
|
+
|
|
101
|
+
S_STEP_LOOP:
|
|
102
|
+
→ S_DECISION_EVAL WHEN: next step.type == "decision"
|
|
103
|
+
→ S_STEP_LOOP WHEN: next step.type == "skill" DO: A_EXEC_STEP
|
|
104
|
+
→ S_COMPLETE WHEN: no pending steps
|
|
105
|
+
→ S_ABORTED WHEN: step failed (auto_mode: retry once then abort)
|
|
106
|
+
|
|
107
|
+
S_DECISION_EVAL: ENTRY: A_GOAL_AUDIT_EVALUATE (produces verdict)
|
|
108
|
+
→ S_STEP_LOOP WHEN: verdict == all_met DO: A_APPLY_GOAL_DONE
|
|
109
|
+
→ S_STEP_LOOP WHEN: verdict == has_unmet DO: A_APPLY_GOAL_FIX
|
|
110
|
+
→ S_ABORTED WHEN: retry >= max_retries AND unmet DO: escalate (insert quality-debug "{gaps}")
|
|
111
|
+
|
|
112
|
+
S_COMPLETE:
|
|
113
|
+
→ END DO: A_FINALIZE
|
|
114
|
+
|
|
115
|
+
S_ABORTED:
|
|
116
|
+
→ END DO: A_ABORT_REPORT
|
|
117
|
+
|
|
118
|
+
S_FALLBACK:
|
|
119
|
+
→ S_CLASSIFY WHEN: user provides new intent DO: AskUserQuestion
|
|
120
|
+
→ END WHEN: user cancels
|
|
121
|
+
|
|
122
|
+
</transitions>
|
|
123
|
+
|
|
124
|
+
<actions>
|
|
125
|
+
|
|
126
|
+
### A_CLASSIFY
|
|
127
|
+
|
|
128
|
+
**Layer 1: Exact-match (fast path)**
|
|
129
|
+
- `--chain <name>` flag → validate against chainMap, use directly (E002 if not found)
|
|
130
|
+
- `continue`/`next`/`go`/`继续`/`下一步` → `state_continue`
|
|
131
|
+
- `status`/`状态`/`dashboard` → `status`
|
|
132
|
+
|
|
133
|
+
If matched, skip to chain resolution.
|
|
134
|
+
|
|
135
|
+
**Layer 2: Semantic intent matching**
|
|
136
|
+
|
|
137
|
+
Directly match user intent to the best `task_type` (maps to chain in Chain Map). Use LLM semantic understanding — no rigid keyword lookup.
|
|
138
|
+
|
|
139
|
+
Extract:
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"task_type": "<from chain catalog below>",
|
|
143
|
+
"scope": "<module/file/area or null>",
|
|
144
|
+
"issue_id": "<ISS-XXXXXXXX-NNN if mentioned, else null>",
|
|
145
|
+
"phase_ref": "<integer if mentioned, else null>",
|
|
146
|
+
"urgency": "<low|normal|high>"
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**Chain catalog — select by best semantic fit:**
|
|
151
|
+
|
|
152
|
+
| task_type | When user intent is about... |
|
|
153
|
+
|-----------|---------------------------|
|
|
154
|
+
| `quick` | Simple/small task, add a feature, quick change |
|
|
155
|
+
| `plan` | Plan, design, architect a phase |
|
|
156
|
+
| `execute` | Implement, develop, code a phase |
|
|
157
|
+
| `analyze` | Understand, investigate, evaluate code |
|
|
158
|
+
| `verify` | Check goals met, validate results |
|
|
159
|
+
| `review` | Code quality review |
|
|
160
|
+
| `test` | Run or create tests, UAT |
|
|
161
|
+
| `test_gen` | Generate tests for coverage gaps |
|
|
162
|
+
| `debug` | Diagnose, troubleshoot, fix broken behavior |
|
|
163
|
+
| `refactor` | Restructure, clean up, reduce tech debt |
|
|
164
|
+
| `init` | Initialize project |
|
|
165
|
+
| `sync` | Update/sync documentation |
|
|
166
|
+
| `retrospective` | Phase review, post-mortem, 复盘 |
|
|
167
|
+
| `learn` | Capture insights, record learnings |
|
|
168
|
+
| `release` | Publish, ship, tag version |
|
|
169
|
+
| `amend` | Revise workflow commands |
|
|
170
|
+
| `compose` | Design/compose reusable workflows |
|
|
171
|
+
| `overlay` | Create/edit command overlays |
|
|
172
|
+
| `update` | Update maestro itself |
|
|
173
|
+
| `harvest` | Extract knowledge from artifacts |
|
|
174
|
+
| `wiki` | Manage wiki graph |
|
|
175
|
+
| `knowhow` | Manage knowhow entries |
|
|
176
|
+
| `ui_design` | UI design, build new UI |
|
|
177
|
+
| `issue` | Issue CRUD — create, list, close, query |
|
|
178
|
+
| `issue_discover` | Discover/find issues in codebase |
|
|
179
|
+
| `issue_analyze` | Analyze a specific issue |
|
|
180
|
+
| `issue_plan` | Plan fix for an issue |
|
|
181
|
+
| `issue_execute` | Fix issue end-to-end (auto-upgrades to issue-full) |
|
|
182
|
+
| `feature` | Standard feature: plan→execute→verify |
|
|
183
|
+
| `full-lifecycle` | Complete phase: plan→execute→verify→review→test→audit→complete |
|
|
184
|
+
| `brainstorm-driven` | Start from exploration/brainstorm |
|
|
185
|
+
| `spec-driven` | From spec/requirements (heavy, with init) |
|
|
186
|
+
| `roadmap-driven` | From requirements (light, with init) |
|
|
187
|
+
| `analyze-plan-execute` | Fast track: analyze→plan→execute |
|
|
188
|
+
| `execute-verify` | Resume after planning |
|
|
189
|
+
| `review-fix` | Fix review-blocked issues |
|
|
190
|
+
| `quality-loop` | Full quality improvement cycle |
|
|
191
|
+
| `quality-loop-partial` | Partial quality fix |
|
|
192
|
+
| `quality-fix` | Analyze gaps→plan→execute→verify |
|
|
193
|
+
| `deploy` | Verify then release |
|
|
194
|
+
| `milestone-close` | Close/transition milestone |
|
|
195
|
+
| `milestone-release` | Release milestone with version tag |
|
|
196
|
+
| `phase_transition` | Transition phase: audit→complete |
|
|
197
|
+
| `next-milestone` | Advance to next milestone |
|
|
198
|
+
| `state_continue` | Continue from current project state |
|
|
199
|
+
|
|
200
|
+
**Selection priorities:**
|
|
201
|
+
1. `issue_id` present → prefer issue chains
|
|
202
|
+
2. UI/design/界面/页面/原型 → prefer `ui_design`
|
|
203
|
+
3. Multiple lifecycle steps implied → prefer multi-step chains
|
|
204
|
+
4. Single specific action → prefer single-step chains
|
|
205
|
+
5. "问题" describing broken behavior → `debug`; tracked item with ISS-ID → `issue`; ambiguous → `debug`
|
|
206
|
+
6. Simple task, no lifecycle context → `quick`
|
|
207
|
+
7. Global fallback → `quick`
|
|
208
|
+
|
|
209
|
+
**Clarity scoring**: 3=task_type+scope+phase, 2=task_type+scope, 1=task_type only, 0=empty.
|
|
210
|
+
If `clarity < 2` and not `auto_mode` → transition to A_CLARIFY_INTENT.
|
|
211
|
+
|
|
212
|
+
**Layer 4: State-based routing** (when `taskType === 'state_continue'`)
|
|
213
|
+
|
|
214
|
+
Read `.workflow/state.json` and route by condition:
|
|
215
|
+
|
|
216
|
+
| Condition | Chain |
|
|
217
|
+
|-----------|-------|
|
|
218
|
+
| Not initialized | `init` |
|
|
219
|
+
| No phases, no roadmap, has accumulated_context | `next-milestone` |
|
|
220
|
+
| No phases | `brainstorm-driven` |
|
|
221
|
+
| pending + has context | `plan` |
|
|
222
|
+
| pending, no context | `analyze` |
|
|
223
|
+
| exploring/planning + has plan | `execute-verify` |
|
|
224
|
+
| exploring/planning, no plan | `plan` |
|
|
225
|
+
| executing, all tasks done | `verify` |
|
|
226
|
+
| executing, tasks remain | `execute` |
|
|
227
|
+
| verifying, passed + no review | `review` |
|
|
228
|
+
| verifying, passed + BLOCK | `review-fix` |
|
|
229
|
+
| verifying, passed + UAT pending | `test` |
|
|
230
|
+
| verifying, passed + UAT passed | `milestone-close` |
|
|
231
|
+
| verifying, passed + UAT failed | `debug` |
|
|
232
|
+
| verifying, not passed | `quality-loop-partial` |
|
|
233
|
+
| testing, UAT passed | `milestone-close` |
|
|
234
|
+
| testing, UAT not passed | `debug` |
|
|
235
|
+
| completed | `milestone-close` |
|
|
236
|
+
| blocked | `debug` |
|
|
237
|
+
| fallback | `status` |
|
|
238
|
+
|
|
239
|
+
**Chain resolution order:**
|
|
240
|
+
1. `forceChain` → `chainMap[forceChain]` (E002 if not found)
|
|
241
|
+
2. `state_continue` → Layer 4 state routing → `{ chain, argsOverride? }`
|
|
242
|
+
3. `taskToChain[taskType]` → alias lookup (see Chain Aliases below)
|
|
243
|
+
4. `chainMap[taskType]` → direct lookup
|
|
244
|
+
|
|
245
|
+
**Phase resolution**: structured extraction `phase_ref` → fallback regex (`phase N` or bare number) → `projectState.current_phase`.
|
|
246
|
+
|
|
247
|
+
### A_CLARIFY_INTENT
|
|
248
|
+
|
|
249
|
+
1. `AskUserQuestion` with available chain types
|
|
250
|
+
2. Re-classify with user response
|
|
251
|
+
|
|
252
|
+
### A_DECOMPOSE_TASKS
|
|
253
|
+
|
|
254
|
+
Shares the decomposition contract with maestro-ralph `A_DECOMPOSE_TASKS` — **reference that spec; do not duplicate.** Condensed:
|
|
255
|
+
|
|
256
|
+
1. Classify intent breadth. Skip for narrow / single-step / {status,init,quick} chains
|
|
257
|
+
2. Broad/medium → `AskUserQuestion` ≤3 rounds: Scope (in/out) | Constraints (compat/API/perf/test bar) | Definition of Done
|
|
258
|
+
3. Derive `execution_criteria` (3-6 imperative rules) + `task_decomposition` (outcome sub-goals; each `done_when` objectively verifiable, mapped to a ralph evidence artifact: verification.json / review.json / uat.md / test path)
|
|
259
|
+
4. Write `{session_dir}/goal-checklist.md` (same template as maestro-ralph) with `ALL_GOALS_DONE` sentinel; set `goal_checklist_path`
|
|
260
|
+
5. Append `{ type: "decision", decision: "post-goal-audit", retry_count: 0, max_retries: 2 }` as the FINAL node — after the last evidence-producing step (verify/review/test), before a milestone-complete/close-out step if present (audit needs evidence artifacts) → dynamic step growth for unmet sub-goals
|
|
261
|
+
6. **Register goal via `create_goal`:**
|
|
262
|
+
```
|
|
263
|
+
create_goal({ objective: "Maestro {chain}: {intent} — converge {N} sub-goals within boundary",
|
|
264
|
+
success_criteria: task_decomposition.map(g => `${g.id}: ${g.done_when}`),
|
|
265
|
+
constraints: [...execution_criteria, "stay within boundary_contract"] })
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### A_CREATE_SESSION
|
|
269
|
+
|
|
270
|
+
1. Read `.workflow/state.json` for project context (current phase, milestone, workflow_name)
|
|
271
|
+
2. Resolve chain's skill list from Chain Map (see appendix)
|
|
272
|
+
3. Create `.workflow/.maestro/maestro-{YYYYMMDD-HHMMSS}/status.json`:
|
|
273
|
+
```json
|
|
274
|
+
{ "session_id", "source": "maestro", "intent", "task_type", "chain_name",
|
|
275
|
+
"phase", "milestone", "auto_mode", "context": { "issue_id", "scratch_dir",
|
|
276
|
+
"plan_dir", "analysis_dir", "brainstorm_dir" },
|
|
277
|
+
"steps": [{ "index", "type": "skill|decision", "skill", "args", "status": "pending", "goal_ref": null }],
|
|
278
|
+
"waves": [], "current_step": 0, "status": "running",
|
|
279
|
+
"_comment": "↓ OPTIONAL additive block — present only if S_DECOMPOSE ran; absent → flat-chain behavior",
|
|
280
|
+
"boundary_contract": {}, "execution_criteria": [], "task_decomposition": [], "goal_checklist_path": "" }
|
|
281
|
+
```
|
|
282
|
+
Decomposition fields written ONLY if A_DECOMPOSE_TASKS produced them (additive)
|
|
283
|
+
4. Initialize tracking:
|
|
284
|
+
- If decomposed: goal already registered by A_DECOMPOSE_TASKS. Else: `create_goal({ objective: "Maestro {chain}: {N} steps [{skill list}]" })`
|
|
285
|
+
- `update_plan({ plan: steps.map(step => ({ step, status: "pending" })) })`
|
|
286
|
+
|
|
287
|
+
### A_RESUME_SESSION
|
|
288
|
+
|
|
289
|
+
1. Glob `.workflow/.maestro/maestro-*/status.json` sorted desc, load most recent
|
|
290
|
+
2. Find first pending step → set as resume point
|
|
291
|
+
3. Rebuild `update_plan` from status.json (completed→"completed", current→"in_progress", rest→"open")
|
|
292
|
+
|
|
293
|
+
### A_EXEC_STEP
|
|
294
|
+
|
|
295
|
+
Direct in-context skill invocation — **replaces the old spawn/wave/CSV mechanism**.
|
|
296
|
+
|
|
297
|
+
1. **buildSkillCall**: replace placeholders `{phase}`/`{plan_dir}`/`{analysis_dir}`/`{brainstorm_dir}`/`{spec_session_id}`; append auto-yes flag if `auto_mode` (see Appendix: Auto-Yes Flag Map)
|
|
298
|
+
2. Mark step `status="running"`, persist status.json + `update_plan` (this step → in_progress)
|
|
299
|
+
3. **Invoke the skill directly**: execute `$skill {resolved_args}` in coordinator context (NO spawn). Read its produced artifacts directly
|
|
300
|
+
4. On success: capture summary; mark step `status="done"`. **Barrier-context update** (when step is a context-producing skill):
|
|
301
|
+
| Skill | Read | Context Updates |
|
|
302
|
+
|-------|------|-----------------|
|
|
303
|
+
| maestro-analyze | context.md, state.json | analysis_dir, gaps, phase |
|
|
304
|
+
| maestro-plan | plan.json, .task/TASK-*.json | plan_dir, task_count |
|
|
305
|
+
| maestro-brainstorm | .brainstorming/ | brainstorm_dir, features |
|
|
306
|
+
| maestro-roadmap | specs/ | spec_session_id |
|
|
307
|
+
| maestro-execute | results.csv | exec_completed, exec_failed |
|
|
308
|
+
5. On failure: mark `status="failed"`; auto_mode → retry once → still failed → S_ABORTED
|
|
309
|
+
6. Persist status.json + `update_plan` after every step
|
|
310
|
+
|
|
311
|
+
### A_GOAL_AUDIT_EVALUATE
|
|
312
|
+
|
|
313
|
+
Entry action of S_DECISION_EVAL — mirrors maestro-ralph `A_GOAL_AUDIT_EVALUATE` (reference that spec; do not duplicate). Condensed:
|
|
314
|
+
|
|
315
|
+
1. Read `session.task_decomposition` + `goal_checklist_path`
|
|
316
|
+
2. For each sub-goal `status != "done"`: resolve its `evidence` artifact under current phase scratch dir
|
|
317
|
+
3. Delegate read-only audit (`maestro delegate --role analyze --mode analysis`): for each unmet sub-goal, read evidence, judge against `done_when`, return `STATUS(all_met|has_unmet) / UNMET=[{id,gap,target_phase}]`
|
|
318
|
+
4. For each met sub-goal → set `task_decomposition[i].status="done"` + flip `[ ]→[x]` in goal-checklist.md; persist
|
|
319
|
+
5. Produce verdict (`all_met` / `has_unmet`) consumed by S_DECISION_EVAL transition. GUARD: retry >= max_retries AND still unmet → escalate
|
|
320
|
+
|
|
321
|
+
### A_APPLY_GOAL_FIX
|
|
322
|
+
|
|
323
|
+
**Dynamic step-growth core** (mirrors maestro-ralph). For each unmet sub-goal (grouped by target_phase), insert before the post-goal-audit node a scoped mini-loop `$maestro-plan --gaps {phase} "G{n}: {gap}" → $maestro-execute {phase} → $maestro-verify {phase}`, each tagged `goal_ref: "G{n}"`, type `"skill"`. Re-append `decision:post-goal-audit {retry+1}`. Reindex, increment retry, persist + `update_plan`. `steps[]` grew.
|
|
324
|
+
|
|
325
|
+
### A_APPLY_GOAL_DONE
|
|
326
|
+
|
|
327
|
+
1. Set all `task_decomposition[*].status="done"`, persist; append `ALL_GOALS_DONE` to goal-checklist.md
|
|
328
|
+
2. `update_goal({ status: "complete" })` — release decomposition goal
|
|
329
|
+
3. Proceed to chain's terminal step
|
|
330
|
+
|
|
331
|
+
### A_FINALIZE
|
|
332
|
+
|
|
333
|
+
1. Set `session.status = "completed"`, write status.json
|
|
334
|
+
2. Sync `update_plan`: all steps → "completed"
|
|
335
|
+
3. `update_goal({ status: "complete" })` — release goal (idempotent if already released)
|
|
336
|
+
4. Generate completion report (see Appendix: Report Format)
|
|
337
|
+
|
|
338
|
+
### A_ABORT_REPORT
|
|
339
|
+
|
|
340
|
+
1. Mark remaining steps `skipped` in status.json
|
|
341
|
+
2. Set `session.status = "aborted"`, write status.json; sync `update_plan`
|
|
342
|
+
3. Do NOT call `update_goal` — goal stays for `--continue` resume
|
|
343
|
+
4. Display abort report with failure details
|
|
344
|
+
|
|
345
|
+
</actions>
|
|
346
|
+
|
|
347
|
+
</state_machine>
|
|
348
|
+
|
|
349
|
+
<appendix>
|
|
350
|
+
|
|
351
|
+
### Chain Map (Full)
|
|
352
|
+
|
|
353
|
+
**Single-step chains:**
|
|
354
|
+
|
|
355
|
+
| Chain | Command + Args |
|
|
356
|
+
|-------|---------------|
|
|
357
|
+
| `status` | `manage-status` |
|
|
358
|
+
| `init` | `maestro-init` |
|
|
359
|
+
| `analyze` | `maestro-analyze {phase}` |
|
|
360
|
+
| `ui_design` | `maestro-impeccable build "{phase}"` |
|
|
361
|
+
| `plan` | `maestro-plan {phase}` |
|
|
362
|
+
| `execute` | `maestro-execute {phase}` |
|
|
363
|
+
| `verify` | `maestro-verify {phase}` |
|
|
364
|
+
| `test_gen` | `quality-auto-test {phase}` |
|
|
365
|
+
| `auto_test` | `quality-auto-test {phase}` |
|
|
366
|
+
| `test` | `quality-test {phase}` |
|
|
367
|
+
| `debug` | `quality-debug "{description}"` |
|
|
368
|
+
| `integration_test` | `quality-auto-test {phase}` |
|
|
369
|
+
| `refactor` | `quality-refactor "{description}"` |
|
|
370
|
+
| `review` | `quality-review {phase}` |
|
|
371
|
+
| `retrospective` | `quality-retrospective {phase}` |
|
|
372
|
+
| `learn` | `maestro-learn "{description}"` |
|
|
373
|
+
| `sync` | `quality-sync` |
|
|
374
|
+
| `milestone_audit` | `maestro-milestone-audit` |
|
|
375
|
+
| `milestone_complete` | `maestro-milestone-complete` |
|
|
376
|
+
| `codebase_rebuild` | `manage-codebase-rebuild` |
|
|
377
|
+
| `codebase_refresh` | `manage-codebase-refresh` |
|
|
378
|
+
| `spec_setup` | `spec-setup` |
|
|
379
|
+
| `spec_add` | `spec-add "{description}"` |
|
|
380
|
+
| `spec_load` | `spec-load` |
|
|
381
|
+
| `spec_map` | `manage-codebase-rebuild` |
|
|
382
|
+
| `spec_remove` | `spec-remove "{description}"` |
|
|
383
|
+
| `knowhow_capture` | `manage-knowhow-capture "{description}"` |
|
|
384
|
+
| `knowhow` | `manage-knowhow "{description}"` |
|
|
385
|
+
| `issue` | `manage-issue "{description}"` |
|
|
386
|
+
| `issue_discover` | `manage-issue-discover "{description}"` |
|
|
387
|
+
| `issue_analyze` | `maestro-analyze --gaps "{description}"` |
|
|
388
|
+
| `issue_plan` | `maestro-plan --gaps` |
|
|
389
|
+
| `issue_execute` | `maestro-execute` |
|
|
390
|
+
| `quick` | `maestro-quick "{description}"` |
|
|
391
|
+
| `harvest` | `manage-harvest "{description}"` |
|
|
392
|
+
| `wiki` | `manage-wiki` |
|
|
393
|
+
| `wiki_connect` | `wiki-connect` |
|
|
394
|
+
| `wiki_digest` | `wiki-digest` |
|
|
395
|
+
| `business_test` | `quality-auto-test {phase}` |
|
|
396
|
+
| `amend` | `maestro-amend "{description}"` |
|
|
397
|
+
| `release` | `maestro-milestone-release` |
|
|
398
|
+
| `compose` | `maestro-composer "{description}"` |
|
|
399
|
+
| `play` | `maestro-player "{description}"` |
|
|
400
|
+
| `update` | `maestro-update` |
|
|
401
|
+
| `overlay` | `maestro-overlay "{description}"` |
|
|
402
|
+
| `link_coordinate` | `maestro-link-coordinate "{description}"` |
|
|
403
|
+
|
|
404
|
+
**Multi-step chains:**
|
|
405
|
+
|
|
406
|
+
| Chain | Steps (→ = sequential, [B] = context-producing barrier) |
|
|
407
|
+
|-------|---------------------------------------|
|
|
408
|
+
| `feature` | [B] maestro-plan → [B] maestro-execute → maestro-verify |
|
|
409
|
+
| `quality-fix` | [B] maestro-analyze --gaps → [B] maestro-plan --gaps → [B] maestro-execute → maestro-verify |
|
|
410
|
+
| `deploy` | maestro-verify → maestro-milestone-release |
|
|
411
|
+
| `spec-driven` | maestro-init → [B] maestro-roadmap --mode full → [B] maestro-plan → [B] maestro-execute → maestro-verify |
|
|
412
|
+
| `brainstorm-driven` | [B] maestro-brainstorm → [B] maestro-plan → [B] maestro-execute → maestro-verify |
|
|
413
|
+
| `ui-craft-build` | maestro-impeccable build → [B] maestro-plan → [B] maestro-execute → maestro-verify |
|
|
414
|
+
| `roadmap-driven` | maestro-init → [B] maestro-roadmap → [B] maestro-plan → [B] maestro-execute → maestro-verify |
|
|
415
|
+
| `next-milestone` | [B] maestro-roadmap → [B] maestro-plan → [B] maestro-execute → maestro-verify |
|
|
416
|
+
| `full-lifecycle` | [B] maestro-plan → [B] maestro-execute → maestro-verify → quality-review → quality-test → maestro-milestone-audit → maestro-milestone-complete |
|
|
417
|
+
| `execute-verify` | [B] maestro-execute → maestro-verify |
|
|
418
|
+
| `analyze-plan-execute` | [B] maestro-analyze -q → [B] maestro-plan --dir {scratch_dir} → [B] maestro-execute --dir {scratch_dir} |
|
|
419
|
+
| `quality-loop` | maestro-verify → quality-review → quality-test → quality-debug --from-uat → [B] maestro-plan --gaps → [B] maestro-execute |
|
|
420
|
+
| `quality-loop-partial` | [B] maestro-plan --gaps → [B] maestro-execute → maestro-verify |
|
|
421
|
+
| `review-fix` | [B] maestro-plan --gaps → [B] maestro-execute → quality-review |
|
|
422
|
+
| `milestone-close` | maestro-milestone-audit → maestro-milestone-complete |
|
|
423
|
+
| `milestone-release` | maestro-milestone-audit → maestro-milestone-release |
|
|
424
|
+
| `phase_transition` | maestro-milestone-audit → maestro-milestone-complete |
|
|
425
|
+
| `issue-full` | [B] maestro-analyze --gaps → [B] maestro-plan --gaps → [B] maestro-execute → quality-review → manage-issue close |
|
|
426
|
+
| `issue-quick` | [B] maestro-plan --gaps → [B] maestro-execute → manage-issue close |
|
|
427
|
+
|
|
428
|
+
> When S_DECOMPOSE ran, a `decision:post-goal-audit` node is appended as the final node (after the last evidence-producing step; before milestone-complete/close-out if the chain ends with one). `[B]` now denotes a context-producing skill (artifacts read into `session.context`) — execution is still sequential (no parallelism; spawning removed).
|
|
429
|
+
|
|
430
|
+
**Chain Aliases** (taskType → chain):
|
|
431
|
+
|
|
432
|
+
| taskType | Chain |
|
|
433
|
+
|----------|-------|
|
|
434
|
+
| `spec_generate` | `spec-driven` |
|
|
435
|
+
| `brainstorm` | `brainstorm-driven` |
|
|
436
|
+
| `issue_execute` | `issue-full` |
|
|
437
|
+
|
|
438
|
+
### Auto-Yes Flag Map
|
|
439
|
+
|
|
440
|
+
| Skill | Flag |
|
|
441
|
+
|-------|------|
|
|
442
|
+
| maestro-init, maestro-analyze, maestro-brainstorm, maestro-impeccable, maestro-roadmap | `-y` |
|
|
443
|
+
| maestro-plan, maestro-execute, maestro-milestone-complete | `-y` |
|
|
444
|
+
| quality-auto-test, quality-retrospective | `-y` |
|
|
445
|
+
| quality-test | `-y --auto-fix` |
|
|
446
|
+
|
|
447
|
+
### Context-Producing Skills
|
|
448
|
+
|
|
449
|
+
`maestro-analyze`, `maestro-plan`, `maestro-brainstorm`, `maestro-roadmap`, `maestro-execute` — their artifacts are read into `session.context` after the step completes (see A_EXEC_STEP step 4). Other skills produce no coordinator context. No parallelism — all steps run sequentially.
|
|
450
|
+
|
|
451
|
+
### Error Codes
|
|
452
|
+
|
|
453
|
+
| Code | Severity | Condition | Recovery |
|
|
454
|
+
|------|----------|-----------|----------|
|
|
455
|
+
| E001 | error | Intent unclassifiable after clarification | Default to `feature` chain |
|
|
456
|
+
| E002 | error | Intent unresolvable after retry | List chains, abort |
|
|
457
|
+
| E003 | error | Step skill invocation failed | auto_mode retry once, then abort chain |
|
|
458
|
+
| E004 | error | Context artifact not found | Retry step once, then abort |
|
|
459
|
+
| E005 | error | --continue: no session found | List sessions, prompt |
|
|
460
|
+
| W001 | warning | Context artifact partial | Continue with available context |
|
|
461
|
+
|
|
462
|
+
### Success Criteria
|
|
463
|
+
|
|
464
|
+
- [ ] Intent classified and chain resolved
|
|
465
|
+
- [ ] Broad lifecycle intents decomposed (S_DECOMPOSE, ≤3 boundary questions) sharing maestro-ralph contract; narrow/single-step skip
|
|
466
|
+
- [ ] Goal registered via built-in `create_goal`; status.json decomposition fields additive-only
|
|
467
|
+
- [ ] post-goal-audit node appended as final node (after evidence-producing steps); unmet sub-goals dynamically grow steps[] (goal_ref tagged)
|
|
468
|
+
- [ ] Session dir initialized with status.json before first step
|
|
469
|
+
- [ ] Every skill invoked DIRECTLY in-context — NO spawn_agents_on_csv, NO wave/CSV/worker
|
|
470
|
+
- [ ] Sequential execution; status.json + update_plan persisted after every step
|
|
471
|
+
- [ ] Context-producing skills' artifacts read into session.context before next step's args assembled
|
|
472
|
+
- [ ] Failed step → remaining skipped → abort reported (goal held for --continue)
|
|
473
|
+
- [ ] --dry-run shows chain + sub-goal summary, no execution
|
|
474
|
+
- [ ] --continue resumes from first pending step
|
|
475
|
+
- [ ] update_goal released on convergence (A_APPLY_GOAL_DONE / A_FINALIZE); held while aborted
|
|
476
|
+
|
|
477
|
+
### Report Format
|
|
478
|
+
|
|
479
|
+
```
|
|
480
|
+
=== MAESTRO COMPLETE ===
|
|
481
|
+
Session: {sessionId}
|
|
482
|
+
Chain: {chain}
|
|
483
|
+
Steps: {completed}/{total} Sub-goals: {done}/{total}
|
|
484
|
+
|
|
485
|
+
STEP RESULTS:
|
|
486
|
+
[1] $maestro-analyze --gaps → ✓ found 3 gaps
|
|
487
|
+
[2] $maestro-plan --gaps → ✓ 12 tasks
|
|
488
|
+
[◆] post-goal-audit → ✓ all sub-goals met
|
|
489
|
+
...
|
|
490
|
+
|
|
491
|
+
State: .workflow/.maestro/{sessionId}/status.json
|
|
492
|
+
Resume: $maestro --continue
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
</appendix>
|