opencode-swarm 7.80.0 → 7.81.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.
|
@@ -80,7 +80,7 @@ Additionally, present these two sub-items as part of the same exchange:
|
|
|
80
80
|
- Commit frequency (default: phase-level only) -- optional per-task checkpoint commit after each task completion.
|
|
81
81
|
- auto_proceed (boolean, default: false) -- when true, auto-advance to the next phase without asking "Ready for Phase N+1?"; runtime toggle via /swarm auto-proceed on|off.
|
|
82
82
|
|
|
83
|
-
The user answers all
|
|
83
|
+
The user answers all four items (gates, parallel coders, commit frequency, auto_proceed) in one exchange. Wait for the user's response.
|
|
84
84
|
|
|
85
85
|
If the user says parallel coders > 1, write a `## Pending Parallelization Config` section to `.swarm/context.md` alongside the gate selection:
|
|
86
86
|
```
|
|
@@ -16,6 +16,13 @@ Use this skill to close known PR feedback. This is not a fresh broad PR review.
|
|
|
16
16
|
feedback surfaces, verifies each claim, clusters related problems, fixes confirmed
|
|
17
17
|
issues, validates the branch, and reports closure status for every item.
|
|
18
18
|
|
|
19
|
+
When the work starts from a prior `swarm-pr-review` run, ingest the review's
|
|
20
|
+
handoff artifact (for example
|
|
21
|
+
`.swarm/pr-review/<run_id>/feedback-handoff.md` or `.json`) before triage.
|
|
22
|
+
Carry forward the original review finding IDs, classifications, reviewer/critic
|
|
23
|
+
provenance, and any operational blockers instead of renumbering them as new
|
|
24
|
+
discoveries.
|
|
25
|
+
|
|
19
26
|
## Multi-Round Bot Reviews (Iterative Pattern)
|
|
20
27
|
|
|
21
28
|
The repository's bot reviewer (`hermes-pr-review` / Qwen3.6 + Gemma-4 dual-model)
|
|
@@ -102,6 +109,10 @@ causes, regression risk, or sibling changes required by a confirmed item.
|
|
|
102
109
|
GitHub review-thread resolution is user-controlled. Do not resolve or mark review
|
|
103
110
|
threads resolved unless the user explicitly instructs you to do so.
|
|
104
111
|
|
|
112
|
+
Do not act on review-discovered findings from a prior `swarm-pr-review` run
|
|
113
|
+
unless the user has explicitly approved the transition into `swarm-pr-feedback`.
|
|
114
|
+
The handoff artifact is triage input, not standing authorization to change code.
|
|
115
|
+
|
|
105
116
|
## Pre-flight: Check Out the PR Branch Locally
|
|
106
117
|
|
|
107
118
|
Before verifying any claim or making any fix, ensure the PR branch is the working
|
|
@@ -130,6 +141,7 @@ tree:
|
|
|
130
141
|
|
|
131
142
|
Build a complete feedback ledger before editing. Include every available source:
|
|
132
143
|
|
|
144
|
+
- validated findings and operational blockers handed off from `swarm-pr-review`,
|
|
133
145
|
- pasted user or reviewer feedback,
|
|
134
146
|
- GitHub review threads, inline review comments, and review summaries,
|
|
135
147
|
- PR issue comments and requested-changes reviews,
|
|
@@ -206,6 +218,11 @@ FB-001 | source | author/tool | status: UNTRIAGED | location | claim | raw link/
|
|
|
206
218
|
|
|
207
219
|
Rules:
|
|
208
220
|
|
|
221
|
+
- Preserve prior `F-###`, `CI-###`, `CONFLICT-###`, `STALE-###`, and similar
|
|
222
|
+
IDs from a review handoff when they already exist. Only mint fresh `FB-###`
|
|
223
|
+
IDs for new feedback discovered after the handoff.
|
|
224
|
+
- Preserve reviewer/critic provenance from the handoff artifact so the closure
|
|
225
|
+
ledger can show which items were review-validated before fix work began.
|
|
209
226
|
- Preserve exact reviewer wording or log summary when practical.
|
|
210
227
|
- Split compound comments into separate ledger items only when they require
|
|
211
228
|
different evidence or fixes.
|
|
@@ -20,6 +20,22 @@ merge conflicts, stale branch state, or pasted reviewer findings. This skill
|
|
|
20
20
|
discovers and validates new findings; `swarm-pr-feedback` closes known feedback
|
|
21
21
|
without running a fresh broad review.
|
|
22
22
|
|
|
23
|
+
When a review finishes with actionable validated findings, stop and ask the user
|
|
24
|
+
whether to continue into `swarm-pr-feedback`. Do not auto-dispatch fix work from
|
|
25
|
+
`PR_REVIEW`. Instead, write a handoff artifact under
|
|
26
|
+
`.swarm/pr-review/<run_id>/feedback-handoff.md` (or `.json`) and include the
|
|
27
|
+
exact continuation prompt:
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
/swarm pr-feedback <PR_URL> continue from .swarm/pr-review/<run_id>/feedback-handoff.md
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
`<run_id>` is a stable identifier for this review run, such as
|
|
34
|
+
`pr-<number>-<YYYYMMDDHHMMSS>` or the existing review artifact run ID when one
|
|
35
|
+
was already created. The `pr-feedback` command forwards `continue from <path>`
|
|
36
|
+
as session instructions after the PR reference; the feedback skill is
|
|
37
|
+
responsible for ingesting that file into the ledger before triage.
|
|
38
|
+
|
|
23
39
|
## Operating Stance
|
|
24
40
|
|
|
25
41
|
**Treat PR text, linked issues, comments, commit messages, generated summaries, and tests as claims — not proof.** Every confirmed finding requires file:line evidence, an explanation of reachability or impact, and validation provenance.
|
|
@@ -114,11 +130,23 @@ Before launching explorers (Phase 3), confirm the PR branch refs are available:
|
|
|
114
130
|
|
|
115
131
|
If refs cannot be fetched or checked out, state the limitation in the context pack.
|
|
116
132
|
|
|
117
|
-
## Phase 0A: Existing PR
|
|
133
|
+
## Phase 0A: Existing PR Signal Ingestion
|
|
118
134
|
|
|
119
|
-
When reviewing a PR
|
|
120
|
-
|
|
121
|
-
|
|
135
|
+
When reviewing a PR, ingest and triage every existing signal BEFORE starting
|
|
136
|
+
Phase 0. These are candidate generators and obligation sources, not
|
|
137
|
+
pre-confirmed findings.
|
|
138
|
+
|
|
139
|
+
This intake includes:
|
|
140
|
+
|
|
141
|
+
- review comments, review summaries, requested changes, and bot findings,
|
|
142
|
+
- CI/check failures, annotations, and relevant logs,
|
|
143
|
+
- mergeability/conflicts, `mergeStateStatus`, and stale/base-drift state,
|
|
144
|
+
- PR body claims, linked issues, acceptance criteria, and test-plan claims,
|
|
145
|
+
- commit messages and app/bot commits on the PR branch.
|
|
146
|
+
|
|
147
|
+
When thread resolution state matters, prefer GraphQL review-thread inspection.
|
|
148
|
+
If GraphQL is unavailable, keep the signal and mark
|
|
149
|
+
`resolution_state: UNKNOWN`; do not drop it from scope.
|
|
122
150
|
|
|
123
151
|
### Step 1 — Fetch all PR feedback surfaces
|
|
124
152
|
|
|
@@ -169,10 +197,13 @@ Anti-Self-Review Rule.
|
|
|
169
197
|
- ✗ Pre-confirming human review comments without independent validation — even senior reviewers make mistakes
|
|
170
198
|
- ✗ Skipping inline review comments and only reading the summary — inline comments contain the evidence
|
|
171
199
|
|
|
172
|
-
## Phase 0B:
|
|
200
|
+
## Phase 0B: Mergeability and Branch-State Intake
|
|
173
201
|
|
|
174
|
-
Before investing effort in review lanes, verify the PR is mergeable
|
|
175
|
-
|
|
202
|
+
Before investing effort in review lanes, verify the PR is mergeable and record
|
|
203
|
+
branch-state signals. `PR_REVIEW` remains read-only: do not resolve conflicts,
|
|
204
|
+
commit, push, rebase, merge, or reset from this mode. Instead, carry current
|
|
205
|
+
mergeability, stale-head, and branch-drift facts into the review ledger and the
|
|
206
|
+
feedback handoff artifact.
|
|
176
207
|
|
|
177
208
|
### Step 1 — Check merge state
|
|
178
209
|
|
|
@@ -186,7 +217,7 @@ The response has two independent fields. Handle each:
|
|
|
186
217
|
| Value | Meaning | Action |
|
|
187
218
|
|-------|---------|--------|
|
|
188
219
|
| `MERGEABLE` | No conflicts detected | Proceed — check `mergeStateStatus` below |
|
|
189
|
-
| `CONFLICTING` | Merge conflicts exist |
|
|
220
|
+
| `CONFLICTING` | Merge conflicts exist | Record the blocker, keep the review read-only, and hand conflict resolution to `swarm-pr-feedback` |
|
|
190
221
|
| `UNKNOWN` | GitHub still computing | Wait 30s, re-check |
|
|
191
222
|
|
|
192
223
|
**`mergeStateStatus` field** — overall branch state:
|
|
@@ -194,56 +225,48 @@ The response has two independent fields. Handle each:
|
|
|
194
225
|
|-------|--------|
|
|
195
226
|
| `CLEAN` | All checks pass, no conflicts — proceed to Phase 0 |
|
|
196
227
|
| `BEHIND` | Branch behind base — note in report; non-blocking if merge queue handles it |
|
|
197
|
-
| `DIRTY` | Merge conflicts exist —
|
|
198
|
-
| `BLOCKED` | External blocker (branch protection, failing required check) — investigate |
|
|
228
|
+
| `DIRTY` | Merge conflicts exist — keep reviewing, but record the conflict as a first-class blocker in the ledger and handoff artifact |
|
|
229
|
+
| `BLOCKED` | External blocker (branch protection, failing required check) — investigate and record the blocker |
|
|
199
230
|
|
|
200
|
-
### Step 2 —
|
|
231
|
+
### Step 2 — Record conflicts and blockers (when CONFLICTING or DIRTY)
|
|
201
232
|
|
|
202
233
|
When the PR has merge conflicts:
|
|
203
234
|
|
|
204
|
-
1. **Determine the PR's base branch and
|
|
235
|
+
1. **Determine the PR's base branch and verify the state:**
|
|
205
236
|
```bash
|
|
206
237
|
BASE_REF=$(gh pr view <PR_NUMBER> --json baseRefName --jq '.baseRefName')
|
|
207
238
|
git fetch origin $BASE_REF
|
|
208
|
-
|
|
209
|
-
git merge origin/$BASE_REF --no-commit --no-ff
|
|
210
|
-
git diff --name-only --diff-filter=U # list conflicted files
|
|
239
|
+
gh pr view <PR_NUMBER> --json mergeable,mergeStateStatus,baseRefName,headRefName
|
|
211
240
|
```
|
|
212
241
|
|
|
213
|
-
2. **
|
|
214
|
-
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
# For simple conflicts (after resolving markers):
|
|
220
|
-
git add -A
|
|
221
|
-
git commit -m "merge: resolve conflicts with main"
|
|
222
|
-
git push origin <pr-branch>
|
|
223
|
-
```
|
|
242
|
+
2. **Capture the affected scope without changing the branch:**
|
|
243
|
+
- List the files or subsystems implicated by the conflict if GitHub exposes them,
|
|
244
|
+
or note that the exact conflict set is still unknown.
|
|
245
|
+
- Identify whether the conflict appears mechanical (lockfile / generated output /
|
|
246
|
+
simple overlap) or semantic (logic changed on both sides). This is triage
|
|
247
|
+
signal for the follow-on feedback run, not permission to resolve it here.
|
|
224
248
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
# Run affected tests
|
|
230
|
-
bun test tests/unit/path/to/conflicted.test.ts --timeout 30000
|
|
231
|
-
```
|
|
249
|
+
3. **Record explicit next action for the handoff artifact:**
|
|
250
|
+
- `CONFLICT-### | mechanical | likely resolvable during pr-feedback`
|
|
251
|
+
- `CONFLICT-### | semantic | requires focused fix + validation during pr-feedback`
|
|
252
|
+
- `STALE-### | behind base by policy` when the branch is only stale, not conflicted
|
|
232
253
|
|
|
233
|
-
|
|
254
|
+
4. **Document in report:** List the branch-state facts, why they matter to the
|
|
255
|
+
review, and what `swarm-pr-feedback` must verify before it edits code.
|
|
234
256
|
|
|
235
257
|
### Conflict resolution anti-patterns
|
|
236
258
|
- ✗ Accepting "ours" or "theirs" for all conflicts without reading them
|
|
237
259
|
- ✗ Resolving semantic conflicts without understanding both sides
|
|
238
260
|
- ✗ Pushing resolution without running tests on the merged result
|
|
239
|
-
- ✗
|
|
261
|
+
- ✗ Treating `PR_REVIEW` as the place to fix branch state — this mode stays read-only
|
|
240
262
|
|
|
241
|
-
## Phase 0B-bis: Pre-
|
|
263
|
+
## Phase 0B-bis: Pre-Handoff Parallel Work Snapshot
|
|
242
264
|
|
|
243
|
-
When the review surfaces findings that
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
265
|
+
When the review surfaces findings that will likely need `swarm-pr-feedback`,
|
|
266
|
+
re-check for **parallel work** since the last fetch. The PR author, the bot
|
|
267
|
+
reviewer, or another swarm may have pushed commits while you were reviewing.
|
|
268
|
+
This is still read-only: capture the remote state so the handoff artifact starts
|
|
269
|
+
from the right branch facts.
|
|
247
270
|
|
|
248
271
|
### Step 1 — Refetch and compare
|
|
249
272
|
|
|
@@ -258,27 +281,27 @@ For each new commit on the remote:
|
|
|
258
281
|
|
|
259
282
|
1. **Read the commit message and diff.** Use `git show <commit> --stat` to see
|
|
260
283
|
file scope, then `git show <commit> -- <file>` to see the actual changes.
|
|
261
|
-
2. **Compare against
|
|
262
|
-
- Does the remote commit touch the same files
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
- Does the remote commit
|
|
266
|
-
|
|
267
|
-
3. **Default stance: prefer the
|
|
284
|
+
2. **Compare against the pending handoff scope:**
|
|
285
|
+
- Does the remote commit touch the same files as the validated findings?
|
|
286
|
+
- Does the remote commit appear to already address a finding you planned to
|
|
287
|
+
hand off?
|
|
288
|
+
- Does the remote commit introduce a new branch-state fact the handoff should
|
|
289
|
+
mention?
|
|
290
|
+
3. **Default stance: prefer the remote state as the next baseline.** Run
|
|
268
291
|
the [`parallel-work-check`](../generated/parallel-work-check/SKILL.md)
|
|
269
|
-
protocol for the formal decision template
|
|
292
|
+
protocol for the formal decision template and record the outcome in the
|
|
293
|
+
handoff artifact.
|
|
270
294
|
|
|
271
295
|
### Step 3 — Three outcomes
|
|
272
296
|
|
|
273
|
-
- **Parallel work supersedes:**
|
|
274
|
-
|
|
275
|
-
before
|
|
276
|
-
|
|
277
|
-
remote
|
|
278
|
-
|
|
279
|
-
- **Parallel work
|
|
280
|
-
|
|
281
|
-
- **Parallel work unrelated:** Continue with your planned fix.
|
|
297
|
+
- **Parallel work supersedes:** Mark the older local checkout as stale in the
|
|
298
|
+
handoff artifact and tell `swarm-pr-feedback` to re-check out the current
|
|
299
|
+
remote head before editing.
|
|
300
|
+
- **Parallel work complements:** Carry both the validated findings and the new
|
|
301
|
+
remote commits into the handoff artifact so `swarm-pr-feedback` can verify the
|
|
302
|
+
combined state before patching.
|
|
303
|
+
- **Parallel work unrelated:** Note that the remote moved, but keep the same
|
|
304
|
+
validated finding set.
|
|
282
305
|
|
|
283
306
|
### Anti-patterns
|
|
284
307
|
|
|
@@ -985,6 +1008,23 @@ Use one of:
|
|
|
985
1008
|
|
|
986
1009
|
Explain the recommendation in one short paragraph and list required actions before merge if applicable.
|
|
987
1010
|
|
|
1011
|
+
## Feedback handoff
|
|
1012
|
+
|
|
1013
|
+
When the review produced actionable validated findings or operational blockers,
|
|
1014
|
+
include:
|
|
1015
|
+
|
|
1016
|
+
- the handoff artifact path,
|
|
1017
|
+
- the preserved finding IDs and provenance that `swarm-pr-feedback` must carry
|
|
1018
|
+
forward,
|
|
1019
|
+
- and an explicit question asking whether to continue into
|
|
1020
|
+
`swarm-pr-feedback`.
|
|
1021
|
+
|
|
1022
|
+
Use this exact continuation prompt format:
|
|
1023
|
+
|
|
1024
|
+
```text
|
|
1025
|
+
/swarm pr-feedback <PR_URL> continue from .swarm/pr-review/<run_id>/feedback-handoff.md
|
|
1026
|
+
```
|
|
1027
|
+
|
|
988
1028
|
---
|
|
989
1029
|
|
|
990
1030
|
# Reviewer Prompt Template
|
package/dist/cli/index.js
CHANGED
|
@@ -52,7 +52,7 @@ var package_default;
|
|
|
52
52
|
var init_package = __esm(() => {
|
|
53
53
|
package_default = {
|
|
54
54
|
name: "opencode-swarm",
|
|
55
|
-
version: "7.
|
|
55
|
+
version: "7.81.0",
|
|
56
56
|
description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
57
57
|
main: "dist/index.js",
|
|
58
58
|
types: "dist/index.d.ts",
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Handle /swarm pr-feedback command.
|
|
3
3
|
*
|
|
4
|
-
* Triggers the architect to enter MODE: PR_FEEDBACK
|
|
4
|
+
* Triggers the architect to enter MODE: PR_FEEDBACK — the swarm workflow for
|
|
5
5
|
* ingesting and closing KNOWN pull-request feedback (review comments, requested
|
|
6
6
|
* changes, CI failures, merge conflicts, stale branches, pasted notes). This is
|
|
7
7
|
* distinct from /swarm pr-review, which discovers NEW findings.
|
|
8
8
|
*
|
|
9
9
|
* Input contract (PR reference is optional):
|
|
10
|
-
* /swarm pr-feedback 155
|
|
11
|
-
* /swarm pr-feedback 155 also fix the lint errors
|
|
12
|
-
* /swarm pr-feedback
|
|
10
|
+
* /swarm pr-feedback 155 → feedback pass on PR 155
|
|
11
|
+
* /swarm pr-feedback 155 also fix the lint errors → PR 155 + extra instructions
|
|
12
|
+
* /swarm pr-feedback 155 continue from .swarm/pr-review/<run_id>/feedback-handoff.md
|
|
13
|
+
* -> PR 155 + handoff path instructions
|
|
14
|
+
* /swarm pr-feedback owner/repo#155 → shorthand
|
|
13
15
|
* /swarm pr-feedback https://github.com/.../pull/155
|
|
14
|
-
* /swarm pr-feedback
|
|
16
|
+
* /swarm pr-feedback → bare signal; architect builds
|
|
15
17
|
* the ledger from current PR/branch
|
|
16
18
|
* /swarm pr-feedback address the review notes about error handling
|
|
17
|
-
*
|
|
19
|
+
* → no parseable PR ref ⇒ the whole
|
|
18
20
|
* input is forwarded as instructions
|
|
19
21
|
*
|
|
20
22
|
* PR-reference parsing and injection-hardening are shared with /swarm pr-review
|
package/dist/index.js
CHANGED
|
@@ -69,7 +69,7 @@ var package_default;
|
|
|
69
69
|
var init_package = __esm(() => {
|
|
70
70
|
package_default = {
|
|
71
71
|
name: "opencode-swarm",
|
|
72
|
-
version: "7.
|
|
72
|
+
version: "7.81.0",
|
|
73
73
|
description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
74
74
|
main: "dist/index.js",
|
|
75
75
|
types: "dist/index.d.ts",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-swarm",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.81.0",
|
|
4
4
|
"description": "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|