opencode-swarm 7.132.0 → 7.132.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 (46) hide show
  1. package/.opencode/skills/swarm-pr-feedback/SKILL.md +8 -0
  2. package/.opencode/skills/swarm-pr-review/SKILL.md +17 -5
  3. package/README.md +11 -2
  4. package/dist/cli/{config-doctor-3rssa871.js → config-doctor-bp5spb79.js} +2 -2
  5. package/dist/cli/{curation-policy-3914h3g9.js → curation-policy-7zp2m9gv.js} +2 -2
  6. package/dist/cli/{curator-1e77dq6x.js → curator-h067mrcc.js} +12 -12
  7. package/dist/cli/{curator-llm-factory-41c17ybs.js → curator-llm-factory-605d08hf.js} +12 -12
  8. package/dist/cli/{guardrail-explain-624brj1y.js → guardrail-explain-s7vzm6z7.js} +13 -13
  9. package/dist/cli/{guardrail-log-vfka4tcn.js → guardrail-log-aa112fxv.js} +3 -3
  10. package/dist/cli/{hive-promoter-mw5prfy2.js → hive-promoter-nv0m5rzk.js} +12 -12
  11. package/dist/cli/{index-6mcx76j9.js → index-3s9rfnqq.js} +4 -4
  12. package/dist/cli/{index-q0ysv66x.js → index-630badhp.js} +1 -1
  13. package/dist/cli/{index-zah4qws8.js → index-6ccynjv3.js} +2 -2
  14. package/dist/cli/{index-qg1cj1ev.js → index-8d3m0ge3.js} +14 -14
  15. package/dist/cli/{index-e630fw43.js → index-9cf1yr67.js} +3 -3
  16. package/dist/cli/{index-5x3g1q91.js → index-bvp2v7k1.js} +18 -4
  17. package/dist/cli/{index-sbq3gbjs.js → index-djwemsjn.js} +1 -1
  18. package/dist/cli/{index-8w3sp149.js → index-f6480ee6.js} +48 -39
  19. package/dist/cli/{index-64z5dvam.js → index-fgcmxjp7.js} +1 -1
  20. package/dist/cli/{index-nsxchdx0.js → index-jgfcp9bh.js} +1 -1
  21. package/dist/cli/{index-exs5bt14.js → index-jj4earrh.js} +1 -1
  22. package/dist/cli/{index-99tq1zd5.js → index-k4tmx21m.js} +2 -2
  23. package/dist/cli/{index-ppkp20fp.js → index-mwkwyej1.js} +5 -5
  24. package/dist/cli/{index-2dtwjx39.js → index-rt5jgktq.js} +1 -1
  25. package/dist/cli/{index-zrh07ykv.js → index-y5qp59rc.js} +2 -2
  26. package/dist/cli/{index-fegng5pv.js → index-yvv1wt2h.js} +1 -1
  27. package/dist/cli/index.js +12 -12
  28. package/dist/cli/{knowledge-escalator-5hv2dwhz.js → knowledge-escalator-j0nceas7.js} +3 -3
  29. package/dist/cli/{knowledge-events-434663dp.js → knowledge-events-gpqc62jr.js} +1 -1
  30. package/dist/cli/{knowledge-store-73ykq5j3.js → knowledge-store-ggxr3ww5.js} +1 -1
  31. package/dist/cli/{knowledge-validator-tnadtt1h.js → knowledge-validator-007smap6.js} +4 -4
  32. package/dist/cli/{scan-cursor-e33n9pej.js → scan-cursor-wz4bff7a.js} +2 -2
  33. package/dist/cli/{schema-1kwmcayk.js → schema-023gwne7.js} +1 -1
  34. package/dist/cli/{skill-generator-k111qfdw.js → skill-generator-rtsg1m7x.js} +5 -5
  35. package/dist/config/constants.d.ts +22 -0
  36. package/dist/hooks/guardrails/index.d.ts +32 -0
  37. package/dist/hooks/guardrails/messages-transform.d.ts +7 -0
  38. package/dist/hooks/guardrails.d.ts +1 -1
  39. package/dist/hooks/pr-workflow-gate.d.ts +2 -0
  40. package/dist/hooks/pr-workflow-response-gate.d.ts +44 -26
  41. package/dist/index.d.ts +13 -0
  42. package/dist/index.js +30 -30
  43. package/dist/tools/dispatch-lanes.d.ts +18 -0
  44. package/dist/tools/run-pr-feedback-stage-a.d.ts +2 -0
  45. package/dist/tools/tool-metadata.d.ts +4 -0
  46. package/package.json +1 -1
@@ -686,6 +686,14 @@ controller snapshots the content revision plus HEAD, index, refs, upstream, and
686
686
  Git config before and after every command (including failures/timeouts); any
687
687
  mutation invalidates Stage A and prevents later commands from becoming proof.
688
688
 
689
+ The Stage A response carries per-check summaries (category, command, exit code,
690
+ duration) rather than inline stdout/stderr. On failure it also carries a bounded
691
+ tail of the failing check and a `full_output_ref` for retrieving the complete
692
+ output via `retrieve_summary`; if that persistence fails, the failing check's
693
+ full stdout/stderr is inlined instead so evidence is never lost. A successful
694
+ run persists nothing — there is no failure evidence to recover, and the
695
+ per-check summaries are the useful record.
696
+
689
697
  ### Stage B — reviewer + test_engineer (mandatory after Stage A passes)
690
698
 
691
699
  Two independent agents on the Stage-A-green diff, run in order: **reviewer
@@ -173,7 +173,9 @@ Exception: in explicit Council mode only, the main thread may act as the indepen
173
173
  Determine review scope using this priority:
174
174
 
175
175
  1. explicit user-provided PR URL, PR number, commit, branch, or file scope,
176
- 2. current feature branch diff vs `origin/main`, `main`, `origin/master`, or `master`,
176
+ 2. current feature branch diff vs the remote-tracking base ref (`origin/main`,
177
+ `origin/master`; a local `main`/`master` only as a last resort — it is only as
178
+ fresh as the last fetch and yields a different merge base),
177
179
  3. staged changes,
178
180
  4. latest commit,
179
181
  5. user-specified files or directories.
@@ -211,6 +213,11 @@ Before launching explorers (Phase 3), perform this exact standalone sequence:
211
213
  `git stash` through shell.
212
214
  3. Fetch the PR head as one standalone command, for example
213
215
  `git fetch origin refs/pull/<N>/head`. Do not compose fetch and checkout.
216
+ 3a. Fetch the base branch as its own standalone command, for example
217
+ `git fetch origin main`. Skipping this is the single most common cause of a
218
+ rejected dispatch: the merge base is recomputed against `base_ref`, and a
219
+ local `main`/`refs/heads/main` that was never refreshed resolves to a
220
+ different commit than `origin/main` for the same `base_sha`.
214
221
  4. Prove the full commit exists locally with
215
222
  `git cat-file -e <full_pr_head_sha>^{commit}`.
216
223
  5. Check out the exact PR filesystem with
@@ -775,8 +782,10 @@ Under Profile A, launch all base lanes with `dispatch_lanes_async`. Pass the six
775
782
  lane specs together, set `mode: "swarm-pr-review:base"`, assign each lane its
776
783
  exact `workflow_lane` identifier from the table below, set `max_concurrent` to
777
784
  `6`, bind the batch with the exact current `pr_head_sha`, record the returned
778
- `batch_id`, and pass the exact reviewed merge base and its live base tip/ref as
779
- `base_sha` and `base_ref`. Every later base retry, micro, council, reviewer, and
785
+ `batch_id`, and pass the exact reviewed merge base and its base ref as
786
+ `base_sha` and `base_ref`. Use the REMOTE-TRACKING form for `base_ref`
787
+ (`origin/main`, not `main` or `refs/heads/main`) and compute `base_sha` against
788
+ that same ref, so the controller's recomputation matches yours. Every later base retry, micro, council, reviewer, and
780
789
  critic dispatch repeats those same exact bindings. The controller recomputes
781
790
  `git merge-base -- <base_ref> <pr_head_sha>`, rejects mismatches, and replaces
782
791
  caller `scope` text with the complete verified `base_sha...pr_head_sha` PR diff;
@@ -808,6 +817,8 @@ or synthesis begins, whichever layer enforces it.
808
817
 
809
818
  **Incremental collection (Profile A):** While base lanes are running, poll with `collect_lane_results` (without `wait` (or `wait: false`)) to check progress and process settled lanes as they complete — call `retrieve_lane_output` for full text when `output_ref` is present, then extract candidates via `parse_lane_candidates`, update the candidate ledger, validate output quality — while continuing independent architect work (obligation refinement, micro-lane trigger checks, local reads) between polls. Only use `wait: true` if lanes are still pending and no more independent work remains. Under Profile B, harvest each subagent report as it completes and update the ledger between arrivals; block on stragglers only when no independent work remains.
810
819
 
820
+ Inline `output` is delivered on the first poll that observes a lane settled; subsequent polls carry `output_omitted_repeat: true` with metadata and `output_ref`, and full text is retrieved via `retrieve_lane_output`.
821
+
811
822
  Before Phase 4 or synthesis, all base lanes must be settled. `dispatch_lanes_async` accepts a maximum of 8 lanes per call; base lanes (6) and micro-lanes (Phase 4) are dispatched in separate calls by design. Do not let one lane's conclusions bias another lane.
812
823
 
813
824
  **COVERAGE GATE — zero tolerance for unclosed gaps.** After `collect_lane_results`, verify every lane produced validated output. Two failure modes exist:
@@ -1681,8 +1692,9 @@ mode `PR_REVIEW` and the same exact
1681
1692
  `pr_head_sha`. The tool refuses to clear the session gate while required base,
1682
1693
  trigger, declared reviewer/critic, or open-lane obligations remain incomplete.
1683
1694
  While the gate remains active, the runtime prepends a workflow-active banner
1684
- to architect text parts (the model's text is preserved below the banner) and
1685
- re-wakes an idle parent session. A
1695
+ to the first substantive text part of each architect message (the model's text
1696
+ is preserved below the banner; later parts of the same message, and blank
1697
+ parts, are left untouched) and re-wakes an idle parent session. A
1686
1698
  user interruption pauses every automatic wake path until a later explicit user
1687
1699
  turn settles; the durable gate remains available to continue or abort. Only
1688
1700
  emit the final report after the completion tool confirms that the gate cleared.
package/README.md CHANGED
@@ -1057,13 +1057,22 @@ Control how tool outputs are summarized for LLM context.
1057
1057
  {
1058
1058
  "summaries": {
1059
1059
  "threshold_bytes": 102400,
1060
- "exempt_tools": ["retrieve_summary", "task", "read"]
1060
+ "exempt_tools": [
1061
+ "retrieve_summary",
1062
+ "retrieve_lane_output",
1063
+ "task",
1064
+ "read",
1065
+ "dispatch_lanes",
1066
+ "dispatch_lanes_async",
1067
+ "collect_lane_results",
1068
+ "parse_lane_candidates"
1069
+ ]
1061
1070
  }
1062
1071
  }
1063
1072
  ```
1064
1073
 
1065
1074
  - **threshold_bytes** – Output size threshold in bytes before summarization is triggered (default 102400 = 100KB).
1066
- - **exempt_tools** – Tools whose outputs are never summarized. Defaults to `["retrieve_summary", "task", "read"]` to prevent re-summarization loops.
1075
+ - **exempt_tools** – Tools whose outputs are never summarized. Defaults to `["retrieve_summary", "retrieve_lane_output", "task", "read", "dispatch_lanes", "dispatch_lanes_async", "collect_lane_results", "parse_lane_candidates"]`. Retrieval and lane tools are always exempt—summarizing them would destroy the references needed to recover their full outputs.
1067
1076
 
1068
1077
  > **Note:** The `retrieve_summary` tool supports paginated retrieval via `offset` and `limit` parameters to fetch large summarized outputs in chunks.
1069
1078
 
@@ -12,8 +12,8 @@ import {
12
12
  shouldRunOnStartup,
13
13
  writeBackupArtifact,
14
14
  writeDoctorArtifact
15
- } from "./index-q0ysv66x.js";
16
- import"./index-5x3g1q91.js";
15
+ } from "./index-630badhp.js";
16
+ import"./index-bvp2v7k1.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-2dtwjx39.js";
7
+ } from "./index-rt5jgktq.js";
8
8
  import"./index-rtry5xyf.js";
9
- import"./index-nsxchdx0.js";
9
+ import"./index-jgfcp9bh.js";
10
10
  import"./index-ae75rja9.js";
11
11
  import"./index-q27bajqb.js";
12
12
  import"./index-zgwm4ryv.js";
@@ -14,31 +14,31 @@ import {
14
14
  runCuratorInit,
15
15
  runCuratorPhase,
16
16
  writeCuratorSummary
17
- } from "./index-8w3sp149.js";
18
- import"./index-fegng5pv.js";
19
- import"./index-q0ysv66x.js";
17
+ } from "./index-f6480ee6.js";
18
+ import"./index-yvv1wt2h.js";
19
+ import"./index-630badhp.js";
20
20
  import"./index-03zyn94g.js";
21
21
  import"./index-4905hd2m.js";
22
22
  import"./index-134d35c1.js";
23
23
  import"./index-9f71ye47.js";
24
- import"./index-e630fw43.js";
25
- import"./index-ppkp20fp.js";
26
- import"./index-sbq3gbjs.js";
24
+ import"./index-9cf1yr67.js";
25
+ import"./index-mwkwyej1.js";
26
+ import"./index-djwemsjn.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-zah4qws8.js";
32
- import"./index-2dtwjx39.js";
31
+ import"./index-6ccynjv3.js";
32
+ import"./index-rt5jgktq.js";
33
33
  import"./index-rtry5xyf.js";
34
- import"./index-6mcx76j9.js";
35
- import"./index-nsxchdx0.js";
34
+ import"./index-3s9rfnqq.js";
35
+ import"./index-jgfcp9bh.js";
36
36
  import"./index-ae75rja9.js";
37
37
  import"./index-q27bajqb.js";
38
- import"./index-exs5bt14.js";
38
+ import"./index-jj4earrh.js";
39
39
  import"./index-k5jrywpr.js";
40
40
  import"./index-n832052r.js";
41
- import"./index-5x3g1q91.js";
41
+ import"./index-bvp2v7k1.js";
42
42
  import"./index-bk5tah7q.js";
43
43
  import"./index-8fwhhayc.js";
44
44
  import"./index-q1exe2b3.js";
@@ -1,31 +1,31 @@
1
1
  // @bun
2
2
  import {
3
3
  createCuratorLLMDelegate
4
- } from "./index-8w3sp149.js";
5
- import"./index-fegng5pv.js";
6
- import"./index-q0ysv66x.js";
4
+ } from "./index-f6480ee6.js";
5
+ import"./index-yvv1wt2h.js";
6
+ import"./index-630badhp.js";
7
7
  import"./index-03zyn94g.js";
8
8
  import"./index-4905hd2m.js";
9
9
  import"./index-134d35c1.js";
10
10
  import"./index-9f71ye47.js";
11
- import"./index-e630fw43.js";
12
- import"./index-ppkp20fp.js";
13
- import"./index-sbq3gbjs.js";
11
+ import"./index-9cf1yr67.js";
12
+ import"./index-mwkwyej1.js";
13
+ import"./index-djwemsjn.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-zah4qws8.js";
19
- import"./index-2dtwjx39.js";
18
+ import"./index-6ccynjv3.js";
19
+ import"./index-rt5jgktq.js";
20
20
  import"./index-rtry5xyf.js";
21
- import"./index-6mcx76j9.js";
22
- import"./index-nsxchdx0.js";
21
+ import"./index-3s9rfnqq.js";
22
+ import"./index-jgfcp9bh.js";
23
23
  import"./index-ae75rja9.js";
24
24
  import"./index-q27bajqb.js";
25
- import"./index-exs5bt14.js";
25
+ import"./index-jj4earrh.js";
26
26
  import"./index-k5jrywpr.js";
27
27
  import"./index-n832052r.js";
28
- import"./index-5x3g1q91.js";
28
+ import"./index-bvp2v7k1.js";
29
29
  import"./index-bk5tah7q.js";
30
30
  import"./index-8fwhhayc.js";
31
31
  import"./index-q1exe2b3.js";
@@ -1,32 +1,32 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-99tq1zd5.js";
5
- import"./index-8w3sp149.js";
6
- import"./index-fegng5pv.js";
7
- import"./index-q0ysv66x.js";
4
+ } from "./index-k4tmx21m.js";
5
+ import"./index-f6480ee6.js";
6
+ import"./index-yvv1wt2h.js";
7
+ import"./index-630badhp.js";
8
8
  import"./index-03zyn94g.js";
9
9
  import"./index-4905hd2m.js";
10
10
  import"./index-134d35c1.js";
11
11
  import"./index-9f71ye47.js";
12
- import"./index-e630fw43.js";
13
- import"./index-ppkp20fp.js";
14
- import"./index-sbq3gbjs.js";
12
+ import"./index-9cf1yr67.js";
13
+ import"./index-mwkwyej1.js";
14
+ import"./index-djwemsjn.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-zah4qws8.js";
20
- import"./index-2dtwjx39.js";
19
+ import"./index-6ccynjv3.js";
20
+ import"./index-rt5jgktq.js";
21
21
  import"./index-rtry5xyf.js";
22
- import"./index-6mcx76j9.js";
23
- import"./index-nsxchdx0.js";
22
+ import"./index-3s9rfnqq.js";
23
+ import"./index-jgfcp9bh.js";
24
24
  import"./index-ae75rja9.js";
25
25
  import"./index-q27bajqb.js";
26
- import"./index-exs5bt14.js";
26
+ import"./index-jj4earrh.js";
27
27
  import"./index-k5jrywpr.js";
28
28
  import"./index-n832052r.js";
29
- import"./index-5x3g1q91.js";
29
+ import"./index-bvp2v7k1.js";
30
30
  import"./index-bk5tah7q.js";
31
31
  import"./index-8fwhhayc.js";
32
32
  import"./index-q1exe2b3.js";
@@ -1,9 +1,9 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailLog
4
- } from "./index-64z5dvam.js";
5
- import"./index-fegng5pv.js";
6
- import"./index-5x3g1q91.js";
4
+ } from "./index-fgcmxjp7.js";
5
+ import"./index-yvv1wt2h.js";
6
+ import"./index-bvp2v7k1.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-8w3sp149.js";
11
- import"./index-fegng5pv.js";
12
- import"./index-q0ysv66x.js";
10
+ } from "./index-f6480ee6.js";
11
+ import"./index-yvv1wt2h.js";
12
+ import"./index-630badhp.js";
13
13
  import"./index-03zyn94g.js";
14
14
  import"./index-4905hd2m.js";
15
15
  import"./index-134d35c1.js";
16
16
  import"./index-9f71ye47.js";
17
- import"./index-e630fw43.js";
18
- import"./index-ppkp20fp.js";
19
- import"./index-sbq3gbjs.js";
17
+ import"./index-9cf1yr67.js";
18
+ import"./index-mwkwyej1.js";
19
+ import"./index-djwemsjn.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-zah4qws8.js";
25
- import"./index-2dtwjx39.js";
24
+ import"./index-6ccynjv3.js";
25
+ import"./index-rt5jgktq.js";
26
26
  import"./index-rtry5xyf.js";
27
27
  import {
28
28
  resolveHiveKnowledgePath
29
- } from "./index-6mcx76j9.js";
30
- import"./index-nsxchdx0.js";
29
+ } from "./index-3s9rfnqq.js";
30
+ import"./index-jgfcp9bh.js";
31
31
  import"./index-ae75rja9.js";
32
32
  import"./index-q27bajqb.js";
33
- import"./index-exs5bt14.js";
33
+ import"./index-jj4earrh.js";
34
34
  import"./index-k5jrywpr.js";
35
35
  import"./index-n832052r.js";
36
- import"./index-5x3g1q91.js";
36
+ import"./index-bvp2v7k1.js";
37
37
  import"./index-bk5tah7q.js";
38
38
  import"./index-8fwhhayc.js";
39
39
  import"./index-q1exe2b3.js";
@@ -702,7 +702,7 @@ async function applyConfidenceFloorAction(directory, touched, options) {
702
702
  const recovered = touched.filter((e) => e.confidence > CONFIDENCE_FLOOR + FLOOR_EPSILON && e.confidence_floor_demoted);
703
703
  if (atFloor.length === 0 && recovered.length === 0)
704
704
  return;
705
- const { readKnowledgeCounterRollups, effectiveRetrievalOutcomes } = await import("./knowledge-events-434663dp.js");
705
+ const { readKnowledgeCounterRollups, effectiveRetrievalOutcomes } = await import("./knowledge-events-gpqc62jr.js");
706
706
  const rollups = await readKnowledgeCounterRollups(directory);
707
707
  const flagIds = new Set;
708
708
  for (const e of atFloor) {
@@ -769,11 +769,11 @@ async function applyConfidenceFloorAction(directory, touched, options) {
769
769
  });
770
770
  }
771
771
  if (action === "quarantine" && toQuarantine.length > 0) {
772
- const { quarantineEntry } = await import("./knowledge-validator-tnadtt1h.js");
773
- const { KnowledgeConfigSchema } = await import("./schema-1kwmcayk.js");
772
+ const { quarantineEntry } = await import("./knowledge-validator-007smap6.js");
773
+ const { KnowledgeConfigSchema } = await import("./schema-023gwne7.js");
774
774
  let config;
775
775
  try {
776
- const { loadPluginConfigWithMeta } = await import("./index-zrh07ykv.js");
776
+ const { loadPluginConfigWithMeta } = await import("./index-y5qp59rc.js");
777
777
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
778
778
  config = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
779
779
  } catch {
@@ -8,7 +8,7 @@ import {
8
8
  init_constants,
9
9
  init_schema,
10
10
  stripKnownSwarmPrefix
11
- } from "./index-5x3g1q91.js";
11
+ } from "./index-bvp2v7k1.js";
12
12
  import {
13
13
  log
14
14
  } from "./index-zgwm4ryv.js";
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  authorizeCuration
4
- } from "./index-2dtwjx39.js";
4
+ } from "./index-rt5jgktq.js";
5
5
  import {
6
6
  findNearDuplicate,
7
7
  inferTags,
@@ -9,7 +9,7 @@ import {
9
9
  resolveSwarmKnowledgePath,
10
10
  resolveSwarmRejectedPath,
11
11
  transactKnowledge
12
- } from "./index-6mcx76j9.js";
12
+ } from "./index-3s9rfnqq.js";
13
13
  import {
14
14
  resolveKnowledgeStoreDir
15
15
  } from "./index-q27bajqb.js";
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-99tq1zd5.js";
4
+ } from "./index-k4tmx21m.js";
5
5
  import {
6
6
  handleGuardrailLog
7
- } from "./index-64z5dvam.js";
7
+ } from "./index-fgcmxjp7.js";
8
8
  import {
9
9
  COMMAND_REGISTRY,
10
10
  SWARM_COMMAND_TOOL_ALLOWLIST,
@@ -83,28 +83,28 @@ import {
83
83
  handleWriteRetroCommand,
84
84
  normalizeSwarmCommandInput,
85
85
  resolveCommand
86
- } from "./index-8w3sp149.js";
87
- import"./index-fegng5pv.js";
88
- import"./index-q0ysv66x.js";
86
+ } from "./index-f6480ee6.js";
87
+ import"./index-yvv1wt2h.js";
88
+ import"./index-630badhp.js";
89
89
  import"./index-03zyn94g.js";
90
90
  import"./index-4905hd2m.js";
91
91
  import"./index-134d35c1.js";
92
92
  import"./index-9f71ye47.js";
93
- import"./index-e630fw43.js";
94
- import"./index-ppkp20fp.js";
95
- import"./index-sbq3gbjs.js";
93
+ import"./index-9cf1yr67.js";
94
+ import"./index-mwkwyej1.js";
95
+ import"./index-djwemsjn.js";
96
96
  import"./index-vxv732ex.js";
97
97
  import"./index-c8s9a3zh.js";
98
98
  import"./index-9ss2m4rs.js";
99
99
  import"./index-g4mnf3p5.js";
100
- import"./index-zah4qws8.js";
101
- import"./index-2dtwjx39.js";
100
+ import"./index-6ccynjv3.js";
101
+ import"./index-rt5jgktq.js";
102
102
  import"./index-rtry5xyf.js";
103
- import"./index-6mcx76j9.js";
104
- import"./index-nsxchdx0.js";
103
+ import"./index-3s9rfnqq.js";
104
+ import"./index-jgfcp9bh.js";
105
105
  import"./index-ae75rja9.js";
106
106
  import"./index-q27bajqb.js";
107
- import"./index-exs5bt14.js";
107
+ import"./index-jj4earrh.js";
108
108
  import"./index-k5jrywpr.js";
109
109
  import"./index-n832052r.js";
110
110
  import {
@@ -113,7 +113,7 @@ import {
113
113
  init_constants,
114
114
  init_schema,
115
115
  stripKnownSwarmPrefix
116
- } from "./index-5x3g1q91.js";
116
+ } from "./index-bvp2v7k1.js";
117
117
  import"./index-bk5tah7q.js";
118
118
  import"./index-8fwhhayc.js";
119
119
  import"./index-q1exe2b3.js";
@@ -2,18 +2,18 @@
2
2
  import {
3
3
  ALLOWED_SKILL_PATH_PREFIXES,
4
4
  validateSkillPath
5
- } from "./index-zah4qws8.js";
5
+ } from "./index-6ccynjv3.js";
6
6
  import {
7
7
  computeOutcomeSignal,
8
8
  readKnowledge,
9
9
  resolveHiveKnowledgePath,
10
10
  resolveSwarmKnowledgePath,
11
11
  transactKnowledge
12
- } from "./index-6mcx76j9.js";
12
+ } from "./index-3s9rfnqq.js";
13
13
  import {
14
14
  effectiveRetrievalOutcomes,
15
15
  readKnowledgeCounterRollups
16
- } from "./index-nsxchdx0.js";
16
+ } from "./index-jgfcp9bh.js";
17
17
  import {
18
18
  init_knowledge_types,
19
19
  isActiveStatus
@@ -356,7 +356,11 @@ var init_tool_metadata = __esm(() => {
356
356
  "critic",
357
357
  "coder",
358
358
  "test_engineer"
359
- ]
359
+ ],
360
+ prWorkflow: {
361
+ modes: ["PR_REVIEW", "PR_FEEDBACK"],
362
+ capability: "observe"
363
+ }
360
364
  },
361
365
  retrieve_lane_output: {
362
366
  description: "retrieve paged full dispatch lane output by output_ref; use before consuming truncated lane previews or routing candidates from lane results",
@@ -712,7 +716,7 @@ var init_tool_metadata = __esm(() => {
712
716
  agents: ["architect"]
713
717
  },
714
718
  collect_lane_results: {
715
- description: "collect or poll results for a dispatch_lanes_async batch; supports both non-blocking polling (wait omitted or false) and blocking join (wait: true). Non-blocking polls include pending lane identities by default and process settled lanes incrementally while continuing independent work; busy/retry lanes are not timed out just because they run for a long time. Does not advance workflow gates.",
719
+ description: "collect or poll results for a dispatch_lanes_async batch; supports both non-blocking polling (wait omitted or false) and blocking join (wait: true). Non-blocking polls include pending lane identities by default and process settled lanes incrementally while continuing independent work; busy/retry lanes are not timed out just because they run for a long time. Does not advance workflow gates. Inline output for a settled lane is delivered only once: later polls of the same lane set output_omitted_repeat: true and omit output, but still include output_ref for recovery via retrieve_lane_output.",
716
720
  agents: ["architect"]
717
721
  },
718
722
  summarize_work: {
@@ -859,7 +863,7 @@ function isQAAgent(name) {
859
863
  function isSubagent(name) {
860
864
  return ALL_SUBAGENT_NAMES.includes(name);
861
865
  }
862
- var OPENCODE_NATIVE_AGENTS, CLAUDE_CODE_NATIVE_COMMANDS, EXTERNAL_SKILL_TOOL_NAMES, EXTERNAL_SKILL_AGENT_TOOL_MAP, COUNCIL_TOOL_NAMES, COUNCIL_AGENT_TOOL_MAP, GENERAL_COUNCIL_TOOL_NAMES, GENERAL_COUNCIL_AGENT_TOOL_MAP, TURBO_TOOL_NAMES, TURBO_AGENT_TOOL_MAP, SKILL_TOOL_NAMES, SKILL_AGENT_TOOL_MAP, DEFAULT_MODELS, DEFAULT_AGENT_CONFIGS, DEFAULT_WORKTREE_ISOLATION_CONFIG;
866
+ var OPENCODE_NATIVE_AGENTS, CLAUDE_CODE_NATIVE_COMMANDS, EXTERNAL_SKILL_TOOL_NAMES, EXTERNAL_SKILL_AGENT_TOOL_MAP, COUNCIL_TOOL_NAMES, COUNCIL_AGENT_TOOL_MAP, GENERAL_COUNCIL_TOOL_NAMES, GENERAL_COUNCIL_AGENT_TOOL_MAP, TURBO_TOOL_NAMES, TURBO_AGENT_TOOL_MAP, SKILL_TOOL_NAMES, SKILL_AGENT_TOOL_MAP, SUMMARIZER_EXEMPT_TOOL_NAMES, DEFAULT_MODELS, DEFAULT_AGENT_CONFIGS, DEFAULT_WORKTREE_ISOLATION_CONFIG;
863
867
  var init_constants = __esm(() => {
864
868
  init_agent_names();
865
869
  init_tool_metadata();
@@ -1033,6 +1037,16 @@ var init_constants = __esm(() => {
1033
1037
  SKILL_AGENT_TOOL_MAP = {
1034
1038
  architect: [...SKILL_TOOL_NAMES]
1035
1039
  };
1040
+ SUMMARIZER_EXEMPT_TOOL_NAMES = [
1041
+ "retrieve_summary",
1042
+ "retrieve_lane_output",
1043
+ "task",
1044
+ "read",
1045
+ "dispatch_lanes",
1046
+ "dispatch_lanes_async",
1047
+ "collect_lane_results",
1048
+ "parse_lane_candidates"
1049
+ ];
1036
1050
  DEFAULT_MODELS = {
1037
1051
  explorer: "opencode/big-pickle",
1038
1052
  coder: "opencode/minimax-m2.5-free",
@@ -1461,7 +1475,7 @@ var init_schema = __esm(() => {
1461
1475
  max_summary_chars: exports_external.number().min(100).max(5000).default(1000),
1462
1476
  max_stored_bytes: exports_external.number().min(10240).max(104857600).default(10485760),
1463
1477
  retention_days: exports_external.number().min(1).max(365).default(7),
1464
- exempt_tools: exports_external.array(exports_external.string()).default(["retrieve_summary", "retrieve_lane_output", "task", "read"])
1478
+ exempt_tools: exports_external.array(exports_external.string()).default([...SUMMARIZER_EXEMPT_TOOL_NAMES])
1465
1479
  });
1466
1480
  ReviewPassesConfigSchema = exports_external.object({
1467
1481
  always_security_review: exports_external.boolean().default(false),
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  readKnowledge,
4
4
  transactKnowledge
5
- } from "./index-6mcx76j9.js";
5
+ } from "./index-3s9rfnqq.js";
6
6
  import {
7
7
  resolveKnowledgeStoreDir
8
8
  } from "./index-q27bajqb.js";