opencode-swarm 7.130.0 → 7.130.2

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.
Files changed (44) hide show
  1. package/.opencode/skills/swarm-pr-review/SKILL.md +75 -26
  2. package/dist/cli/{config-doctor-2admdwc2.js → config-doctor-489wej17.js} +2 -2
  3. package/dist/cli/{curation-policy-s08pg90f.js → curation-policy-aaz0hap6.js} +2 -2
  4. package/dist/cli/{curator-llm-factory-swde9kj0.js → curator-llm-factory-mxjcctn8.js} +13 -13
  5. package/dist/cli/{curator-yppkg914.js → curator-s2ynewsr.js} +13 -13
  6. package/dist/cli/{guardrail-explain-2w8tezk9.js → guardrail-explain-s85kv81r.js} +14 -14
  7. package/dist/cli/{guardrail-log-7cychbgs.js → guardrail-log-2cejc33f.js} +3 -3
  8. package/dist/cli/{hive-promoter-k055s568.js → hive-promoter-qdgxajht.js} +13 -13
  9. package/dist/cli/{index-mgz9nm4a.js → index-3rnkyb60.js} +5 -5
  10. package/dist/cli/{index-7ttstfv6.js → index-5xxgeksy.js} +9 -0
  11. package/dist/cli/{index-x0d06qx6.js → index-6fqj8fcp.js} +2 -2
  12. package/dist/cli/{index-nbdge8b6.js → index-agte9w1e.js} +2 -2
  13. package/dist/cli/{index-mkqqh1z9.js → index-etdgtk3m.js} +42 -39
  14. package/dist/cli/{index-f2y46pda.js → index-h3k62043.js} +20 -6
  15. package/dist/cli/{index-v4n224r1.js → index-hjar4crm.js} +1 -1
  16. package/dist/cli/{index-rhc0d3tn.js → index-jvwkxz8q.js} +15 -15
  17. package/dist/cli/{index-8fy8q1px.js → index-jvyn76xe.js} +3 -3
  18. package/dist/cli/{index-bz814zsm.js → index-jxha73tm.js} +1 -1
  19. package/dist/cli/{index-yxz0c97p.js → index-nr5pr54q.js} +1 -1
  20. package/dist/cli/{index-cpssctv1.js → index-p6qgjkbt.js} +1 -1
  21. package/dist/cli/{index-hbbj7ktj.js → index-s8h2cedv.js} +1 -1
  22. package/dist/cli/{index-n08cksd6.js → index-ts9wh1ba.js} +4 -4
  23. package/dist/cli/{index-x7wt1g4w.js → index-wy3q73j2.js} +2 -2
  24. package/dist/cli/{index-nhexgq4a.js → index-xa29259t.js} +1 -1
  25. package/dist/cli/{index-8etcyr9r.js → index-zft4hp35.js} +1 -1
  26. package/dist/cli/index.js +13 -13
  27. package/dist/cli/{knowledge-escalator-jjyn29ht.js → knowledge-escalator-1ypz0266.js} +3 -3
  28. package/dist/cli/{knowledge-events-f75n3916.js → knowledge-events-yvcczmja.js} +1 -1
  29. package/dist/cli/{knowledge-store-7sahm702.js → knowledge-store-h8bp9eje.js} +1 -1
  30. package/dist/cli/{knowledge-validator-rjwvafv3.js → knowledge-validator-sz9v1fdq.js} +4 -4
  31. package/dist/cli/{scan-cursor-518rhxyd.js → scan-cursor-k9zyt374.js} +2 -2
  32. package/dist/cli/{schema-2x7wsb0n.js → schema-fkpn2r1s.js} +1 -1
  33. package/dist/cli/{skill-generator-hk6mc7pc.js → skill-generator-a6a9jxfd.js} +5 -5
  34. package/dist/cli/{workspace-snapshot-jwkjg790.js → workspace-snapshot-35qc0y8a.js} +1 -1
  35. package/dist/config/schema.d.ts +2 -0
  36. package/dist/hooks/pr-workflow-gate.d.ts +9 -0
  37. package/dist/hooks/pr-workflow-response-gate.d.ts +29 -6
  38. package/dist/index.js +46 -42
  39. package/dist/tools/index.d.ts +1 -0
  40. package/dist/tools/manifest.d.ts +1 -0
  41. package/dist/tools/pr-workflow-status.d.ts +28 -0
  42. package/dist/tools/prepare-pr-workflow-checkout.d.ts +7 -1
  43. package/dist/tools/tool-metadata.d.ts +8 -0
  44. package/package.json +1 -1
@@ -198,12 +198,17 @@ If scope cannot be determined, review the narrowest safe scope available and sta
198
198
  Before launching explorers (Phase 3), perform this exact standalone sequence:
199
199
 
200
200
  1. Resolve and retain the authoritative full `pr_head_sha` from PR metadata.
201
- 2. Verify the working tree is clean with `git status --porcelain`. If tracked
202
- changes exist, call `prepare_pr_workflow_checkout` with every explicit dirty
203
- tracked path (Profile A). Without the controller, do not blind-stash over
201
+ 2. Verify the working tree is clean with `git status --porcelain`. If it is
202
+ dirty at all — tracked changes, untracked files, or both call
203
+ `prepare_pr_workflow_checkout` (Profile A). The tool supports
204
+ self-discovery: call it with no `paths` argument to auto-discover and
205
+ preserve every dirty path in one step, including untracked files; an
206
+ already-clean tree returns a no-op (nothing is stashed, no receipt is
207
+ written). Pass explicit `paths` only when you already have the exact,
208
+ bounded list of dirty tracked files and want the older exact-match
209
+ contract. Without the controller (Profiles B/C), do not blind-stash over
204
210
  dirty state: surface tracked changes to the user, or abort. Do not issue
205
- `git stash` through shell. The controller never stashes untracked files;
206
- move or remove those manually, or abort.
211
+ `git stash` through shell.
207
212
  3. Fetch the PR head as one standalone command, for example
208
213
  `git fetch origin refs/pull/<N>/head`. Do not compose fetch and checkout.
209
214
  4. Prove the full commit exists locally with
@@ -223,6 +228,29 @@ the commit range in a prompt cannot substitute for this checkout because
223
228
 
224
229
  If refs cannot be fetched or checked out, state the limitation in the context pack.
225
230
 
231
+ ### Shell rules under the PR_REVIEW gate
232
+
233
+ The gate accepts one command per tool call — never compose commands with
234
+ `&&`, `;`, `|`, redirects (`>`, `>>`, `<`), or `$(...)`/`` ` `` substitution.
235
+ A single leading `cd <dir> &&` prefix and a trailing `2>&1` suffix are
236
+ tolerated, but only on read-only commands. State-transition verbs — `git
237
+ fetch`, `git checkout`, `git switch`, `git branch`, and `gh pr checkout` —
238
+ must always run bare: no `cd` prefix, no `2>&1` suffix.
239
+
240
+ Allowed read-only `git` subcommands: `status`, `log`, `show`, `diff`,
241
+ `rev-parse`, `merge-base`, `ls-files`, `grep`, `blame`, `cat-file`,
242
+ `for-each-ref`, `branch --list` (listing only — mutation flags are blocked),
243
+ `remote -v`, and `config --get`.
244
+
245
+ Prefer tools over raw shell for state that a single read-only command cannot
246
+ cover cleanly:
247
+
248
+ - `pr_workflow_status` — observe local HEAD, branch, dirty-file state,
249
+ remotes, and gate state in one read-only call.
250
+ - `gh_evidence` — bounded PR/issue/run metadata without a shell round-trip.
251
+ - If `gh` is not installed, the web fetch tool against the equivalent
252
+ `api.github.com` REST URL is the degraded read-only path.
253
+
226
254
  ## Phase 0A: Existing PR Signal Ingestion
227
255
 
228
256
  When reviewing a PR, ingest and triage every existing signal BEFORE starting
@@ -291,17 +319,20 @@ gh api --paginate repos/{owner}/{repo}/pulls/{PR_NUMBER}/comments
291
319
 
292
320
  # Review summaries (approve/request-changes/comment events)
293
321
  gh api --paginate repos/{owner}/{repo}/pulls/{PR_NUMBER}/reviews
294
-
295
- # Bot/automated reviews (Copilot, Codex, CodeRabbit, etc.)
296
- # Inline review comments — use REST API for reliable bot detection via user.type
297
- gh api --paginate repos/{owner}/{repo}/pulls/{PR_NUMBER}/comments --jq '.[] | select((.user.type // "") == "Bot" or (.user.login // "" | test("bot|copilot|coderabbit|codex"; "i")))'
298
322
  ```
299
323
 
300
- `--paginate` requests every REST page; with `--jq`, `gh` applies the filter to
301
- the combined page stream. Filter bot identities from the complete issue-comment
302
- result using the same predicate when needed. `gh pr view --json comments,reviews`
303
- is convenience-only because those fields have item caps; never use it as the
304
- authoritative “all signals” intake.
324
+ `--paginate` requests every REST page. These three calls are gate-allowed as
325
+ written; do not pipe any of them through `--jq`, `jq`, or another filter under
326
+ the PR_REVIEW gate piped commands are blocked (fail-closed on `|`). To
327
+ separate bot/automated reviews (Copilot, Codex, CodeRabbit, etc.) from human
328
+ ones, apply the same predicate in context to the JSON already returned above
329
+ — `user.type == "Bot"` or a `user.login` match against
330
+ `bot|copilot|coderabbit|codex` (case-insensitive) — instead of re-fetching
331
+ with a shell-side `--jq` filter. `gh_evidence` with `target: "pr"` and
332
+ `fields: "comments"` is the sanctioned read-only tool path for the same PR
333
+ comment data when a tool call is preferred over a raw shell command. `gh pr
334
+ view --json comments,reviews` is convenience-only because those fields have
335
+ item caps; never use it as the authoritative "all signals" intake.
305
336
 
306
337
  ### Step 2 — Classify each comment
307
338
 
@@ -369,12 +400,15 @@ The response has two independent fields. Handle each:
369
400
 
370
401
  When the PR has merge conflicts:
371
402
 
372
- 1. **Determine the PR's base branch and verify the state:**
373
- ```bash
374
- BASE_REF=$(gh pr view <PR_NUMBER> --json baseRefName --jq '.baseRefName')
375
- git fetch origin $BASE_REF
376
- gh pr view <PR_NUMBER> --json mergeable,mergeStateStatus,baseRefName,headRefName
377
- ```
403
+ 1. **Determine the PR's base branch and verify the state**, as separate
404
+ standalone commands — never with `$(...)` command substitution, which the
405
+ PR_REVIEW gate blocks:
406
+ - Read the base ref: `gh pr view <PR_NUMBER> --json baseRefName` (or
407
+ `gh_evidence` with `target: "pr"`, `fields: "baseRefName"`).
408
+ - Fetch it by its literal value, substituted for `<base-ref>`:
409
+ `git fetch origin <base-ref>`.
410
+ - Re-check merge state: `gh pr view <PR_NUMBER> --json
411
+ mergeable,mergeStateStatus,baseRefName,headRefName`.
378
412
 
379
413
  2. **Capture the affected scope without changing the branch:**
380
414
  - List the files or subsystems implicated by the conflict if GitHub exposes them,
@@ -405,19 +439,34 @@ reviewer, or another swarm may have pushed commits while you were reviewing.
405
439
  This is still read-only: capture the remote state so the handoff artifact starts
406
440
  from the right branch facts.
407
441
 
408
- ### Step 1 — Refetch and compare
442
+ ### Step 1 — Compare remote state (read-only, no post-bind fetch)
443
+
444
+ Once the PR head is bound, the gate allows only the exact bound tracking
445
+ fetch (when one is armed), and a detached review HEAD has no tracking branch
446
+ to refetch against — `git fetch origin <pr-branch>` is blocked here. Compare
447
+ state through the read-only API instead, as one standalone command:
409
448
 
410
449
  ```bash
411
- git fetch origin <pr-branch>
412
- git log HEAD..origin/<pr-branch> --oneline
450
+ gh pr view <PR_NUMBER> --json headRefOid,commits
413
451
  ```
414
452
 
453
+ or the equivalent `gh_evidence` call with `target: "pr"` and
454
+ `fields: "headRefOid,commits"`. If the returned `headRefOid` differs from the
455
+ `pr_head_sha` bound at the start of this review, the remote has moved; the
456
+ `commits` field lists every commit's message and author to date, enough to
457
+ judge relevance to the pending findings. (The legitimate place to `git fetch`
458
+ is the pre-bind sequence under "Pre-flight git ref availability" above — this
459
+ step never repeats that fetch post-bind.)
460
+
415
461
  ### Step 2 — Evaluate new commits
416
462
 
417
- For each new commit on the remote:
463
+ For each new commit on the remote (identified by comparing `headRefOid` /
464
+ `commits` above against the SHA bound at the start of the review):
418
465
 
419
- 1. **Read the commit message and diff.** Use `git show <commit> --stat` to see
420
- file scope, then `git show <commit> -- <file>` to see the actual changes.
466
+ 1. **Read the commit message from the `commits` field above.** For file
467
+ scope, use one standalone read-only call
468
+ `gh api repos/{owner}/{repo}/commits/<sha>` — rather than a local
469
+ `git show`: the new commit's object is not fetched locally post-bind.
421
470
  2. **Compare against the pending handoff scope:**
422
471
  - Does the remote commit touch the same files as the validated findings?
423
472
  - Does the remote commit appear to already address a finding you planned to
@@ -12,8 +12,8 @@ import {
12
12
  shouldRunOnStartup,
13
13
  writeBackupArtifact,
14
14
  writeDoctorArtifact
15
- } from "./index-cpssctv1.js";
16
- import"./index-7ttstfv6.js";
15
+ } from "./index-p6qgjkbt.js";
16
+ import"./index-5xxgeksy.js";
17
17
  import"./index-bk5tah7q.js";
18
18
  import"./index-z6xqpmqg.js";
19
19
  import"./index-zjygnfay.js";
@@ -4,9 +4,9 @@ import {
4
4
  authorizeCuration,
5
5
  buildConfigFingerprintInput,
6
6
  readCohortConfigFingerprint
7
- } from "./index-nhexgq4a.js";
7
+ } from "./index-xa29259t.js";
8
8
  import"./index-rtry5xyf.js";
9
- import"./index-bz814zsm.js";
9
+ import"./index-jxha73tm.js";
10
10
  import"./index-ae75rja9.js";
11
11
  import"./index-q27bajqb.js";
12
12
  import"./index-zgwm4ryv.js";
@@ -1,31 +1,31 @@
1
1
  // @bun
2
2
  import {
3
3
  createCuratorLLMDelegate
4
- } from "./index-mkqqh1z9.js";
5
- import"./index-v4n224r1.js";
6
- import"./index-cpssctv1.js";
4
+ } from "./index-etdgtk3m.js";
5
+ import"./index-hjar4crm.js";
6
+ import"./index-p6qgjkbt.js";
7
7
  import"./index-kzvwb2se.js";
8
8
  import"./index-4905hd2m.js";
9
9
  import"./index-134d35c1.js";
10
10
  import"./index-9f71ye47.js";
11
- import"./index-8fy8q1px.js";
12
- import"./index-mgz9nm4a.js";
13
- import"./index-hbbj7ktj.js";
11
+ import"./index-jvyn76xe.js";
12
+ import"./index-3rnkyb60.js";
13
+ import"./index-s8h2cedv.js";
14
14
  import"./index-vxv732ex.js";
15
15
  import"./index-c8s9a3zh.js";
16
16
  import"./index-9ss2m4rs.js";
17
17
  import"./index-g4mnf3p5.js";
18
- import"./index-x7wt1g4w.js";
19
- import"./index-nhexgq4a.js";
18
+ import"./index-wy3q73j2.js";
19
+ import"./index-xa29259t.js";
20
20
  import"./index-rtry5xyf.js";
21
- import"./index-n08cksd6.js";
22
- import"./index-bz814zsm.js";
21
+ import"./index-ts9wh1ba.js";
22
+ import"./index-jxha73tm.js";
23
23
  import"./index-ae75rja9.js";
24
24
  import"./index-q27bajqb.js";
25
- import"./index-yxz0c97p.js";
25
+ import"./index-nr5pr54q.js";
26
26
  import"./index-k5jrywpr.js";
27
27
  import"./index-n832052r.js";
28
- import"./index-7ttstfv6.js";
28
+ import"./index-5xxgeksy.js";
29
29
  import"./index-bk5tah7q.js";
30
30
  import"./index-8fwhhayc.js";
31
31
  import"./index-q1exe2b3.js";
@@ -39,7 +39,7 @@ import"./index-s80bsjkj.js";
39
39
  import"./index-z6xqpmqg.js";
40
40
  import"./index-zjygnfay.js";
41
41
  import"./index-zgwm4ryv.js";
42
- import"./index-f2y46pda.js";
42
+ import"./index-h3k62043.js";
43
43
  import"./index-3x761jqv.js";
44
44
  import"./index-7mkpsw6g.js";
45
45
  import"./index-fsrp8wp3.js";
@@ -14,31 +14,31 @@ import {
14
14
  runCuratorInit,
15
15
  runCuratorPhase,
16
16
  writeCuratorSummary
17
- } from "./index-mkqqh1z9.js";
18
- import"./index-v4n224r1.js";
19
- import"./index-cpssctv1.js";
17
+ } from "./index-etdgtk3m.js";
18
+ import"./index-hjar4crm.js";
19
+ import"./index-p6qgjkbt.js";
20
20
  import"./index-kzvwb2se.js";
21
21
  import"./index-4905hd2m.js";
22
22
  import"./index-134d35c1.js";
23
23
  import"./index-9f71ye47.js";
24
- import"./index-8fy8q1px.js";
25
- import"./index-mgz9nm4a.js";
26
- import"./index-hbbj7ktj.js";
24
+ import"./index-jvyn76xe.js";
25
+ import"./index-3rnkyb60.js";
26
+ import"./index-s8h2cedv.js";
27
27
  import"./index-vxv732ex.js";
28
28
  import"./index-c8s9a3zh.js";
29
29
  import"./index-9ss2m4rs.js";
30
30
  import"./index-g4mnf3p5.js";
31
- import"./index-x7wt1g4w.js";
32
- import"./index-nhexgq4a.js";
31
+ import"./index-wy3q73j2.js";
32
+ import"./index-xa29259t.js";
33
33
  import"./index-rtry5xyf.js";
34
- import"./index-n08cksd6.js";
35
- import"./index-bz814zsm.js";
34
+ import"./index-ts9wh1ba.js";
35
+ import"./index-jxha73tm.js";
36
36
  import"./index-ae75rja9.js";
37
37
  import"./index-q27bajqb.js";
38
- import"./index-yxz0c97p.js";
38
+ import"./index-nr5pr54q.js";
39
39
  import"./index-k5jrywpr.js";
40
40
  import"./index-n832052r.js";
41
- import"./index-7ttstfv6.js";
41
+ import"./index-5xxgeksy.js";
42
42
  import"./index-bk5tah7q.js";
43
43
  import"./index-8fwhhayc.js";
44
44
  import"./index-q1exe2b3.js";
@@ -52,7 +52,7 @@ import"./index-s80bsjkj.js";
52
52
  import"./index-z6xqpmqg.js";
53
53
  import"./index-zjygnfay.js";
54
54
  import"./index-zgwm4ryv.js";
55
- import"./index-f2y46pda.js";
55
+ import"./index-h3k62043.js";
56
56
  import"./index-3x761jqv.js";
57
57
  import"./index-7mkpsw6g.js";
58
58
  import"./index-fsrp8wp3.js";
@@ -1,32 +1,32 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-x0d06qx6.js";
5
- import"./index-mkqqh1z9.js";
6
- import"./index-v4n224r1.js";
7
- import"./index-cpssctv1.js";
4
+ } from "./index-6fqj8fcp.js";
5
+ import"./index-etdgtk3m.js";
6
+ import"./index-hjar4crm.js";
7
+ import"./index-p6qgjkbt.js";
8
8
  import"./index-kzvwb2se.js";
9
9
  import"./index-4905hd2m.js";
10
10
  import"./index-134d35c1.js";
11
11
  import"./index-9f71ye47.js";
12
- import"./index-8fy8q1px.js";
13
- import"./index-mgz9nm4a.js";
14
- import"./index-hbbj7ktj.js";
12
+ import"./index-jvyn76xe.js";
13
+ import"./index-3rnkyb60.js";
14
+ import"./index-s8h2cedv.js";
15
15
  import"./index-vxv732ex.js";
16
16
  import"./index-c8s9a3zh.js";
17
17
  import"./index-9ss2m4rs.js";
18
18
  import"./index-g4mnf3p5.js";
19
- import"./index-x7wt1g4w.js";
20
- import"./index-nhexgq4a.js";
19
+ import"./index-wy3q73j2.js";
20
+ import"./index-xa29259t.js";
21
21
  import"./index-rtry5xyf.js";
22
- import"./index-n08cksd6.js";
23
- import"./index-bz814zsm.js";
22
+ import"./index-ts9wh1ba.js";
23
+ import"./index-jxha73tm.js";
24
24
  import"./index-ae75rja9.js";
25
25
  import"./index-q27bajqb.js";
26
- import"./index-yxz0c97p.js";
26
+ import"./index-nr5pr54q.js";
27
27
  import"./index-k5jrywpr.js";
28
28
  import"./index-n832052r.js";
29
- import"./index-7ttstfv6.js";
29
+ import"./index-5xxgeksy.js";
30
30
  import"./index-bk5tah7q.js";
31
31
  import"./index-8fwhhayc.js";
32
32
  import"./index-q1exe2b3.js";
@@ -40,7 +40,7 @@ import"./index-s80bsjkj.js";
40
40
  import"./index-z6xqpmqg.js";
41
41
  import"./index-zjygnfay.js";
42
42
  import"./index-zgwm4ryv.js";
43
- import"./index-f2y46pda.js";
43
+ import"./index-h3k62043.js";
44
44
  import"./index-3x761jqv.js";
45
45
  import"./index-7mkpsw6g.js";
46
46
  import"./index-fsrp8wp3.js";
@@ -1,9 +1,9 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailLog
4
- } from "./index-8etcyr9r.js";
5
- import"./index-v4n224r1.js";
6
- import"./index-7ttstfv6.js";
4
+ } from "./index-zft4hp35.js";
5
+ import"./index-hjar4crm.js";
6
+ import"./index-5xxgeksy.js";
7
7
  import"./index-bk5tah7q.js";
8
8
  import"./index-z6xqpmqg.js";
9
9
  import"./index-zjygnfay.js";
@@ -7,33 +7,33 @@ import {
7
7
  isHiveEligible,
8
8
  promoteFromSwarm,
9
9
  promoteToHive
10
- } from "./index-mkqqh1z9.js";
11
- import"./index-v4n224r1.js";
12
- import"./index-cpssctv1.js";
10
+ } from "./index-etdgtk3m.js";
11
+ import"./index-hjar4crm.js";
12
+ import"./index-p6qgjkbt.js";
13
13
  import"./index-kzvwb2se.js";
14
14
  import"./index-4905hd2m.js";
15
15
  import"./index-134d35c1.js";
16
16
  import"./index-9f71ye47.js";
17
- import"./index-8fy8q1px.js";
18
- import"./index-mgz9nm4a.js";
19
- import"./index-hbbj7ktj.js";
17
+ import"./index-jvyn76xe.js";
18
+ import"./index-3rnkyb60.js";
19
+ import"./index-s8h2cedv.js";
20
20
  import"./index-vxv732ex.js";
21
21
  import"./index-c8s9a3zh.js";
22
22
  import"./index-9ss2m4rs.js";
23
23
  import"./index-g4mnf3p5.js";
24
- import"./index-x7wt1g4w.js";
25
- import"./index-nhexgq4a.js";
24
+ import"./index-wy3q73j2.js";
25
+ import"./index-xa29259t.js";
26
26
  import"./index-rtry5xyf.js";
27
27
  import {
28
28
  resolveHiveKnowledgePath
29
- } from "./index-n08cksd6.js";
30
- import"./index-bz814zsm.js";
29
+ } from "./index-ts9wh1ba.js";
30
+ import"./index-jxha73tm.js";
31
31
  import"./index-ae75rja9.js";
32
32
  import"./index-q27bajqb.js";
33
- import"./index-yxz0c97p.js";
33
+ import"./index-nr5pr54q.js";
34
34
  import"./index-k5jrywpr.js";
35
35
  import"./index-n832052r.js";
36
- import"./index-7ttstfv6.js";
36
+ import"./index-5xxgeksy.js";
37
37
  import"./index-bk5tah7q.js";
38
38
  import"./index-8fwhhayc.js";
39
39
  import"./index-q1exe2b3.js";
@@ -47,7 +47,7 @@ import"./index-s80bsjkj.js";
47
47
  import"./index-z6xqpmqg.js";
48
48
  import"./index-zjygnfay.js";
49
49
  import"./index-zgwm4ryv.js";
50
- import"./index-f2y46pda.js";
50
+ import"./index-h3k62043.js";
51
51
  import"./index-3x761jqv.js";
52
52
  import"./index-7mkpsw6g.js";
53
53
  import"./index-fsrp8wp3.js";
@@ -6,13 +6,13 @@ import {
6
6
  resolveSwarmKnowledgePath,
7
7
  transactKnowledge,
8
8
  wordBigrams
9
- } from "./index-n08cksd6.js";
9
+ } from "./index-ts9wh1ba.js";
10
10
  import {
11
11
  countEntryContradictionsInWindow,
12
12
  countEntryViolationsInWindow,
13
13
  readKnowledgeEvents,
14
14
  recordKnowledgeEvent
15
- } from "./index-bz814zsm.js";
15
+ } from "./index-jxha73tm.js";
16
16
  import {
17
17
  init_knowledge_types,
18
18
  isActiveStatus
@@ -190,11 +190,11 @@ async function maybeQuarantineOnContradiction(directory, entryId, threshold, win
190
190
  alreadyInactive: true
191
191
  };
192
192
  }
193
- const { quarantineEntry } = await import("./knowledge-validator-rjwvafv3.js");
193
+ const { quarantineEntry } = await import("./knowledge-validator-sz9v1fdq.js");
194
194
  let policyConfig;
195
195
  try {
196
- const { KnowledgeConfigSchema } = await import("./schema-2x7wsb0n.js");
197
- const { loadPluginConfigWithMeta } = await import("./index-nbdge8b6.js");
196
+ const { KnowledgeConfigSchema } = await import("./schema-fkpn2r1s.js");
197
+ const { loadPluginConfigWithMeta } = await import("./index-agte9w1e.js");
198
198
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
199
199
  policyConfig = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
200
200
  } catch {
@@ -529,6 +529,14 @@ var init_tool_metadata = __esm(() => {
529
529
  capability: "observe"
530
530
  }
531
531
  },
532
+ pr_workflow_status: {
533
+ description: "Read-only architect observation of local git state (HEAD, branch, clean/dirty with a bounded changed-file list, remotes) plus a session-pinned PR workflow gate summary. Use to observe state under the fail-closed PR_REVIEW/PR_FEEDBACK gate. Never executes PR-controlled scripts and never reads another session gate.",
534
+ agents: ["architect"],
535
+ prWorkflow: {
536
+ modes: ["PR_REVIEW", "PR_FEEDBACK"],
537
+ capability: "observe"
538
+ }
539
+ },
532
540
  batch_symbols: {
533
541
  description: "Batched symbol extraction across multiple files. Returns per-file symbol summaries with isolated error handling.",
534
542
  agents: [
@@ -1714,6 +1722,7 @@ var init_schema = __esm(() => {
1714
1722
  CheckpointConfigSchema = exports_external.preprocess(rejectCheckpointPrototypePollution, exports_external.object({
1715
1723
  enabled: exports_external.boolean().default(true),
1716
1724
  auto_checkpoint_threshold: exports_external.number().int().min(1).max(20).default(3),
1725
+ max_retention: exports_external.number().int().min(1).max(100).default(20),
1717
1726
  allow_empty_commits: exports_external.boolean().default(false)
1718
1727
  }).strict());
1719
1728
  ApplyPatchConfigSchema = exports_external.object({
@@ -12,14 +12,14 @@ import {
12
12
  detectPosixWrites,
13
13
  detectWindowsWrites,
14
14
  resolveWriteTargets
15
- } from "./index-mkqqh1z9.js";
15
+ } from "./index-etdgtk3m.js";
16
16
  import {
17
17
  checkFileAuthority,
18
18
  classifyFile,
19
19
  isInDeclaredScope,
20
20
  redactPath,
21
21
  redactShellCommand
22
- } from "./index-v4n224r1.js";
22
+ } from "./index-hjar4crm.js";
23
23
 
24
24
  // src/services/guardrail-explain-service.ts
25
25
  import path from "path";
@@ -7,7 +7,7 @@ import {
7
7
  loadPluginConfigWithMeta,
8
8
  loadPluginConfigWithMetaAsync,
9
9
  resolveWorktreeIsolationConfig
10
- } from "./index-yxz0c97p.js";
10
+ } from "./index-nr5pr54q.js";
11
11
  import {
12
12
  ApprovalEvidenceSchema,
13
13
  BaseEvidenceSchema,
@@ -59,7 +59,7 @@ import {
59
59
  WorktreeIsolationConfigSchema,
60
60
  isQAAgent,
61
61
  isSubagent
62
- } from "./index-7ttstfv6.js";
62
+ } from "./index-5xxgeksy.js";
63
63
  import"./index-bk5tah7q.js";
64
64
  import {
65
65
  MigrationStatusSchema,