opencode-plugin-flow 6.5.0 → 6.7.0
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/CHANGELOG.md +77 -0
- package/README.md +75 -25
- package/dist/index.js +2351 -1760
- package/dist/index.js.map +23 -21
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,83 @@ One short entry per release, written for users deciding whether to upgrade.
|
|
|
6
6
|
|
|
7
7
|
No changes yet.
|
|
8
8
|
|
|
9
|
+
## [6.7.0] - 2026-07-23
|
|
10
|
+
|
|
11
|
+
Bounded auto-continuation lore keeps user-authorized goals moving while making
|
|
12
|
+
checkpoints, retries, and validation freshness explicit:
|
|
13
|
+
|
|
14
|
+
- `/flow-auto` now treats ready features and completed sessions as mechanical
|
|
15
|
+
loop states, so authorized work continues without an intermediate “ready for
|
|
16
|
+
the next feature” handoff. Its host lease starts from a provisional compact
|
|
17
|
+
baseline and auto-routes only after the initiating turn advances that same
|
|
18
|
+
Flow session; unchanged or replacement sessions fail closed, while
|
|
19
|
+
conversational plan approval remains resumable.
|
|
20
|
+
- Failed features are never selected implicitly while their latest relevant
|
|
21
|
+
reviewed outcome remains failed. Auto mode may continue untouched independent
|
|
22
|
+
work; when only retry-required candidates remain it waits for direction.
|
|
23
|
+
While a failed run is blocked, optional `nextFeatureId` makes its authorized
|
|
24
|
+
reset and exact next run atomic. Once that run is superseded and status is
|
|
25
|
+
ready, explicit `flow_run_start(featureId)` starts its authorized retry. This
|
|
26
|
+
adds no durable hold or retry ledger.
|
|
27
|
+
- Each feature now receives a before-edit evidence/environment preflight and
|
|
28
|
+
adversarial risk checklist. Manager policy withholds review while required
|
|
29
|
+
evidence is knowingly skipped, and reviewers treat missing proof as blocking;
|
|
30
|
+
no skipped-evidence state is persisted. Workers receive the checklist before
|
|
31
|
+
coding, and reviewers explicitly inspect adjacent/repeated transitions,
|
|
32
|
+
overlapping invariants, base diffs, and file modes.
|
|
33
|
+
- Stable source finding IDs remain traceable in immutable feature prose.
|
|
34
|
+
Active Flow work uses only the reserved worker and reviewer roles, while
|
|
35
|
+
precise missing-evidence review failures can request manager-run proof.
|
|
36
|
+
- Accepted validation markers expose their recorded revision as a concurrency
|
|
37
|
+
token, avoiding status reads made only to recover it. Only `passed: true` may
|
|
38
|
+
feed review while all runtime gates hold; failed, incomplete, and
|
|
39
|
+
source-drifted observations may use the token only for fresh validation. A
|
|
40
|
+
drifted marker reports `passed: false` plus its explicit ineligibility reason.
|
|
41
|
+
New review admission requires its current-source pass to be newer than the
|
|
42
|
+
latest relevant failure or drift; accepted reviews remain grandfathered.
|
|
43
|
+
- Status workflow data now includes a small non-authoritative timer for the
|
|
44
|
+
latest `/flow-auto` in the current plugin process. Active milliseconds are
|
|
45
|
+
coordinator-classified wall time, not CPU or pure coding time; user-wait
|
|
46
|
+
milliseconds cover only projected plan-approval and
|
|
47
|
+
`await-user-direction` checkpoints. Paused, inactive, errored, and
|
|
48
|
+
unprojected waits are excluded, and reload resets the timer.
|
|
49
|
+
|
|
50
|
+
Install or update:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
opencode plugin opencode-plugin-flow@6.7.0 --global --force
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## [6.6.0] - 2026-07-22
|
|
57
|
+
|
|
58
|
+
Projection-guided recovery lore makes Flow's next step easier to understand
|
|
59
|
+
without adding persisted diagnostics or more orchestration:
|
|
60
|
+
|
|
61
|
+
- `/flow-run` now follows one ordered compact-status route, handles idle and
|
|
62
|
+
planning entry explicitly, and refreshes execution state before dispatching a
|
|
63
|
+
recovered reviewer assignment so stale work is reset rather than redispatched.
|
|
64
|
+
- Status failures report the exact summary and optional recovery guidance.
|
|
65
|
+
Post-review uncertainty no longer incorrectly claims that no lifecycle
|
|
66
|
+
mutation occurred.
|
|
67
|
+
- Blocked-review handoffs now explain attempts, recurring and new findings,
|
|
68
|
+
validation evidence, Flow-reported artifacts, completed and untouched work,
|
|
69
|
+
the exact next action, and whether another repair attempt needs authorization.
|
|
70
|
+
`/flow-status` obtains that evidence through one detail read.
|
|
71
|
+
- Typed status, execution, reviewer, detail, delivery, operation, and close
|
|
72
|
+
recovery projections replace broad record casts. Accepted archive retry,
|
|
73
|
+
accepted manual recovery, unconfirmed replay, and archive lookup collision
|
|
74
|
+
remain distinct without changing Session v5 or persisted state.
|
|
75
|
+
- OpenCode tool serialization preserves those specialized response types while
|
|
76
|
+
requiring every handler to return the Flow response envelope. Expanded prompt,
|
|
77
|
+
runtime, close-recovery, and integration tests cover the contracts; the
|
|
78
|
+
failed-review retry boundary and bounded worker waves remain unchanged.
|
|
79
|
+
|
|
80
|
+
Install or update:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
opencode plugin opencode-plugin-flow@6.6.0 --global --force
|
|
84
|
+
```
|
|
85
|
+
|
|
9
86
|
## [6.5.0] - 2026-07-22
|
|
10
87
|
|
|
11
88
|
Convergence-safe recovery lore makes long Flow sessions easier to trust
|
package/README.md
CHANGED
|
@@ -21,11 +21,11 @@ into the active goal.
|
|
|
21
21
|
Install the exact npm release through OpenCode:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
opencode plugin opencode-plugin-flow@6.
|
|
24
|
+
opencode plugin opencode-plugin-flow@6.7.0 --global --force
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
Omit `--global` for project scope. Exact version pins do not update
|
|
28
|
-
automatically. To update, replace `6.
|
|
28
|
+
automatically. To update, replace `6.7.0` with the new release and rerun the
|
|
29
29
|
command.
|
|
30
30
|
|
|
31
31
|
Before upgrading from Flow v5 or earlier, finish or explicitly close any active
|
|
@@ -43,7 +43,7 @@ The equivalent manual project configuration is:
|
|
|
43
43
|
```json
|
|
44
44
|
{
|
|
45
45
|
"$schema": "https://opencode.ai/config.json",
|
|
46
|
-
"plugin": ["opencode-plugin-flow@6.
|
|
46
|
+
"plugin": ["opencode-plugin-flow@6.7.0"]
|
|
47
47
|
}
|
|
48
48
|
```
|
|
49
49
|
|
|
@@ -64,7 +64,10 @@ Start a complete workflow:
|
|
|
64
64
|
Flow inspects the worktree, proposes a feature plan, and asks for approval
|
|
65
65
|
unless your request already authorized implementation. It then runs one
|
|
66
66
|
runnable feature at a time, validates the actual workspace, obtains an
|
|
67
|
-
independent review, and repeats until it can close the session.
|
|
67
|
+
independent review, and repeats until it can close the session. While
|
|
68
|
+
implementation remains authorized, `ready` and `completed` are internal loop
|
|
69
|
+
states: `/flow-auto` does not hand back “ready for the next feature” or wait for
|
|
70
|
+
another command between passing features.
|
|
68
71
|
|
|
69
72
|
Before every manager-owned Flow mutation, including direct `/flow-plan` and
|
|
70
73
|
`/flow-run` use, the manager compares the current request with the active goal.
|
|
@@ -76,13 +79,34 @@ continue, defer, or abandon the active work. If that work is completed but not
|
|
|
76
79
|
closed, Flow closes it as completed before starting the new request.
|
|
77
80
|
|
|
78
81
|
Existing implementation authority carries across approval and feature outcomes.
|
|
79
|
-
Only the first in-scope failed review automatically
|
|
80
|
-
retry; a `[scope-blocker]` checkpoints immediately. A
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
Only the first in-scope failed review may automatically reset and atomically
|
|
83
|
+
start one fresh full retry; a `[scope-blocker]` checkpoints immediately. A
|
|
84
|
+
feature whose latest relevant reviewed outcome remains failed is never selected
|
|
85
|
+
implicitly. `/flow-auto` may continue untouched, dependency-independent
|
|
86
|
+
features, but when only retry-required candidates remain it projects
|
|
87
|
+
`await-user-direction`. Flow then reports the blocker and waits for an explicit
|
|
88
|
+
retry or independent-feature choice. While the failed run is still blocked, the
|
|
89
|
+
chosen feature is attached to `flow_feature_reset` as `nextFeatureId`, so reset
|
|
90
|
+
and the next run are one operation. If independent work later finishes and only
|
|
91
|
+
the superseded failed feature remains, status is ready with
|
|
92
|
+
`await-user-direction`; explicit retry then uses `flow_run_start` with that
|
|
93
|
+
feature's exact `featureId`, because there is no blocked run left to reset. The
|
|
94
|
+
active session remains authoritative while it waits. Ordinary blocking findings
|
|
95
|
+
are in-scope by default; a reviewer uses `[scope-blocker]` only when the required
|
|
96
|
+
repair would materially exceed the approved plan.
|
|
97
|
+
|
|
98
|
+
Before coding each feature, Flow inventories required evidence and its
|
|
99
|
+
environment, then applies an adversarial risk checklist covering failure
|
|
100
|
+
ordering, repeated and interrupted operations, adjacent state transitions,
|
|
101
|
+
overlapping invariants, and relevant file-mode or platform risks. While required
|
|
102
|
+
behavior or environment evidence is knowingly skipped, manager policy forbids
|
|
103
|
+
requesting review; the reviewer treats missing proof as blocking if the gap
|
|
104
|
+
reaches its packet. Flow persists no skipped-evidence ledger. Asking the user
|
|
105
|
+
remains the default when external evidence or authority is missing. At a blocked
|
|
106
|
+
checkpoint, atomic reset-and-start can discard that attempt and continue the
|
|
107
|
+
exact authorized retry or dependency-independent feature. At a ready retry
|
|
108
|
+
checkpoint, explicit feature start resumes the already superseded failure.
|
|
109
|
+
Neither route adds a hold or second blocker ledger.
|
|
86
110
|
|
|
87
111
|
For plan-only or advanced use, plan first:
|
|
88
112
|
|
|
@@ -97,24 +121,42 @@ Repeating a same-goal plan-only request after approval reports the immutable pla
|
|
|
97
121
|
and current progress, then stops without rewriting the plan or starting work.
|
|
98
122
|
|
|
99
123
|
`/flow-run` and `/flow-status` are advanced/recovery controls. At any point,
|
|
100
|
-
`/flow-status` reports the durable state and next action.
|
|
124
|
+
`/flow-status` reports the durable state and next action. After `/flow-auto` has
|
|
125
|
+
run in the current plugin process, status also reports a non-authoritative timer
|
|
126
|
+
for the latest invocation. `activeMs` is process-local wall time classified as
|
|
127
|
+
active by the coordinator, not CPU time or pure coding time.
|
|
128
|
+
`waitingForUserMs` counts only projected `flow_plan_approve` and
|
|
129
|
+
`await-user-direction` checkpoints. Plugin restart resets the timer; paused,
|
|
130
|
+
inactive, errored, and unprojected waits are excluded.
|
|
101
131
|
|
|
102
132
|
## How Flow works
|
|
103
133
|
|
|
104
134
|
1. Planning saves a small feature DAG. Approval locks it.
|
|
105
135
|
2. `/flow-run` starts one feature whose dependencies are complete.
|
|
106
|
-
3.
|
|
136
|
+
3. Before editing, the manager preflights required evidence and gives any
|
|
137
|
+
bounded workers an explicit adversarial acceptance and risk checklist.
|
|
138
|
+
4. The manager implements it serially or integrates an optional bounded worker
|
|
107
139
|
wave.
|
|
108
|
-
|
|
140
|
+
5. Flow observes the exact armed validation command against the current
|
|
109
141
|
workspace, then creates one independent review assignment. At new review
|
|
110
|
-
admission, a
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
142
|
+
admission, a relevant failure or source-drift observation invalidates older
|
|
143
|
+
passes; the qualifying pass must be newer and match current source. Separately,
|
|
144
|
+
the manager must not call `flow_review_start` while known required behavior or
|
|
145
|
+
environment evidence is skipped; this is workflow policy, not persisted
|
|
146
|
+
admission state. Already accepted Session v5 pending or completed reviews are
|
|
147
|
+
not reopened or vetoed later at close.
|
|
148
|
+
6. The reviewer inspects adjacent and repeated state transitions, overlapping
|
|
149
|
+
feature invariants, the changed artifacts, and the packet's base-diff and
|
|
150
|
+
file-mode inventory. Missing proof is recorded as a precise blocking
|
|
151
|
+
evidence request.
|
|
152
|
+
7. A passing feature advances the plan. A failed feature is not selected again
|
|
153
|
+
by default. From blocked status, reset atomically starts the exact authorized
|
|
154
|
+
retry or independent feature through optional `nextFeatureId`. From ready
|
|
155
|
+
`await-user-direction`, the failed run is already superseded and explicit
|
|
156
|
+
`flow_run_start(featureId)` begins its retry. The final passing feature allows
|
|
157
|
+
explicit closure. Every accepted close returns a concise delivery summary
|
|
158
|
+
with each feature's attempt count, latest outcome, and terminal findings,
|
|
159
|
+
derived from Flow's recorded state.
|
|
118
160
|
|
|
119
161
|
State lives in `.flow/session.json`, so `/flow-status` can recover the next
|
|
120
162
|
action after a restart or context change.
|
|
@@ -128,6 +170,9 @@ targeted follow-up wave may address a concrete gap. Once implementation is
|
|
|
128
170
|
authorized, a qualifying wave needs no separate approval.
|
|
129
171
|
|
|
130
172
|
Workers cannot delegate, call Flow lifecycle tools, or approve their own work.
|
|
173
|
+
Generic or general-purpose agents are not used for active Flow work: bounded
|
|
174
|
+
implementation uses `flow-worker`, and independent review uses
|
|
175
|
+
`flow-reviewer`.
|
|
131
176
|
Flow persists no wave state: the manager remains responsible for the combined
|
|
132
177
|
diff, authoritative validation, and the one independent review. Small or
|
|
133
178
|
integration-heavy tasks stay serial.
|
|
@@ -136,7 +181,7 @@ integration-heavy tasks stay serial.
|
|
|
136
181
|
|
|
137
182
|
| Command | Purpose |
|
|
138
183
|
| --- | --- |
|
|
139
|
-
| `/flow-auto <goal>` | Normal end-to-end driver
|
|
184
|
+
| `/flow-auto <goal>` | Normal end-to-end driver; it stops after planning without implementation authority, otherwise loops through every runnable feature and closure without an intermediate handoff. |
|
|
140
185
|
| `/flow-plan <goal>` | Plan-only/advanced creation, revision, and approval. |
|
|
141
186
|
| `/flow-run` | Advanced/recovery execution of one approved feature. |
|
|
142
187
|
| `/flow-review` | Internal/recovery dispatch for a runtime-created reviewer assignment. |
|
|
@@ -150,8 +195,13 @@ plan-only, advanced, internal, or recovery controls.
|
|
|
150
195
|
Start with `/flow-status`; its next action is durable default workflow
|
|
151
196
|
direction, not permission to exceed the user's authority. For a first failed
|
|
152
197
|
review, read detail once before reset because scope-blocker findings refine the
|
|
153
|
-
compact default.
|
|
154
|
-
|
|
198
|
+
compact default. Pass the exact retry or dependency-independent choice as
|
|
199
|
+
`nextFeatureId` so reset and run start are atomic; do not reset and then rely on
|
|
200
|
+
default selection. If status is ready with `await-user-direction`, read detail
|
|
201
|
+
once and pass the explicitly authorized retry's exact `featureId` to
|
|
202
|
+
`flow_run_start`; reset is invalid because the failed run was already
|
|
203
|
+
superseded. Environment-sensitive transition guards remain authoritative when a
|
|
204
|
+
mutation is attempted. Do not hand-edit
|
|
155
205
|
`.flow/session.json` to bypass a gate. If validation, review, locking,
|
|
156
206
|
fingerprinting, or archive publication fails, follow the focused steps in
|
|
157
207
|
[troubleshooting](docs/troubleshooting.md).
|