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.
- package/.opencode/skills/swarm-pr-feedback/SKILL.md +8 -0
- package/.opencode/skills/swarm-pr-review/SKILL.md +17 -5
- package/README.md +11 -2
- package/dist/cli/{config-doctor-3rssa871.js → config-doctor-bp5spb79.js} +2 -2
- package/dist/cli/{curation-policy-3914h3g9.js → curation-policy-7zp2m9gv.js} +2 -2
- package/dist/cli/{curator-1e77dq6x.js → curator-h067mrcc.js} +12 -12
- package/dist/cli/{curator-llm-factory-41c17ybs.js → curator-llm-factory-605d08hf.js} +12 -12
- package/dist/cli/{guardrail-explain-624brj1y.js → guardrail-explain-s7vzm6z7.js} +13 -13
- package/dist/cli/{guardrail-log-vfka4tcn.js → guardrail-log-aa112fxv.js} +3 -3
- package/dist/cli/{hive-promoter-mw5prfy2.js → hive-promoter-nv0m5rzk.js} +12 -12
- package/dist/cli/{index-6mcx76j9.js → index-3s9rfnqq.js} +4 -4
- package/dist/cli/{index-q0ysv66x.js → index-630badhp.js} +1 -1
- package/dist/cli/{index-zah4qws8.js → index-6ccynjv3.js} +2 -2
- package/dist/cli/{index-qg1cj1ev.js → index-8d3m0ge3.js} +14 -14
- package/dist/cli/{index-e630fw43.js → index-9cf1yr67.js} +3 -3
- package/dist/cli/{index-5x3g1q91.js → index-bvp2v7k1.js} +18 -4
- package/dist/cli/{index-sbq3gbjs.js → index-djwemsjn.js} +1 -1
- package/dist/cli/{index-8w3sp149.js → index-f6480ee6.js} +48 -39
- package/dist/cli/{index-64z5dvam.js → index-fgcmxjp7.js} +1 -1
- package/dist/cli/{index-nsxchdx0.js → index-jgfcp9bh.js} +1 -1
- package/dist/cli/{index-exs5bt14.js → index-jj4earrh.js} +1 -1
- package/dist/cli/{index-99tq1zd5.js → index-k4tmx21m.js} +2 -2
- package/dist/cli/{index-ppkp20fp.js → index-mwkwyej1.js} +5 -5
- package/dist/cli/{index-2dtwjx39.js → index-rt5jgktq.js} +1 -1
- package/dist/cli/{index-zrh07ykv.js → index-y5qp59rc.js} +2 -2
- package/dist/cli/{index-fegng5pv.js → index-yvv1wt2h.js} +1 -1
- package/dist/cli/index.js +12 -12
- package/dist/cli/{knowledge-escalator-5hv2dwhz.js → knowledge-escalator-j0nceas7.js} +3 -3
- package/dist/cli/{knowledge-events-434663dp.js → knowledge-events-gpqc62jr.js} +1 -1
- package/dist/cli/{knowledge-store-73ykq5j3.js → knowledge-store-ggxr3ww5.js} +1 -1
- package/dist/cli/{knowledge-validator-tnadtt1h.js → knowledge-validator-007smap6.js} +4 -4
- package/dist/cli/{scan-cursor-e33n9pej.js → scan-cursor-wz4bff7a.js} +2 -2
- package/dist/cli/{schema-1kwmcayk.js → schema-023gwne7.js} +1 -1
- package/dist/cli/{skill-generator-k111qfdw.js → skill-generator-rtsg1m7x.js} +5 -5
- package/dist/config/constants.d.ts +22 -0
- package/dist/hooks/guardrails/index.d.ts +32 -0
- package/dist/hooks/guardrails/messages-transform.d.ts +7 -0
- package/dist/hooks/guardrails.d.ts +1 -1
- package/dist/hooks/pr-workflow-gate.d.ts +2 -0
- package/dist/hooks/pr-workflow-response-gate.d.ts +44 -26
- package/dist/index.d.ts +13 -0
- package/dist/index.js +30 -30
- package/dist/tools/dispatch-lanes.d.ts +18 -0
- package/dist/tools/run-pr-feedback-stage-a.d.ts +2 -0
- package/dist/tools/tool-metadata.d.ts +4 -0
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
readDoctorArtifact,
|
|
5
5
|
removeStraySwarmDir,
|
|
6
6
|
runConfigDoctor
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-630badhp.js";
|
|
8
8
|
import {
|
|
9
9
|
EvaluationTaskV1Schema,
|
|
10
10
|
GateAuditManifestV1Schema,
|
|
@@ -94,15 +94,15 @@ import {
|
|
|
94
94
|
retireSkill,
|
|
95
95
|
selectCandidateEntries,
|
|
96
96
|
syncBundledProjectSkillsIfMissingAsync
|
|
97
|
-
} from "./index-
|
|
97
|
+
} from "./index-9cf1yr67.js";
|
|
98
98
|
import {
|
|
99
99
|
readRecentEscalations
|
|
100
|
-
} from "./index-
|
|
100
|
+
} from "./index-mwkwyej1.js";
|
|
101
101
|
import {
|
|
102
102
|
alreadyCuratedThisGeneration,
|
|
103
103
|
claimNextScanBatch,
|
|
104
104
|
resolveCohortId
|
|
105
|
-
} from "./index-
|
|
105
|
+
} from "./index-djwemsjn.js";
|
|
106
106
|
import {
|
|
107
107
|
CURATOR_INIT_PROMPT,
|
|
108
108
|
CURATOR_PHASE_PROMPT,
|
|
@@ -135,11 +135,11 @@ import {
|
|
|
135
135
|
validateActionability,
|
|
136
136
|
validateActionableFields,
|
|
137
137
|
validateLesson
|
|
138
|
-
} from "./index-
|
|
138
|
+
} from "./index-6ccynjv3.js";
|
|
139
139
|
import {
|
|
140
140
|
authorizeCuration,
|
|
141
141
|
buildConfigFingerprintInput
|
|
142
|
-
} from "./index-
|
|
142
|
+
} from "./index-rt5jgktq.js";
|
|
143
143
|
import {
|
|
144
144
|
cohortConfigFingerprint
|
|
145
145
|
} from "./index-rtry5xyf.js";
|
|
@@ -172,7 +172,7 @@ import {
|
|
|
172
172
|
transactFile,
|
|
173
173
|
transactKnowledge,
|
|
174
174
|
wordBigrams
|
|
175
|
-
} from "./index-
|
|
175
|
+
} from "./index-3s9rfnqq.js";
|
|
176
176
|
import {
|
|
177
177
|
MAX_EVENT_LOG_ENTRIES,
|
|
178
178
|
_internals,
|
|
@@ -182,7 +182,7 @@ import {
|
|
|
182
182
|
recordHiveKnowledgeEvent,
|
|
183
183
|
recordKnowledgeEvent,
|
|
184
184
|
resolveKnowledgeEventsPath
|
|
185
|
-
} from "./index-
|
|
185
|
+
} from "./index-jgfcp9bh.js";
|
|
186
186
|
import {
|
|
187
187
|
resolveHiveDataDir,
|
|
188
188
|
resolveHiveEventsPath,
|
|
@@ -204,7 +204,7 @@ import {
|
|
|
204
204
|
init_loader,
|
|
205
205
|
loadPluginConfig,
|
|
206
206
|
loadPluginConfigWithMeta
|
|
207
|
-
} from "./index-
|
|
207
|
+
} from "./index-jj4earrh.js";
|
|
208
208
|
import {
|
|
209
209
|
RetrospectiveEvidenceSchema
|
|
210
210
|
} from "./index-k5jrywpr.js";
|
|
@@ -223,7 +223,7 @@ import {
|
|
|
223
223
|
init_schema,
|
|
224
224
|
init_tool_metadata,
|
|
225
225
|
stripKnownSwarmPrefix
|
|
226
|
-
} from "./index-
|
|
226
|
+
} from "./index-bvp2v7k1.js";
|
|
227
227
|
import {
|
|
228
228
|
KNOWLEDGE_SCHEMA_VERSION,
|
|
229
229
|
OUTCOME_BLOCK_THRESHOLD,
|
|
@@ -703,6 +703,7 @@ var _test_exports = {
|
|
|
703
703
|
resolveRemoteRefsContainingHeadAsync,
|
|
704
704
|
parseCriticVerdict,
|
|
705
705
|
isProcessAlive,
|
|
706
|
+
isSafeStandaloneGitCommit,
|
|
706
707
|
rename: fsp.rename,
|
|
707
708
|
nowMs: () => Date.now()
|
|
708
709
|
};
|
|
@@ -721,8 +722,6 @@ var PR_WORKFLOW_SHARED_CONTROLLER_TOOLS = new Set([
|
|
|
721
722
|
"collect_lane_results",
|
|
722
723
|
"complete_pr_workflow",
|
|
723
724
|
"dispatch_lanes_async",
|
|
724
|
-
"get_async_result",
|
|
725
|
-
"get_async_status",
|
|
726
725
|
"prepare_pr_workflow_checkout"
|
|
727
726
|
]);
|
|
728
727
|
var PR_REVIEW_CONTROLLER_TOOLS = new Set([
|
|
@@ -752,6 +751,16 @@ var PR_REVIEW_READ_ONLY_TOOL_NAMES = new Set([
|
|
|
752
751
|
"webfetch",
|
|
753
752
|
"websearch"
|
|
754
753
|
]);
|
|
754
|
+
function hasUnsafeShellControlSyntax(command) {
|
|
755
|
+
return /[;&|<>`\r\n]/.test(command) || /\$\(/.test(command);
|
|
756
|
+
}
|
|
757
|
+
function isSafeStandaloneGitCommit(command) {
|
|
758
|
+
if (hasUnsafeShellControlSyntax(command))
|
|
759
|
+
return false;
|
|
760
|
+
if (/(?:^|\s)--(?:allow-empty|amend)(?:\s|=|$)/i.test(command))
|
|
761
|
+
return false;
|
|
762
|
+
return /^[Gg][Ii][Tt](?:\s+-C(?:=|\s+)(?:"[^"\r\n]+"|'[^'\r\n]+'|[^\s;&|<>`]+))?\s+commit(?:\s+(?:"[^"\r\n]*"|'[^'\r\n]*'|[^\s;&|<>`]+))*\s*$/.test(command.trim());
|
|
763
|
+
}
|
|
755
764
|
function normalizePrHeadSha(prHeadSha) {
|
|
756
765
|
const normalized = prHeadSha.trim();
|
|
757
766
|
if (!normalized) {
|
|
@@ -13817,7 +13826,7 @@ function planMerges(active, threshold, maxComparisons, maxMerges) {
|
|
|
13817
13826
|
};
|
|
13818
13827
|
}
|
|
13819
13828
|
async function sweepActiveNearDuplicates(directory, options = {}) {
|
|
13820
|
-
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-
|
|
13829
|
+
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-y5qp59rc.js");
|
|
13821
13830
|
const { config } = loadPluginConfigWithMeta2(directory);
|
|
13822
13831
|
const sweepConfig = config.learning?.dedup_sweep;
|
|
13823
13832
|
if (sweepConfig?.enabled === false)
|
|
@@ -15410,7 +15419,7 @@ async function runCuratorPhase(directory, phase, agentsDispatched, config, knowl
|
|
|
15410
15419
|
}
|
|
15411
15420
|
if (config.skill_generation_enabled === true && skillCandidates.length > 0) {
|
|
15412
15421
|
try {
|
|
15413
|
-
const skillModule = await import("./skill-generator-
|
|
15422
|
+
const skillModule = await import("./skill-generator-rtsg1m7x.js");
|
|
15414
15423
|
for (const cand of skillCandidates) {
|
|
15415
15424
|
if (cand.confidence < (config.min_skill_confidence ?? DEFAULT_SKILL_MIN_CONFIDENCE)) {
|
|
15416
15425
|
continue;
|
|
@@ -15811,7 +15820,7 @@ async function applyCuratorKnowledgeUpdates(directory, recommendations, knowledg
|
|
|
15811
15820
|
} catch {}
|
|
15812
15821
|
}
|
|
15813
15822
|
if (contradictedEntries.length > 0 && knowledgeConfig.contradiction_threshold_action === "quarantine") {
|
|
15814
|
-
const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-
|
|
15823
|
+
const { maybeQuarantineOnContradiction } = await import("./knowledge-escalator-j0nceas7.js");
|
|
15815
15824
|
for (const { id } of contradictedEntries) {
|
|
15816
15825
|
try {
|
|
15817
15826
|
await maybeQuarantineOnContradiction(directory, id, knowledgeConfig.contradiction_quarantine_threshold, knowledgeConfig.contradiction_quarantine_window_days);
|
|
@@ -16619,7 +16628,7 @@ async function runCuratorPostMortem(directory, options = {}) {
|
|
|
16619
16628
|
warnings.push("Failed to collect knowledge summary.");
|
|
16620
16629
|
}
|
|
16621
16630
|
try {
|
|
16622
|
-
const { getScanStatus } = await import("./scan-cursor-
|
|
16631
|
+
const { getScanStatus } = await import("./scan-cursor-wz4bff7a.js");
|
|
16623
16632
|
const scanStatus = await getScanStatus(directory);
|
|
16624
16633
|
if (scanStatus.remaining_estimate > 0) {
|
|
16625
16634
|
warnings.push(`Fair scan: reviewed ${knowledgeSummary.length} entries this sweep (generation ${scanStatus.generation}); ${scanStatus.remaining_estimate} more eligible entries will be visited in future curation sweeps.`);
|
|
@@ -16791,9 +16800,9 @@ var _internals22 = {
|
|
|
16791
16800
|
verifyPostMortemKnowledgeActions,
|
|
16792
16801
|
repairPostMortemActions,
|
|
16793
16802
|
loadDefaultKnowledgeConfig: async (directory) => {
|
|
16794
|
-
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-
|
|
16803
|
+
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-023gwne7.js");
|
|
16795
16804
|
try {
|
|
16796
|
-
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-
|
|
16805
|
+
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-y5qp59rc.js");
|
|
16797
16806
|
const loaded = loadPluginConfigWithMeta2(directory);
|
|
16798
16807
|
return KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
|
|
16799
16808
|
} catch {
|
|
@@ -16801,11 +16810,11 @@ var _internals22 = {
|
|
|
16801
16810
|
}
|
|
16802
16811
|
},
|
|
16803
16812
|
applyCuratorKnowledgeUpdates: async (directory, recommendations, knowledgeConfig, generation) => {
|
|
16804
|
-
const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-
|
|
16813
|
+
const { applyCuratorKnowledgeUpdates: applyCuratorKnowledgeUpdates2 } = await import("./curator-h067mrcc.js");
|
|
16805
16814
|
return applyCuratorKnowledgeUpdates2(directory, recommendations, knowledgeConfig, generation);
|
|
16806
16815
|
},
|
|
16807
16816
|
checkHivePromotions: async (entries, knowledgeConfig, directory) => {
|
|
16808
|
-
const { checkHivePromotions } = await import("./hive-promoter-
|
|
16817
|
+
const { checkHivePromotions } = await import("./hive-promoter-nv0m5rzk.js");
|
|
16809
16818
|
return checkHivePromotions(entries, knowledgeConfig, directory);
|
|
16810
16819
|
},
|
|
16811
16820
|
applyProposalTriage: async (directory, triage) => {
|
|
@@ -16814,7 +16823,7 @@ var _internals22 = {
|
|
|
16814
16823
|
activateProposal,
|
|
16815
16824
|
listSkills: listSkills2,
|
|
16816
16825
|
sanitizeSlug
|
|
16817
|
-
} = await import("./skill-generator-
|
|
16826
|
+
} = await import("./skill-generator-rtsg1m7x.js");
|
|
16818
16827
|
const result = {
|
|
16819
16828
|
approved: [],
|
|
16820
16829
|
rejected: [],
|
|
@@ -19441,9 +19450,9 @@ function hashContent(content) {
|
|
|
19441
19450
|
return createHash7("sha1").update(content).digest("hex");
|
|
19442
19451
|
}
|
|
19443
19452
|
async function loadConfigForPolicyCurator(directory) {
|
|
19444
|
-
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-
|
|
19453
|
+
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-023gwne7.js");
|
|
19445
19454
|
try {
|
|
19446
|
-
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-
|
|
19455
|
+
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-y5qp59rc.js");
|
|
19447
19456
|
const { config: loadedConfig } = loadPluginConfigWithMeta2(directory);
|
|
19448
19457
|
return KnowledgeConfigSchema2.parse(loadedConfig.knowledge ?? {});
|
|
19449
19458
|
} catch {
|
|
@@ -22788,7 +22797,7 @@ async function runFinalizeStage(ctx) {
|
|
|
22788
22797
|
}
|
|
22789
22798
|
}
|
|
22790
22799
|
try {
|
|
22791
|
-
const { CuratorConfigSchema: CCS } = await import("./schema-
|
|
22800
|
+
const { CuratorConfigSchema: CCS } = await import("./schema-023gwne7.js");
|
|
22792
22801
|
const { config: pmLoadedConfig } = _internals32.loadPluginConfigWithMeta(ctx.directory);
|
|
22793
22802
|
const curatorCfg = CCS.parse(pmLoadedConfig.curator ?? {});
|
|
22794
22803
|
if (curatorCfg.enabled && curatorCfg.postmortem_enabled) {
|
|
@@ -24906,9 +24915,9 @@ var _internals36 = {
|
|
|
24906
24915
|
loadPluginConfigWithMeta,
|
|
24907
24916
|
loadCuratorDeps: async () => {
|
|
24908
24917
|
const [{ CuratorConfigSchema }, curator, { createCuratorLLMDelegate: createCuratorLLMDelegate2 }] = await Promise.all([
|
|
24909
|
-
import("./schema-
|
|
24910
|
-
import("./curator-
|
|
24911
|
-
import("./curator-llm-factory-
|
|
24918
|
+
import("./schema-023gwne7.js"),
|
|
24919
|
+
import("./curator-h067mrcc.js"),
|
|
24920
|
+
import("./curator-llm-factory-605d08hf.js")
|
|
24912
24921
|
]);
|
|
24913
24922
|
return { CuratorConfigSchema, curator, createCuratorLLMDelegate: createCuratorLLMDelegate2 };
|
|
24914
24923
|
}
|
|
@@ -25413,7 +25422,7 @@ import { fileURLToPath } from "url";
|
|
|
25413
25422
|
// package.json
|
|
25414
25423
|
var package_default = {
|
|
25415
25424
|
name: "opencode-swarm",
|
|
25416
|
-
version: "7.132.
|
|
25425
|
+
version: "7.132.2",
|
|
25417
25426
|
description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
25418
25427
|
main: "dist/index.js",
|
|
25419
25428
|
types: "dist/index.d.ts",
|
|
@@ -25935,7 +25944,7 @@ async function computeCurationDiagnostics(directory, entries) {
|
|
|
25935
25944
|
let scanCompleted = false;
|
|
25936
25945
|
let scanRemaining = 0;
|
|
25937
25946
|
try {
|
|
25938
|
-
const { getScanStatus } = await import("./scan-cursor-
|
|
25947
|
+
const { getScanStatus } = await import("./scan-cursor-wz4bff7a.js");
|
|
25939
25948
|
const status = await getScanStatus(directory);
|
|
25940
25949
|
scanGeneration = status.generation;
|
|
25941
25950
|
scanCompleted = status.completed;
|
|
@@ -25945,17 +25954,17 @@ async function computeCurationDiagnostics(directory, entries) {
|
|
|
25945
25954
|
try {
|
|
25946
25955
|
const { isLinked: isLinked2 } = await import("./knowledge-link-4yd2z8ev.js");
|
|
25947
25956
|
if (isLinked2(directory)) {
|
|
25948
|
-
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-
|
|
25957
|
+
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-023gwne7.js");
|
|
25949
25958
|
let config;
|
|
25950
25959
|
try {
|
|
25951
|
-
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-
|
|
25960
|
+
const { loadPluginConfigWithMeta: loadPluginConfigWithMeta2 } = await import("./index-y5qp59rc.js");
|
|
25952
25961
|
const loaded = loadPluginConfigWithMeta2(directory);
|
|
25953
25962
|
config = KnowledgeConfigSchema2.parse(loaded.config.knowledge ?? {});
|
|
25954
25963
|
} catch {
|
|
25955
25964
|
config = KnowledgeConfigSchema2.parse({});
|
|
25956
25965
|
}
|
|
25957
25966
|
const { cohortConfigFingerprint: cohortConfigFingerprint2 } = await import("./config-fingerprint-v22xh5a2.js");
|
|
25958
|
-
const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-
|
|
25967
|
+
const { buildConfigFingerprintInput: buildConfigFingerprintInput2, readCohortConfigFingerprint } = await import("./curation-policy-7zp2m9gv.js");
|
|
25959
25968
|
const currentFp = cohortConfigFingerprint2(buildConfigFingerprintInput2(config));
|
|
25960
25969
|
const cohortFp = await readCohortConfigFingerprint(directory);
|
|
25961
25970
|
configMatch = cohortFp === null ? null : currentFp === cohortFp;
|
|
@@ -27153,7 +27162,7 @@ async function handleDoctorCommand(directory, args) {
|
|
|
27153
27162
|
const result = runConfigDoctor(config, directory);
|
|
27154
27163
|
let output;
|
|
27155
27164
|
if (enableAutoFix && result.hasAutoFixableIssues) {
|
|
27156
|
-
const { runConfigDoctorWithFixes } = await import("./config-doctor-
|
|
27165
|
+
const { runConfigDoctorWithFixes } = await import("./config-doctor-bp5spb79.js");
|
|
27157
27166
|
const fixResult = await runConfigDoctorWithFixes(directory, config, true, {
|
|
27158
27167
|
applyLossy: true
|
|
27159
27168
|
});
|
|
@@ -45948,7 +45957,7 @@ function buildDetailedHelp(commandName, entry) {
|
|
|
45948
45957
|
async function handleHelpCommand(ctx) {
|
|
45949
45958
|
const targetCommand = ctx.args.join(" ");
|
|
45950
45959
|
if (!targetCommand) {
|
|
45951
|
-
const { buildHelpText } = await import("./index-
|
|
45960
|
+
const { buildHelpText } = await import("./index-8d3m0ge3.js");
|
|
45952
45961
|
return buildHelpText();
|
|
45953
45962
|
}
|
|
45954
45963
|
const tokens = targetCommand.split(/\s+/);
|
|
@@ -45957,7 +45966,7 @@ async function handleHelpCommand(ctx) {
|
|
|
45957
45966
|
return _internals9.buildDetailedHelp(resolved.key, resolved.entry);
|
|
45958
45967
|
}
|
|
45959
45968
|
const similar = _internals9.findSimilarCommands(targetCommand);
|
|
45960
|
-
const { buildHelpText: fullHelp } = await import("./index-
|
|
45969
|
+
const { buildHelpText: fullHelp } = await import("./index-8d3m0ge3.js");
|
|
45961
45970
|
if (similar.length > 0) {
|
|
45962
45971
|
return `Command '/swarm ${targetCommand}' not found.
|
|
45963
45972
|
|
|
@@ -46096,7 +46105,7 @@ var COMMAND_REGISTRY = {
|
|
|
46096
46105
|
},
|
|
46097
46106
|
"guardrail explain": {
|
|
46098
46107
|
handler: async (ctx) => {
|
|
46099
|
-
const { handleGuardrailExplain } = await import("./guardrail-explain-
|
|
46108
|
+
const { handleGuardrailExplain } = await import("./guardrail-explain-s7vzm6z7.js");
|
|
46100
46109
|
return handleGuardrailExplain(ctx.directory, ctx.args);
|
|
46101
46110
|
},
|
|
46102
46111
|
description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
|
|
@@ -46106,7 +46115,7 @@ var COMMAND_REGISTRY = {
|
|
|
46106
46115
|
},
|
|
46107
46116
|
"guardrail-explain": {
|
|
46108
46117
|
handler: async (ctx) => {
|
|
46109
|
-
const { handleGuardrailExplain } = await import("./guardrail-explain-
|
|
46118
|
+
const { handleGuardrailExplain } = await import("./guardrail-explain-s7vzm6z7.js");
|
|
46110
46119
|
return handleGuardrailExplain(ctx.directory, ctx.args);
|
|
46111
46120
|
},
|
|
46112
46121
|
description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
|
|
@@ -46116,7 +46125,7 @@ var COMMAND_REGISTRY = {
|
|
|
46116
46125
|
},
|
|
46117
46126
|
"guardrail-log": {
|
|
46118
46127
|
handler: async (ctx) => {
|
|
46119
|
-
const { handleGuardrailLog } = await import("./guardrail-log-
|
|
46128
|
+
const { handleGuardrailLog } = await import("./guardrail-log-aa112fxv.js");
|
|
46120
46129
|
return handleGuardrailLog(ctx.directory, ctx.args);
|
|
46121
46130
|
},
|
|
46122
46131
|
description: "Read the guardrail decision log (use --blocks-only for blocks)",
|
|
@@ -47167,7 +47176,7 @@ If a tool modifies a file, it is a CODER tool. Delegate.
|
|
|
47167
47176
|
Separate parallel-mode exception (distinct from the Stage B exception above, and the ONLY case where more than one coder may be dispatched before waiting): when an active \`[PARALLEL EXECUTION PROFILE]\` directive is present in your context (parallelization_enabled=true), you MAY dispatch multiple {{AGENT_PREFIX}}coder agents in a single message \u2014 up to the stated max_concurrent_tasks \u2014 but ONLY for distinct, dependency-ready tasks whose declared file scopes do NOT overlap. Each coder still requires its own \`declare_scope\` call and carries exactly ONE task (Rule 3 still holds: never batch multiple objectives into one coder). Parallel coders each run in an isolated git worktree, so their writes never collide and are merged back automatically. If no \`[PARALLEL EXECUTION PROFILE]\` directive is present, dispatch coders one at a time.
|
|
47168
47177
|
|
|
47169
47178
|
> **WORKTREE ISOLATION IS BASELINE.** Standard parallel coders use isolated git worktrees by default; this is governed by the top-level \`worktree.policy\` setting (default \`auto\`) in \`PluginConfig\` \u2014 a sibling of \`parallelization:\`, not nested under it \u2014 and is active whenever the plan's \`parallelization_enabled=true\`. \`turbo.lean.worktree_isolation\` is a separate, Lean-Turbo-internal flag (default \`false\`); it is one possible SOURCE but NOT the recommended one. Do NOT recommend Lean Turbo (or Epic) SOLELY to obtain worktree isolation; recommend them only for what they add beyond baseline (Lean Turbo: lane planning, file locks, phase reviewer, integrated diff; Epic: co-change awareness + auto-decide). Lean Turbo users can also enable isolation via \`turbo.lean.worktree_isolation: true\`, but this is the secondary/legacy path \u2014 the recommended path is \`worktree.policy\`.
|
|
47170
|
-
Read-only advisory-lane exception (NON-BLOCKING; distinct from both exceptions above): the "Send, STOP, wait" rule governs MUTATION delegations (coder, and the test_engineer/reviewer Stage B completion gates). It does NOT govern read-only advisory exploration/review lanes. When you dispatch read-only advisory lanes \u2014 \`{{AGENT_PREFIX}}explorer\`, \`{{AGENT_PREFIX}}sme\`, \`{{AGENT_PREFIX}}researcher\`, the council members (\`council_generalist\`/\`council_skeptic\`/\`council_domain_expert\`), or an advisory \`{{AGENT_PREFIX}}critic\` lane \u2014 use the NON-BLOCKING path so you keep working while they run. Dispatch PROMPTLY: emit the \`dispatch_lanes_async\` call EARLY with compact lane prompts \u2014 do not accumulate long planning prose or build oversized inline prompts first, or the tool call can be truncated out of your message and the lanes never launch (a real failure mode on smaller models). The lane mechanism is a SINGLE \`dispatch_lanes_async\` call carrying all lane specs \u2014 NOT a per-agent Task/run-in-background pattern. Call \`dispatch_lanes_async\` with all lane specs in one call, record the returned \`batch_id\`, then IMMEDIATELY continue non-dependent architect work (refine the plan/obligation ledger, inspect metadata, prepare the synthesis/reviewer structure, run deterministic read-only tools). Poll incrementally with \`collect_lane_results\` without \`wait\` (or with \`wait: false\`) to harvest lanes as they settle; process completed lane output immediately while other lanes remain pending/running, then continue independent work between polls. Do NOT sit idle waiting on running lanes, and do NOT synthesize findings from still-running lanes. Join later by calling \`collect_lane_results\` with \`wait: true\` as the explicit barrier immediately before you synthesize. Use blocking \`dispatch_lanes\` only when \`dispatch_lanes_async\`/promptAsync is unavailable. Keep each lane prompt compact: send large shared context (PR diff, ledger, scope) ONCE via the \`common_prompt\` field, or have lanes read it from a file by absolute path, instead of inlining the same blob into every lane prompt \u2014 inlining large context into many lanes is what produces malformed or truncated tool-call JSON and forces clumsy file workarounds. This non-blocking exception applies ONLY to read-only advisory lanes; it NEVER applies to coder delegations, to the test_engineer/reviewer Stage B completion gates, or to the critic PLAN-review gate, which all still follow "Send, STOP, wait" (or the Stage B parallel-dispatch exception above).
|
|
47179
|
+
Read-only advisory-lane exception (NON-BLOCKING; distinct from both exceptions above): the "Send, STOP, wait" rule governs MUTATION delegations (coder, and the test_engineer/reviewer Stage B completion gates). It does NOT govern read-only advisory exploration/review lanes. When you dispatch read-only advisory lanes \u2014 \`{{AGENT_PREFIX}}explorer\`, \`{{AGENT_PREFIX}}sme\`, \`{{AGENT_PREFIX}}researcher\`, the council members (\`council_generalist\`/\`council_skeptic\`/\`council_domain_expert\`), or an advisory \`{{AGENT_PREFIX}}critic\` lane \u2014 use the NON-BLOCKING path so you keep working while they run. Dispatch PROMPTLY: emit the \`dispatch_lanes_async\` call EARLY with compact lane prompts \u2014 do not accumulate long planning prose or build oversized inline prompts first, or the tool call can be truncated out of your message and the lanes never launch (a real failure mode on smaller models). The lane mechanism is a SINGLE \`dispatch_lanes_async\` call carrying all lane specs \u2014 NOT a per-agent Task/run-in-background pattern. Call \`dispatch_lanes_async\` with all lane specs in one call, record the returned \`batch_id\`, then IMMEDIATELY continue non-dependent architect work (refine the plan/obligation ledger, inspect metadata, prepare the synthesis/reviewer structure, run deterministic read-only tools). Poll incrementally with \`collect_lane_results\` without \`wait\` (or with \`wait: false\`) to harvest lanes as they settle; process completed lane output immediately while other lanes remain pending/running, then continue independent work between polls. Do NOT sit idle waiting on running lanes, and do NOT synthesize findings from still-running lanes. Join later by calling \`collect_lane_results\` with \`wait: true\` as the explicit barrier immediately before you synthesize. Use blocking \`dispatch_lanes\` only when \`dispatch_lanes_async\`/promptAsync is unavailable. A settled lane's inline \`output\` is delivered only once: if you poll the same lane again after already receiving its output, the repeat poll returns \`output_omitted_repeat: true\` with no \`output\` (not a sign the result was lost) \u2014 use the accompanying \`output_ref\` with \`retrieve_lane_output\` if you need the text again, and do not re-dispatch the lane. Keep each lane prompt compact: send large shared context (PR diff, ledger, scope) ONCE via the \`common_prompt\` field, or have lanes read it from a file by absolute path, instead of inlining the same blob into every lane prompt \u2014 inlining large context into many lanes is what produces malformed or truncated tool-call JSON and forces clumsy file workarounds. This non-blocking exception applies ONLY to read-only advisory lanes; it NEVER applies to coder delegations, to the test_engineer/reviewer Stage B completion gates, or to the critic PLAN-review gate, which all still follow "Send, STOP, wait" (or the Stage B parallel-dispatch exception above).
|
|
47171
47180
|
3. ONE task per {{AGENT_PREFIX}}coder call. Never batch.
|
|
47172
47181
|
3a. PRE-DELEGATION SCOPE CALL (required): BEFORE every {{AGENT_PREFIX}}coder delegation, you MUST call \`declare_scope\` with { taskId, files } listing the exact file(s) this task will modify (including generated/lockfile paths). No \`declare_scope\` call \u2192 no coder delegation. See Rule 1a.
|
|
47173
47182
|
3b. PRE-DELEGATION SCOPE CALL (test_engineer): BEFORE any {{AGENT_PREFIX}}test_engineer delegation that will CREATE or MODIFY test files, you MUST call \`declare_scope\` with { taskId, files } listing the exact test file path(s) to write. Omitting this call leaves the write scope undeclared and will block the write. See Rule 1a.
|
|
@@ -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-
|
|
611
|
+
const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-ggxr3ww5.js");
|
|
612
612
|
await bumpKnowledgeConfidenceBatch(directory, deltas, options?.floorOptions);
|
|
613
613
|
}
|
|
614
614
|
return {
|
|
@@ -12,14 +12,14 @@ import {
|
|
|
12
12
|
detectPosixWrites,
|
|
13
13
|
detectWindowsWrites,
|
|
14
14
|
resolveWriteTargets
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-f6480ee6.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-yvv1wt2h.js";
|
|
23
23
|
|
|
24
24
|
// src/services/guardrail-explain-service.ts
|
|
25
25
|
import path from "path";
|
|
@@ -6,13 +6,13 @@ import {
|
|
|
6
6
|
resolveSwarmKnowledgePath,
|
|
7
7
|
transactKnowledge,
|
|
8
8
|
wordBigrams
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-3s9rfnqq.js";
|
|
10
10
|
import {
|
|
11
11
|
countEntryContradictionsInWindow,
|
|
12
12
|
countEntryViolationsInWindow,
|
|
13
13
|
readKnowledgeEvents,
|
|
14
14
|
recordKnowledgeEvent
|
|
15
|
-
} from "./index-
|
|
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-
|
|
193
|
+
const { quarantineEntry } = await import("./knowledge-validator-007smap6.js");
|
|
194
194
|
let policyConfig;
|
|
195
195
|
try {
|
|
196
|
-
const { KnowledgeConfigSchema } = await import("./schema-
|
|
197
|
-
const { loadPluginConfigWithMeta } = await import("./index-
|
|
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 {
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
loadPluginConfigWithMeta,
|
|
8
8
|
loadPluginConfigWithMetaAsync,
|
|
9
9
|
resolveWorktreeIsolationConfig
|
|
10
|
-
} from "./index-
|
|
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-
|
|
62
|
+
} from "./index-bvp2v7k1.js";
|
|
63
63
|
import"./index-bk5tah7q.js";
|
|
64
64
|
import {
|
|
65
65
|
MigrationStatusSchema,
|
package/dist/cli/index.js
CHANGED
|
@@ -7,34 +7,34 @@ import {
|
|
|
7
7
|
getPluginLockFilePaths,
|
|
8
8
|
package_default,
|
|
9
9
|
resolveCommand
|
|
10
|
-
} from "./index-
|
|
11
|
-
import"./index-
|
|
12
|
-
import"./index-
|
|
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-
|
|
18
|
-
import"./index-
|
|
19
|
-
import"./index-
|
|
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-
|
|
25
|
-
import"./index-
|
|
24
|
+
import"./index-6ccynjv3.js";
|
|
25
|
+
import"./index-rt5jgktq.js";
|
|
26
26
|
import"./index-rtry5xyf.js";
|
|
27
|
-
import"./index-
|
|
28
|
-
import"./index-
|
|
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-
|
|
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-
|
|
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-
|
|
12
|
-
import"./index-
|
|
13
|
-
import"./index-
|
|
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-
|
|
29
|
+
} from "./index-jgfcp9bh.js";
|
|
30
30
|
import"./index-ae75rja9.js";
|
|
31
31
|
import"./index-q27bajqb.js";
|
|
32
32
|
import"./index-zgwm4ryv.js";
|
|
@@ -23,11 +23,11 @@ import {
|
|
|
23
23
|
validateLesson,
|
|
24
24
|
validateSkillCandidatePath,
|
|
25
25
|
validateSkillPath
|
|
26
|
-
} from "./index-
|
|
27
|
-
import"./index-
|
|
26
|
+
} from "./index-6ccynjv3.js";
|
|
27
|
+
import"./index-rt5jgktq.js";
|
|
28
28
|
import"./index-rtry5xyf.js";
|
|
29
|
-
import"./index-
|
|
30
|
-
import"./index-
|
|
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-
|
|
8
|
-
import"./index-
|
|
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";
|
|
@@ -33,12 +33,12 @@ import {
|
|
|
33
33
|
sanitizeSlug,
|
|
34
34
|
selectCandidateEntries,
|
|
35
35
|
writeEvalStub
|
|
36
|
-
} from "./index-
|
|
37
|
-
import"./index-
|
|
38
|
-
import"./index-
|
|
36
|
+
} from "./index-9cf1yr67.js";
|
|
37
|
+
import"./index-6ccynjv3.js";
|
|
38
|
+
import"./index-rt5jgktq.js";
|
|
39
39
|
import"./index-rtry5xyf.js";
|
|
40
|
-
import"./index-
|
|
41
|
-
import"./index-
|
|
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;
|