opencode-swarm 7.131.0 → 7.132.1

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 (54) hide show
  1. package/.opencode/skills/swarm-pr-feedback/SKILL.md +8 -0
  2. package/.opencode/skills/swarm-pr-review/SKILL.md +2 -0
  3. package/README.md +13 -4
  4. package/dist/cli/{config-doctor-rjvb0hhn.js → config-doctor-bp5spb79.js} +2 -2
  5. package/dist/cli/{curation-policy-f5bybzmh.js → curation-policy-7zp2m9gv.js} +2 -2
  6. package/dist/cli/{curator-kjzqa5m7.js → curator-28hcw9hx.js} +12 -12
  7. package/dist/cli/{curator-llm-factory-ezq4fakt.js → curator-llm-factory-rd0s95fw.js} +12 -12
  8. package/dist/cli/{guardrail-explain-n93qh8k6.js → guardrail-explain-742dhpec.js} +13 -13
  9. package/dist/cli/{guardrail-log-h4tmcjwx.js → guardrail-log-aa112fxv.js} +3 -3
  10. package/dist/cli/{hive-promoter-mammxe5p.js → hive-promoter-8whgvcry.js} +12 -12
  11. package/dist/cli/{index-q68sprcy.js → index-3s9rfnqq.js} +4 -4
  12. package/dist/cli/{index-6vg0qczz.js → index-4hapy63e.js} +2 -2
  13. package/dist/cli/{index-kbfhyxtv.js → index-630badhp.js} +1 -1
  14. package/dist/cli/{index-xv2ydncg.js → index-6ccynjv3.js} +2 -2
  15. package/dist/cli/{index-01nyrk95.js → index-9cf1yr67.js} +3 -3
  16. package/dist/cli/{index-d2tgc580.js → index-b21a4zw4.js} +1432 -1316
  17. package/dist/cli/{index-hynbzh7s.js → index-bvp2v7k1.js} +22 -4
  18. package/dist/cli/{index-pft1qxqh.js → index-djwemsjn.js} +1 -1
  19. package/dist/cli/{index-cnwh164k.js → index-fgcmxjp7.js} +1 -1
  20. package/dist/cli/{index-fepakwhp.js → index-jgfcp9bh.js} +1 -1
  21. package/dist/cli/{index-tw33v84d.js → index-jj4earrh.js} +1 -1
  22. package/dist/cli/{index-m6zfm7cm.js → index-mwkwyej1.js} +5 -5
  23. package/dist/cli/{index-1atz85c8.js → index-rt5jgktq.js} +1 -1
  24. package/dist/cli/{index-xhd797bz.js → index-x3p6ktva.js} +14 -14
  25. package/dist/cli/{index-szkswbqf.js → index-y5qp59rc.js} +2 -2
  26. package/dist/cli/{index-cq22pnd2.js → index-yvv1wt2h.js} +1 -1
  27. package/dist/cli/index.js +12 -12
  28. package/dist/cli/{knowledge-escalator-cf1kkmfe.js → knowledge-escalator-j0nceas7.js} +3 -3
  29. package/dist/cli/{knowledge-events-p8t5ev44.js → knowledge-events-gpqc62jr.js} +1 -1
  30. package/dist/cli/{knowledge-store-vpdmcwem.js → knowledge-store-ggxr3ww5.js} +1 -1
  31. package/dist/cli/{knowledge-validator-w1t0sw5f.js → knowledge-validator-007smap6.js} +4 -4
  32. package/dist/cli/{scan-cursor-z4c51902.js → scan-cursor-wz4bff7a.js} +2 -2
  33. package/dist/cli/{schema-yqzzfavj.js → schema-023gwne7.js} +1 -1
  34. package/dist/cli/{skill-generator-aaabj00n.js → skill-generator-rtsg1m7x.js} +5 -5
  35. package/dist/config/constants.d.ts +22 -0
  36. package/dist/hooks/pr-workflow-gate.d.ts +2 -0
  37. package/dist/index.d.ts +13 -0
  38. package/dist/index.js +359 -359
  39. package/dist/parallel/index.d.ts +0 -2
  40. package/dist/plan/parallel-verdict.d.ts +94 -0
  41. package/dist/services/status-service.d.ts +14 -0
  42. package/dist/tools/dispatch-lanes.d.ts +18 -0
  43. package/dist/tools/index.d.ts +1 -0
  44. package/dist/tools/lean-turbo-run-phase.d.ts +7 -0
  45. package/dist/tools/manifest.d.ts +1 -0
  46. package/dist/tools/plan-conflict-check.d.ts +61 -0
  47. package/dist/tools/run-pr-feedback-stage-a.d.ts +2 -0
  48. package/dist/tools/tool-metadata.d.ts +8 -0
  49. package/dist/turbo/lean/recovery.d.ts +90 -0
  50. package/dist/turbo/lean/runner.d.ts +16 -1
  51. package/dist/worktree/merge.d.ts +5 -0
  52. package/package.json +1 -1
  53. package/dist/parallel/dependency-graph.d.ts +0 -34
  54. package/dist/parallel/meta-indexer.d.ts +0 -32
@@ -268,6 +268,10 @@ var init_tool_metadata = __esm(() => {
268
268
  description: "Parse [CANDIDATE] rows from a dispatch_lanes or collect_lane_results artifact (by output_ref), produce structured records with provenance, optionally persist to a per-batch sidecar JSONL. Pure-parser variant exists as internal module.",
269
269
  agents: ["architect"]
270
270
  },
271
+ plan_conflict_check: {
272
+ description: "read-only advisory check (#1656): compute a pairwise file-conflict matrix for N proposed parallel task groups using declared scopes and optional git co-change; returns a verdict (all_disjoint / conflicts_present / unknown_scopes), per-pair evidence, and a suggested serialization order. Writes nothing \u2014 the execution gate independently recomputes the verdict inline at dispatch time via the same helper. Call BEFORE attempting parallel dispatch to confirm disjointness.",
273
+ agents: ["architect"]
274
+ },
271
275
  write_pr_review_trigger_eval: {
272
276
  description: "persist the complete PR-review trigger evaluation with exact-set validation, dispatch provenance, and live merge-base verification",
273
277
  agents: ["architect"]
@@ -352,7 +356,11 @@ var init_tool_metadata = __esm(() => {
352
356
  "critic",
353
357
  "coder",
354
358
  "test_engineer"
355
- ]
359
+ ],
360
+ prWorkflow: {
361
+ modes: ["PR_REVIEW", "PR_FEEDBACK"],
362
+ capability: "observe"
363
+ }
356
364
  },
357
365
  retrieve_lane_output: {
358
366
  description: "retrieve paged full dispatch lane output by output_ref; use before consuming truncated lane previews or routing candidates from lane results",
@@ -708,7 +716,7 @@ var init_tool_metadata = __esm(() => {
708
716
  agents: ["architect"]
709
717
  },
710
718
  collect_lane_results: {
711
- 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.",
712
720
  agents: ["architect"]
713
721
  },
714
722
  summarize_work: {
@@ -855,7 +863,7 @@ function isQAAgent(name) {
855
863
  function isSubagent(name) {
856
864
  return ALL_SUBAGENT_NAMES.includes(name);
857
865
  }
858
- 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;
859
867
  var init_constants = __esm(() => {
860
868
  init_agent_names();
861
869
  init_tool_metadata();
@@ -1029,6 +1037,16 @@ var init_constants = __esm(() => {
1029
1037
  SKILL_AGENT_TOOL_MAP = {
1030
1038
  architect: [...SKILL_TOOL_NAMES]
1031
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
+ ];
1032
1050
  DEFAULT_MODELS = {
1033
1051
  explorer: "opencode/big-pickle",
1034
1052
  coder: "opencode/minimax-m2.5-free",
@@ -1457,7 +1475,7 @@ var init_schema = __esm(() => {
1457
1475
  max_summary_chars: exports_external.number().min(100).max(5000).default(1000),
1458
1476
  max_stored_bytes: exports_external.number().min(10240).max(104857600).default(10485760),
1459
1477
  retention_days: exports_external.number().min(1).max(365).default(7),
1460
- 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])
1461
1479
  });
1462
1480
  ReviewPassesConfigSchema = exports_external.object({
1463
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-q68sprcy.js";
5
+ } from "./index-3s9rfnqq.js";
6
6
  import {
7
7
  resolveKnowledgeStoreDir
8
8
  } from "./index-q27bajqb.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  redactPath,
4
4
  redactShellCommand
5
- } from "./index-cq22pnd2.js";
5
+ } from "./index-yvv1wt2h.js";
6
6
 
7
7
  // src/services/guardrail-log-service.ts
8
8
  import * as fs from "fs/promises";
@@ -608,7 +608,7 @@ async function applyKnowledgeVerdictFeedback(directory, options) {
608
608
  deltas.push({ id, delta });
609
609
  }
610
610
  if (deltas.length > 0) {
611
- const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-vpdmcwem.js");
611
+ const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-ggxr3ww5.js");
612
612
  await bumpKnowledgeConfidenceBatch(directory, deltas, options?.floorOptions);
613
613
  }
614
614
  return {
@@ -8,7 +8,7 @@ import {
8
8
  init_constants,
9
9
  init_schema,
10
10
  resolveExternalSkillsConfig
11
- } from "./index-hynbzh7s.js";
11
+ } from "./index-bvp2v7k1.js";
12
12
  import {
13
13
  advisoryWarn,
14
14
  init_warning_buffer
@@ -6,13 +6,13 @@ import {
6
6
  resolveSwarmKnowledgePath,
7
7
  transactKnowledge,
8
8
  wordBigrams
9
- } from "./index-q68sprcy.js";
9
+ } from "./index-3s9rfnqq.js";
10
10
  import {
11
11
  countEntryContradictionsInWindow,
12
12
  countEntryViolationsInWindow,
13
13
  readKnowledgeEvents,
14
14
  recordKnowledgeEvent
15
- } from "./index-fepakwhp.js";
15
+ } from "./index-jgfcp9bh.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-w1t0sw5f.js");
193
+ const { quarantineEntry } = await import("./knowledge-validator-007smap6.js");
194
194
  let policyConfig;
195
195
  try {
196
- const { KnowledgeConfigSchema } = await import("./schema-yqzzfavj.js");
197
- const { loadPluginConfigWithMeta } = await import("./index-szkswbqf.js");
196
+ const { KnowledgeConfigSchema } = await import("./schema-023gwne7.js");
197
+ const { loadPluginConfigWithMeta } = await import("./index-y5qp59rc.js");
198
198
  const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
199
199
  policyConfig = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
200
200
  } catch {
@@ -4,7 +4,7 @@ import {
4
4
  } from "./index-rtry5xyf.js";
5
5
  import {
6
6
  readKnowledgeEvents
7
- } from "./index-fepakwhp.js";
7
+ } from "./index-jgfcp9bh.js";
8
8
  import {
9
9
  isLinked,
10
10
  readLinkPointer,
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-6vg0qczz.js";
4
+ } from "./index-4hapy63e.js";
5
5
  import {
6
6
  handleGuardrailLog
7
- } from "./index-cnwh164k.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-d2tgc580.js";
87
- import"./index-cq22pnd2.js";
88
- import"./index-kbfhyxtv.js";
86
+ } from "./index-b21a4zw4.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-01nyrk95.js";
94
- import"./index-m6zfm7cm.js";
95
- import"./index-pft1qxqh.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-xv2ydncg.js";
101
- import"./index-1atz85c8.js";
100
+ import"./index-6ccynjv3.js";
101
+ import"./index-rt5jgktq.js";
102
102
  import"./index-rtry5xyf.js";
103
- import"./index-q68sprcy.js";
104
- import"./index-fepakwhp.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-tw33v84d.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-hynbzh7s.js";
116
+ } from "./index-bvp2v7k1.js";
117
117
  import"./index-bk5tah7q.js";
118
118
  import"./index-8fwhhayc.js";
119
119
  import"./index-q1exe2b3.js";
@@ -7,7 +7,7 @@ import {
7
7
  loadPluginConfigWithMeta,
8
8
  loadPluginConfigWithMetaAsync,
9
9
  resolveWorktreeIsolationConfig
10
- } from "./index-tw33v84d.js";
10
+ } from "./index-jj4earrh.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-hynbzh7s.js";
62
+ } from "./index-bvp2v7k1.js";
63
63
  import"./index-bk5tah7q.js";
64
64
  import {
65
65
  MigrationStatusSchema,
@@ -3,7 +3,7 @@ import {
3
3
  init_constants,
4
4
  init_schema,
5
5
  stripKnownSwarmPrefix
6
- } from "./index-hynbzh7s.js";
6
+ } from "./index-bvp2v7k1.js";
7
7
  import {
8
8
  init_logger,
9
9
  warn
package/dist/cli/index.js CHANGED
@@ -7,34 +7,34 @@ import {
7
7
  getPluginLockFilePaths,
8
8
  package_default,
9
9
  resolveCommand
10
- } from "./index-d2tgc580.js";
11
- import"./index-cq22pnd2.js";
12
- import"./index-kbfhyxtv.js";
10
+ } from "./index-b21a4zw4.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-01nyrk95.js";
18
- import"./index-m6zfm7cm.js";
19
- import"./index-pft1qxqh.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-xv2ydncg.js";
25
- import"./index-1atz85c8.js";
24
+ import"./index-6ccynjv3.js";
25
+ import"./index-rt5jgktq.js";
26
26
  import"./index-rtry5xyf.js";
27
- import"./index-q68sprcy.js";
28
- import"./index-fepakwhp.js";
27
+ import"./index-3s9rfnqq.js";
28
+ import"./index-jgfcp9bh.js";
29
29
  import"./index-ae75rja9.js";
30
30
  import"./index-q27bajqb.js";
31
- import"./index-tw33v84d.js";
31
+ import"./index-jj4earrh.js";
32
32
  import"./index-k5jrywpr.js";
33
33
  import"./index-n832052r.js";
34
34
  import {
35
35
  DEFAULT_AGENT_CONFIGS,
36
36
  init_constants
37
- } from "./index-hynbzh7s.js";
37
+ } from "./index-bvp2v7k1.js";
38
38
  import"./index-bk5tah7q.js";
39
39
  import"./index-8fwhhayc.js";
40
40
  import"./index-q1exe2b3.js";
@@ -8,9 +8,9 @@ import {
8
8
  maybeEscalateOnViolation,
9
9
  maybeQuarantineOnContradiction,
10
10
  readRecentEscalations
11
- } from "./index-m6zfm7cm.js";
12
- import"./index-q68sprcy.js";
13
- import"./index-fepakwhp.js";
11
+ } from "./index-mwkwyej1.js";
12
+ import"./index-3s9rfnqq.js";
13
+ import"./index-jgfcp9bh.js";
14
14
  import"./index-ae75rja9.js";
15
15
  import"./index-q27bajqb.js";
16
16
  import"./index-bk5tah7q.js";
@@ -26,7 +26,7 @@ import {
26
26
  resolveKnowledgeCounterBaselinePath,
27
27
  resolveKnowledgeEventsPath,
28
28
  resolveLegacyApplicationLogPath
29
- } from "./index-fepakwhp.js";
29
+ } from "./index-jgfcp9bh.js";
30
30
  import"./index-ae75rja9.js";
31
31
  import"./index-q27bajqb.js";
32
32
  import"./index-zgwm4ryv.js";
@@ -41,7 +41,7 @@ import {
41
41
  transactKnowledge,
42
42
  transactKnowledgeWithCas,
43
43
  wordBigrams
44
- } from "./index-q68sprcy.js";
44
+ } from "./index-3s9rfnqq.js";
45
45
  import {
46
46
  resolveHiveDataDir
47
47
  } from "./index-ae75rja9.js";
@@ -23,11 +23,11 @@ import {
23
23
  validateLesson,
24
24
  validateSkillCandidatePath,
25
25
  validateSkillPath
26
- } from "./index-xv2ydncg.js";
27
- import"./index-1atz85c8.js";
26
+ } from "./index-6ccynjv3.js";
27
+ import"./index-rt5jgktq.js";
28
28
  import"./index-rtry5xyf.js";
29
- import"./index-q68sprcy.js";
30
- import"./index-fepakwhp.js";
29
+ import"./index-3s9rfnqq.js";
30
+ import"./index-jgfcp9bh.js";
31
31
  import"./index-ae75rja9.js";
32
32
  import"./index-q27bajqb.js";
33
33
  import"./index-bk5tah7q.js";
@@ -4,8 +4,8 @@ import {
4
4
  alreadyCuratedThisGeneration,
5
5
  claimNextScanBatch,
6
6
  getScanStatus
7
- } from "./index-pft1qxqh.js";
8
- import"./index-q68sprcy.js";
7
+ } from "./index-djwemsjn.js";
8
+ import"./index-3s9rfnqq.js";
9
9
  import"./index-ae75rja9.js";
10
10
  import"./index-q27bajqb.js";
11
11
  import"./index-bk5tah7q.js";
@@ -91,7 +91,7 @@ import {
91
91
  resolveGeneratedAgentRole,
92
92
  resolveGuardrailsConfig,
93
93
  stripKnownSwarmPrefix
94
- } from "./index-hynbzh7s.js";
94
+ } from "./index-bvp2v7k1.js";
95
95
  import"./index-bk5tah7q.js";
96
96
  import"./index-zjygnfay.js";
97
97
  import"./index-bpmtbmy9.js";
@@ -33,12 +33,12 @@ import {
33
33
  sanitizeSlug,
34
34
  selectCandidateEntries,
35
35
  writeEvalStub
36
- } from "./index-01nyrk95.js";
37
- import"./index-xv2ydncg.js";
38
- import"./index-1atz85c8.js";
36
+ } from "./index-9cf1yr67.js";
37
+ import"./index-6ccynjv3.js";
38
+ import"./index-rt5jgktq.js";
39
39
  import"./index-rtry5xyf.js";
40
- import"./index-q68sprcy.js";
41
- import"./index-fepakwhp.js";
40
+ import"./index-3s9rfnqq.js";
41
+ import"./index-jgfcp9bh.js";
42
42
  import"./index-ae75rja9.js";
43
43
  import"./index-q27bajqb.js";
44
44
  import"./index-bk5tah7q.js";
@@ -30,6 +30,28 @@ export declare const SKILL_AGENT_TOOL_MAP: Partial<Record<AgentName, ToolName[]>
30
30
  */
31
31
  export declare const WRITE_TOOL_NAMES: readonly ["write", "edit", "patch", "apply_patch", "swarm_apply_patch", "create_file", "insert", "replace", "append", "prepend", "extract_code_blocks"];
32
32
  export type WriteToolName = (typeof WRITE_TOOL_NAMES)[number];
33
+ /**
34
+ * Single source of truth for tools that must NEVER have their output rewritten
35
+ * by the tool-output summarizer (tool-summarizer.ts) or the context-budget
36
+ * tool-output masker (context-budget.ts). Two independent admission reasons:
37
+ *
38
+ * (a) Retrieval tools (`retrieve_summary`, `retrieve_lane_output`, `task`,
39
+ * `read`) — rewriting their output would destroy the recovery mechanism
40
+ * itself, creating a retrieval loop where the summary/artifact gets
41
+ * summarized again.
42
+ * (b) Ref-carrying lane tools (`dispatch_lanes`, `dispatch_lanes_async`,
43
+ * `collect_lane_results`, `parse_lane_candidates`) — their payloads are
44
+ * already self-bounding AND carry the `output_ref`/structured rows that
45
+ * the PR-workflow gate requires to settle lanes. Rewriting them to a
46
+ * type-signature summary destroys the rows and the refs, so the gate
47
+ * can never settle and the model cannot recover.
48
+ *
49
+ * This list is a FLOOR, not a default: every consumer must treat these tool
50
+ * names as always exempt regardless of operator-supplied `exempt_tools`
51
+ * config — an operator narrowing `exempt_tools` must never be able to strip
52
+ * this floor.
53
+ */
54
+ export declare const SUMMARIZER_EXEMPT_TOOL_NAMES: readonly ["retrieve_summary", "retrieve_lane_output", "task", "read", "dispatch_lanes", "dispatch_lanes_async", "collect_lane_results", "parse_lane_candidates"];
33
55
  export declare const DEFAULT_MODELS: Record<string, string>;
34
56
  export declare const DEFAULT_AGENT_CONFIGS: Record<string, {
35
57
  model: string;
@@ -354,6 +354,7 @@ export declare const _test_exports: {
354
354
  resolveRemoteRefsContainingHeadAsync: typeof resolveRemoteRefsContainingHeadAsync;
355
355
  parseCriticVerdict: typeof parseCriticVerdict;
356
356
  isProcessAlive: typeof isProcessAlive;
357
+ isSafeStandaloneGitCommit: typeof isSafeStandaloneGitCommit;
357
358
  rename: typeof fsp.rename;
358
359
  nowMs: () => number;
359
360
  };
@@ -366,6 +367,7 @@ export declare function normalizePrWorkflowShellCommand(command: string): {
366
367
  normalized: string;
367
368
  strippedCdPrefix: boolean;
368
369
  };
370
+ declare function isSafeStandaloneGitCommit(command: string): boolean;
369
371
  /** Require at least one real discovery row or a lane-bound CLEAN attestation. */
370
372
  export declare function prReviewDiscoveryArtifactCoversLane(text: string, expectedWorkflowLane: string): boolean;
371
373
  declare function parseCriticVerdict(text: string, itemId: string, reviewerSeverity?: string): {
package/dist/index.d.ts CHANGED
@@ -26,6 +26,19 @@ export declare function overrideIndexInternalsForTest(overrides: {
26
26
  ensureSwarmGitExcluded?: typeof ensureSwarmGitExcluded;
27
27
  }): () => void;
28
28
  export declare function schedulePostResolutionTasksForTest(tasks: readonly PostResolutionTask[]): void;
29
+ /**
30
+ * Compute the effective set of tools eligible for line-based truncation.
31
+ *
32
+ * SUMMARIZER_EXEMPT_TOOL_NAMES is applied as an unconditional floor
33
+ * subtraction against BOTH the default allowlist and any operator-configured
34
+ * `tool_output.truncation_tools` override (finding R6). Line-truncating a
35
+ * lane/retrieval tool's payload destroys the `output_ref` rows a caller needs
36
+ * to recover the full content — the same unrecoverable-payload defect class
37
+ * the summarizer/context-budget floor already guards against — so operator
38
+ * config must never be able to reintroduce it via this separate rewriting
39
+ * layer.
40
+ */
41
+ export declare function computeEffectiveTruncatableTools(defaultTools: ReadonlySet<string>, configuredTools: readonly string[] | undefined): Set<string>;
29
42
  declare const _default: {
30
43
  id: "opencode-swarm";
31
44
  server: Plugin;