@vpxa/aikit 0.1.63 → 0.1.64
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/README.md +41 -1
- package/package.json +1 -1
- package/packages/cli/dist/index.js +1 -1
- package/packages/flows/dist/index.d.ts +76 -11
- package/packages/flows/dist/index.js +2 -2
- package/packages/server/dist/index.js +1 -1
- package/packages/server/dist/{server-BlBBxAQO.js → server-C7mYTlIU.js} +69 -69
- package/scaffold/flows/aikit-advanced/README.md +1 -1
- package/scaffold/flows/aikit-advanced/steps/execute/README.md +4 -4
- package/scaffold/flows/aikit-advanced/steps/plan/README.md +4 -4
- package/scaffold/flows/aikit-advanced/steps/spec/README.md +2 -2
- package/scaffold/flows/aikit-advanced/steps/task/README.md +4 -4
- package/scaffold/flows/aikit-advanced/steps/verify/README.md +7 -7
- package/scaffold/flows/aikit-basic/README.md +1 -1
- package/scaffold/flows/aikit-basic/steps/assess/README.md +2 -2
- package/scaffold/flows/aikit-basic/steps/implement/README.md +4 -4
- package/scaffold/flows/aikit-basic/steps/verify/README.md +4 -4
- package/scaffold/general/agents/Orchestrator.agent.md +10 -8
- package/scaffold/general/skills/aikit/SKILL.md +14 -12
|
@@ -67,4 +67,4 @@ When the Orchestrator activates a step:
|
|
|
67
67
|
|
|
68
68
|
## Artifacts
|
|
69
69
|
|
|
70
|
-
All artifacts are stored in the
|
|
70
|
+
All artifacts are stored in the run directory under `.flows/{topic}/`. The template variable `{{artifacts_path}}` resolves to the actual path at runtime.
|
|
@@ -9,7 +9,7 @@ description: Implement all tasks from the task breakdown, dispatching agents in
|
|
|
9
9
|
|
|
10
10
|
Before starting this step, verify:
|
|
11
11
|
- [ ] Task breakdown approved with valid task graph
|
|
12
|
-
- [ ]
|
|
12
|
+
- [ ] `{{artifacts_path}}/tasks.md` exists with defined batches and dependencies
|
|
13
13
|
|
|
14
14
|
If prerequisites are NOT met -> **backtrack to task step** (`flow_step({ action: 'redo' })` on previous step)
|
|
15
15
|
|
|
@@ -19,7 +19,7 @@ Execute all tasks from the breakdown, dispatching implementation agents in batch
|
|
|
19
19
|
|
|
20
20
|
## Inputs
|
|
21
21
|
|
|
22
|
-
-
|
|
22
|
+
- `{{artifacts_path}}/tasks.md` — the atomic task list with dependencies and agent assignments
|
|
23
23
|
|
|
24
24
|
## Process
|
|
25
25
|
|
|
@@ -38,7 +38,7 @@ Execute all tasks from the breakdown, dispatching implementation agents in batch
|
|
|
38
38
|
|
|
39
39
|
## Outputs
|
|
40
40
|
|
|
41
|
-
Produce
|
|
41
|
+
Produce `{{artifacts_path}}/progress.md` with:
|
|
42
42
|
|
|
43
43
|
```markdown
|
|
44
44
|
# Execution Progress: <feature title>
|
|
@@ -130,7 +130,7 @@ Follow the `multi-agents-development` skill patterns for dispatch:
|
|
|
130
130
|
- [ ] `check({})` passes
|
|
131
131
|
- [ ] `test_run({})` passes
|
|
132
132
|
- [ ] No blocked items remaining
|
|
133
|
-
- [ ]
|
|
133
|
+
- [ ] `{{artifacts_path}}/progress.md` written
|
|
134
134
|
|
|
135
135
|
## Knowledge Capture
|
|
136
136
|
|
|
@@ -9,7 +9,7 @@ description: Analyze the codebase, design the architecture, and create a detaile
|
|
|
9
9
|
|
|
10
10
|
Before starting this step, verify:
|
|
11
11
|
- [ ] Specification approved with clarity score ≥90
|
|
12
|
-
- [ ]
|
|
12
|
+
- [ ] `{{artifacts_path}}/spec.md` exists and is complete
|
|
13
13
|
|
|
14
14
|
If prerequisites are NOT met → **backtrack to spec step** (`flow_step({ action: 'redo' })` on previous step)
|
|
15
15
|
|
|
@@ -19,7 +19,7 @@ Translate the specification into a concrete, phased implementation plan with arc
|
|
|
19
19
|
|
|
20
20
|
## Inputs
|
|
21
21
|
|
|
22
|
-
-
|
|
22
|
+
- `{{artifacts_path}}/spec.md` — the validated specification
|
|
23
23
|
|
|
24
24
|
## Process
|
|
25
25
|
|
|
@@ -38,7 +38,7 @@ Translate the specification into a concrete, phased implementation plan with arc
|
|
|
38
38
|
|
|
39
39
|
## Outputs
|
|
40
40
|
|
|
41
|
-
Produce
|
|
41
|
+
Produce `{{artifacts_path}}/plan.md` with:
|
|
42
42
|
|
|
43
43
|
```markdown
|
|
44
44
|
# Implementation Plan: <feature title>
|
|
@@ -107,7 +107,7 @@ Load these skills BEFORE executing this step:
|
|
|
107
107
|
- [ ] Architecture decisions documented with rationale
|
|
108
108
|
- [ ] Dependency graph has no circular dependencies
|
|
109
109
|
- [ ] Risks identified with mitigations
|
|
110
|
-
- [ ]
|
|
110
|
+
- [ ] `{{artifacts_path}}/plan.md` written
|
|
111
111
|
|
|
112
112
|
## Knowledge Capture
|
|
113
113
|
|
|
@@ -36,7 +36,7 @@ Transform a vague or broad feature request into a precise, testable specificatio
|
|
|
36
36
|
|
|
37
37
|
## Outputs
|
|
38
38
|
|
|
39
|
-
Produce
|
|
39
|
+
Produce `{{artifacts_path}}/spec.md` with:
|
|
40
40
|
|
|
41
41
|
```markdown
|
|
42
42
|
# Specification: <feature title>
|
|
@@ -106,7 +106,7 @@ Load these skills BEFORE executing this step:
|
|
|
106
106
|
- [ ] Scope boundaries are explicit
|
|
107
107
|
- [ ] Requirements clarity score ≥ 90
|
|
108
108
|
- [ ] No open questions remain
|
|
109
|
-
- [ ]
|
|
109
|
+
- [ ] `{{artifacts_path}}/spec.md` written
|
|
110
110
|
|
|
111
111
|
## Knowledge Capture
|
|
112
112
|
|
|
@@ -9,7 +9,7 @@ description: Break the implementation plan into ordered, atomic tasks with depen
|
|
|
9
9
|
|
|
10
10
|
Before starting this step, verify:
|
|
11
11
|
- [ ] Implementation plan approved
|
|
12
|
-
- [ ]
|
|
12
|
+
- [ ] `{{artifacts_path}}/plan.md` exists with defined phases
|
|
13
13
|
|
|
14
14
|
If prerequisites are NOT met → **backtrack to plan step** (`flow_step({ action: 'redo' })` on previous step)
|
|
15
15
|
|
|
@@ -19,7 +19,7 @@ Decompose the implementation plan into small, atomic tasks that agents can execu
|
|
|
19
19
|
|
|
20
20
|
## Inputs
|
|
21
21
|
|
|
22
|
-
-
|
|
22
|
+
- `{{artifacts_path}}/plan.md` — the phased implementation plan
|
|
23
23
|
|
|
24
24
|
## Process
|
|
25
25
|
|
|
@@ -35,7 +35,7 @@ Decompose the implementation plan into small, atomic tasks that agents can execu
|
|
|
35
35
|
|
|
36
36
|
## Outputs
|
|
37
37
|
|
|
38
|
-
Produce
|
|
38
|
+
Produce `{{artifacts_path}}/tasks.md` with:
|
|
39
39
|
|
|
40
40
|
```markdown
|
|
41
41
|
# Task Breakdown: <feature title>
|
|
@@ -104,7 +104,7 @@ Load these skills BEFORE executing this step:
|
|
|
104
104
|
- [ ] Dependencies form a DAG (no cycles)
|
|
105
105
|
- [ ] Parallelism opportunities identified
|
|
106
106
|
- [ ] Architect review confirms no integration risks
|
|
107
|
-
- [ ]
|
|
107
|
+
- [ ] `{{artifacts_path}}/tasks.md` written
|
|
108
108
|
|
|
109
109
|
## Knowledge Capture
|
|
110
110
|
|
|
@@ -10,7 +10,7 @@ description: Dual code review, architecture review, security review, and compreh
|
|
|
10
10
|
Before starting this step, verify:
|
|
11
11
|
- [ ] All tasks marked complete in progress tracker
|
|
12
12
|
- [ ] `check({})` and `test_run({})` pass
|
|
13
|
-
- [ ]
|
|
13
|
+
- [ ] `{{artifacts_path}}/progress.md` exists with execution results
|
|
14
14
|
|
|
15
15
|
If prerequisites are NOT met → **backtrack to execute step** (`flow_step({ action: 'redo' })` on previous step)
|
|
16
16
|
|
|
@@ -20,10 +20,10 @@ Perform thorough multi-perspective validation of all changes through parallel du
|
|
|
20
20
|
|
|
21
21
|
## Inputs
|
|
22
22
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
23
|
+
- `{{artifacts_path}}/spec.md` — original requirements and acceptance criteria
|
|
24
|
+
- `{{artifacts_path}}/plan.md` — architecture decisions and phase design
|
|
25
|
+
- `{{artifacts_path}}/tasks.md` — task breakdown with per-task acceptance criteria
|
|
26
|
+
- `{{artifacts_path}}/progress.md` — implementation status and changes made
|
|
27
27
|
|
|
28
28
|
## Process
|
|
29
29
|
|
|
@@ -44,7 +44,7 @@ Perform thorough multi-perspective validation of all changes through parallel du
|
|
|
44
44
|
|
|
45
45
|
## Outputs
|
|
46
46
|
|
|
47
|
-
Produce
|
|
47
|
+
Produce `{{artifacts_path}}/verify-report.md` with:
|
|
48
48
|
|
|
49
49
|
```markdown
|
|
50
50
|
# Verification Report: <feature title>
|
|
@@ -130,7 +130,7 @@ After all reviews complete:
|
|
|
130
130
|
- [ ] `test_run({})` passes
|
|
131
131
|
- [ ] All spec acceptance criteria verified
|
|
132
132
|
- [ ] FORGE gate passed (YIELD)
|
|
133
|
-
- [ ]
|
|
133
|
+
- [ ] `{{artifacts_path}}/verify-report.md` written with clear verdict
|
|
134
134
|
|
|
135
135
|
## Knowledge Capture
|
|
136
136
|
|
|
@@ -48,4 +48,4 @@ When the Orchestrator activates a step:
|
|
|
48
48
|
|
|
49
49
|
## Artifacts
|
|
50
50
|
|
|
51
|
-
All artifacts are stored in the
|
|
51
|
+
All artifacts are stored in the run directory under `.flows/{topic}/`. The template variable `{{artifacts_path}}` resolves to the actual path at runtime.
|
|
@@ -38,7 +38,7 @@ If any prerequisites are missing or incomplete:
|
|
|
38
38
|
|
|
39
39
|
## Outputs
|
|
40
40
|
|
|
41
|
-
Produce
|
|
41
|
+
Produce `{{artifacts_path}}/assessment.md` with:
|
|
42
42
|
|
|
43
43
|
```markdown
|
|
44
44
|
# Assessment: <task title>
|
|
@@ -94,7 +94,7 @@ Load these skills BEFORE executing this step:
|
|
|
94
94
|
- [ ] Implementation approach is concrete (not vague)
|
|
95
95
|
- [ ] Risks documented with mitigations
|
|
96
96
|
- [ ] No unresolved open questions that block implementation
|
|
97
|
-
- [ ]
|
|
97
|
+
- [ ] `{{artifacts_path}}/assessment.md` written
|
|
98
98
|
|
|
99
99
|
## Knowledge Capture
|
|
100
100
|
|
|
@@ -11,7 +11,7 @@ Execute the implementation plan from the assessment, writing production code and
|
|
|
11
11
|
|
|
12
12
|
## Inputs
|
|
13
13
|
|
|
14
|
-
-
|
|
14
|
+
- `{{artifacts_path}}/assessment.md` — the approach, affected files, and risks
|
|
15
15
|
|
|
16
16
|
## Prerequisites Check
|
|
17
17
|
|
|
@@ -28,7 +28,7 @@ If any prerequisites are missing or incomplete:
|
|
|
28
28
|
|
|
29
29
|
## Process
|
|
30
30
|
|
|
31
|
-
1. **Read assessment** — Load
|
|
31
|
+
1. **Read assessment** — Load `{{artifacts_path}}/assessment.md` and internalize the approach
|
|
32
32
|
2. **Set up tests first** — Where applicable, write failing tests that define success
|
|
33
33
|
3. **Implement changes** — Follow the approach steps sequentially
|
|
34
34
|
- One logical change per commit-worthy chunk
|
|
@@ -39,7 +39,7 @@ If any prerequisites are missing or incomplete:
|
|
|
39
39
|
|
|
40
40
|
## Outputs
|
|
41
41
|
|
|
42
|
-
Produce
|
|
42
|
+
Produce `{{artifacts_path}}/progress.md` with:
|
|
43
43
|
|
|
44
44
|
```markdown
|
|
45
45
|
# Implementation Progress: <task title>
|
|
@@ -116,7 +116,7 @@ Follow the `multi-agents-development` skill patterns for dispatch:
|
|
|
116
116
|
- [ ] `check({})` passes (no type/lint errors)
|
|
117
117
|
- [ ] `test_run({})` passes (no test failures)
|
|
118
118
|
- [ ] No files modified outside assessed scope
|
|
119
|
-
- [ ]
|
|
119
|
+
- [ ] `{{artifacts_path}}/progress.md` written
|
|
120
120
|
|
|
121
121
|
## Knowledge Capture
|
|
122
122
|
|
|
@@ -11,8 +11,8 @@ Validate that the implementation meets the original requirements, passes all qua
|
|
|
11
11
|
|
|
12
12
|
## Inputs
|
|
13
13
|
|
|
14
|
-
-
|
|
15
|
-
-
|
|
14
|
+
- `{{artifacts_path}}/assessment.md` — original requirements and approach
|
|
15
|
+
- `{{artifacts_path}}/progress.md` — what was implemented and any deviations
|
|
16
16
|
|
|
17
17
|
## Prerequisites Check
|
|
18
18
|
|
|
@@ -42,7 +42,7 @@ If any prerequisites are missing or incomplete:
|
|
|
42
42
|
|
|
43
43
|
## Outputs
|
|
44
44
|
|
|
45
|
-
Produce
|
|
45
|
+
Produce `{{artifacts_path}}/verify-report.md` with:
|
|
46
46
|
|
|
47
47
|
```markdown
|
|
48
48
|
# Verification Report: <task title>
|
|
@@ -108,7 +108,7 @@ After all reviews complete:
|
|
|
108
108
|
- [ ] Code review complete with no blocking issues
|
|
109
109
|
- [ ] Security review complete
|
|
110
110
|
- [ ] Blast radius assessed
|
|
111
|
-
- [ ]
|
|
111
|
+
- [ ] `{{artifacts_path}}/verify-report.md` written with clear PASS/FAIL verdict
|
|
112
112
|
|
|
113
113
|
## Knowledge Capture
|
|
114
114
|
|
|
@@ -71,7 +71,7 @@ You orchestrate the full development lifecycle: **planning → implementation
|
|
|
71
71
|
| New feature, API design, architecture change, multi-component work | `aikit:advanced` |
|
|
72
72
|
| Task matches a custom flow's description/tags exactly | That custom flow |
|
|
73
73
|
|
|
74
|
-
- **Auto-start:** When exactly one flow matches, start it immediately — `flow_start({ flow: '<matched>' })` — and inform the user which flow was activated and why.
|
|
74
|
+
- **Auto-start:** When exactly one flow matches, start it immediately — `flow_start({ flow: '<matched>', topic: '<task description>' })` — and inform the user which flow was activated and why. The `topic` becomes the `.flows/` directory name (slugified).
|
|
75
75
|
- **Ask only when ambiguous:** If the task could fit multiple flows, or no flow clearly matches, present the options and let the user choose.
|
|
76
76
|
- Do NOT present a menu for obvious cases. Speed matters.
|
|
77
77
|
4. **Every task goes through a flow.** There is no flowless path.
|
|
@@ -133,8 +133,9 @@ Batch 2 (after batch 1):
|
|
|
133
133
|
2. **Goal** — acceptance criteria, testable
|
|
134
134
|
3. **Arch Context** — code snippets from `compact()`/`digest()`
|
|
135
135
|
4. **Constraints** — patterns, conventions
|
|
136
|
-
5. **
|
|
137
|
-
6. **
|
|
136
|
+
5. **Artifacts Path** — the active flow's run directory and artifacts path from `flow_status` (e.g. `.flows/add-authentication/.spec/`)
|
|
137
|
+
6. **FORGE** — tier + task_id + evidence requirements (reviewers add CRITICAL/HIGH claims into your task_id; never create their own)
|
|
138
|
+
7. **Self-Review** — checklist before declaring status
|
|
138
139
|
|
|
139
140
|
**Subagent status protocol:** `DONE` | `DONE_WITH_CONCERNS` | `NEEDS_CONTEXT` | `BLOCKED`
|
|
140
141
|
|
|
@@ -153,11 +154,12 @@ Reviewers add findings to the Orchestrator's existing `evidence_map` `task_id` a
|
|
|
153
154
|
|------|---------|
|
|
154
155
|
| `flow_list` | List installed flows and active flow |
|
|
155
156
|
| `flow_info` | Get detailed flow info including steps |
|
|
156
|
-
| `flow_start` | Start a
|
|
157
|
+
| `flow_start` | Start a flow with a topic — creates `.flows/{topic-slug}/` run directory |
|
|
157
158
|
| `flow_step` | Advance: next, skip, or redo current step |
|
|
158
|
-
| `flow_status` | Check current execution state |
|
|
159
|
-
| `flow_reset` |
|
|
160
|
-
| `flow_read_instruction` | Read the
|
|
159
|
+
| `flow_status` | Check current execution state including slug, runDir, artifactsPath |
|
|
160
|
+
| `flow_reset` | Abandon the active flow (preserves run directory for history) |
|
|
161
|
+
| `flow_read_instruction` | Read the current step's instruction with `{{artifacts_path}}` resolved |
|
|
162
|
+
| `flow_runs` | List all flow runs (current and past) with topic, status, progress |
|
|
161
163
|
|
|
162
164
|
## Emergency: STOP → ASSESS → CONTAIN → RECOVER → DOCUMENT
|
|
163
165
|
|
|
@@ -273,7 +275,7 @@ flow_status({}) # Check/resume ac
|
|
|
273
275
|
status({}) # Check AI Kit health + onboard state
|
|
274
276
|
# If onboard not run → onboard({ path: "." }) # First-time codebase analysis
|
|
275
277
|
flow_list({}) # See available flows
|
|
276
|
-
# Select flow based on task → flow_start({ flow: "<name>" }) # Start flow
|
|
278
|
+
# Select flow based on task → flow_start({ flow: "<name>", topic: "<task>" }) # Start flow — creates .flows/{topic}/
|
|
277
279
|
list() # See stored knowledge
|
|
278
280
|
search({ query: "SESSION CHECKPOINT", origin: "curated" }) # Resume prior work
|
|
279
281
|
```
|
|
@@ -54,7 +54,7 @@ flow_status({}) # Check/resume ac
|
|
|
54
54
|
status({}) # Check AI Kit health + onboard state
|
|
55
55
|
# If onboard not run → onboard({ path: "." }) # First-time codebase analysis
|
|
56
56
|
flow_list({}) # See available flows
|
|
57
|
-
# Select flow based on task → flow_start({ flow: "<name>" }) # Start
|
|
57
|
+
# Select flow based on task → flow_start({ flow: "<name>", topic: "<task>" }) # Start — creates .flows/{topic}/
|
|
58
58
|
list() # See stored knowledge
|
|
59
59
|
search({ query: "SESSION CHECKPOINT", origin: "curated" }) # Resume prior work
|
|
60
60
|
```
|
|
@@ -190,16 +190,17 @@ Lane actions: `create` (copy files to lane), `list`, `status` (modified/added/de
|
|
|
190
190
|
| `queue` | `aikit queue` | Task queue for sequential agent operations (create/push/next/done/fail) |
|
|
191
191
|
| `replay` | `aikit replay` | View or clear the audit trail of tool invocations (action: list/clear) |
|
|
192
192
|
|
|
193
|
-
### Flows (
|
|
193
|
+
### Flows (11)
|
|
194
194
|
| Tool | CLI | Purpose |
|
|
195
195
|
|------|-----|---------|
|
|
196
|
-
| `flow_list` | `aikit flow list` | List available flows |
|
|
196
|
+
| `flow_list` | `aikit flow list` | List available flows and active run |
|
|
197
197
|
| `flow_info` | `aikit flow info` | Get flow details including steps and skill paths |
|
|
198
|
-
| `flow_start` | `aikit flow start` | Start a
|
|
198
|
+
| `flow_start` | `aikit flow start` | Start a flow with topic — creates `.flows/{topic-slug}/` run directory |
|
|
199
199
|
| `flow_step` | `aikit flow step` | Advance, skip, or redo the current step |
|
|
200
|
-
| `flow_status` | `aikit flow status` | Check
|
|
201
|
-
| `flow_read_instruction` | `aikit flow read-instruction` | Read
|
|
202
|
-
| `flow_reset` | `aikit flow reset` |
|
|
200
|
+
| `flow_status` | `aikit flow status` | Check active run including slug, runDir, artifactsPath |
|
|
201
|
+
| `flow_read_instruction` | `aikit flow read-instruction` | Read instruction with `{{artifacts_path}}` and `{{run_dir}}` resolved |
|
|
202
|
+
| `flow_reset` | `aikit flow reset` | Abandon the active flow (preserves run directory) |
|
|
203
|
+
| `flow_runs` | `aikit flow runs` | List all flow runs (current and past) |
|
|
203
204
|
| `flow_add` | `aikit flow add` | Add a custom flow from a directory |
|
|
204
205
|
| `flow_update` | `aikit flow update` | Update an existing custom flow |
|
|
205
206
|
| `flow_remove` | `aikit flow remove` | Remove a custom flow |
|
|
@@ -242,14 +243,15 @@ Flows are multi-step guided workflows that structure complex tasks. Each step ha
|
|
|
242
243
|
```text
|
|
243
244
|
flow_list() # See available flows
|
|
244
245
|
flow_info({ flow: "aikit:basic" }) # View steps, skills, agents
|
|
245
|
-
flow_start({ flow: "aikit:basic" }) # Start —
|
|
246
|
-
flow_read_instruction(
|
|
246
|
+
flow_start({ flow: "aikit:basic", topic: "Fix login bug" }) # Start — creates .flows/fix-login-bug/
|
|
247
|
+
flow_read_instruction() # Read current step's instructions ({{artifacts_path}} resolved)
|
|
247
248
|
# ... do the work described in the instruction ...
|
|
248
249
|
flow_step({ action: "next" }) # Advance to next step
|
|
249
250
|
flow_step({ action: "skip" }) # Skip current step
|
|
250
251
|
flow_step({ action: "redo" }) # Redo current step
|
|
251
|
-
flow_status() # Check progress
|
|
252
|
-
flow_reset() #
|
|
252
|
+
flow_status() # Check progress (includes slug, runDir, artifactsPath)
|
|
253
|
+
flow_reset() # Abandon active flow
|
|
254
|
+
flow_runs() # List all runs (current + past)
|
|
253
255
|
```
|
|
254
256
|
|
|
255
257
|
Custom flow lifecycle management:
|
|
@@ -704,7 +706,7 @@ Flows are structured multi-step workflows that guide agents through complex task
|
|
|
704
706
|
|
|
705
707
|
### Flow Lifecycle
|
|
706
708
|
|
|
707
|
-
1. **Start**: `flow_list({})` → choose flow → `flow_start({ flow: "<name>" })`
|
|
709
|
+
1. **Start**: `flow_list({})` → choose flow → `flow_start({ flow: "<name>", topic: "<task>" })`
|
|
708
710
|
2. **Each step**: `flow_read_instruction({ step: "<name>" })` → follow step instructions → complete work
|
|
709
711
|
3. **Advance**: `flow_step({ action: "next" })` → repeat from step 2
|
|
710
712
|
4. **Resume**: `flow_status({})` → if active, `flow_read_instruction` for current step → continue
|