opencode-swarm 7.146.2 → 7.146.3
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/dist/agents/council-prompts.d.ts +3 -3
- package/dist/cli/{config-doctor-vstrprja.js → config-doctor-yd866pd5.js} +2 -2
- package/dist/cli/{core-3wzpwe5z.js → core-nc9a9g5m.js} +1 -1
- package/dist/cli/{curation-policy-x19e8bqc.js → curation-policy-9vv7v5rf.js} +6 -6
- package/dist/cli/{curator-cvy1s7wd.js → curator-acp80hpc.js} +27 -27
- package/dist/cli/{curator-llm-factory-6bra0bfd.js → curator-llm-factory-ewffa8r1.js} +27 -27
- package/dist/cli/{evidence-summary-service-yhap2xph.js → evidence-summary-service-8gw74j8g.js} +11 -11
- package/dist/cli/{gate-evidence-vxbyq5sb.js → gate-evidence-jj3zt2x1.js} +6 -6
- package/dist/cli/{guardrail-explain-h8cnwa02.js → guardrail-explain-50cp8k3r.js} +28 -28
- package/dist/cli/{guardrail-log-syb7tz2w.js → guardrail-log-jazq10gt.js} +3 -3
- package/dist/cli/{hive-promoter-3tex870c.js → hive-promoter-qhrngsvb.js} +27 -27
- package/dist/cli/{index-z5ppkn8y.js → index-0a4s2803.js} +6 -6
- package/dist/cli/{index-qbpxrw95.js → index-1kq3x5q6.js} +2 -2
- package/dist/cli/{index-tj861zhd.js → index-262kyrk3.js} +4 -4
- package/dist/cli/{index-c9jr4j2q.js → index-3377n9qp.js} +1 -1
- package/dist/cli/{index-p0m03xa6.js → index-3gagma8p.js} +4 -4
- package/dist/cli/{index-5e5a1y2r.js → index-3p4wgm0d.js} +1 -1
- package/dist/cli/{index-e1hjd15c.js → index-463msy1e.js} +1 -1
- package/dist/cli/{index-4vwn66wk.js → index-4zevsvaa.js} +3 -3
- package/dist/cli/{index-bghwrr59.js → index-6q35swn2.js} +1 -1
- package/dist/cli/{index-z9ed68jt.js → index-7ph5pz77.js} +17 -4
- package/dist/cli/{index-42nq97rb.js → index-923phxsp.js} +6 -6
- package/dist/cli/{index-cr90rcg3.js → index-a7cnyp5e.js} +7 -7
- package/dist/cli/{index-cx67qa9g.js → index-bxk21f2w.js} +1 -1
- package/dist/cli/{index-97psh79d.js → index-bxs4wkjf.js} +1 -1
- package/dist/cli/{index-y3hmyvt6.js → index-bydybrke.js} +2 -2
- package/dist/cli/{index-n4k0pt5f.js → index-cgcs823z.js} +4 -4
- package/dist/cli/{index-jv9xs6mb.js → index-eybamsqg.js} +2 -2
- package/dist/cli/{index-01ybcsa5.js → index-fypq68yn.js} +2 -2
- package/dist/cli/{index-yxhcy5cm.js → index-gayh8tmh.js} +55 -1
- package/dist/cli/{index-a1febb2k.js → index-gwt7ceh7.js} +2 -2
- package/dist/cli/{index-w0cj7zyd.js → index-j2ckvbx7.js} +1 -1
- package/dist/cli/{index-rfph0nhf.js → index-n96nt4gb.js} +1235 -589
- package/dist/cli/{index-zkaz3fhw.js → index-pc4423w8.js} +2 -2
- package/dist/cli/{index-vmfaafte.js → index-pgsvn005.js} +5 -5
- package/dist/cli/{index-qyvjp0bq.js → index-q81s0m8k.js} +66 -37
- package/dist/cli/{index-w5r84rd1.js → index-qjgg9qzs.js} +1 -1
- package/dist/cli/{index-r46q6996.js → index-qqawmxe7.js} +29 -29
- package/dist/cli/{index-vj9bba5k.js → index-v2eevdbj.js} +4 -4
- package/dist/cli/{index-ycgm9pzg.js → index-xz9w7sa9.js} +3 -2
- package/dist/cli/{index-f3x2gsby.js → index-ypwwchs0.js} +1 -1
- package/dist/cli/{index-46cypnz3.js → index-yr1aabxa.js} +4 -4
- package/dist/cli/index.js +27 -27
- package/dist/cli/{knowledge-escalator-mn4sx4qd.js → knowledge-escalator-7zpg79dx.js} +11 -11
- package/dist/cli/{knowledge-events-x975ngy4.js → knowledge-events-8abttcnt.js} +9 -9
- package/dist/cli/{knowledge-link-8pr02pza.js → knowledge-link-mgg482z6.js} +5 -5
- package/dist/cli/{knowledge-store-33p762ey.js → knowledge-store-a5mzf986.js} +6 -6
- package/dist/cli/{knowledge-validator-q5jc0scs.js → knowledge-validator-fn2myc73.js} +8 -8
- package/dist/cli/{pending-delegations-kkrczqv7.js → pending-delegations-591vme3d.js} +3 -3
- package/dist/cli/{pr-subscriptions-2xn238xt.js → pr-subscriptions-js5v2xr6.js} +3 -3
- package/dist/cli/{runner-e7z9cf5y.js → runner-rcnpm510.js} +6 -6
- package/dist/cli/{scan-cursor-p7t5mb4x.js → scan-cursor-4jv70zwb.js} +7 -7
- package/dist/cli/{schema-t8bmshhj.js → schema-jhz9hme9.js} +1 -1
- package/dist/cli/{scope-persistence-2kyrgsca.js → scope-persistence-ykswenxj.js} +7 -7
- package/dist/cli/{skill-generator-fwvmcv8m.js → skill-generator-k5pxb3w2.js} +13 -13
- package/dist/cli/{telemetry-t109dhv7.js → telemetry-xzy0qeap.js} +1 -1
- package/dist/cli/{worktree-collision-ownership-2jtg2my1.js → worktree-collision-ownership-vt0jzmdt.js} +3 -3
- package/dist/cli/{worktree-isolation-87j70zg1.js → worktree-isolation-443q0pah.js} +27 -27
- package/dist/commands/close.d.ts +1 -0
- package/dist/commands/context-map-stats.d.ts +5 -0
- package/dist/config/schema.d.ts +16 -0
- package/dist/context-map/telemetry.d.ts +168 -26
- package/dist/council/council-evidence-writer.d.ts +2 -1
- package/dist/council/council-freshness.d.ts +49 -0
- package/dist/council/council-review-identity.d.ts +133 -0
- package/dist/council/council-round-state.d.ts +27 -3
- package/dist/council/disagreement-detector.d.ts +12 -2
- package/dist/council/general-council-types.d.ts +32 -0
- package/dist/council/types.d.ts +43 -7
- package/dist/index.js +160 -138
- package/dist/observability/catalog.d.ts +7 -5
- package/dist/telemetry.d.ts +22 -1
- package/dist/tools/phase-complete/gates/types.d.ts +7 -0
- package/dist/tools/write-final-council-evidence.d.ts +1 -7
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
autoCommitDirty,
|
|
4
4
|
cleanUntrackedFiles
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-bxk21f2w.js";
|
|
6
6
|
import {
|
|
7
7
|
isPathWithinDeclaredScope,
|
|
8
8
|
unsafePathTextReason
|
|
@@ -26,13 +26,13 @@ import {
|
|
|
26
26
|
atomicWriteFile,
|
|
27
27
|
taskEvidencePath,
|
|
28
28
|
withTaskEvidenceLock
|
|
29
|
-
} from "./index-
|
|
29
|
+
} from "./index-1kq3x5q6.js";
|
|
30
30
|
import {
|
|
31
31
|
assertProjectRoot
|
|
32
|
-
} from "./index-
|
|
32
|
+
} from "./index-6q35swn2.js";
|
|
33
33
|
import {
|
|
34
34
|
telemetry
|
|
35
|
-
} from "./index-
|
|
35
|
+
} from "./index-q81s0m8k.js";
|
|
36
36
|
import {
|
|
37
37
|
exports_external,
|
|
38
38
|
init_zod
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
PlanSchema,
|
|
5
5
|
TaskStatusSchema,
|
|
6
6
|
init_loader
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-fypq68yn.js";
|
|
8
8
|
import {
|
|
9
9
|
assertProjectRoot,
|
|
10
10
|
withEvidenceLock
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-6q35swn2.js";
|
|
12
12
|
import {
|
|
13
13
|
emit
|
|
14
|
-
} from "./index-
|
|
14
|
+
} from "./index-q81s0m8k.js";
|
|
15
15
|
import {
|
|
16
16
|
criticalWarn,
|
|
17
17
|
init_logger,
|
|
@@ -962,4 +962,4 @@ var _internals = {
|
|
|
962
962
|
randomUUID: () => crypto.randomUUID()
|
|
963
963
|
};
|
|
964
964
|
|
|
965
|
-
export { derivePlanId, derivePlanIdentityHash,
|
|
965
|
+
export { normalizeExecutionProfileForHash, derivePlanId, derivePlanIdentityHash, LedgerStaleWriterError, computePlanHash, computePlanStructureHash, computeCurrentPlanHash, ledgerExists, getLatestLedgerSeq, readLedgerEvents, initLedger, readPlanEpochIdentity, getOrAdoptPlanEpochUnderLock, appendLedgerEvent, takeSnapshotWithRetry, takeSnapshotEvent, replaceTruncatedLedgerWithRecoveryRoot, replayFromLedger, replayFromLedgerWithStatus, readLedgerEventsWithIntegrity, loadLastApprovedPlan };
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
readLinkPointer,
|
|
8
8
|
resolveKnowledgeStoreDir,
|
|
9
9
|
resolveLinkDir
|
|
10
|
-
} from "./index-
|
|
10
|
+
} from "./index-j2ckvbx7.js";
|
|
11
11
|
|
|
12
12
|
// src/knowledge/curation-policy.ts
|
|
13
13
|
import { appendFile, mkdir as mkdir2, readFile as readFile2 } from "fs/promises";
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
_internals,
|
|
4
4
|
resolveWorktreeIsolationConfig
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-bydybrke.js";
|
|
6
6
|
import {
|
|
7
7
|
ApprovalEvidenceSchema,
|
|
8
8
|
BaseEvidenceSchema,
|
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
loadPluginConfig,
|
|
43
43
|
loadPluginConfigWithMeta,
|
|
44
44
|
loadPluginConfigWithMetaAsync
|
|
45
|
-
} from "./index-
|
|
45
|
+
} from "./index-fypq68yn.js";
|
|
46
46
|
import {
|
|
47
47
|
AUTO_REVIEW_V8_BURN_IN_DECISION,
|
|
48
48
|
AgentOverrideConfigSchema,
|
|
@@ -64,7 +64,7 @@ import {
|
|
|
64
64
|
TurboConfigSchema,
|
|
65
65
|
WorktreeIsolationConfigSchema,
|
|
66
66
|
resolveAutoReviewConfig
|
|
67
|
-
} from "./index-
|
|
67
|
+
} from "./index-7ph5pz77.js";
|
|
68
68
|
import {
|
|
69
69
|
ALL_AGENT_NAMES,
|
|
70
70
|
ALL_SUBAGENT_NAMES,
|
|
@@ -21,7 +21,7 @@ var package_default;
|
|
|
21
21
|
var init_package = __esm(() => {
|
|
22
22
|
package_default = {
|
|
23
23
|
name: "opencode-swarm",
|
|
24
|
-
version: "7.146.
|
|
24
|
+
version: "7.146.3",
|
|
25
25
|
description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
26
26
|
main: "dist/index.js",
|
|
27
27
|
types: "dist/index.d.ts",
|
|
@@ -1384,12 +1384,25 @@ var init_schema = __esm(() => {
|
|
|
1384
1384
|
CouncilConfigSchema = exports_external.object({
|
|
1385
1385
|
enabled: exports_external.boolean().default(false),
|
|
1386
1386
|
maxRounds: exports_external.number().int().min(1).max(10).default(3),
|
|
1387
|
-
parallelTimeoutMs: exports_external.number().int().min(5000).max(120000).default(30000),
|
|
1387
|
+
parallelTimeoutMs: exports_external.number().int().min(5000).max(120000).default(30000).describe("DEPRECATED \u2014 inert. Accepted for parse compatibility only; no runtime consumer exists and no timeout is enforced. Config doctor warns when this is explicitly set. Remove the key; dispatch timeouts are governed by the agent host. Scheduled for removal in a future release."),
|
|
1388
1388
|
vetoPriority: exports_external.boolean().default(true),
|
|
1389
1389
|
requireAllMembers: exports_external.boolean().default(false).describe("When true, submit_council_verdicts rejects if fewer than 5 member verdicts are provided. Equivalent to minimumMembers: 5."),
|
|
1390
|
-
minimumMembers: exports_external.number().int().min(1).max(5).default(3).describe("Minimum distinct council member verdicts required for synthesis. Default 3. Set to 1 to disable quorum enforcement. requireAllMembers: true overrides this to 5 (stricter constraint wins)."),
|
|
1391
|
-
escalateOnMaxRounds: exports_external.string().optional().describe("Optional webhook URL or handler name
|
|
1390
|
+
minimumMembers: exports_external.number().int().min(1).max(5).default(3).describe("Minimum distinct council member verdicts required for synthesis (task/phase councils only \u2014 the final council uses finalCompletionPolicy). Default 3. Set to 1 to disable quorum enforcement. requireAllMembers: true overrides this to 5 (stricter constraint wins)."),
|
|
1391
|
+
escalateOnMaxRounds: exports_external.string().optional().describe("Optional webhook URL or handler name declared for escalation when maxRounds is reached without APPROVE. REMAINS INERT \u2014 no handler or webhook execution exists or is added; config doctor warns when it is set (issue #1650). Max-rounds exhaustion emits a durable structured event and a user escalation message; wiring real outbound escalation requires a separate security review."),
|
|
1392
1392
|
phaseConcernsAllowComplete: exports_external.boolean().default(true).describe("When true, a phase-level council CONCERNS verdict with only MEDIUM/LOW findings does NOT block phase completion \u2014 the advisory notes are logged as warnings and the phase proceeds. When false, CONCERNS blocks like REJECT. Note: HIGH/CRITICAL findings from CONCERNS members are always promoted to requiredFixes and block at the tool level regardless of this setting. Default: true."),
|
|
1393
|
+
finalCompletionPolicy: exports_external.object({
|
|
1394
|
+
mode: exports_external.enum(["all_required", "quorum"]).default("all_required").describe("'all_required' (default) preserves the exact legacy final council: all five canonical roles, five distinct members, zero absentees. 'quorum' is an explicit weakening that accepts a bounded minimum of distinct canonical members instead of all five."),
|
|
1395
|
+
minimumMembers: exports_external.number().int().min(3).max(5).optional().describe('Required when mode is "quorum": minimum distinct canonical council members (3\u20135) that must vote. Unknown, duplicate, and cross-swarm identities never count.')
|
|
1396
|
+
}).default({ mode: "all_required" }).superRefine((policy, ctx) => {
|
|
1397
|
+
if (policy.mode === "quorum" && policy.minimumMembers === undefined) {
|
|
1398
|
+
ctx.addIssue({
|
|
1399
|
+
code: "custom",
|
|
1400
|
+
path: ["minimumMembers"],
|
|
1401
|
+
message: 'finalCompletionPolicy.mode "quorum" requires an explicit minimumMembers between 3 and 5.'
|
|
1402
|
+
});
|
|
1403
|
+
}
|
|
1404
|
+
}).describe("Final-council completion policy. Missing/default is all_required (strict five-member requirement). The normalized policy participates in the council policy digest, so any change invalidates previously accepted final-council evidence."),
|
|
1405
|
+
freshnessMaxAgeHours: exports_external.number().int().min(1).max(720).default(24).describe("Maximum age (hours, 1\u2013720) of phase-council, architecture-supervisor, and final-council evidence. Default 24 preserves prior behavior. Part of the council policy digest, so changing it invalidates prior council evidence."),
|
|
1393
1406
|
general: GeneralCouncilConfigSchema.optional()
|
|
1394
1407
|
}).strict();
|
|
1395
1408
|
PrMonitorConfigSchema = exports_external.object({
|
|
@@ -6,10 +6,10 @@ import {
|
|
|
6
6
|
} from "./index-ae75rja9.js";
|
|
7
7
|
import {
|
|
8
8
|
resolveKnowledgeStoreDir
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-j2ckvbx7.js";
|
|
10
10
|
import {
|
|
11
11
|
atomicWriteFile
|
|
12
|
-
} from "./index-
|
|
12
|
+
} from "./index-1kq3x5q6.js";
|
|
13
13
|
import {
|
|
14
14
|
init_knowledge_types,
|
|
15
15
|
isActiveStatus
|
|
@@ -709,7 +709,7 @@ async function applyConfidenceFloorAction(directory, touched, options) {
|
|
|
709
709
|
const {
|
|
710
710
|
readAuthoritativeKnowledgeCounterRollups,
|
|
711
711
|
effectiveRetrievalOutcomes
|
|
712
|
-
} = await import("./knowledge-events-
|
|
712
|
+
} = await import("./knowledge-events-8abttcnt.js");
|
|
713
713
|
const rollups = await readAuthoritativeKnowledgeCounterRollups(directory);
|
|
714
714
|
const flagIds = new Set;
|
|
715
715
|
for (const e of atFloor) {
|
|
@@ -776,11 +776,11 @@ async function applyConfidenceFloorAction(directory, touched, options) {
|
|
|
776
776
|
});
|
|
777
777
|
}
|
|
778
778
|
if (action === "quarantine" && toQuarantine.length > 0) {
|
|
779
|
-
const { quarantineEntry } = await import("./knowledge-validator-
|
|
780
|
-
const { KnowledgeConfigSchema } = await import("./schema-
|
|
779
|
+
const { quarantineEntry } = await import("./knowledge-validator-fn2myc73.js");
|
|
780
|
+
const { KnowledgeConfigSchema } = await import("./schema-jhz9hme9.js");
|
|
781
781
|
let config;
|
|
782
782
|
try {
|
|
783
|
-
const { loadPluginConfigWithMeta } = await import("./index-
|
|
783
|
+
const { loadPluginConfigWithMeta } = await import("./index-4zevsvaa.js");
|
|
784
784
|
const { config: loadedConfig } = loadPluginConfigWithMeta(directory);
|
|
785
785
|
config = KnowledgeConfigSchema.parse(loadedConfig.knowledge ?? {});
|
|
786
786
|
} catch {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
loadPluginConfigWithMeta
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-fypq68yn.js";
|
|
5
5
|
import {
|
|
6
6
|
KnowledgeConfigSchema,
|
|
7
7
|
init_schema
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-7ph5pz77.js";
|
|
9
9
|
import {
|
|
10
10
|
validateSwarmPath
|
|
11
11
|
} from "./index-w8pgjr75.js";
|
|
@@ -14,16 +14,16 @@ import {
|
|
|
14
14
|
} from "./index-ae75rja9.js";
|
|
15
15
|
import {
|
|
16
16
|
resolveKnowledgeStoreDir
|
|
17
|
-
} from "./index-
|
|
17
|
+
} from "./index-j2ckvbx7.js";
|
|
18
18
|
import {
|
|
19
19
|
atomicWriteFile
|
|
20
|
-
} from "./index-
|
|
20
|
+
} from "./index-1kq3x5q6.js";
|
|
21
21
|
import {
|
|
22
22
|
assertProjectRoot
|
|
23
|
-
} from "./index-
|
|
23
|
+
} from "./index-6q35swn2.js";
|
|
24
24
|
import {
|
|
25
25
|
emit
|
|
26
|
-
} from "./index-
|
|
26
|
+
} from "./index-q81s0m8k.js";
|
|
27
27
|
import {
|
|
28
28
|
require_proper_lockfile
|
|
29
29
|
} from "./index-7g4c7s5r.js";
|
|
@@ -2693,7 +2693,7 @@ async function applyKnowledgeVerdictFeedback(directory, options) {
|
|
|
2693
2693
|
}
|
|
2694
2694
|
let bumps = 0;
|
|
2695
2695
|
if (deltas.length > 0) {
|
|
2696
|
-
const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-
|
|
2696
|
+
const { bumpKnowledgeConfidenceBatch } = await import("./knowledge-store-a5mzf986.js");
|
|
2697
2697
|
bumps = await bumpKnowledgeConfidenceBatch(directory, deltas, options?.floorOptions);
|
|
2698
2698
|
}
|
|
2699
2699
|
return {
|
|
@@ -92,7 +92,7 @@ var _internals = {
|
|
|
92
92
|
symlinkSync: fs.symlinkSync
|
|
93
93
|
},
|
|
94
94
|
writeScopeToDisk: async (directory, taskId, files) => {
|
|
95
|
-
const { writeScopeToDisk: realWrite } = await import("./scope-persistence-
|
|
95
|
+
const { writeScopeToDisk: realWrite } = await import("./scope-persistence-ykswenxj.js");
|
|
96
96
|
return realWrite(directory, taskId, files);
|
|
97
97
|
},
|
|
98
98
|
writeLaneProfileToDisk: async (_worktreePath, _laneIndex, _envOverrides) => {
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
init_loader,
|
|
4
4
|
loadPluginConfigWithMeta
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-fypq68yn.js";
|
|
6
6
|
import {
|
|
7
7
|
init_schema
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-7ph5pz77.js";
|
|
9
9
|
import {
|
|
10
10
|
DEFAULT_WORKTREE_ISOLATION_CONFIG,
|
|
11
11
|
init_constants
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
authorizeCuration
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-463msy1e.js";
|
|
5
5
|
import {
|
|
6
6
|
findNearDuplicate,
|
|
7
7
|
inferTags,
|
|
@@ -9,13 +9,13 @@ import {
|
|
|
9
9
|
resolveSwarmKnowledgePath,
|
|
10
10
|
resolveSwarmRejectedPath,
|
|
11
11
|
transactKnowledge
|
|
12
|
-
} from "./index-
|
|
12
|
+
} from "./index-923phxsp.js";
|
|
13
13
|
import {
|
|
14
14
|
resolveKnowledgeStoreDir
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-j2ckvbx7.js";
|
|
16
16
|
import {
|
|
17
17
|
atomicWriteFile
|
|
18
|
-
} from "./index-
|
|
18
|
+
} from "./index-1kq3x5q6.js";
|
|
19
19
|
import {
|
|
20
20
|
require_proper_lockfile
|
|
21
21
|
} from "./index-7g4c7s5r.js";
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
import {
|
|
3
3
|
readKnowledge,
|
|
4
4
|
transactKnowledge
|
|
5
|
-
} from "./index-
|
|
5
|
+
} from "./index-923phxsp.js";
|
|
6
6
|
import {
|
|
7
7
|
init_git_executable,
|
|
8
8
|
resolveGitExecutableAsync
|
|
9
9
|
} from "./index-9e6fdz2h.js";
|
|
10
10
|
import {
|
|
11
11
|
resolveKnowledgeStoreDir
|
|
12
|
-
} from "./index-
|
|
12
|
+
} from "./index-j2ckvbx7.js";
|
|
13
13
|
import {
|
|
14
14
|
init_knowledge_types,
|
|
15
15
|
isActiveStatus
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
PluginConfigSchema,
|
|
7
7
|
init_schema,
|
|
8
8
|
resolveExternalSkillsConfig
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-7ph5pz77.js";
|
|
10
10
|
import {
|
|
11
11
|
GIT_BINARY_ENV_VAR,
|
|
12
12
|
init_git_executable
|
|
@@ -788,4 +788,4 @@ var PlanSchema = exports_external.object({
|
|
|
788
788
|
execution_profile: ExecutionProfileSchema.optional()
|
|
789
789
|
});
|
|
790
790
|
|
|
791
|
-
export {
|
|
791
|
+
export { loadPluginConfig, loadPluginConfigWithMeta, getSafeDefaultConfigLoadResult, loadPluginConfigWithMetaAsync, loadAgentPrompt, exports_loader, init_loader, ExecutionProfileSchema, TaskStatusSchema, TaskSizeSchema, PhaseStatusSchema, MigrationStatusSchema, TaskSchema, PhaseSchema, PlanSchema };
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
PluginConfigSchema,
|
|
7
7
|
init_schema,
|
|
8
8
|
stripKnownSwarmPrefix
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-7ph5pz77.js";
|
|
10
10
|
import {
|
|
11
11
|
ALL_AGENT_NAMES,
|
|
12
12
|
init_constants
|
|
@@ -100,6 +100,59 @@ function emitObjectTypeMismatch(key, value, findings) {
|
|
|
100
100
|
function isPlainObject(value) {
|
|
101
101
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
102
102
|
}
|
|
103
|
+
function collectRawCouncilPolicyFindings(directory) {
|
|
104
|
+
const findings = [];
|
|
105
|
+
const { userConfigPath, projectConfigPath } = getConfigPaths(directory);
|
|
106
|
+
for (const configPath of [userConfigPath, projectConfigPath]) {
|
|
107
|
+
if (!fs.existsSync(configPath))
|
|
108
|
+
continue;
|
|
109
|
+
try {
|
|
110
|
+
const stats = fs.statSync(configPath);
|
|
111
|
+
if (stats.size > CONFIG_DOCTOR_MAX_CONFIG_FILE_BYTES)
|
|
112
|
+
continue;
|
|
113
|
+
const raw = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
114
|
+
if (!isPlainObject(raw) || raw.council === undefined)
|
|
115
|
+
continue;
|
|
116
|
+
if (!isPlainObject(raw.council))
|
|
117
|
+
continue;
|
|
118
|
+
const council = raw.council;
|
|
119
|
+
if ("parallelTimeoutMs" in council) {
|
|
120
|
+
findings.push({
|
|
121
|
+
id: "council-parallel-timeout-deprecated",
|
|
122
|
+
title: "Deprecated and inert: council.parallelTimeoutMs",
|
|
123
|
+
description: 'Config field "council.parallelTimeoutMs" (in ' + configPath + ") is deprecated and inert: no runtime consumer exists and no timeout is enforced. It is accepted only for parse compatibility. Remove the key \u2014 dispatch timeouts are governed by the agent host. The field is scheduled for removal in a future release.",
|
|
124
|
+
severity: "warn",
|
|
125
|
+
path: "council.parallelTimeoutMs",
|
|
126
|
+
currentValue: council.parallelTimeoutMs,
|
|
127
|
+
autoFixable: false
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
if ("escalateOnMaxRounds" in council) {
|
|
131
|
+
findings.push({
|
|
132
|
+
id: "council-escalate-inert",
|
|
133
|
+
title: "Inert: council.escalateOnMaxRounds",
|
|
134
|
+
description: 'Config field "council.escalateOnMaxRounds" (in ' + configPath + ") is set, but the handler/webhook remains INERT in this release: no handler, webhook, or outbound execution exists or was added (issue #1650). Max-rounds exhaustion emits a durable structured event (.swarm/council/events/max-rounds-exhaustion.jsonl) and a user escalation message instead; the run stays fail-closed. Wiring real outbound escalation requires a separate security review.",
|
|
135
|
+
severity: "warn",
|
|
136
|
+
path: "council.escalateOnMaxRounds",
|
|
137
|
+
currentValue: "[redacted: handler/webhook strings are never echoed]",
|
|
138
|
+
autoFixable: false
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
if (isPlainObject(council.finalCompletionPolicy) && council.finalCompletionPolicy.mode === "quorum") {
|
|
142
|
+
findings.push({
|
|
143
|
+
id: "council-final-quorum-weaker",
|
|
144
|
+
title: 'council.finalCompletionPolicy.mode "quorum" weakens the strict final council',
|
|
145
|
+
description: "Final-council completion is configured in quorum mode (in " + configPath + "): a bounded minimum of distinct canonical members can accept the project instead of the strict default (all five canonical roles, zero absentees). This is weaker than the strict default. Any change to this policy invalidates previously accepted final-council evidence.",
|
|
146
|
+
severity: "warn",
|
|
147
|
+
path: "council.finalCompletionPolicy",
|
|
148
|
+
currentValue: council.finalCompletionPolicy,
|
|
149
|
+
autoFixable: false
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
} catch {}
|
|
153
|
+
}
|
|
154
|
+
return findings;
|
|
155
|
+
}
|
|
103
156
|
function collectRawGatesConfigFindings(directory) {
|
|
104
157
|
const findings = [];
|
|
105
158
|
const { userConfigPath, projectConfigPath } = getConfigPaths(directory);
|
|
@@ -1234,6 +1287,7 @@ function runConfigDoctor(config, directory) {
|
|
|
1234
1287
|
const findings = [];
|
|
1235
1288
|
walkConfigAndValidate(config, "", findings);
|
|
1236
1289
|
findings.push(...collectRawGatesConfigFindings(directory));
|
|
1290
|
+
findings.push(...collectRawCouncilPolicyFindings(directory));
|
|
1237
1291
|
findings.push(...collectRawStrictSectionFindings(directory));
|
|
1238
1292
|
findings.push(...collectRawValueConstraintFindings(directory));
|
|
1239
1293
|
findings.push(...collectRawAutoReviewCompatibilityFindings(directory));
|
|
@@ -12,14 +12,14 @@ import {
|
|
|
12
12
|
detectPosixWrites,
|
|
13
13
|
detectWindowsWrites,
|
|
14
14
|
resolveWriteTargets
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-n96nt4gb.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-3377n9qp.js";
|
|
23
23
|
|
|
24
24
|
// src/services/guardrail-explain-service.ts
|
|
25
25
|
import path from "path";
|