opencode-swarm 7.94.1 → 7.96.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.
- package/.opencode/skills/council/SKILL.md +4 -2
- package/.opencode/skills/deep-research/SKILL.md +13 -7
- package/.opencode/skills/execute/SKILL.md +2 -2
- package/.opencode/skills/swarm-pr-review/SKILL.md +1 -1
- package/dist/cli/{config-doctor-ecmx9scq.js → config-doctor-h1xrvq83.js} +2 -2
- package/dist/cli/{evidence-summary-service-mr9sns2d.js → evidence-summary-service-g4x5e3e3.js} +1 -1
- package/dist/cli/{guardrail-explain-we8mhb6y.js → guardrail-explain-0hw3kyab.js} +6 -6
- package/dist/cli/{guardrail-log-0q6pvbpx.js → guardrail-log-9yyeccv5.js} +3 -3
- package/dist/cli/{index-y1z6yaq4.js → index-4c5jpmn9.js} +3 -3
- package/dist/cli/{index-dgjsa6hy.js → index-b223mczb.js} +1 -1
- package/dist/cli/{index-q8qx8p47.js → index-d3ds25vx.js} +2 -2
- package/dist/cli/{index-a59fjg9v.js → index-q0t7gpf2.js} +17 -13
- package/dist/cli/{index-jv0bz96v.js → index-r0zbs7ny.js} +7 -7
- package/dist/cli/{index-tx5czwpd.js → index-rdc6nvmw.js} +1 -1
- package/dist/cli/{index-79dcqsg9.js → index-tqbb2jx6.js} +29 -2
- package/dist/cli/{index-vqg905es.js → index-xx3sv77e.js} +1 -1
- package/dist/cli/index.js +5 -5
- package/dist/cli/{schema-jy18ftky.js → schema-a8fneygm.js} +1 -1
- package/dist/index.js +2222 -1037
- package/dist/plan/checkpoint.d.ts +16 -2
- package/dist/tools/actionlint-scan.d.ts +29 -0
- package/dist/tools/ast-grep.d.ts +26 -0
- package/dist/tools/dispatch-lanes.d.ts +18 -0
- package/dist/tools/gh-evidence.d.ts +10 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/manifest.d.ts +4 -0
- package/dist/tools/osv-scan.d.ts +27 -0
- package/dist/tools/search.d.ts +27 -0
- package/dist/tools/tool-metadata.d.ts +16 -0
- package/dist/utils/external-tool-runner.d.ts +25 -0
- package/package.json +1 -1
|
@@ -114,8 +114,10 @@ Do NOT share other agents' responses at this stage.
|
|
|
114
114
|
(synthesis outline, citation normalization, disagreement categories). Only
|
|
115
115
|
use `wait: true` if lanes are still pending and no more independent work
|
|
116
116
|
remains. All three lanes must be settled before proceeding to synthesis.
|
|
117
|
-
If `dispatch_lanes_async` is unavailable, use blocking
|
|
118
|
-
and record that async advisory lanes were unavailable
|
|
117
|
+
If `dispatch_lanes_async` is unavailable, use blocking `dispatch_lanes`
|
|
118
|
+
and record that async advisory lanes were unavailable; do not substitute
|
|
119
|
+
per-agent Task calls for this fallback unless lane tools are unavailable and
|
|
120
|
+
you explicitly verify equivalent agent type, prompt, scope, and isolation. The
|
|
119
121
|
`round1Responses` array will contain entries with `memberId` of
|
|
120
122
|
`council_generalist`, `council_skeptic`, and `council_domain_expert` and
|
|
121
123
|
`role` of `generalist`, `skeptic`, and `domain_expert` respectively. If
|
|
@@ -118,13 +118,19 @@ include:
|
|
|
118
118
|
- `OUTPUT`: claims with evidence refs, contradictions noted, confidence (0–1)
|
|
119
119
|
- `SKILLS: none`
|
|
120
120
|
|
|
121
|
-
The sme synthesizes only from the provided evidence — it does not fetch.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
121
|
+
The sme synthesizes only from the provided evidence — it does not fetch. While
|
|
122
|
+
synthesis lanes run, poll with `collect_lane_results` without `wait` (or
|
|
123
|
+
`wait: false`) to process completed worker responses as they settle while
|
|
124
|
+
continuing independent architect work between polls. Before Step 5, call
|
|
125
|
+
`collect_lane_results` with `wait: true` for every open synthesis batch only if
|
|
126
|
+
lanes are still pending and no independent work remains. Collect all completed
|
|
127
|
+
worker responses into a candidate findings set, each finding tagged with its
|
|
128
|
+
subtopic, evidence refs, and the worker's confidence. Treat missing, stale,
|
|
129
|
+
cancelled, or failed lanes as explicit coverage gaps. If `dispatch_lanes_async`
|
|
130
|
+
is unavailable, use blocking `dispatch_lanes` and record that async advisory
|
|
131
|
+
lanes were unavailable; do not substitute per-agent Task calls for this fallback
|
|
132
|
+
unless lane tools are unavailable and you explicitly verify equivalent agent
|
|
133
|
+
type, prompt, scope, and isolation.
|
|
128
134
|
|
|
129
135
|
## Step 5 — Dual-Reviewer Claim Verification
|
|
130
136
|
|
|
@@ -204,9 +204,9 @@ This step supplements (not replaces) the existing regression-sweep and test-drif
|
|
|
204
204
|
|
|
205
205
|
## Dispatch-lanes empty-output fallback
|
|
206
206
|
|
|
207
|
-
|
|
207
|
+
This fallback applies only to a settled, blocking `dispatch_lanes` result with empty output (0 chars, `output_digest` matching SHA-256 of empty string `e3b0c442...b855`). It does **not** apply to `dispatch_lanes_async` rows that are still pending/running, an early `collect_lane_results` poll, or an async result whose full text is available through `retrieve_lane_output`.
|
|
208
208
|
|
|
209
|
-
**
|
|
209
|
+
For read-only advisory lanes, do **not** jump straight to Task. First re-collect async lanes with `collect_lane_results` (`wait: true` when no independent work remains) and inspect any `output_ref` with `retrieve_lane_output`. If a settled blocking `dispatch_lanes` lane is genuinely empty, prefer retrying the same agent through `dispatch_lanes_async` when promptAsync is available. Use the **Task tool** (`Task(subagent_type=..., prompt=...)`) only as a last-resort equivalent dispatch mechanism after the lane tools are unavailable or have produced a confirmed empty settled result; record the same agent, same prompt, same scope, and which dispatch mechanism succeeded.
|
|
210
210
|
|
|
211
211
|
If the Task tool also returns empty, **then** escalate to substitute review (4-member council without the broken agent) or surface to the user. Never fabricate or substitute a verdict for the missing agent.
|
|
212
212
|
|
|
@@ -517,7 +517,7 @@ Before Phase 4 or synthesis, all base lanes must be settled. `dispatch_lanes_asy
|
|
|
517
517
|
|
|
518
518
|
For ANY lane that failed (either mode):
|
|
519
519
|
1. **Retry** (max 2 attempts) with materially different parameters — different session, different prompt decomposition, or blocking `dispatch_lanes`.
|
|
520
|
-
2. If retries fail, **deploy an equivalent alternative** and **verify equivalence**: same agent type, same prompt, same scope, same isolation. State the equivalence verification explicitly.
|
|
520
|
+
2. If retries fail, **deploy an equivalent alternative** and **verify equivalence**: same agent type, same prompt, same scope, same isolation. State the equivalence verification explicitly. Task is not an early-poll or empty-partial-output fallback; use it only as a last-resort equivalent dispatch mechanism after `dispatch_lanes_async` is unavailable or a settled lane result is confirmed failed/empty, and after blocking `dispatch_lanes` is unavailable or inappropriate. Use `retrieve_lane_output` to inspect the full artifact before declaring equivalence or failure.
|
|
521
521
|
3. If no equivalent alternative can be verified, **report to the user as INCOMPLETE**. Present partial findings from successful lanes alongside the INCOMPLETE verdict. The user decides whether to accept reduced coverage. The architect NEVER makes that call.
|
|
522
522
|
|
|
523
523
|
### Candidate extraction via parser
|
|
@@ -12,8 +12,8 @@ import {
|
|
|
12
12
|
shouldRunOnStartup,
|
|
13
13
|
writeBackupArtifact,
|
|
14
14
|
writeDoctorArtifact
|
|
15
|
-
} from "./index-
|
|
16
|
-
import"./index-
|
|
15
|
+
} from "./index-xx3sv77e.js";
|
|
16
|
+
import"./index-tqbb2jx6.js";
|
|
17
17
|
import"./index-5e4e2hvv.js";
|
|
18
18
|
import"./index-p0arc26j.js";
|
|
19
19
|
import"./index-zgwm4ryv.js";
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
handleGuardrailExplain
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
6
|
-
import"./index-
|
|
4
|
+
} from "./index-d3ds25vx.js";
|
|
5
|
+
import"./index-q0t7gpf2.js";
|
|
6
|
+
import"./index-b223mczb.js";
|
|
7
7
|
import"./index-2a6ppa65.js";
|
|
8
8
|
import"./index-fjxjb66n.js";
|
|
9
9
|
import"./index-hb10a2g8.js";
|
|
10
|
-
import"./index-
|
|
11
|
-
import"./index-
|
|
12
|
-
import"./index-
|
|
10
|
+
import"./index-xx3sv77e.js";
|
|
11
|
+
import"./index-tqbb2jx6.js";
|
|
12
|
+
import"./index-4c5jpmn9.js";
|
|
13
13
|
import"./index-adz3nk9b.js";
|
|
14
14
|
import"./index-v4fcn4tr.js";
|
|
15
15
|
import"./index-mh1ej70w.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
handleGuardrailLog
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
6
|
-
import"./index-
|
|
4
|
+
} from "./index-rdc6nvmw.js";
|
|
5
|
+
import"./index-b223mczb.js";
|
|
6
|
+
import"./index-tqbb2jx6.js";
|
|
7
7
|
import"./index-5e4e2hvv.js";
|
|
8
8
|
import"./index-p0arc26j.js";
|
|
9
9
|
import"./index-zgwm4ryv.js";
|
|
@@ -2236,7 +2236,7 @@ async function loadPlan(directory) {
|
|
|
2236
2236
|
await rebuildPlan(directory, rebuilt, {
|
|
2237
2237
|
reason: "ledger_hash_mismatch_recovery"
|
|
2238
2238
|
});
|
|
2239
|
-
warn("[loadPlan] Rebuilt plan from ledger. Checkpoint available at .swarm/SWARM_PLAN.md if it exists.");
|
|
2239
|
+
warn("[loadPlan] Rebuilt plan from ledger. Checkpoint available at .swarm/plan-export/SWARM_PLAN.md if it exists.");
|
|
2240
2240
|
return rebuilt;
|
|
2241
2241
|
}
|
|
2242
2242
|
} catch (replayError) {
|
|
@@ -2259,7 +2259,7 @@ async function loadPlan(directory) {
|
|
|
2259
2259
|
return approved.plan;
|
|
2260
2260
|
}
|
|
2261
2261
|
} catch {}
|
|
2262
|
-
warn(`[loadPlan] Ledger replay failed during hash-mismatch rebuild: ${replayError instanceof Error ? replayError.message : String(replayError)}. Returning stale plan.json. To recover: check .swarm/SWARM_PLAN.md for a checkpoint, or run /swarm reset-session.`);
|
|
2262
|
+
warn(`[loadPlan] Ledger replay failed during hash-mismatch rebuild: ${replayError instanceof Error ? replayError.message : String(replayError)}. Returning stale plan.json. To recover: check .swarm/plan-export/SWARM_PLAN.md for a checkpoint, or run /swarm reset-session.`);
|
|
2263
2263
|
}
|
|
2264
2264
|
}
|
|
2265
2265
|
}
|
|
@@ -2306,7 +2306,7 @@ async function loadPlan(directory) {
|
|
|
2306
2306
|
return validated;
|
|
2307
2307
|
}
|
|
2308
2308
|
} catch (error2) {
|
|
2309
|
-
warn(`[loadPlan] plan.json validation failed: ${error2 instanceof Error ? error2.message : String(error2)}. Attempting rebuild from ledger. If rebuild fails, check .swarm/SWARM_PLAN.md for a checkpoint.`);
|
|
2309
|
+
warn(`[loadPlan] plan.json validation failed: ${error2 instanceof Error ? error2.message : String(error2)}. Attempting rebuild from ledger. If rebuild fails, check .swarm/plan-export/SWARM_PLAN.md for a checkpoint.`);
|
|
2310
2310
|
let rawPlanId = null;
|
|
2311
2311
|
try {
|
|
2312
2312
|
const rawParsed = JSON.parse(planJsonContent);
|
|
@@ -12,14 +12,14 @@ import {
|
|
|
12
12
|
detectPosixWrites,
|
|
13
13
|
detectWindowsWrites,
|
|
14
14
|
resolveWriteTargets
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-q0t7gpf2.js";
|
|
16
16
|
import {
|
|
17
17
|
checkFileAuthority,
|
|
18
18
|
classifyFile,
|
|
19
19
|
isInDeclaredScope,
|
|
20
20
|
redactPath,
|
|
21
21
|
redactShellCommand
|
|
22
|
-
} from "./index-
|
|
22
|
+
} from "./index-b223mczb.js";
|
|
23
23
|
|
|
24
24
|
// src/services/guardrail-explain-service.ts
|
|
25
25
|
import path from "path";
|
|
@@ -57,7 +57,7 @@ import {
|
|
|
57
57
|
readDoctorArtifact,
|
|
58
58
|
removeStraySwarmDir,
|
|
59
59
|
runConfigDoctor
|
|
60
|
-
} from "./index-
|
|
60
|
+
} from "./index-xx3sv77e.js";
|
|
61
61
|
import {
|
|
62
62
|
AGENT_TOOL_MAP,
|
|
63
63
|
ALL_SUBAGENT_NAMES,
|
|
@@ -70,7 +70,7 @@ import {
|
|
|
70
70
|
TOOL_NAME_SET,
|
|
71
71
|
resolveExternalSkillsConfig,
|
|
72
72
|
stripKnownSwarmPrefix
|
|
73
|
-
} from "./index-
|
|
73
|
+
} from "./index-tqbb2jx6.js";
|
|
74
74
|
import {
|
|
75
75
|
MAX_TRANSIENT_RETRIES,
|
|
76
76
|
PlanSchema,
|
|
@@ -114,7 +114,7 @@ import {
|
|
|
114
114
|
transientBackoff,
|
|
115
115
|
validateProjectRoot,
|
|
116
116
|
writeProjectedSpecSync
|
|
117
|
-
} from "./index-
|
|
117
|
+
} from "./index-4c5jpmn9.js";
|
|
118
118
|
import {
|
|
119
119
|
_internals as _internals2,
|
|
120
120
|
_internals1 as _internals3,
|
|
@@ -909,7 +909,7 @@ var init_executor = __esm(() => {
|
|
|
909
909
|
// package.json
|
|
910
910
|
var package_default = {
|
|
911
911
|
name: "opencode-swarm",
|
|
912
|
-
version: "7.
|
|
912
|
+
version: "7.96.0",
|
|
913
913
|
description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
914
914
|
main: "dist/index.js",
|
|
915
915
|
types: "dist/index.d.ts",
|
|
@@ -13070,7 +13070,7 @@ async function runFinalizeStage(ctx) {
|
|
|
13070
13070
|
}
|
|
13071
13071
|
}
|
|
13072
13072
|
try {
|
|
13073
|
-
const { CuratorConfigSchema: CCS } = await import("./schema-
|
|
13073
|
+
const { CuratorConfigSchema: CCS } = await import("./schema-a8fneygm.js");
|
|
13074
13074
|
const { config: pmLoadedConfig } = _internals20.loadPluginConfigWithMeta(ctx.directory);
|
|
13075
13075
|
const curatorCfg = CCS.parse(pmLoadedConfig.curator ?? {});
|
|
13076
13076
|
if (curatorCfg.enabled && curatorCfg.postmortem_enabled) {
|
|
@@ -13351,6 +13351,8 @@ async function runCleanStage(ctx) {
|
|
|
13351
13351
|
}
|
|
13352
13352
|
let swarmPlanFilesRemoved = 0;
|
|
13353
13353
|
const candidates = [
|
|
13354
|
+
path25.join(ctx.directory, ".swarm", "plan-export", "SWARM_PLAN.json"),
|
|
13355
|
+
path25.join(ctx.directory, ".swarm", "plan-export", "SWARM_PLAN.md"),
|
|
13354
13356
|
path25.join(ctx.directory, ".swarm", "SWARM_PLAN.json"),
|
|
13355
13357
|
path25.join(ctx.directory, ".swarm", "SWARM_PLAN.md"),
|
|
13356
13358
|
path25.join(ctx.directory, "SWARM_PLAN.json"),
|
|
@@ -13630,7 +13632,7 @@ This project was already finalized in a previous /swarm close run. The plan has
|
|
|
13630
13632
|
`- Removed ${cleanResult.configBackupsRemoved} stale config backup file(s)`
|
|
13631
13633
|
] : [],
|
|
13632
13634
|
...cleanResult.swarmPlanFilesRemoved > 0 ? [
|
|
13633
|
-
`- Removed ${cleanResult.swarmPlanFilesRemoved} SWARM_PLAN checkpoint artifact(s)`
|
|
13635
|
+
`- Removed ${cleanResult.swarmPlanFilesRemoved} SWARM_PLAN checkpoint artifact(s) from .swarm/plan-export/ and legacy locations`
|
|
13634
13636
|
] : [],
|
|
13635
13637
|
...ctx.planExists && !ctx.planAlreadyDone ? ["- Set non-completed phases/tasks to closed status"] : [],
|
|
13636
13638
|
...ctx.curationSucceeded && ctx.allLessons.length > 0 ? [`- Committed ${ctx.allLessons.length} lesson(s) to knowledge store`] : [],
|
|
@@ -16791,7 +16793,7 @@ async function handleDoctorCommand(directory, args) {
|
|
|
16791
16793
|
const result = runConfigDoctor(config, directory);
|
|
16792
16794
|
let output;
|
|
16793
16795
|
if (enableAutoFix && result.hasAutoFixableIssues) {
|
|
16794
|
-
const { runConfigDoctorWithFixes } = await import("./config-doctor-
|
|
16796
|
+
const { runConfigDoctorWithFixes } = await import("./config-doctor-h1xrvq83.js");
|
|
16795
16797
|
const fixResult = await runConfigDoctorWithFixes(directory, config, true);
|
|
16796
16798
|
output = formatDoctorMarkdown(fixResult.result);
|
|
16797
16799
|
} else {
|
|
@@ -17604,7 +17606,7 @@ async function handleEvidenceCommand(directory, args) {
|
|
|
17604
17606
|
return formatTaskEvidenceMarkdown(evidenceData);
|
|
17605
17607
|
}
|
|
17606
17608
|
async function handleEvidenceSummaryCommand(directory) {
|
|
17607
|
-
const { buildEvidenceSummary } = await import("./evidence-summary-service-
|
|
17609
|
+
const { buildEvidenceSummary } = await import("./evidence-summary-service-g4x5e3e3.js");
|
|
17608
17610
|
const artifact = await buildEvidenceSummary(directory);
|
|
17609
17611
|
if (!artifact) {
|
|
17610
17612
|
return "No plan found. Run `/swarm plan` to check plan status.";
|
|
@@ -29819,7 +29821,7 @@ async function handleResetCommand(directory, args) {
|
|
|
29819
29821
|
return [
|
|
29820
29822
|
"## Swarm Reset",
|
|
29821
29823
|
"",
|
|
29822
|
-
"\u26A0\uFE0F This will delete all swarm state from .swarm/ (plan, context, checkpoints, SWARM_PLAN artifacts)",
|
|
29824
|
+
"\u26A0\uFE0F This will delete all swarm state from .swarm/ (plan, context, checkpoints, SWARM_PLAN artifacts including .swarm/plan-export/)",
|
|
29823
29825
|
"",
|
|
29824
29826
|
"**Tip**: Run `/swarm export` first to backup your state.",
|
|
29825
29827
|
"",
|
|
@@ -29833,6 +29835,8 @@ async function handleResetCommand(directory, args) {
|
|
|
29833
29835
|
"context.md",
|
|
29834
29836
|
"SWARM_PLAN.md",
|
|
29835
29837
|
"SWARM_PLAN.json",
|
|
29838
|
+
"plan-export/SWARM_PLAN.md",
|
|
29839
|
+
"plan-export/SWARM_PLAN.json",
|
|
29836
29840
|
"checkpoints.json",
|
|
29837
29841
|
"events.jsonl"
|
|
29838
29842
|
];
|
|
@@ -31853,7 +31857,7 @@ function buildDetailedHelp(commandName, entry) {
|
|
|
31853
31857
|
async function handleHelpCommand(ctx) {
|
|
31854
31858
|
const targetCommand = ctx.args.join(" ");
|
|
31855
31859
|
if (!targetCommand) {
|
|
31856
|
-
const { buildHelpText } = await import("./index-
|
|
31860
|
+
const { buildHelpText } = await import("./index-r0zbs7ny.js");
|
|
31857
31861
|
return buildHelpText();
|
|
31858
31862
|
}
|
|
31859
31863
|
const tokens = targetCommand.split(/\s+/);
|
|
@@ -31862,7 +31866,7 @@ async function handleHelpCommand(ctx) {
|
|
|
31862
31866
|
return _internals45.buildDetailedHelp(resolved.key, resolved.entry);
|
|
31863
31867
|
}
|
|
31864
31868
|
const similar = _internals45.findSimilarCommands(targetCommand);
|
|
31865
|
-
const { buildHelpText: fullHelp } = await import("./index-
|
|
31869
|
+
const { buildHelpText: fullHelp } = await import("./index-r0zbs7ny.js");
|
|
31866
31870
|
if (similar.length > 0) {
|
|
31867
31871
|
return `Command '/swarm ${targetCommand}' not found.
|
|
31868
31872
|
|
|
@@ -31995,7 +31999,7 @@ var COMMAND_REGISTRY = {
|
|
|
31995
31999
|
},
|
|
31996
32000
|
"guardrail explain": {
|
|
31997
32001
|
handler: async (ctx) => {
|
|
31998
|
-
const { handleGuardrailExplain } = await import("./guardrail-explain-
|
|
32002
|
+
const { handleGuardrailExplain } = await import("./guardrail-explain-0hw3kyab.js");
|
|
31999
32003
|
return handleGuardrailExplain(ctx.directory, ctx.args);
|
|
32000
32004
|
},
|
|
32001
32005
|
description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
|
|
@@ -32005,7 +32009,7 @@ var COMMAND_REGISTRY = {
|
|
|
32005
32009
|
},
|
|
32006
32010
|
"guardrail-log": {
|
|
32007
32011
|
handler: async (ctx) => {
|
|
32008
|
-
const { handleGuardrailLog } = await import("./guardrail-log-
|
|
32012
|
+
const { handleGuardrailLog } = await import("./guardrail-log-9yyeccv5.js");
|
|
32009
32013
|
return handleGuardrailLog(ctx.directory, ctx.args);
|
|
32010
32014
|
},
|
|
32011
32015
|
description: "Read the guardrail decision log (use --blocks-only for blocks)",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
handleGuardrailExplain
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-d3ds25vx.js";
|
|
5
5
|
import {
|
|
6
6
|
handleGuardrailLog
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-rdc6nvmw.js";
|
|
8
8
|
import {
|
|
9
9
|
COMMAND_REGISTRY,
|
|
10
10
|
SWARM_COMMAND_TOOL_ALLOWLIST,
|
|
@@ -78,18 +78,18 @@ import {
|
|
|
78
78
|
handleWriteRetroCommand,
|
|
79
79
|
normalizeSwarmCommandInput,
|
|
80
80
|
resolveCommand
|
|
81
|
-
} from "./index-
|
|
82
|
-
import"./index-
|
|
81
|
+
} from "./index-q0t7gpf2.js";
|
|
82
|
+
import"./index-b223mczb.js";
|
|
83
83
|
import"./index-2a6ppa65.js";
|
|
84
84
|
import"./index-fjxjb66n.js";
|
|
85
85
|
import"./index-hb10a2g8.js";
|
|
86
|
-
import"./index-
|
|
86
|
+
import"./index-xx3sv77e.js";
|
|
87
87
|
import {
|
|
88
88
|
AGENT_TOOL_MAP,
|
|
89
89
|
ORCHESTRATOR_NAME,
|
|
90
90
|
stripKnownSwarmPrefix
|
|
91
|
-
} from "./index-
|
|
92
|
-
import"./index-
|
|
91
|
+
} from "./index-tqbb2jx6.js";
|
|
92
|
+
import"./index-4c5jpmn9.js";
|
|
93
93
|
import"./index-adz3nk9b.js";
|
|
94
94
|
import"./index-v4fcn4tr.js";
|
|
95
95
|
import"./index-mh1ej70w.js";
|
|
@@ -384,6 +384,33 @@ var TOOL_METADATA = {
|
|
|
384
384
|
"researcher"
|
|
385
385
|
]
|
|
386
386
|
},
|
|
387
|
+
ast_grep: {
|
|
388
|
+
description: "Read-only structural AST search using ast-grep patterns with optional language and glob filters. Use for syntax-aware code pattern searches; does not rewrite files.",
|
|
389
|
+
agents: [
|
|
390
|
+
"architect",
|
|
391
|
+
"sme",
|
|
392
|
+
"docs",
|
|
393
|
+
"docs_design",
|
|
394
|
+
"critic_hallucination_verifier",
|
|
395
|
+
"spec_writer",
|
|
396
|
+
"explorer",
|
|
397
|
+
"coder",
|
|
398
|
+
"test_engineer",
|
|
399
|
+
"researcher"
|
|
400
|
+
]
|
|
401
|
+
},
|
|
402
|
+
actionlint_scan: {
|
|
403
|
+
description: "Run actionlint against GitHub Actions workflow YAML files with structured findings. Resolves actionlint lazily and does not modify files.",
|
|
404
|
+
agents: ["architect", "test_engineer"]
|
|
405
|
+
},
|
|
406
|
+
osv_scan: {
|
|
407
|
+
description: "Run OSV-Scanner against a workspace path and return structured dependency vulnerability findings. Resolves osv-scanner lazily and does not modify files.",
|
|
408
|
+
agents: ["architect", "test_engineer"]
|
|
409
|
+
},
|
|
410
|
+
gh_evidence: {
|
|
411
|
+
description: "Fetch bounded GitHub pull request or issue metadata through gh for review and CI evidence. Resolves gh lazily and is read-only.",
|
|
412
|
+
agents: ["architect", "researcher"]
|
|
413
|
+
},
|
|
387
414
|
batch_symbols: {
|
|
388
415
|
description: "Batched symbol extraction across multiple files. Returns per-file symbol summaries with isolated error handling.",
|
|
389
416
|
agents: [
|
|
@@ -525,11 +552,11 @@ var TOOL_METADATA = {
|
|
|
525
552
|
agents: ["architect"]
|
|
526
553
|
},
|
|
527
554
|
dispatch_lanes_async: {
|
|
528
|
-
description: "launch read-only advisory lanes non-blockingly and return a batch id immediately so you can keep working; poll incrementally with collect_lane_results (wait omitted or false) while doing independent investigation, or join with wait: true when you need all results",
|
|
555
|
+
description: "launch read-only advisory lanes non-blockingly and return a batch id plus lane session handles immediately so you can keep working; launch_timeout_ms is only a promptAsync acceptance budget, not a lane runtime timeout; poll incrementally with collect_lane_results (wait omitted or false) while doing independent investigation, or join with wait: true when you need all results",
|
|
529
556
|
agents: ["architect"]
|
|
530
557
|
},
|
|
531
558
|
collect_lane_results: {
|
|
532
|
-
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).
|
|
559
|
+
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.",
|
|
533
560
|
agents: ["architect"]
|
|
534
561
|
},
|
|
535
562
|
summarize_work: {
|
package/dist/cli/index.js
CHANGED
|
@@ -7,16 +7,16 @@ import {
|
|
|
7
7
|
getPluginLockFilePaths,
|
|
8
8
|
package_default,
|
|
9
9
|
resolveCommand
|
|
10
|
-
} from "./index-
|
|
11
|
-
import"./index-
|
|
10
|
+
} from "./index-q0t7gpf2.js";
|
|
11
|
+
import"./index-b223mczb.js";
|
|
12
12
|
import"./index-2a6ppa65.js";
|
|
13
13
|
import"./index-fjxjb66n.js";
|
|
14
14
|
import"./index-hb10a2g8.js";
|
|
15
|
-
import"./index-
|
|
15
|
+
import"./index-xx3sv77e.js";
|
|
16
16
|
import {
|
|
17
17
|
DEFAULT_AGENT_CONFIGS
|
|
18
|
-
} from "./index-
|
|
19
|
-
import"./index-
|
|
18
|
+
} from "./index-tqbb2jx6.js";
|
|
19
|
+
import"./index-4c5jpmn9.js";
|
|
20
20
|
import"./index-adz3nk9b.js";
|
|
21
21
|
import"./index-v4fcn4tr.js";
|
|
22
22
|
import"./index-mh1ej70w.js";
|