opencode-swarm 7.109.3 → 7.110.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/swarm/SKILL.md +186 -0
- package/.opencode/skills/swarm-ci-monitor/SKILL.md +369 -0
- package/.opencode/skills/swarm-pr-feedback/SKILL.md +86 -17
- package/dist/cli/{config-doctor-q354tb2w.js → config-doctor-9vjyj9m3.js} +2 -2
- package/dist/cli/{curator-9q3m25va.js → curator-4qqzpd85.js} +4 -4
- package/dist/cli/{curator-llm-factory-78dyv010.js → curator-llm-factory-y4kvr1ph.js} +4 -4
- package/dist/cli/{guardrail-explain-csnawe0d.js → guardrail-explain-10hh57cr.js} +5 -5
- package/dist/cli/{guardrail-log-8mqqsssq.js → guardrail-log-5240bawg.js} +3 -3
- package/dist/cli/{hive-promoter-xnx734y3.js → hive-promoter-wvxqyayt.js} +4 -4
- package/dist/cli/{index-h4c4rrwx.js → index-18690p15.js} +23 -2
- package/dist/cli/{index-xyz8epk6.js → index-1mc2yfc2.js} +79 -17
- package/dist/cli/{index-wj4jeavn.js → index-d3txrx5q.js} +1 -1
- package/dist/cli/{index-3nd7bz90.js → index-khj0knr0.js} +6 -6
- package/dist/cli/{index-vx76tcxe.js → index-p5vm9gy9.js} +1 -1
- package/dist/cli/{index-r9dbs4zr.js → index-xhsba2sn.js} +2 -2
- package/dist/cli/{index-fm7xz1ne.js → index-zjh648z4.js} +81 -1
- package/dist/cli/index.js +4 -4
- package/dist/cli/{schema-x17zmd03.js → schema-5vmb5dh8.js} +3 -1
- package/dist/config/bundled-skills.d.ts +1 -1
- package/dist/config/schema.d.ts +12 -4
- package/dist/index.js +6 -6
- package/package.json +3 -1
|
@@ -6,7 +6,10 @@ description: >
|
|
|
6
6
|
requested changes, CI/check failures, merge conflicts, stale PR branches, or
|
|
7
7
|
PR follow-up work that must close all known issues without dropping findings.
|
|
8
8
|
Supports multi-round bot reviews (the repository's bot posts a new review
|
|
9
|
-
after every push) via the iterative pattern documented in the body.
|
|
9
|
+
after every push) via the iterative pattern documented in the body. Stage A
|
|
10
|
+
(structural pre-checks) and Stage B (reviewer + test_engineer) gates and the
|
|
11
|
+
reviewer + critic closeout gate are MANDATORY for any change made as part of
|
|
12
|
+
this process.
|
|
10
13
|
---
|
|
11
14
|
|
|
12
15
|
# Swarm PR Feedback
|
|
@@ -16,6 +19,12 @@ Use this skill to close known PR feedback. This is not a fresh broad PR review.
|
|
|
16
19
|
feedback surfaces, verifies each claim, clusters related problems, fixes confirmed
|
|
17
20
|
issues, validates the branch, and reports closure status for every item.
|
|
18
21
|
|
|
22
|
+
**Mandatory gate contract.** Stage A (structural pre-checks) and Stage B
|
|
23
|
+
(reviewer + test_engineer) gates and the reviewer + critic closeout gate are
|
|
24
|
+
MANDATORY for any change made as part of this process. No fix lands, no closure
|
|
25
|
+
ledger row is marked FIXED, and no PR is published until all three gates pass on
|
|
26
|
+
the current diff. See "Mandatory Gates" below for the full protocol.
|
|
27
|
+
|
|
19
28
|
When the work starts from a prior `swarm-pr-review` run, ingest the review's
|
|
20
29
|
handoff artifact (for example
|
|
21
30
|
`.swarm/pr-review/<run_id>/feedback-handoff.md` or `.json`) before triage.
|
|
@@ -188,11 +197,11 @@ tree:
|
|
|
188
197
|
filesystem (`Read`/`Glob`/`Grep`), and fixes must land on the PR branch — without a
|
|
189
198
|
checkout you would verify and patch the base branch's code instead. Record the
|
|
190
199
|
`base_ref..head_ref` range for diff-scoped inspection.
|
|
191
|
-
- Pass the `base_ref..head_ref` commit range in every read-only verification or
|
|
192
|
-
|
|
193
|
-
|
|
200
|
+
- Pass the `base_ref..head_ref` commit range in every read-only verification or
|
|
201
|
+
explorer/advisory-lane delegation so lane agents can inspect specific revisions
|
|
202
|
+
with `git show` when needed.
|
|
194
203
|
- If no PR reference was provided (a pasted-feedback session on the current branch),
|
|
195
|
-
|
|
204
|
+
confirm the current branch is the intended PR branch before editing.
|
|
196
205
|
|
|
197
206
|
When a verification lane result includes `output_ref`, treat `output` as a
|
|
198
207
|
preview and call `retrieve_lane_output` before using it to classify, resolve,
|
|
@@ -481,25 +490,85 @@ or compatibility policy, mark the item `NEEDS_USER_DECISION` and ask.
|
|
|
481
490
|
and let the merge queue perform final current-base validation. Still resolve real
|
|
482
491
|
merge conflicts and SHA-dependent review threads before queuing.
|
|
483
492
|
|
|
484
|
-
##
|
|
493
|
+
## Mandatory Gates
|
|
494
|
+
|
|
495
|
+
**Stage A and Stage B gates and the reviewer + critic closeout gate are
|
|
496
|
+
MANDATORY for any change made as part of the PR-feedback process.** No fix
|
|
497
|
+
lands, no closure ledger row is marked FIXED, and no PR is published until all
|
|
498
|
+
three gates pass on the current diff. This section uses the repository's
|
|
499
|
+
established Stage A/B meaning: Stage A = `pre_check_batch`-equivalent structural
|
|
500
|
+
pre-checks; Stage B = `reviewer` + `test_engineer` per-task gates (consistent
|
|
501
|
+
with `execute`, `plan`, `specify`, `brainstorm`, `docs/swarm-briefing.md`, and
|
|
502
|
+
`docs/council/README.md`).
|
|
503
|
+
|
|
504
|
+
If a gate failure is suspected pre-existing, prove it on the base branch or
|
|
505
|
+
label it `UNVERIFIED`. Do not call the branch green while required checks are
|
|
506
|
+
non-green.
|
|
507
|
+
|
|
508
|
+
### Stage A — structural pre-checks (mandatory before Stage B)
|
|
509
|
+
|
|
510
|
+
Run for every changed surface. No "where relevant" — every PR-feedback change
|
|
511
|
+
runs these; if a surface is genuinely untouched, state that explicitly rather
|
|
512
|
+
than skipping silently.
|
|
513
|
+
|
|
514
|
+
- `bun run build` (or the repository's build command) — must succeed.
|
|
515
|
+
- typecheck — must pass.
|
|
516
|
+
- lint/format (e.g. `biome ci .`) — must pass.
|
|
517
|
+
- `git diff --check` — no whitespace or merge-marker errors.
|
|
518
|
+
- exact failing CI/test command reproduced locally when a ledger item is rooted
|
|
519
|
+
in a CI/test failure — the reproduction must fail on the pre-fix tree and pass
|
|
520
|
+
after the fix.
|
|
521
|
+
|
|
522
|
+
### Stage B — reviewer + test_engineer (mandatory after Stage A passes)
|
|
523
|
+
|
|
524
|
+
Two independent agents on the Stage-A-green diff:
|
|
525
|
+
|
|
526
|
+
- **reviewer** — independent (fresh context, not the implementer, not a continued
|
|
527
|
+
conversation). Validates each fix on the current diff against the feedback
|
|
528
|
+
item it closes. Verdict per item: APPROVE / NEEDS_REVISION / BLOCKED.
|
|
529
|
+
- **test_engineer** — writes and runs the falsification probe or regression test
|
|
530
|
+
that proves each fix actually resolves its item (tests for changed behavior or
|
|
531
|
+
newly covered gaps). Verdict per item: PASS / FAIL / BLOCKED.
|
|
485
532
|
|
|
486
|
-
|
|
533
|
+
Address every NEEDS_REVISION / BLOCKED / FAIL, then re-run the affected agent on
|
|
534
|
+
the current diff.
|
|
487
535
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
536
|
+
### Closeout gate — reviewer + critic (mandatory after Stage B)
|
|
537
|
+
|
|
538
|
+
A *separate* reviewer + critic pair on the Stage-B-approved diff. This is the
|
|
539
|
+
swarm closeout contract (see `../swarm/SKILL.md` "Mandatory implementation
|
|
540
|
+
closeout gate"); because this skill edits code, docs, release notes, or skill files it applies in full — Stage B
|
|
541
|
+
alone does not satisfy it.
|
|
542
|
+
|
|
543
|
+
- **independent reviewer** (fresh context, separate from the Stage B reviewer)
|
|
544
|
+
→ APPROVE / NEEDS_REVISION / BLOCKED per item.
|
|
545
|
+
- **final critic** (separate fresh context, not a continued conversation with
|
|
546
|
+
the reviewer, dispatched after the reviewer returns APPROVE) → APPROVE /
|
|
547
|
+
NEEDS_REVISION / BLOCKED per item. The critic challenges: is every original
|
|
548
|
+
feedback item actually resolved? Any requirement drift, weak evidence, missing
|
|
549
|
+
sibling-file checks, stale approvals, anything unwired or silently deferred?
|
|
550
|
+
|
|
551
|
+
Address every NEEDS_REVISION / BLOCKED item, re-review with the reviewer if the
|
|
552
|
+
critic surfaces correctness issues, then re-critic. **Any edit after the
|
|
553
|
+
reviewer's or critic's approval invalidates that approval** — re-run the
|
|
554
|
+
affected gate on the current diff before publishing.
|
|
555
|
+
|
|
556
|
+
Record both closeout verdicts (reviewer + critic, with HEAD/diff) in
|
|
557
|
+
`.claude/session/tasks/<slug>/gates.md` per the `durable-session-state` skill
|
|
558
|
+
(`.swarm/` is the plugin's runtime state — never write task artifacts there).
|
|
559
|
+
|
|
560
|
+
### Post-publish verification (mandatory after the PR is pushed)
|
|
561
|
+
|
|
562
|
+
These checks run after the fix lands on the remote — they are NOT Stage A
|
|
563
|
+
pre-checks and must not be folded into Stage A.
|
|
564
|
+
|
|
565
|
+
- PR metadata checks after push: head SHA, check status,
|
|
566
|
+
mergeability/conflicts, and unresolved feedback state.
|
|
494
567
|
- After conflict fixes, verify remote mergeability is clean (`MERGEABLE` /
|
|
495
568
|
`CLEAN`), not only that local conflict markers disappeared.
|
|
496
569
|
- For current-head CI, prefer run-level details when PR checks look stale:
|
|
497
570
|
`gh run view <run-id> --json headSha,status,conclusion,jobs,url`.
|
|
498
571
|
|
|
499
|
-
If a validation failure is suspected pre-existing, prove it on the base branch or
|
|
500
|
-
label it `UNVERIFIED`. Do not call the branch green while required checks are
|
|
501
|
-
non-green.
|
|
502
|
-
|
|
503
572
|
## Publishing And Communication
|
|
504
573
|
|
|
505
574
|
After fixes, update the PR body or comment with a closure ledger:
|
|
@@ -12,8 +12,8 @@ import {
|
|
|
12
12
|
shouldRunOnStartup,
|
|
13
13
|
writeBackupArtifact,
|
|
14
14
|
writeDoctorArtifact
|
|
15
|
-
} from "./index-
|
|
16
|
-
import"./index-
|
|
15
|
+
} from "./index-zjh648z4.js";
|
|
16
|
+
import"./index-18690p15.js";
|
|
17
17
|
import"./index-bfwt3abw.js";
|
|
18
18
|
import"./index-5e4e2hvv.js";
|
|
19
19
|
import"./index-p0arc26j.js";
|
|
@@ -11,17 +11,17 @@ import {
|
|
|
11
11
|
runCuratorInit,
|
|
12
12
|
runCuratorPhase,
|
|
13
13
|
writeCuratorSummary
|
|
14
|
-
} from "./index-
|
|
15
|
-
import"./index-
|
|
14
|
+
} from "./index-1mc2yfc2.js";
|
|
15
|
+
import"./index-d3txrx5q.js";
|
|
16
16
|
import"./index-mtzjbaaa.js";
|
|
17
17
|
import"./index-c8s9a3zh.js";
|
|
18
|
-
import"./index-
|
|
18
|
+
import"./index-zjh648z4.js";
|
|
19
19
|
import"./index-j2v3w1ds.js";
|
|
20
20
|
import"./index-scww5b77.js";
|
|
21
21
|
import"./index-yw8qpf51.js";
|
|
22
22
|
import"./index-85bacexr.js";
|
|
23
23
|
import"./index-09xpycan.js";
|
|
24
|
-
import"./index-
|
|
24
|
+
import"./index-18690p15.js";
|
|
25
25
|
import"./index-b15qbvph.js";
|
|
26
26
|
import"./index-y5z2qdvk.js";
|
|
27
27
|
import"./index-41fgssqr.js";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
createCuratorLLMDelegate
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
4
|
+
} from "./index-1mc2yfc2.js";
|
|
5
|
+
import"./index-d3txrx5q.js";
|
|
6
6
|
import"./index-mtzjbaaa.js";
|
|
7
7
|
import"./index-c8s9a3zh.js";
|
|
8
|
-
import"./index-
|
|
8
|
+
import"./index-zjh648z4.js";
|
|
9
9
|
import"./index-j2v3w1ds.js";
|
|
10
10
|
import"./index-scww5b77.js";
|
|
11
11
|
import"./index-yw8qpf51.js";
|
|
12
12
|
import"./index-85bacexr.js";
|
|
13
13
|
import"./index-09xpycan.js";
|
|
14
|
-
import"./index-
|
|
14
|
+
import"./index-18690p15.js";
|
|
15
15
|
import"./index-b15qbvph.js";
|
|
16
16
|
import"./index-y5z2qdvk.js";
|
|
17
17
|
import"./index-41fgssqr.js";
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
handleGuardrailExplain
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
6
|
-
import"./index-
|
|
4
|
+
} from "./index-xhsba2sn.js";
|
|
5
|
+
import"./index-1mc2yfc2.js";
|
|
6
|
+
import"./index-d3txrx5q.js";
|
|
7
7
|
import"./index-mtzjbaaa.js";
|
|
8
8
|
import"./index-c8s9a3zh.js";
|
|
9
|
-
import"./index-
|
|
9
|
+
import"./index-zjh648z4.js";
|
|
10
10
|
import"./index-j2v3w1ds.js";
|
|
11
11
|
import"./index-scww5b77.js";
|
|
12
12
|
import"./index-yw8qpf51.js";
|
|
13
13
|
import"./index-85bacexr.js";
|
|
14
14
|
import"./index-09xpycan.js";
|
|
15
|
-
import"./index-
|
|
15
|
+
import"./index-18690p15.js";
|
|
16
16
|
import"./index-b15qbvph.js";
|
|
17
17
|
import"./index-y5z2qdvk.js";
|
|
18
18
|
import"./index-41fgssqr.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-p5vm9gy9.js";
|
|
5
|
+
import"./index-d3txrx5q.js";
|
|
6
|
+
import"./index-18690p15.js";
|
|
7
7
|
import"./index-bfwt3abw.js";
|
|
8
8
|
import"./index-5e4e2hvv.js";
|
|
9
9
|
import"./index-p0arc26j.js";
|
|
@@ -5,17 +5,17 @@ import {
|
|
|
5
5
|
isHiveEligible,
|
|
6
6
|
promoteFromSwarm,
|
|
7
7
|
promoteToHive
|
|
8
|
-
} from "./index-
|
|
9
|
-
import"./index-
|
|
8
|
+
} from "./index-1mc2yfc2.js";
|
|
9
|
+
import"./index-d3txrx5q.js";
|
|
10
10
|
import"./index-mtzjbaaa.js";
|
|
11
11
|
import"./index-c8s9a3zh.js";
|
|
12
|
-
import"./index-
|
|
12
|
+
import"./index-zjh648z4.js";
|
|
13
13
|
import"./index-j2v3w1ds.js";
|
|
14
14
|
import"./index-scww5b77.js";
|
|
15
15
|
import"./index-yw8qpf51.js";
|
|
16
16
|
import"./index-85bacexr.js";
|
|
17
17
|
import"./index-09xpycan.js";
|
|
18
|
-
import"./index-
|
|
18
|
+
import"./index-18690p15.js";
|
|
19
19
|
import"./index-b15qbvph.js";
|
|
20
20
|
import"./index-y5z2qdvk.js";
|
|
21
21
|
import"./index-41fgssqr.js";
|
|
@@ -1126,6 +1126,27 @@ var QualityBudgetConfigSchema = GateFeatureSchema.extend({
|
|
|
1126
1126
|
enforce_on_globs: exports_external.array(exports_external.string()).default(["src/**"]),
|
|
1127
1127
|
exclude_globs: exports_external.array(exports_external.string()).default(["docs/**", "tests/**", "**/*.test.*"])
|
|
1128
1128
|
});
|
|
1129
|
+
var GATE_CONFIG_KNOWN_SECTION_KEYS = {
|
|
1130
|
+
syntax_check: ["enabled"],
|
|
1131
|
+
placeholder_scan: [
|
|
1132
|
+
"enabled",
|
|
1133
|
+
"deny_patterns",
|
|
1134
|
+
"allow_globs",
|
|
1135
|
+
"max_allowed_findings"
|
|
1136
|
+
],
|
|
1137
|
+
sast_scan: ["enabled"],
|
|
1138
|
+
sbom_generate: ["enabled"],
|
|
1139
|
+
build_check: ["enabled"],
|
|
1140
|
+
quality_budget: [
|
|
1141
|
+
"enabled",
|
|
1142
|
+
"max_complexity_delta",
|
|
1143
|
+
"max_public_api_delta",
|
|
1144
|
+
"max_duplication_ratio",
|
|
1145
|
+
"min_test_to_code_ratio",
|
|
1146
|
+
"enforce_on_globs",
|
|
1147
|
+
"exclude_globs"
|
|
1148
|
+
]
|
|
1149
|
+
};
|
|
1129
1150
|
var GateConfigSchema = exports_external.object({
|
|
1130
1151
|
syntax_check: GateFeatureSchema.default({ enabled: true }),
|
|
1131
1152
|
placeholder_scan: PlaceholderScanConfigSchema.default({
|
|
@@ -1154,7 +1175,7 @@ var GateConfigSchema = exports_external.object({
|
|
|
1154
1175
|
sast_scan: GateFeatureSchema.default({ enabled: true }),
|
|
1155
1176
|
sbom_generate: GateFeatureSchema.default({ enabled: true }),
|
|
1156
1177
|
build_check: GateFeatureSchema.default({ enabled: true }),
|
|
1157
|
-
quality_budget: QualityBudgetConfigSchema
|
|
1178
|
+
quality_budget: QualityBudgetConfigSchema.default(() => QualityBudgetConfigSchema.parse({}))
|
|
1158
1179
|
});
|
|
1159
1180
|
var PipelineConfigSchema = exports_external.object({
|
|
1160
1181
|
parallel_precheck: exports_external.boolean().default(true)
|
|
@@ -2362,4 +2383,4 @@ var PluginConfigSchema = exports_external.object({
|
|
|
2362
2383
|
skills: SkillsConfigSchema.optional()
|
|
2363
2384
|
});
|
|
2364
2385
|
|
|
2365
|
-
export { ORCHESTRATOR_NAME, ALL_SUBAGENT_NAMES, ALL_AGENT_NAMES, TOOL_NAMES, TOOL_NAME_SET, AGENT_TOOL_MAP, DEFAULT_AGENT_CONFIGS, _internals, isKnownCanonicalRole, getCanonicalAgentRole, resolveGeneratedAgentRole, stripKnownSwarmPrefix, AgentReasoningConfigSchema, AgentThinkingConfigSchema, AgentOverrideConfigSchema, SwarmConfigSchema, ModelPricingConfigSchema, PricingConfigSchema, HooksConfigSchema, ScoringWeightsSchema, DecisionDecaySchema, TokenRatiosSchema, ScoringConfigSchema, ContextBudgetConfigSchema, EvidenceConfigSchema, GateFeatureSchema, PlaceholderScanConfigSchema, QualityBudgetConfigSchema, GateConfigSchema, PipelineConfigSchema, PhaseCompleteConfigSchema, SummaryConfigSchema, ReviewPassesConfigSchema, AutoReviewConfigSchema, AdversarialDetectionConfigSchema, AdversarialTestingConfigSchema, IntegrationAnalysisConfigSchema, DocsConfigSchema, DesignDocsConfigSchema, UIReviewConfigSchema, CompactionAdvisoryConfigSchema, LintConfigSchema, SecretscanConfigSchema, GuardrailsProfileSchema, DEFAULT_AGENT_PROFILES, DEFAULT_ARCHITECT_PROFILE, GuardrailsConfigSchema, WatchdogConfigSchema, SelfReviewConfigSchema, resolveGuardrailsConfig, ToolFilterConfigSchema, PlanCursorConfigSchema, ContextMapConfigSchema, RepoGraphConfigSchema, CheckpointConfigSchema, AutomationModeSchema, AutomationCapabilitiesSchema, AutomationConfigSchema, KnowledgeConfigSchema, MemoryConfigSchema, CuratorConfigSchema, ArchitecturalSupervisionConfigSchema, KnowledgeApplicationConfigSchema, SkillPropagationConfigSchema, SkillImproverConfigSchema, SkillsConfigSchema, SpecWriterConfigSchema, SlopDetectorConfigSchema, IncrementalVerifyConfigSchema, CompactionConfigSchema, PrmConfigSchema, AgentAuthorityRuleSchema, AuthorityConfigSchema, GeneralCouncilConfigSchema, CouncilConfigSchema, PrMonitorConfigSchema, ParallelizationConfigSchema, WorktreeIsolationConfigSchema, LeanTurboConfigSchema, EpicConfigSchema, StandardTurboConfigSchema, LeanTurboStrategyConfigSchema, TurboConfigSchema, ExternalSkillCandidateSourceTypeSchema, ExternalSkillCandidateEvaluationVerdictSchema, DiscoverySourceSchema, ExternalSkillCandidateSchema, ExternalSkillsConfigSchema, DEFAULT_EXTERNAL_SKILLS_CONFIG, DEFAULT_SKILLS_CONFIG, resolveExternalSkillsConfig, PluginConfigSchema };
|
|
2386
|
+
export { ORCHESTRATOR_NAME, ALL_SUBAGENT_NAMES, ALL_AGENT_NAMES, TOOL_NAMES, TOOL_NAME_SET, AGENT_TOOL_MAP, DEFAULT_AGENT_CONFIGS, _internals, isKnownCanonicalRole, getCanonicalAgentRole, resolveGeneratedAgentRole, stripKnownSwarmPrefix, AgentReasoningConfigSchema, AgentThinkingConfigSchema, AgentOverrideConfigSchema, SwarmConfigSchema, ModelPricingConfigSchema, PricingConfigSchema, HooksConfigSchema, ScoringWeightsSchema, DecisionDecaySchema, TokenRatiosSchema, ScoringConfigSchema, ContextBudgetConfigSchema, EvidenceConfigSchema, GateFeatureSchema, PlaceholderScanConfigSchema, QualityBudgetConfigSchema, GATE_CONFIG_KNOWN_SECTION_KEYS, GateConfigSchema, PipelineConfigSchema, PhaseCompleteConfigSchema, SummaryConfigSchema, ReviewPassesConfigSchema, AutoReviewConfigSchema, AdversarialDetectionConfigSchema, AdversarialTestingConfigSchema, IntegrationAnalysisConfigSchema, DocsConfigSchema, DesignDocsConfigSchema, UIReviewConfigSchema, CompactionAdvisoryConfigSchema, LintConfigSchema, SecretscanConfigSchema, GuardrailsProfileSchema, DEFAULT_AGENT_PROFILES, DEFAULT_ARCHITECT_PROFILE, GuardrailsConfigSchema, WatchdogConfigSchema, SelfReviewConfigSchema, resolveGuardrailsConfig, ToolFilterConfigSchema, PlanCursorConfigSchema, ContextMapConfigSchema, RepoGraphConfigSchema, CheckpointConfigSchema, AutomationModeSchema, AutomationCapabilitiesSchema, AutomationConfigSchema, KnowledgeConfigSchema, MemoryConfigSchema, CuratorConfigSchema, ArchitecturalSupervisionConfigSchema, KnowledgeApplicationConfigSchema, SkillPropagationConfigSchema, SkillImproverConfigSchema, SkillsConfigSchema, SpecWriterConfigSchema, SlopDetectorConfigSchema, IncrementalVerifyConfigSchema, CompactionConfigSchema, PrmConfigSchema, AgentAuthorityRuleSchema, AuthorityConfigSchema, GeneralCouncilConfigSchema, CouncilConfigSchema, PrMonitorConfigSchema, ParallelizationConfigSchema, WorktreeIsolationConfigSchema, LeanTurboConfigSchema, EpicConfigSchema, StandardTurboConfigSchema, LeanTurboStrategyConfigSchema, TurboConfigSchema, ExternalSkillCandidateSourceTypeSchema, ExternalSkillCandidateEvaluationVerdictSchema, DiscoverySourceSchema, ExternalSkillCandidateSchema, ExternalSkillsConfigSchema, DEFAULT_EXTERNAL_SKILLS_CONFIG, DEFAULT_SKILLS_CONFIG, resolveExternalSkillsConfig, PluginConfigSchema };
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
readDoctorArtifact,
|
|
11
11
|
removeStraySwarmDir,
|
|
12
12
|
runConfigDoctor
|
|
13
|
-
} from "./index-
|
|
13
|
+
} from "./index-zjh648z4.js";
|
|
14
14
|
import {
|
|
15
15
|
MAX_TRANSIENT_RETRIES,
|
|
16
16
|
PlanSchema,
|
|
@@ -85,6 +85,8 @@ import {
|
|
|
85
85
|
AGENT_TOOL_MAP,
|
|
86
86
|
ALL_SUBAGENT_NAMES,
|
|
87
87
|
ExternalSkillsConfigSchema,
|
|
88
|
+
GATE_CONFIG_KNOWN_SECTION_KEYS,
|
|
89
|
+
GateConfigSchema,
|
|
88
90
|
KnowledgeConfigSchema,
|
|
89
91
|
ORCHESTRATOR_NAME,
|
|
90
92
|
PluginConfigSchema,
|
|
@@ -94,7 +96,7 @@ import {
|
|
|
94
96
|
getCanonicalAgentRole,
|
|
95
97
|
resolveExternalSkillsConfig,
|
|
96
98
|
stripKnownSwarmPrefix
|
|
97
|
-
} from "./index-
|
|
99
|
+
} from "./index-18690p15.js";
|
|
98
100
|
import {
|
|
99
101
|
DEFAULT_SKILL_MIN_CONFIDENCE,
|
|
100
102
|
DEFAULT_SKILL_MIN_CONFIRMATIONS,
|
|
@@ -4859,6 +4861,62 @@ function sanitizeExternalSkillsConfig(raw) {
|
|
|
4859
4861
|
delete cleaned.external_skills;
|
|
4860
4862
|
return cleaned;
|
|
4861
4863
|
}
|
|
4864
|
+
function sanitizeGatesConfig(raw) {
|
|
4865
|
+
if (!("gates" in raw) || raw.gates === undefined) {
|
|
4866
|
+
return raw;
|
|
4867
|
+
}
|
|
4868
|
+
if (typeof raw.gates !== "object" || raw.gates === null || Array.isArray(raw.gates)) {
|
|
4869
|
+
console.warn("[opencode-swarm] gates config validation failed: expected an object. Quality gates will use defaults; other config sections remain active.");
|
|
4870
|
+
const cleaned2 = { ...raw };
|
|
4871
|
+
delete cleaned2.gates;
|
|
4872
|
+
return cleaned2;
|
|
4873
|
+
}
|
|
4874
|
+
const gateSchemas = GateConfigSchema.shape;
|
|
4875
|
+
const cleanedGates = { ...raw.gates };
|
|
4876
|
+
for (const [key, value] of Object.entries(cleanedGates)) {
|
|
4877
|
+
const schema = gateSchemas[key];
|
|
4878
|
+
if (!schema) {
|
|
4879
|
+
console.warn(`[opencode-swarm] Unknown gates config section "gates.${key}" ignored. Other config sections remain active.`);
|
|
4880
|
+
delete cleanedGates[key];
|
|
4881
|
+
continue;
|
|
4882
|
+
}
|
|
4883
|
+
const knownFields = GATE_CONFIG_KNOWN_SECTION_KEYS[key];
|
|
4884
|
+
let sectionValue = value;
|
|
4885
|
+
if (knownFields && typeof value === "object" && value !== null && !Array.isArray(value)) {
|
|
4886
|
+
const cleanedSection = { ...value };
|
|
4887
|
+
const knownFieldSet = new Set(knownFields);
|
|
4888
|
+
for (const fieldName of Object.keys(cleanedSection)) {
|
|
4889
|
+
if (!knownFieldSet.has(fieldName)) {
|
|
4890
|
+
console.warn(`[opencode-swarm] Unknown gates config key "gates.${key}.${fieldName}" ignored. Other config sections remain active.`);
|
|
4891
|
+
delete cleanedSection[fieldName];
|
|
4892
|
+
}
|
|
4893
|
+
}
|
|
4894
|
+
sectionValue = cleanedSection;
|
|
4895
|
+
cleanedGates[key] = cleanedSection;
|
|
4896
|
+
}
|
|
4897
|
+
const sectionResult = schema.safeParse(sectionValue);
|
|
4898
|
+
if (!sectionResult.success) {
|
|
4899
|
+
console.warn(`[opencode-swarm] gates.${key} config validation failed; that gate section will use defaults and other config sections remain active:`);
|
|
4900
|
+
console.warn(sectionResult.error.format());
|
|
4901
|
+
delete cleanedGates[key];
|
|
4902
|
+
}
|
|
4903
|
+
}
|
|
4904
|
+
const gatesResult = GateConfigSchema.safeParse(cleanedGates);
|
|
4905
|
+
if (gatesResult.success) {
|
|
4906
|
+
return {
|
|
4907
|
+
...raw,
|
|
4908
|
+
gates: gatesResult.data
|
|
4909
|
+
};
|
|
4910
|
+
}
|
|
4911
|
+
console.warn("[opencode-swarm] gates config validation failed after section cleanup; quality gates will use defaults and other config sections remain active:");
|
|
4912
|
+
console.warn(gatesResult.error.format());
|
|
4913
|
+
const cleaned = { ...raw };
|
|
4914
|
+
delete cleaned.gates;
|
|
4915
|
+
return cleaned;
|
|
4916
|
+
}
|
|
4917
|
+
function sanitizeSectionConfigs(raw) {
|
|
4918
|
+
return sanitizeGatesConfig(sanitizeExternalSkillsConfig(raw));
|
|
4919
|
+
}
|
|
4862
4920
|
function rawFullAutoLocked(raw) {
|
|
4863
4921
|
if (!raw || typeof raw !== "object")
|
|
4864
4922
|
return false;
|
|
@@ -4889,11 +4947,11 @@ function loadPluginConfig(directory) {
|
|
|
4889
4947
|
};
|
|
4890
4948
|
}
|
|
4891
4949
|
mergedRaw = migratePresetsConfig(mergedRaw);
|
|
4892
|
-
mergedRaw =
|
|
4950
|
+
mergedRaw = sanitizeSectionConfigs(mergedRaw);
|
|
4893
4951
|
const result = PluginConfigSchema.safeParse(mergedRaw);
|
|
4894
4952
|
if (!result.success) {
|
|
4895
4953
|
if (rawUserConfig) {
|
|
4896
|
-
const userParseResult = PluginConfigSchema.safeParse(
|
|
4954
|
+
const userParseResult = PluginConfigSchema.safeParse(sanitizeSectionConfigs(rawUserConfig ?? {}));
|
|
4897
4955
|
if (userParseResult.success) {
|
|
4898
4956
|
console.warn("[opencode-swarm] Project config ignored due to validation errors. Using user config.");
|
|
4899
4957
|
return userParseResult.data;
|
|
@@ -4950,8 +5008,10 @@ var BUNDLED_PROJECT_SKILLS = [
|
|
|
4950
5008
|
"swarm-implement",
|
|
4951
5009
|
"design-docs",
|
|
4952
5010
|
"swarm-pr-review",
|
|
5011
|
+
"swarm",
|
|
4953
5012
|
"swarm-pr-feedback",
|
|
4954
5013
|
"swarm-pr-subscribe",
|
|
5014
|
+
"swarm-ci-monitor",
|
|
4955
5015
|
"issue-ingest",
|
|
4956
5016
|
"plan",
|
|
4957
5017
|
"critic-gate",
|
|
@@ -7207,15 +7267,15 @@ var _internals7 = {
|
|
|
7207
7267
|
executePostMortemActions,
|
|
7208
7268
|
repairPostMortemActions,
|
|
7209
7269
|
loadDefaultKnowledgeConfig: async () => {
|
|
7210
|
-
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-
|
|
7270
|
+
const { KnowledgeConfigSchema: KnowledgeConfigSchema2 } = await import("./schema-5vmb5dh8.js");
|
|
7211
7271
|
return KnowledgeConfigSchema2.parse({});
|
|
7212
7272
|
},
|
|
7213
7273
|
applyCuratorKnowledgeUpdates: async (directory, recommendations, knowledgeConfig) => {
|
|
7214
|
-
const { applyCuratorKnowledgeUpdates } = await import("./curator-
|
|
7274
|
+
const { applyCuratorKnowledgeUpdates } = await import("./curator-4qqzpd85.js");
|
|
7215
7275
|
return applyCuratorKnowledgeUpdates(directory, recommendations, knowledgeConfig);
|
|
7216
7276
|
},
|
|
7217
7277
|
checkHivePromotions: async (entries, knowledgeConfig) => {
|
|
7218
|
-
const { checkHivePromotions } = await import("./hive-promoter-
|
|
7278
|
+
const { checkHivePromotions } = await import("./hive-promoter-wvxqyayt.js");
|
|
7219
7279
|
return checkHivePromotions(entries, knowledgeConfig);
|
|
7220
7280
|
},
|
|
7221
7281
|
applyProposalTriage: async (directory, triage) => {
|
|
@@ -14475,7 +14535,7 @@ async function runFinalizeStage(ctx) {
|
|
|
14475
14535
|
}
|
|
14476
14536
|
}
|
|
14477
14537
|
try {
|
|
14478
|
-
const { CuratorConfigSchema: CCS } = await import("./schema-
|
|
14538
|
+
const { CuratorConfigSchema: CCS } = await import("./schema-5vmb5dh8.js");
|
|
14479
14539
|
const { config: pmLoadedConfig } = _internals17.loadPluginConfigWithMeta(ctx.directory);
|
|
14480
14540
|
const curatorCfg = CCS.parse(pmLoadedConfig.curator ?? {});
|
|
14481
14541
|
if (curatorCfg.enabled && curatorCfg.postmortem_enabled) {
|
|
@@ -16588,9 +16648,9 @@ var _internals21 = {
|
|
|
16588
16648
|
readSwarmFileAsync,
|
|
16589
16649
|
loadCuratorDeps: async () => {
|
|
16590
16650
|
const [{ CuratorConfigSchema }, curator, { createCuratorLLMDelegate: createCuratorLLMDelegate2 }] = await Promise.all([
|
|
16591
|
-
import("./schema-
|
|
16592
|
-
import("./curator-
|
|
16593
|
-
import("./curator-llm-factory-
|
|
16651
|
+
import("./schema-5vmb5dh8.js"),
|
|
16652
|
+
import("./curator-4qqzpd85.js"),
|
|
16653
|
+
import("./curator-llm-factory-y4kvr1ph.js")
|
|
16594
16654
|
]);
|
|
16595
16655
|
return { CuratorConfigSchema, curator, createCuratorLLMDelegate: createCuratorLLMDelegate2 };
|
|
16596
16656
|
}
|
|
@@ -17086,7 +17146,7 @@ import { fileURLToPath } from "url";
|
|
|
17086
17146
|
// package.json
|
|
17087
17147
|
var package_default = {
|
|
17088
17148
|
name: "opencode-swarm",
|
|
17089
|
-
version: "7.
|
|
17149
|
+
version: "7.110.0",
|
|
17090
17150
|
description: "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
|
|
17091
17151
|
main: "dist/index.js",
|
|
17092
17152
|
types: "dist/index.d.ts",
|
|
@@ -17141,8 +17201,10 @@ var package_default = {
|
|
|
17141
17201
|
".opencode/skills/swarm-implement",
|
|
17142
17202
|
".opencode/skills/design-docs",
|
|
17143
17203
|
".opencode/skills/swarm-pr-review",
|
|
17204
|
+
".opencode/skills/swarm",
|
|
17144
17205
|
".opencode/skills/swarm-pr-feedback",
|
|
17145
17206
|
".opencode/skills/swarm-pr-subscribe",
|
|
17207
|
+
".opencode/skills/swarm-ci-monitor",
|
|
17146
17208
|
".opencode/skills/issue-ingest",
|
|
17147
17209
|
".opencode/skills/plan",
|
|
17148
17210
|
".opencode/skills/critic-gate",
|
|
@@ -18536,7 +18598,7 @@ async function handleDoctorCommand(directory, args) {
|
|
|
18536
18598
|
const result = runConfigDoctor(config, directory);
|
|
18537
18599
|
let output;
|
|
18538
18600
|
if (enableAutoFix && result.hasAutoFixableIssues) {
|
|
18539
|
-
const { runConfigDoctorWithFixes } = await import("./config-doctor-
|
|
18601
|
+
const { runConfigDoctorWithFixes } = await import("./config-doctor-9vjyj9m3.js");
|
|
18540
18602
|
const fixResult = await runConfigDoctorWithFixes(directory, config, true);
|
|
18541
18603
|
output = formatDoctorMarkdown(fixResult.result);
|
|
18542
18604
|
} else {
|
|
@@ -31809,7 +31871,7 @@ function buildDetailedHelp(commandName, entry) {
|
|
|
31809
31871
|
async function handleHelpCommand(ctx) {
|
|
31810
31872
|
const targetCommand = ctx.args.join(" ");
|
|
31811
31873
|
if (!targetCommand) {
|
|
31812
|
-
const { buildHelpText } = await import("./index-
|
|
31874
|
+
const { buildHelpText } = await import("./index-khj0knr0.js");
|
|
31813
31875
|
return buildHelpText();
|
|
31814
31876
|
}
|
|
31815
31877
|
const tokens = targetCommand.split(/\s+/);
|
|
@@ -31818,7 +31880,7 @@ async function handleHelpCommand(ctx) {
|
|
|
31818
31880
|
return _internals46.buildDetailedHelp(resolved.key, resolved.entry);
|
|
31819
31881
|
}
|
|
31820
31882
|
const similar = _internals46.findSimilarCommands(targetCommand);
|
|
31821
|
-
const { buildHelpText: fullHelp } = await import("./index-
|
|
31883
|
+
const { buildHelpText: fullHelp } = await import("./index-khj0knr0.js");
|
|
31822
31884
|
if (similar.length > 0) {
|
|
31823
31885
|
return `Command '/swarm ${targetCommand}' not found.
|
|
31824
31886
|
|
|
@@ -31951,7 +32013,7 @@ var COMMAND_REGISTRY = {
|
|
|
31951
32013
|
},
|
|
31952
32014
|
"guardrail explain": {
|
|
31953
32015
|
handler: async (ctx) => {
|
|
31954
|
-
const { handleGuardrailExplain } = await import("./guardrail-explain-
|
|
32016
|
+
const { handleGuardrailExplain } = await import("./guardrail-explain-10hh57cr.js");
|
|
31955
32017
|
return handleGuardrailExplain(ctx.directory, ctx.args);
|
|
31956
32018
|
},
|
|
31957
32019
|
description: "Dry-run: show what the guardrails would do to a command or write target (executes nothing)",
|
|
@@ -31961,7 +32023,7 @@ var COMMAND_REGISTRY = {
|
|
|
31961
32023
|
},
|
|
31962
32024
|
"guardrail-log": {
|
|
31963
32025
|
handler: async (ctx) => {
|
|
31964
|
-
const { handleGuardrailLog } = await import("./guardrail-log-
|
|
32026
|
+
const { handleGuardrailLog } = await import("./guardrail-log-5240bawg.js");
|
|
31965
32027
|
return handleGuardrailLog(ctx.directory, ctx.args);
|
|
31966
32028
|
},
|
|
31967
32029
|
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-xhsba2sn.js";
|
|
5
5
|
import {
|
|
6
6
|
handleGuardrailLog
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-p5vm9gy9.js";
|
|
8
8
|
import {
|
|
9
9
|
COMMAND_REGISTRY,
|
|
10
10
|
SWARM_COMMAND_TOOL_ALLOWLIST,
|
|
@@ -80,11 +80,11 @@ import {
|
|
|
80
80
|
handleWriteRetroCommand,
|
|
81
81
|
normalizeSwarmCommandInput,
|
|
82
82
|
resolveCommand
|
|
83
|
-
} from "./index-
|
|
84
|
-
import"./index-
|
|
83
|
+
} from "./index-1mc2yfc2.js";
|
|
84
|
+
import"./index-d3txrx5q.js";
|
|
85
85
|
import"./index-mtzjbaaa.js";
|
|
86
86
|
import"./index-c8s9a3zh.js";
|
|
87
|
-
import"./index-
|
|
87
|
+
import"./index-zjh648z4.js";
|
|
88
88
|
import"./index-j2v3w1ds.js";
|
|
89
89
|
import"./index-scww5b77.js";
|
|
90
90
|
import"./index-yw8qpf51.js";
|
|
@@ -94,7 +94,7 @@ import {
|
|
|
94
94
|
AGENT_TOOL_MAP,
|
|
95
95
|
ORCHESTRATOR_NAME,
|
|
96
96
|
stripKnownSwarmPrefix
|
|
97
|
-
} from "./index-
|
|
97
|
+
} from "./index-18690p15.js";
|
|
98
98
|
import"./index-b15qbvph.js";
|
|
99
99
|
import"./index-y5z2qdvk.js";
|
|
100
100
|
import"./index-41fgssqr.js";
|
|
@@ -12,14 +12,14 @@ import {
|
|
|
12
12
|
detectPosixWrites,
|
|
13
13
|
detectWindowsWrites,
|
|
14
14
|
resolveWriteTargets
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-1mc2yfc2.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-d3txrx5q.js";
|
|
23
23
|
|
|
24
24
|
// src/services/guardrail-explain-service.ts
|
|
25
25
|
import path from "path";
|