opencode-swarm 7.84.0 → 7.85.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.
Files changed (28) hide show
  1. package/.opencode/skills/codebase-review-swarm/references/review-protocol-v8.2.md +4 -0
  2. package/.opencode/skills/council/SKILL.md +6 -1
  3. package/.opencode/skills/deep-dive/SKILL.md +2 -0
  4. package/.opencode/skills/deep-research/SKILL.md +6 -0
  5. package/.opencode/skills/swarm-pr-feedback/SKILL.md +6 -0
  6. package/.opencode/skills/swarm-pr-review/SKILL.md +4 -0
  7. package/dist/background/lane-output-store.d.ts +72 -0
  8. package/dist/background/pending-delegations.d.ts +6 -0
  9. package/dist/cli/{config-doctor-4tcdd9vt.js → config-doctor-zejarrr6.js} +2 -2
  10. package/dist/cli/{guardrail-explain-tcamcdfy.js → guardrail-explain-w4txg349.js} +5 -5
  11. package/dist/cli/{guardrail-log-fd14n96q.js → guardrail-log-80116wmz.js} +3 -3
  12. package/dist/cli/{index-a82d6d87.js → index-0sxvwjt0.js} +1 -1
  13. package/dist/cli/{index-jfgr5gye.js → index-5cb86007.js} +1 -1
  14. package/dist/cli/{index-wg3r6acj.js → index-hw9b2xng.js} +5 -1
  15. package/dist/cli/{index-j710h2ge.js → index-qqabjns2.js} +6 -6
  16. package/dist/cli/{index-pv2xmc9k.js → index-vq2321gg.js} +1 -1
  17. package/dist/cli/{index-xw0bcy0v.js → index-x7qck34v.js} +2 -2
  18. package/dist/cli/{index-8ra2qpk8.js → index-yhqt45de.js} +9 -9
  19. package/dist/cli/index.js +4 -4
  20. package/dist/cli/{pending-delegations-pz61mrsz.js → pending-delegations-rd40tv9s.js} +7 -1
  21. package/dist/cli/{schema-c2dbzhm8.js → schema-8d32b2v6.js} +1 -1
  22. package/dist/index.js +712 -342
  23. package/dist/tools/dispatch-lanes.d.ts +14 -3
  24. package/dist/tools/index.d.ts +1 -0
  25. package/dist/tools/manifest.d.ts +1 -0
  26. package/dist/tools/retrieve-lane-output.d.ts +2 -0
  27. package/dist/tools/tool-metadata.d.ts +4 -0
  28. package/package.json +1 -1
@@ -138,6 +138,8 @@ Before writing under `.swarm/`, verify `.swarm/` is ignored or locally excluded.
138
138
 
139
139
  Collect every async batch with `collect_lane_results` before consuming its ledger output or advancing to a dependent step. If `dispatch_lanes_async` or `collect_lane_results` is unavailable, fall back to blocking `dispatch_lanes`; if deterministic dispatch is unavailable, run isolated local passes and record that fallback. Do not run dependent inventory passes merely to keep agents busy. Missing dependency context is `unknown`, not guessed.
140
140
 
141
+ For every collected or blocking lane result, treat `output` as a preview when `output_ref` is present. Call `retrieve_lane_output` and use the full artifact before consuming inventory ledgers, linking claims, deciding that a unit produced no candidates, or advancing a dependent step. If a lane is degraded, incomplete, truncated without a usable ref, missing, stale, cancelled, or failed, record the affected coverage unit as a limitation and re-dispatch a narrower lane or mark it UNVERIFIED; do not infer absence from preview text.
142
+
141
143
  ## Phase 0 inventory
142
144
 
143
145
  ### 0A — Bootstrap and prior context
@@ -207,6 +209,8 @@ Rules:
207
209
 
208
210
  Every dispatch includes selected track(s), exact file list or surface IDs, source-of-truth packet, repository-context packet, relevant ledgers, the applicable `TRACK_DEPTH_PLAN`, candidate format, `out_of_scope_note` rule, and anti-cursory/non-dilution reminder. Prefer `dispatch_lanes_async` for independent candidate-generation coverage units so the Architect can continue building the review ledger, coverage map, and validation routing while lanes inspect subsystems. Call `collect_lane_results` before Phase 2 reviewer validation; no candidate may be routed, counted, or synthesized until its async batch has settled or been explicitly marked blocked/skipped.
209
211
 
212
+ If candidate-generation lane results include `output_ref`, retrieve and parse the full artifact before candidate counting, deduplication, routing, or synthesis. Preview-only, degraded, or incomplete lane output is a coverage limitation, not negative evidence.
213
+
210
214
  File-size rule: no more than 15 files per deep pass; no more than 8 dense files per deep pass. Dense = >300 logical lines, multiple unrelated responsibilities, or interleaved UI/state/network/security logic. No sampling inside assigned scope. Large selections require more deep passes, not larger batches or lower depth.
211
215
 
212
216
  Candidate micro-loop:
@@ -113,7 +113,12 @@ Do NOT share other agents' responses at this stage.
113
113
  unavailable. The `round1Responses` array will contain
114
114
  entries with `memberId` of `council_generalist`, `council_skeptic`, and
115
115
  `council_domain_expert` and `role` of `generalist`, `skeptic`, and
116
- `domain_expert` respectively. These come from the agents' JSON output; no
116
+ `domain_expert` respectively. If any lane result has `output_ref`, call
117
+ `retrieve_lane_output` and parse the full artifact rather than the preview.
118
+ If a lane is degraded, incomplete, truncated without a usable ref, missing,
119
+ stale, cancelled, or failed, treat the council round as blocked or incomplete;
120
+ do not synthesize from partial member JSON.
121
+ These come from the agents' JSON output; no
117
122
  manual construction is needed.
118
123
 
119
124
  #### Synthesis and Deliberation (when council.general.deliberate is true; default true)
@@ -75,6 +75,8 @@ Explorer missions are dispatched in parallel waves. Launch the wave promptly —
75
75
 
76
76
  At the Step 4 boundary, call `collect_lane_results` with `wait: true` for every open wave batch. Treat missing, stale, cancelled, or failed lanes as explicit coverage gaps; do not silently proceed past a required lane. If `dispatch_lanes_async` is unavailable, use blocking `dispatch_lanes` or parallel Task calls and record that async advisory lanes were unavailable.
77
77
 
78
+ When a collected or blocking lane result includes `output_ref`, treat `output` as a preview and call `retrieve_lane_output` before extracting candidate findings or declaring a lane clean. If the result is `output_degraded`, `transcript_incomplete`, truncated without a usable ref, missing, stale, cancelled, or failed, record the lane as a coverage gap and re-dispatch a narrower lane or mark the affected findings/coverage UNVERIFIED.
79
+
78
80
  Explorers generate CANDIDATE FINDINGS only — they do NOT make verdicts. All findings are unverified until Step 5.
79
81
 
80
82
  ## Step 4 — Normalize Candidates
@@ -128,6 +128,12 @@ that async advisory lanes were unavailable.
128
128
 
129
129
  ## Step 5 — Dual-Reviewer Claim Verification
130
130
 
131
+ When a lane result includes `output_ref`, treat `output` as a preview and call
132
+ `retrieve_lane_output` before extracting claims, summarizing a subtopic, or marking
133
+ the subtopic clean. If the result is `output_degraded`, `transcript_incomplete`, or
134
+ truncated without a usable ref, mark the affected subtopic UNVERIFIED or
135
+ re-dispatch a narrower lane; do not treat preview absence as evidence absence.
136
+
131
137
  Split the candidate findings into 2 shards. Dispatch 2 parallel
132
138
  `the active swarm's reviewer agent` calls. Each reviewer receives its shard plus
133
139
  the relevant RESEARCH CONTEXT and the instruction:
@@ -172,6 +172,12 @@ Missing, stale, cancelled, or failed lanes remain explicit ledger limitations.
172
172
  If `dispatch_lanes_async` is unavailable, use blocking verification and record
173
173
  that async advisory lanes were unavailable.
174
174
 
175
+ When a verification lane result includes `output_ref`, treat `output` as a
176
+ preview and call `retrieve_lane_output` before using it to classify, resolve,
177
+ disprove, or group feedback items. If the result is `output_degraded`,
178
+ `transcript_incomplete`, or truncated without a usable ref, keep the affected
179
+ ledger items as `NEEDS_MORE_EVIDENCE` or re-dispatch a narrower read-only lane.
180
+
175
181
  ### CI matrix cascade check (do this before fixing)
176
182
 
177
183
  When the PR's `unit` job is a matrix across multiple OSes and downstream jobs
@@ -495,6 +495,8 @@ Launch all base lanes with `dispatch_lanes_async` when available. Pass the six l
495
495
 
496
496
  Before Phase 4 or synthesis, call `collect_lane_results` with `wait: true` for the base-lane batch and treat the collected `lane_results` as the join barrier. Missing, stale, cancelled, or failed base lanes are explicit review coverage gaps. If `dispatch_lanes_async` is unavailable, use blocking `dispatch_lanes`; if that is also unavailable, simulate isolated passes. Do not let one lane's conclusions bias another lane, and record unavailable deterministic dispatch in the validation gate.
497
497
 
498
+ When any collected or blocking `lane_results[]` item has `output_ref`, treat `output` as a preview only. Call `retrieve_lane_output` and consume the full artifact before extracting candidates, deciding that a lane produced no candidates, or routing work to reviewers. If a lane has `output_truncated: true`, `output_degraded: true`, `transcript_incomplete: true`, or no usable `output_ref`, record an explicit coverage gap and re-dispatch a narrower lane or mark affected candidates/coverage UNVERIFIED; never infer candidate absence from a preview.
499
+
498
500
  **lane id uniqueness for parallel dispatches:** When re-dispatching failed or re-running explorer lanes, every `dispatch_lanes_async` or `dispatch_lanes` lane `id` MUST be unique within that dispatch batch and should include lane and attempt suffixes (e.g. `pr_review_explore_lane1_attempt2`). Never reuse an id in the same batch unless intentionally replacing that exact lane before dispatch.
499
501
 
500
502
  Explorers optimize for recall. Over-reporting is expected. Explorers produce candidates only.
@@ -535,6 +537,8 @@ Explorers must not use `CONFIRMED`, `DISPROVED`, or `PRE_EXISTING`.
535
537
 
536
538
  After `collect_lane_results` returns for base lanes, inspect the context pack risk triggers. Launch focused micro-lanes for triggered categories only, using `dispatch_lanes_async` again when more than one read-only micro-lane is needed. Collect every micro-lane batch with `wait: true` before reviewer classification. Do not launch irrelevant micro-lanes.
537
539
 
540
+ Apply the same `output_ref` rule to micro-lanes: retrieve full output before candidate routing, and treat degraded or incomplete lane artifacts as UNVERIFIED coverage rather than as clean negative evidence.
541
+
538
542
  Each micro-lane receives:
539
543
 
540
544
  - exact files and hunks in scope,
@@ -0,0 +1,72 @@
1
+ import { z } from 'zod';
2
+ export declare const LANE_OUTPUT_REF_PREFIX = "L1";
3
+ export declare const MAX_LANE_OUTPUT_STORED_BYTES: number;
4
+ declare const LaneOutputArtifactSchema: z.ZodObject<{
5
+ schemaVersion: z.ZodLiteral<1>;
6
+ ref: z.ZodString;
7
+ batchId: z.ZodString;
8
+ laneId: z.ZodString;
9
+ agent: z.ZodString;
10
+ role: z.ZodString;
11
+ sessionId: z.ZodOptional<z.ZodString>;
12
+ parentSessionId: z.ZodOptional<z.ZodString>;
13
+ mode: z.ZodOptional<z.ZodString>;
14
+ source: z.ZodEnum<{
15
+ dispatch_lanes: "dispatch_lanes";
16
+ collect_lane_results: "collect_lane_results";
17
+ }>;
18
+ text: z.ZodString;
19
+ chars: z.ZodNumber;
20
+ bytes: z.ZodNumber;
21
+ digest: z.ZodString;
22
+ messageCount: z.ZodOptional<z.ZodNumber>;
23
+ transcriptIncomplete: z.ZodOptional<z.ZodBoolean>;
24
+ createdAt: z.ZodString;
25
+ updatedAt: z.ZodString;
26
+ }, z.core.$strict>;
27
+ export type LaneOutputSource = z.infer<typeof LaneOutputArtifactSchema>['source'];
28
+ export type LaneOutputArtifact = z.infer<typeof LaneOutputArtifactSchema>;
29
+ export interface StoreLaneOutputInput {
30
+ batchId: string;
31
+ laneId: string;
32
+ agent: string;
33
+ role: string;
34
+ sessionId?: string;
35
+ parentSessionId?: string;
36
+ mode?: string;
37
+ source: LaneOutputSource;
38
+ text: string;
39
+ messageCount?: number;
40
+ transcriptIncomplete?: boolean;
41
+ }
42
+ export interface StoreLaneOutputResult {
43
+ ref?: string;
44
+ digest: string;
45
+ chars: number;
46
+ bytes: number;
47
+ degraded: boolean;
48
+ error?: string;
49
+ }
50
+ export interface ReadLaneOutputResult {
51
+ artifact: LaneOutputArtifact;
52
+ }
53
+ export declare function storeLaneOutput(directory: string, input: StoreLaneOutputInput, now?: () => number): StoreLaneOutputResult;
54
+ export declare function readLaneOutput(directory: string, ref: string): ReadLaneOutputResult | null;
55
+ export declare function buildLaneOutputPreview(args: {
56
+ text: string;
57
+ ref?: string;
58
+ degraded?: boolean;
59
+ maxChars: number;
60
+ }): {
61
+ output: string;
62
+ output_chars: number;
63
+ output_truncated: boolean;
64
+ };
65
+ export declare function paginateLaneOutput(text: string, offset: number, limit: number): {
66
+ totalLines: number;
67
+ startLine: number;
68
+ endLine: number;
69
+ content: string;
70
+ exhausted: boolean;
71
+ };
72
+ export {};
@@ -80,6 +80,12 @@ export interface BackgroundDelegationResult {
80
80
  chars: number;
81
81
  truncated: boolean;
82
82
  digest: string;
83
+ outputRef?: string;
84
+ outputPreviewChars?: number;
85
+ outputDegraded?: boolean;
86
+ outputArtifactError?: string;
87
+ transcriptIncomplete?: boolean;
88
+ messageCount?: number;
83
89
  }
84
90
  /**
85
91
  * Read and fold the store to the latest snapshot per correlationId. Lock-free and
@@ -12,8 +12,8 @@ import {
12
12
  shouldRunOnStartup,
13
13
  writeBackupArtifact,
14
14
  writeDoctorArtifact
15
- } from "./index-a82d6d87.js";
16
- import"./index-wg3r6acj.js";
15
+ } from "./index-0sxvwjt0.js";
16
+ import"./index-hw9b2xng.js";
17
17
  import"./index-zfsbaaqh.js";
18
18
  import"./index-p0arc26j.js";
19
19
  import"./index-yx44zd0p.js";
@@ -1,14 +1,14 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-xw0bcy0v.js";
5
- import"./index-8ra2qpk8.js";
6
- import"./index-pv2xmc9k.js";
4
+ } from "./index-x7qck34v.js";
5
+ import"./index-yhqt45de.js";
6
+ import"./index-vq2321gg.js";
7
7
  import"./index-yhsmmv2z.js";
8
8
  import"./index-d9fbxaqd.js";
9
9
  import"./index-e8pk68cc.js";
10
- import"./index-a82d6d87.js";
11
- import"./index-wg3r6acj.js";
10
+ import"./index-0sxvwjt0.js";
11
+ import"./index-hw9b2xng.js";
12
12
  import"./index-red8fm8p.js";
13
13
  import"./index-f8r50m3h.js";
14
14
  import"./index-hz59hg4h.js";
@@ -1,9 +1,9 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailLog
4
- } from "./index-jfgr5gye.js";
5
- import"./index-pv2xmc9k.js";
6
- import"./index-wg3r6acj.js";
4
+ } from "./index-5cb86007.js";
5
+ import"./index-vq2321gg.js";
6
+ import"./index-hw9b2xng.js";
7
7
  import"./index-zfsbaaqh.js";
8
8
  import"./index-p0arc26j.js";
9
9
  import"./index-yx44zd0p.js";
@@ -3,7 +3,7 @@ import {
3
3
  ALL_AGENT_NAMES,
4
4
  PluginConfigSchema,
5
5
  stripKnownSwarmPrefix
6
- } from "./index-wg3r6acj.js";
6
+ } from "./index-hw9b2xng.js";
7
7
  import {
8
8
  log
9
9
  } from "./index-yx44zd0p.js";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  redactPath,
4
4
  redactShellCommand
5
- } from "./index-pv2xmc9k.js";
5
+ } from "./index-vq2321gg.js";
6
6
 
7
7
  // src/services/guardrail-log-service.ts
8
8
  import * as fs from "fs/promises";
@@ -247,6 +247,10 @@ var TOOL_METADATA = {
247
247
  "test_engineer"
248
248
  ]
249
249
  },
250
+ retrieve_lane_output: {
251
+ description: "retrieve paged full dispatch lane output by output_ref; use before consuming truncated lane previews or routing candidates from lane results",
252
+ agents: ["architect"]
253
+ },
250
254
  extract_code_blocks: {
251
255
  description: "extract code blocks from text content and save them to files",
252
256
  agents: [
@@ -1089,7 +1093,7 @@ var SummaryConfigSchema = exports_external.object({
1089
1093
  max_summary_chars: exports_external.number().min(100).max(5000).default(1000),
1090
1094
  max_stored_bytes: exports_external.number().min(10240).max(104857600).default(10485760),
1091
1095
  retention_days: exports_external.number().min(1).max(365).default(7),
1092
- exempt_tools: exports_external.array(exports_external.string()).default(["retrieve_summary", "task", "read"])
1096
+ exempt_tools: exports_external.array(exports_external.string()).default(["retrieve_summary", "retrieve_lane_output", "task", "read"])
1093
1097
  });
1094
1098
  var ReviewPassesConfigSchema = exports_external.object({
1095
1099
  always_security_review: exports_external.boolean().default(false),
@@ -1,10 +1,10 @@
1
1
  // @bun
2
2
  import {
3
3
  handleGuardrailExplain
4
- } from "./index-xw0bcy0v.js";
4
+ } from "./index-x7qck34v.js";
5
5
  import {
6
6
  handleGuardrailLog
7
- } from "./index-jfgr5gye.js";
7
+ } from "./index-5cb86007.js";
8
8
  import {
9
9
  COMMAND_REGISTRY,
10
10
  SWARM_COMMAND_TOOL_ALLOWLIST,
@@ -76,17 +76,17 @@ import {
76
76
  handleWriteRetroCommand,
77
77
  normalizeSwarmCommandInput,
78
78
  resolveCommand
79
- } from "./index-8ra2qpk8.js";
80
- import"./index-pv2xmc9k.js";
79
+ } from "./index-yhqt45de.js";
80
+ import"./index-vq2321gg.js";
81
81
  import"./index-yhsmmv2z.js";
82
82
  import"./index-d9fbxaqd.js";
83
83
  import"./index-e8pk68cc.js";
84
- import"./index-a82d6d87.js";
84
+ import"./index-0sxvwjt0.js";
85
85
  import {
86
86
  AGENT_TOOL_MAP,
87
87
  ORCHESTRATOR_NAME,
88
88
  stripKnownSwarmPrefix
89
- } from "./index-wg3r6acj.js";
89
+ } from "./index-hw9b2xng.js";
90
90
  import"./index-red8fm8p.js";
91
91
  import"./index-f8r50m3h.js";
92
92
  import"./index-hz59hg4h.js";
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  stripKnownSwarmPrefix
4
- } from "./index-wg3r6acj.js";
4
+ } from "./index-hw9b2xng.js";
5
5
  import {
6
6
  init_logger,
7
7
  warn
@@ -12,14 +12,14 @@ import {
12
12
  detectPosixWrites,
13
13
  detectWindowsWrites,
14
14
  resolveWriteTargets
15
- } from "./index-8ra2qpk8.js";
15
+ } from "./index-yhqt45de.js";
16
16
  import {
17
17
  checkFileAuthority,
18
18
  classifyFile,
19
19
  isInDeclaredScope,
20
20
  redactPath,
21
21
  redactShellCommand
22
- } from "./index-pv2xmc9k.js";
22
+ } from "./index-vq2321gg.js";
23
23
 
24
24
  // src/services/guardrail-explain-service.ts
25
25
  import path from "path";
@@ -45,7 +45,7 @@ import {
45
45
  readDoctorArtifact,
46
46
  removeStraySwarmDir,
47
47
  runConfigDoctor
48
- } from "./index-a82d6d87.js";
48
+ } from "./index-0sxvwjt0.js";
49
49
  import {
50
50
  AGENT_TOOL_MAP,
51
51
  ALL_SUBAGENT_NAMES,
@@ -57,7 +57,7 @@ import {
57
57
  TOOL_NAME_SET,
58
58
  resolveExternalSkillsConfig,
59
59
  stripKnownSwarmPrefix
60
- } from "./index-wg3r6acj.js";
60
+ } from "./index-hw9b2xng.js";
61
61
  import {
62
62
  PlanSchema,
63
63
  RetrospectiveEvidenceSchema,
@@ -879,7 +879,7 @@ var init_executor = __esm(() => {
879
879
  // package.json
880
880
  var package_default = {
881
881
  name: "opencode-swarm",
882
- version: "7.84.0",
882
+ version: "7.85.0",
883
883
  description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
884
884
  main: "dist/index.js",
885
885
  types: "dist/index.d.ts",
@@ -11303,7 +11303,7 @@ async function runFinalizeStage(ctx) {
11303
11303
  }
11304
11304
  }
11305
11305
  try {
11306
- const { CuratorConfigSchema: CCS } = await import("./schema-c2dbzhm8.js");
11306
+ const { CuratorConfigSchema: CCS } = await import("./schema-8d32b2v6.js");
11307
11307
  const { config: pmLoadedConfig } = _internals19.loadPluginConfigWithMeta(ctx.directory);
11308
11308
  const curatorCfg = CCS.parse(pmLoadedConfig.curator ?? {});
11309
11309
  if (curatorCfg.enabled && curatorCfg.postmortem_enabled) {
@@ -14384,7 +14384,7 @@ async function handleDoctorCommand(directory, args) {
14384
14384
  const result = runConfigDoctor(config, directory);
14385
14385
  let output;
14386
14386
  if (enableAutoFix && result.hasAutoFixableIssues) {
14387
- const { runConfigDoctorWithFixes } = await import("./config-doctor-4tcdd9vt.js");
14387
+ const { runConfigDoctorWithFixes } = await import("./config-doctor-zejarrr6.js");
14388
14388
  const fixResult = await runConfigDoctorWithFixes(directory, config, true);
14389
14389
  output = formatDoctorMarkdown(fixResult.result);
14390
14390
  } else {
@@ -27978,7 +27978,7 @@ function buildDetailedHelp(commandName, entry) {
27978
27978
  async function handleHelpCommand(ctx) {
27979
27979
  const targetCommand = ctx.args.join(" ");
27980
27980
  if (!targetCommand) {
27981
- const { buildHelpText } = await import("./index-j710h2ge.js");
27981
+ const { buildHelpText } = await import("./index-qqabjns2.js");
27982
27982
  return buildHelpText();
27983
27983
  }
27984
27984
  const tokens = targetCommand.split(/\s+/);
@@ -27987,7 +27987,7 @@ async function handleHelpCommand(ctx) {
27987
27987
  return _internals41.buildDetailedHelp(resolved.key, resolved.entry);
27988
27988
  }
27989
27989
  const similar = _internals41.findSimilarCommands(targetCommand);
27990
- const { buildHelpText: fullHelp } = await import("./index-j710h2ge.js");
27990
+ const { buildHelpText: fullHelp } = await import("./index-qqabjns2.js");
27991
27991
  if (similar.length > 0) {
27992
27992
  return `Command '/swarm ${targetCommand}' not found.
27993
27993
 
@@ -28120,7 +28120,7 @@ var COMMAND_REGISTRY = {
28120
28120
  },
28121
28121
  "guardrail explain": {
28122
28122
  handler: async (ctx) => {
28123
- const { handleGuardrailExplain } = await import("./guardrail-explain-tcamcdfy.js");
28123
+ const { handleGuardrailExplain } = await import("./guardrail-explain-w4txg349.js");
28124
28124
  return handleGuardrailExplain(ctx.directory, ctx.args);
28125
28125
  },
28126
28126
  description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
@@ -28130,7 +28130,7 @@ var COMMAND_REGISTRY = {
28130
28130
  },
28131
28131
  "guardrail-log": {
28132
28132
  handler: async (ctx) => {
28133
- const { handleGuardrailLog } = await import("./guardrail-log-fd14n96q.js");
28133
+ const { handleGuardrailLog } = await import("./guardrail-log-80116wmz.js");
28134
28134
  return handleGuardrailLog(ctx.directory, ctx.args);
28135
28135
  },
28136
28136
  description: "Read the guardrail decision log (use --blocks-only for blocks)",
package/dist/cli/index.js CHANGED
@@ -7,15 +7,15 @@ import {
7
7
  getPluginLockFilePaths,
8
8
  package_default,
9
9
  resolveCommand
10
- } from "./index-8ra2qpk8.js";
11
- import"./index-pv2xmc9k.js";
10
+ } from "./index-yhqt45de.js";
11
+ import"./index-vq2321gg.js";
12
12
  import"./index-yhsmmv2z.js";
13
13
  import"./index-d9fbxaqd.js";
14
14
  import"./index-e8pk68cc.js";
15
- import"./index-a82d6d87.js";
15
+ import"./index-0sxvwjt0.js";
16
16
  import {
17
17
  DEFAULT_AGENT_CONFIGS
18
- } from "./index-wg3r6acj.js";
18
+ } from "./index-hw9b2xng.js";
19
19
  import"./index-red8fm8p.js";
20
20
  import"./index-f8r50m3h.js";
21
21
  import"./index-hz59hg4h.js";
@@ -32,7 +32,13 @@ var ResultSchema = exports_external.object({
32
32
  error: exports_external.string().optional(),
33
33
  chars: exports_external.number(),
34
34
  truncated: exports_external.boolean(),
35
- digest: exports_external.string()
35
+ digest: exports_external.string(),
36
+ outputRef: exports_external.string().optional(),
37
+ outputPreviewChars: exports_external.number().optional(),
38
+ outputDegraded: exports_external.boolean().optional(),
39
+ outputArtifactError: exports_external.string().optional(),
40
+ transcriptIncomplete: exports_external.boolean().optional(),
41
+ messageCount: exports_external.number().optional()
36
42
  }).strict();
37
43
  var WorkspaceSchema = exports_external.object({
38
44
  directory: exports_external.string(),
@@ -80,7 +80,7 @@ import {
80
80
  resolveGeneratedAgentRole,
81
81
  resolveGuardrailsConfig,
82
82
  stripKnownSwarmPrefix
83
- } from "./index-wg3r6acj.js";
83
+ } from "./index-hw9b2xng.js";
84
84
  import"./index-p0arc26j.js";
85
85
  import"./index-293f68mj.js";
86
86
  import"./index-a76rekgs.js";