opencode-swarm 7.189.0 → 7.190.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/README.md +42 -6
- package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
- package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
- package/dist/agents/architect.d.ts +1 -1
- package/dist/background/completion-observer.d.ts +6 -0
- package/dist/cli/{auto-checkpoint-m7c4x8bk.js → auto-checkpoint-qvk04fya.js} +9 -9
- package/dist/cli/{checkpoint-m7q9886q.js → checkpoint-9q2r5c3j.js} +18 -20
- package/dist/cli/{coder-settlement-hh81z2f7.js → coder-settlement-xcparbf3.js} +13 -13
- package/dist/cli/{config-doctor-0rexy3xt.js → config-doctor-by0ak49m.js} +23 -20
- package/dist/cli/{core-ays6stz4.js → core-b1b3kxzy.js} +4 -4
- package/dist/cli/{curation-policy-65ckmmd5.js → curation-policy-6p6fcfjb.js} +6 -6
- package/dist/cli/{curator-dfzkfgs0.js → curator-d7b88mzr.js} +44 -44
- package/dist/cli/{curator-drift-nts5atks.js → curator-drift-6v604220.js} +9 -9
- package/dist/cli/curator-llm-factory-yvbktznk.js +82 -0
- package/dist/cli/{doctor-knowledge-receipt-phase-id-ec40k5hn.js → doctor-knowledge-receipt-phase-id-kwrvnps9.js} +9 -9
- package/dist/cli/{evidence-summary-service-vgtm72g5.js → evidence-summary-service-mzr2q4bn.js} +21 -22
- package/dist/cli/{gate-evidence-vmn65kxe.js → gate-evidence-78jes9kq.js} +8 -8
- package/dist/cli/guardrail-explain-8kt2mxmw.js +83 -0
- package/dist/cli/{guardrail-log-hc8fjm4x.js → guardrail-log-2sthykag.js} +8 -8
- package/dist/cli/{guardrail-reset-ct00w300.js → guardrail-reset-2n746rzv.js} +44 -44
- package/dist/cli/{hive-promoter-2xax6van.js → hive-promoter-s7a5gwhz.js} +44 -44
- package/dist/cli/{index-cbqkag7q.js → index-0qc7a88d.js} +3 -3
- package/dist/cli/{index-g03m5jhw.js → index-1s95jrgc.js} +3 -3
- package/dist/cli/{index-9tvjwv01.js → index-2fpv2wmc.js} +1 -1
- package/dist/cli/{index-2btybj8w.js → index-2kpqqcch.js} +4 -4
- package/dist/cli/{index-3dx0c7ve.js → index-3t9t9q2q.js} +44 -44
- package/dist/cli/{index-8q8783g0.js → index-3zwhxk98.js} +1 -1
- package/dist/cli/{index-34vsyj15.js → index-49e65y51.js} +5 -5
- package/dist/cli/{index-5v09zw1q.js → index-69tgdm9t.js} +18 -8
- package/dist/cli/{index-d3rjvm9e.js → index-7vnr5cmp.js} +2 -2
- package/dist/cli/{index-twb3f4tk.js → index-8bx6vhzk.js} +1 -1
- package/dist/cli/{index-nhsafbrh.js → index-9gcqmgbc.js} +5 -5
- package/dist/cli/{index-4p3jh14t.js → index-9xxqdzp4.js} +4 -4
- package/dist/cli/{index-qx3g1bbe.js → index-a5ca62vt.js} +1 -1
- package/dist/cli/{index-bskex45z.js → index-ajzgeb2s.js} +2 -2
- package/dist/cli/{index-8xabhfwr.js → index-b2j231jy.js} +2 -2
- package/dist/cli/{index-cj4mp0fm.js → index-dmq7p8s9.js} +6 -6
- package/dist/cli/{index-bzbxn24k.js → index-ej1hdw16.js} +5 -5
- package/dist/cli/{index-waxvpwbv.js → index-ejk34dnw.js} +127 -13
- package/dist/cli/{index-skdpgjar.js → index-fb5s32c2.js} +862 -1221
- package/dist/cli/{index-ntda6tje.js → index-feaxsjrt.js} +10 -2
- package/dist/cli/{index-2nexf5vz.js → index-ffgcdf49.js} +22147 -15396
- package/dist/cli/{index-kqegvngt.js → index-h0xhec3d.js} +4 -4
- package/dist/cli/{index-kaqdzhj3.js → index-kfevm0n5.js} +2 -2
- package/dist/cli/{index-4a7j5f60.js → index-kp8k95v9.js} +4 -4
- package/dist/cli/{index-x1eh2636.js → index-mcv0v2dp.js} +1 -1
- package/dist/cli/{index-9czp2dcg.js → index-mjfpaxw3.js} +7 -7
- package/dist/cli/{index-cdjxzs2r.js → index-mp1s7b0n.js} +7 -7
- package/dist/cli/{index-z29hksyw.js → index-mseerehd.js} +26 -10
- package/dist/cli/{index-f6exny9m.js → index-n8q43eff.js} +2 -2
- package/dist/cli/{index-7hr5m7yp.js → index-nkgzkt7c.js} +1 -1
- package/dist/cli/{index-9j3ybyfs.js → index-npe10823.js} +7 -7
- package/dist/cli/{index-16m2m4ah.js → index-p69k8v0e.js} +1 -1
- package/dist/cli/{index-p2tqzwh6.js → index-qs9myayh.js} +5 -10
- package/dist/cli/{index-hh7pa3yk.js → index-r9yvpr2m.js} +2 -2
- package/dist/cli/{index-w4zscz6p.js → index-rgkzcw2a.js} +5 -5
- package/dist/cli/{index-zfbxfm2m.js → index-s8b67e6h.js} +33 -12
- package/dist/cli/{index-9gqb5nkj.js → index-s92a5ta3.js} +4 -4
- package/dist/cli/{index-89f56ej4.js → index-sm01zpqe.js} +46 -46
- package/dist/cli/{index-q9kefh33.js → index-sxj143a4.js} +1 -1
- package/dist/cli/{index-1cwmj1gs.js → index-t0gj8s46.js} +77 -16
- package/dist/cli/{index-0gejy4cx.js → index-t73adn9b.js} +2 -2
- package/dist/cli/{index-fbgjj7h5.js → index-tkhenmms.js} +101 -13
- package/dist/cli/{index-zsrtt42s.js → index-v3bmwmqw.js} +25 -1
- package/dist/cli/{index-wqa31xnf.js → index-vhn4e6rm.js} +7 -7
- package/dist/cli/{index-5cfhwd65.js → index-xyvrfram.js} +2 -2
- package/dist/cli/{index-k8sarme1.js → index-y9v41185.js} +1 -1
- package/dist/cli/{index-1xa8wq76.js → index-z3ahy9c2.js} +2 -2
- package/dist/cli/{index-wrdktgpy.js → index-zk6ttjkt.js} +2 -2
- package/dist/cli/{index-mfxef20k.js → index-zyg1m9d0.js} +4 -4
- package/dist/cli/index.js +45 -45
- package/dist/cli/{knowledge-escalator-v3c8w86g.js → knowledge-escalator-n1ezv1zp.js} +15 -15
- package/dist/cli/{knowledge-events-kagaccj9.js → knowledge-events-nyqk3mr7.js} +13 -13
- package/dist/cli/{knowledge-link-h4pdcnya.js → knowledge-link-6hw3z6wn.js} +5 -5
- package/dist/cli/{knowledge-store-ywxjk5pb.js → knowledge-store-mnxqcyet.js} +6 -6
- package/dist/cli/{knowledge-validator-210gkpec.js → knowledge-validator-z30113mp.js} +8 -8
- package/dist/cli/{mcp-58hgx6av.js → mcp-mnbqw2s5.js} +1 -1
- package/dist/cli/{model-preflight-e69b48n0.js → model-preflight-ex482fsy.js} +44 -44
- package/dist/cli/{pending-delegations-g24d3qa9.js → pending-delegations-j18afz5z.js} +12 -12
- package/dist/cli/{pr-subscriptions-qprh2zsm.js → pr-subscriptions-yngda8mz.js} +12 -12
- package/dist/cli/{pr-workflow-gate-pj7dhkv4.js → pr-workflow-gate-0vt614f0.js} +44 -44
- package/dist/cli/{runner-4hfmp1ag.js → runner-ssnsje35.js} +6 -6
- package/dist/cli/{scan-cursor-s5wsxxd1.js → scan-cursor-8pwfg5g9.js} +7 -7
- package/dist/cli/{schema-smgngq9m.js → schema-e58ytmqt.js} +14 -2
- package/dist/cli/{scope-persistence-tbv2ar4w.js → scope-persistence-9qfx6ext.js} +16 -16
- package/dist/cli/{server-7p2ds5w2.js → server-wxcfwsdx.js} +45 -45
- package/dist/cli/{skill-generator-r4hsne71.js → skill-generator-tbd4tq9r.js} +17 -17
- package/dist/cli/{snapshot-coordination-init-ydjwh56d.js → snapshot-coordination-init-sckyzb94.js} +44 -44
- package/dist/cli/{speckit-checkoff-aj75vmjq.js → speckit-checkoff-k5jm0abh.js} +5 -5
- package/dist/cli/{telemetry-kvhe94gs.js → telemetry-9szfdfqv.js} +1 -1
- package/dist/cli/{workspace-snapshot-30kdf018.js → workspace-snapshot-9f12p1s1.js} +3 -3
- package/dist/cli/{worktree-collision-ownership-0bxj9f0t.js → worktree-collision-ownership-3wwfc72t.js} +14 -14
- package/dist/cli/{worktree-isolation-h0c22pm2.js → worktree-isolation-zfk7zk6a.js} +46 -44
- package/dist/commands/coupling.d.ts +21 -4
- package/dist/commands/epic-learning.d.ts +28 -0
- package/dist/commands/epic.d.ts +81 -36
- package/dist/commands/registry.d.ts +8 -8
- package/dist/commands/turbo.d.ts +16 -1
- package/dist/config/constants.d.ts +11 -1
- package/dist/config/loader.d.ts +2 -0
- package/dist/config/schema.d.ts +291 -77
- package/dist/db/coordination-store.d.ts +6 -0
- package/dist/epic/close.d.ts +209 -0
- package/dist/{turbo/epic → epic}/cochange-conflict.d.ts +5 -4
- package/dist/{turbo/epic → epic}/cochange-source.d.ts +10 -1
- package/dist/epic/components.d.ts +238 -0
- package/dist/epic/config-gate.d.ts +25 -0
- package/dist/epic/config.d.ts +101 -0
- package/dist/{turbo/epic → epic}/coupling-report.d.ts +3 -1
- package/dist/epic/declared-scopes.d.ts +37 -0
- package/dist/epic/epic-branch.d.ts +157 -0
- package/dist/epic/gate-policy.d.ts +114 -0
- package/dist/epic/git-once.d.ts +26 -0
- package/dist/epic/learning-store.d.ts +176 -0
- package/dist/epic/learning.d.ts +198 -0
- package/dist/epic/legacy-migration.d.ts +26 -0
- package/dist/epic/lifecycle.d.ts +437 -0
- package/dist/epic/markers.d.ts +123 -0
- package/dist/epic/merge-epoch.d.ts +90 -0
- package/dist/epic/next-wave-format.d.ts +101 -0
- package/dist/epic/next-wave.d.ts +102 -0
- package/dist/epic/phase-readiness.d.ts +221 -0
- package/dist/epic/plan-key.d.ts +104 -0
- package/dist/epic/plan-shaping-seam.d.ts +112 -0
- package/dist/epic/planning-signals.d.ts +38 -0
- package/dist/epic/report.d.ts +152 -0
- package/dist/epic/residue-commit.d.ts +151 -0
- package/dist/epic/scorecard.d.ts +130 -0
- package/dist/epic/shaping-sizing.d.ts +108 -0
- package/dist/epic/shaping-suggestions.d.ts +172 -0
- package/dist/epic/shaping.d.ts +112 -0
- package/dist/epic/sizing.d.ts +60 -0
- package/dist/epic/start.d.ts +187 -0
- package/dist/epic/task-landing.d.ts +83 -0
- package/dist/epic/wave-close.d.ts +112 -0
- package/dist/epic/wave-select.d.ts +95 -0
- package/dist/evaluation/contracts.d.ts +1 -1
- package/dist/evaluation/public-api.d.ts +1 -1
- package/dist/full-auto/policy.d.ts +12 -1
- package/dist/hooks/delegation-gate/worktree-isolation.d.ts +16 -0
- package/dist/hooks/delegation-gate.d.ts +11 -0
- package/dist/hooks/guardrails/index.d.ts +7 -0
- package/dist/hooks/promotion-evidence-store.d.ts +2 -2
- package/dist/index.js +814 -807
- package/dist/plan/manager.d.ts +6 -8
- package/dist/plan/parallel-verdict.d.ts +13 -2
- package/dist/retention/caps.d.ts +1 -1
- package/dist/review/contracts.d.ts +8 -1
- package/dist/services/config-doctor.d.ts +38 -0
- package/dist/session/snapshot-reader.d.ts +2 -0
- package/dist/session/snapshot-writer.d.ts +13 -2
- package/dist/state.d.ts +13 -18
- package/dist/tools/epic-next-wave.d.ts +20 -0
- package/dist/tools/epic-phase-review.d.ts +43 -0
- package/dist/tools/index.d.ts +2 -3
- package/dist/tools/manifest.d.ts +2 -3
- package/dist/tools/phase-complete.d.ts +5 -1
- package/dist/tools/save-plan.d.ts +7 -0
- package/dist/tools/tool-metadata.d.ts +4 -8
- package/dist/worktree/merge.d.ts +14 -1
- package/opencode-swarm.schema.json +273 -28
- package/package.json +1 -1
- package/dist/cli/curator-llm-factory-nrn6n2p1.js +0 -82
- package/dist/cli/guardrail-explain-9jmr8ezt.js +0 -83
- package/dist/tools/epic-plan-waves.d.ts +0 -79
- package/dist/tools/epic-record-divergence.d.ts +0 -73
- package/dist/tools/epic-run-phase.d.ts +0 -179
- package/dist/turbo/epic/activation.d.ts +0 -193
- package/dist/turbo/epic/calibration-engine.d.ts +0 -88
- package/dist/turbo/epic/calibration.d.ts +0 -80
- package/dist/turbo/epic/divergence-recorder.d.ts +0 -123
- package/dist/turbo/epic/index.d.ts +0 -24
- package/dist/turbo/epic/promotion-evidence.d.ts +0 -42
- package/dist/turbo/epic/state.d.ts +0 -69
- package/dist/turbo/epic/task-commit.d.ts +0 -110
- package/dist/turbo/epic/upstream-commits.d.ts +0 -82
- package/dist/turbo/epic/wave-planner.d.ts +0 -83
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@ bunx opencode-swarm install
|
|
|
28
28
|
|
|
29
29
|
### Why Swarm?
|
|
30
30
|
|
|
31
|
-
Most AI coding tools let one model write code and ask that same model whether the code is good. That misses too much. Swarm separates planning, implementation, review, testing, and documentation into specialized internal roles — and enforces gated execution so agents never mutate the codebase in parallel.
|
|
31
|
+
Most AI coding tools let one model write code and ask that same model whether the code is good. That misses too much. Swarm separates planning, implementation, review, testing, and documentation into specialized internal roles — and enforces gated execution so agents never mutate the codebase in parallel unless their scopes are proven disjoint (v8 parallel lanes, Epic waves), and then each in its own isolated worktree.
|
|
32
32
|
|
|
33
33
|
### Key Features
|
|
34
34
|
|
|
@@ -43,6 +43,7 @@ Most AI coding tools let one model write code and ask that same model whether th
|
|
|
43
43
|
- 🔍 **DEEP_DIVE Protocol** — High-rigor, on-demand read-only codebase audit via specialized skills
|
|
44
44
|
- 🔬 **External Skill Curation Pipeline** — Opt-in discovery, quarantine, evaluation, and promotion of external skill candidates from configured sources (disabled by default; enable via `external_skills.curation_enabled: true` in config). Includes 7 tools: `external_skill_discover`, `external_skill_list`, `external_skill_inspect`, `external_skill_promote`, `external_skill_reject`, `external_skill_delete`, `external_skill_revoke`. Candidates pass through a 3-gate validation pipeline before evaluation: **prompt injection scan** (12 regex patterns), **unsafe instruction scan** (25 patterns), and **provenance integrity check** (SHA-256, timestamp, URL, publisher, and hash verification).
|
|
45
45
|
- 🎯 **Governed Skill Optimizer** — Manually-activated, single-skill optimizer (`/swarm skill-opt plan|run|status|diff|approve|reject|rollback|history`) that drives one allowlisted `SKILL.md` candidate at a time through deterministic draft → smoke → evaluation-substrate validation → manual approval → atomic activation/rollback. Bounded, restartable, reversible, and unable to mutate source/harness/security surfaces. Disabled by default (`skill_opt.enabled: false`); see [docs/skill-optimizer.md](docs/skill-optimizer.md).
|
|
46
|
+
- 🌊 **Epic Mode (opt-in preview)** — one plan = one epic, run phase by phase as parallel waves of tasks whose declared scopes don't conflict. The delegation gate enforces the active wave; in git projects each coder works in an isolated worktree on an epic branch that `/swarm epic close` squash-lands as staged changes. Per-task QA always runs, and a phase reviewer + critic gate (`epic_phase_review`) runs before `phase_complete`. Epic learns per-file write risk across epics, suggests plan restructurings with a predicted speedup, and reports a scorecard (`/swarm epic report`). Enable with `epic.mode.enabled: true`; see [docs/modes.md](docs/modes.md#epic-mode-preview).
|
|
46
47
|
- 🔄 **Phase completion gates** — completion-verify and drift verifier gates enforced before phase completion
|
|
47
48
|
- 🔁 **Resumable sessions** — all state saved to `.swarm/`; pick up any project any day
|
|
48
49
|
- 🔀 **GitLab as a first-class forge** (#2733) — MR and issue URLs (`https://<gitlab-host>/owner/repo/-/merge_requests/N`, `/-/issues/N`) are accepted by `/swarm pr-review`, `pr-feedback`, `pr subscribe/unsubscribe`, `ci-monitor`, publication recording, and issue ingestion, with self-hosted instance hosts derived from the remote or `forge.base_url` (config `forge: { provider, base_url }`, default `auto`; ambiguous remotes fail closed). Every URL-security control (HTTPS-only, private/localhost rejection, IDN protection, credential stripping) applies identically to GitLab. The `glab` binary resolves through the same hardened resolver contract as `gh` (`OPENCODE_SWARM_GLAB_BINARY` env override). Honest capability reporting: GitLab does not synthesize GitHub's `statusCheckRollup`/`reviewDecision`/`mergeStateStatus` — those surface an explicit unavailable result instead of a fabricated value, and glab-backed live MR polling is tracked as follow-up issue [#2882](https://github.com/ZaxbyHub/opencode-swarm/issues/2882).
|
|
@@ -124,6 +125,8 @@ Swarm then:
|
|
|
124
125
|
* architect runs regression sweep
|
|
125
126
|
* failures loop back with structured feedback
|
|
126
127
|
|
|
128
|
+
With Epic Mode on, `epic_next_wave` issues each phase as waves of conflict-free tasks (the same per-task pipeline runs inside every wave), and `epic_phase_review` runs a reviewer + critic over the whole phase before `phase_complete`.
|
|
129
|
+
|
|
127
130
|
7. After each phase, docs and retrospectives are updated.
|
|
128
131
|
|
|
129
132
|
All project state lives in `.swarm/` — plans, evidence, context, knowledge, and telemetry. Resumable by design. If `.swarm/` already exists, the architect goes straight into **RESUME** → **EXECUTE** instead of repeating discovery.
|
|
@@ -142,11 +145,14 @@ Swarm has two independent mode systems:
|
|
|
142
145
|
| **Turbo** | Medium | Fast | Rapid iteration; skips Stage B gates for non-Tier-3 files |
|
|
143
146
|
| **Lean Turbo** | High | Fast | Parallel lanes for non-conflicting tasks (up to `max_parallel_coders` coders) |
|
|
144
147
|
| **Full-Auto** | Deterministic policy + critic oversight | Fast | Unattended multi-interaction runs |
|
|
148
|
+
| **Epic** (opt-in) | High — per-task QA always runs; Turbo stays off | Fast on plans with many independent tasks | Large plans: one plan = one epic, run phase by phase as parallel waves of tasks with disjoint scopes |
|
|
145
149
|
|
|
146
150
|
**Auto-proceed** — a session toggle (`/swarm auto-proceed [on|off]`) that skips the "Ready for Phase N+1?" prompt at phase boundaries. Defaults to `false`; set as a plan default via `execution_profile.auto_proceed` during QA GATE SELECTION. Session override always wins. Independent of Full-Auto.
|
|
147
151
|
|
|
148
152
|
Full-Auto reduces approval friction by deterministically allowing safe operations (read-only tools, in-scope writes, safe shell) and routing every ambiguous or high-risk action (writes to plugin/build/guardrail paths, network, dependency changes, plan/phase mutations, subagent delegation) through the read-only `critic_oversight` agent before it executes. Denials are returned to the agent as structured signals so it can choose a safer path; repeated denials pause the run; phase completion requires an APPROVED oversight record. See [docs/modes.md](docs/modes.md#full-auto) for `mode`, `permission_policy`, `denials`, and `oversight` config keys, fail-closed semantics, and recovery from a paused run.
|
|
149
153
|
|
|
154
|
+
Epic binds to the current plan and needs an OpenCode 1.x host for now (on OpenCode 2 the plugin has no SDK client yet, so `/swarm epic start` refuses with `host-unsupported`). `/swarm epic start` also refuses plans too small to benefit and suggests Balanced. The `epic_next_wave` tool then dispatches each phase as waves of tasks whose declared scopes don't conflict; in a git project each coder works in an isolated worktree on an epic branch, and `/swarm epic close` squash-lands the work as staged changes for you to review. Every task in a wave still runs the full per-task QA pipeline (Stage A and Stage B). Epic learns which files tasks tend to write together and uses it to plan later waves and epics. See [docs/modes.md](docs/modes.md#epic-mode-preview); maintainers start with [src/epic/README.md](src/epic/README.md).
|
|
155
|
+
|
|
150
156
|
**Project mode** — persistent via `execution_mode` config key:
|
|
151
157
|
|
|
152
158
|
| Value | Effect |
|
|
@@ -155,7 +161,7 @@ Full-Auto reduces approval friction by deterministically allowing safe operation
|
|
|
155
161
|
| `balanced` (default) | Standard hooks |
|
|
156
162
|
| `fast` | Skips compaction service — for short sessions under context pressure |
|
|
157
163
|
|
|
158
|
-
Switch session modes with `/swarm turbo [on|off]
|
|
164
|
+
Switch session modes with `/swarm turbo [on|off]`, `/swarm full-auto [on|off]`, or `/swarm epic start|close` (Epic needs `"epic": {"mode": {"enabled": true}}` in config). Control phase-boundary auto-proceed with `/swarm auto-proceed [on|off]`. Set project mode in config. Lean Turbo is configured in `turbo.lean.*` in config and composes with all session modes. See [docs/modes.md](docs/modes.md).
|
|
159
165
|
|
|
160
166
|
---
|
|
161
167
|
|
|
@@ -278,6 +284,7 @@ Common subcommands at a glance:
|
|
|
278
284
|
/swarm agents # Registered agents and models
|
|
279
285
|
/swarm diagnose # Health check
|
|
280
286
|
/swarm evidence [task] # Test and review results
|
|
287
|
+
/swarm epic status # Open epic, current wave, landing state (Epic Mode)
|
|
281
288
|
/swarm reset --confirm # Clear swarm state
|
|
282
289
|
```
|
|
283
290
|
|
|
@@ -318,9 +325,9 @@ Swarm registers a roster of specialized core, optional, and conditional agents.
|
|
|
318
325
|
| **architect** | Orchestrates workflow, writes plans, enforces gates | Core |
|
|
319
326
|
| **explorer** | Scans codebase, gathers context, maps facts | Core |
|
|
320
327
|
| **coder** | Implements one task at a time (or concurrently in isolated worktrees for provably file-disjoint task groups — v8, #1674) | Core |
|
|
321
|
-
| **reviewer** | Checks correctness and security | Core |
|
|
328
|
+
| **reviewer** | Checks correctness and security (also reviews a whole phase under Epic Mode via `epic_phase_review`) | Core |
|
|
322
329
|
| **test_engineer** | Writes and runs tests, adversarial testing | Core |
|
|
323
|
-
| **critic** | Reviews plans before implementation begins | Core |
|
|
330
|
+
| **critic** | Reviews plans before implementation begins (also challenges a whole phase under Epic Mode via `epic_phase_review`) | Core |
|
|
324
331
|
| **critic_finding_validator** | Independently confirms, disproves, or leaves reviewer findings unverified | Core |
|
|
325
332
|
| **critic_oversight** | Sole quality gate in full-auto autonomous mode | Core |
|
|
326
333
|
| **sme** | Provides domain expertise guidance | Core |
|
|
@@ -407,6 +414,11 @@ graph TB
|
|
|
407
414
|
| Resumable sessions | ✅ | ❌ | ❌ |
|
|
408
415
|
| Built-in security scanning | ✅ | ❌ | ❌ |
|
|
409
416
|
| Learns from mistakes | ✅ | ❌ | ❌ |
|
|
417
|
+
| Parallel tasks refused at dispatch unless their scopes are conflict-free (Epic Mode) | ✅ | ❌ | ⚠️ overlap check only falls back to sequential |
|
|
418
|
+
| Conflict prediction from git co-change history (Epic Mode) | ✅ | ❌ | ❌ |
|
|
419
|
+
| Learns per-file risk of undeclared writes across runs (Epic Mode) | ✅ | ❌ | ❌ |
|
|
420
|
+
| Plan-restructuring suggestions with predicted speedup (Epic Mode) | ✅ | ❌ | ❌ |
|
|
421
|
+
| Per-epic scorecard: conflicts, rework, gate first-pass rates (Epic Mode) | ✅ | ❌ | ❌ |
|
|
410
422
|
|
|
411
423
|
---
|
|
412
424
|
|
|
@@ -537,6 +549,10 @@ Configure via:
|
|
|
537
549
|
|
|
538
550
|
**`.swarm/curator-summary.json`** — phase-level intelligence and drift reports
|
|
539
551
|
|
|
552
|
+
**`.swarm/epic/`** — Epic Mode: the open epic, its waves, and close reports with scorecards
|
|
553
|
+
|
|
554
|
+
**`.swarm/epic-prior/`** — Epic Mode: the learned project prior and past epic reports (survives `/swarm close`)
|
|
555
|
+
|
|
540
556
|
### Guardrails & Circuit Breakers
|
|
541
557
|
|
|
542
558
|
Every agent runs inside a circuit breaker that prevents runaway behavior:
|
|
@@ -573,6 +589,7 @@ Built-in tools verify every task before it ships:
|
|
|
573
589
|
- **sast_scan** — 68 security rules across 8 languages (offline)
|
|
574
590
|
- **sbom_generate** — Dependency tracking (CycloneDX)
|
|
575
591
|
- **quality_budget** — Complexity, duplication, test ratio limits
|
|
592
|
+
- **epic_phase_review** — Epic Mode only: an APPROVED phase reviewer, then an APPROVED phase critic, before `phase_complete`
|
|
576
593
|
|
|
577
594
|
These quality gates run locally. No Docker is required. Config-gated features such as General Council web search can make external API calls only when you enable them and provide a Tavily or Brave Search key.
|
|
578
595
|
|
|
@@ -770,6 +787,14 @@ Every candidate passes a 3-gate pipeline before entering quarantine:
|
|
|
770
787
|
| `skill_opt.deadband` | number | `0` | Promotion policy deadband forwarded to the evaluation substrate. |
|
|
771
788
|
| `skill_opt.max_rounds` | number | `5` | Hard cap on draft/smoke retries before a validation (held-out test set is single-use). |
|
|
772
789
|
| `skill_opt.max_transient_retries` | number | `5` | Max transient-infra retries before an infra failure becomes inconclusive. |
|
|
790
|
+
| `epic.mode.enabled` | boolean | `false` | Master opt-in for Epic Mode (`/swarm epic`, `epic_next_wave`, `epic_phase_review`). The legacy `turbo.epic.*` path is still accepted and migrated with a warning. See [docs/modes.md](docs/modes.md#epic-mode-preview) |
|
|
791
|
+
| `epic.mode.activation_threshold` | number | `0.3` | Intra-component density above which a conflict component runs one task per wave |
|
|
792
|
+
| `epic.cochange.enabled` | boolean | `false` | Adds the git co-change conflict signal to Epic planning and `/swarm coupling` (otherwise declared-path conflicts only) |
|
|
793
|
+
| `epic.cochange.threshold` / `min_co_changes` | number | `0.6` / `5` | NPMI floor and minimum co-change count for a file pair to count as coupled |
|
|
794
|
+
| `epic.sizing.*` | object | `min_tasks: 6`, `min_scope_coverage: 0.8`, `min_effective_speedup: 1.25`, `coder_fraction: 0.6` | `/swarm epic start` refuses plans below these (`--force` overrides and is recorded) |
|
|
795
|
+
| `epic.learning.*` | object | `enabled: true`, `decay_per_epic: 0.7`, `half_life_days: 60`, `hot_excess: 0.25` | Per-file risk and co-write learning across waves and epics |
|
|
796
|
+
| `epic.commit_policy` | string | `epic-branch` | `epic-branch` (work on `swarm/epic/<key>`, landed at close) or `current-branch` |
|
|
797
|
+
| `epic.retain_refs` | boolean | `false` | Keep `refs/swarm/epics/<key>/*` after close |
|
|
773
798
|
| `context_budget.scoring.enabled` | boolean | `false` | Enable context scoring/ranking |
|
|
774
799
|
| `context_budget.scoring.max_candidates` | number | `100` | Maximum items to score (10-500) |
|
|
775
800
|
| `context_budget.scoring.weights` | object | `{ phase: 1.0, current_task: 2.0, blocked_task: 1.5, recent_failure: 2.5, recent_success: 0.5, evidence_presence: 1.0, decision_recency: 1.5, dependency_proximity: 1.0 }` | Per-signal priority weights (each 0-5). Only these eight keys are read |
|
|
@@ -879,6 +904,8 @@ Every candidate passes a 3-gate pipeline before entering quarantine:
|
|
|
879
904
|
| write_pr_review_trigger_eval | Architect-only: validates the exact mandatory PR-review micro-lane ID set, requires completed provenance for all 11 repository-agnostic lanes, verifies the claimed merge base against an exact live base ref, rejects every `NO-MATCH` waiver, and atomically persists `.swarm/pr-review/<run_id>/trigger-eval.json` |
|
|
880
905
|
| complete_pr_workflow | Architect-only: validates terminal PR-review or PR-feedback coverage; feedback uses a two-call arm/publish protocol and clears only after the approved content is observed on both the bound remote-tracking ref and the actual remote branch |
|
|
881
906
|
| run_pr_feedback_stage_a | Architect-only: executes targeted reproduction/regression and exact `git diff --check` plus every mechanically applicable workspace/category/source build, typecheck, and lint obligation, then persists content-bound Stage A receipts before ordered feedback review gates |
|
|
907
|
+
| epic_next_wave | Architect-only, Epic Mode: closes the current wave (recording outcomes and declared-vs-actual writes) and issues the next wave of conflict-free tasks; the delegation gate only admits the active wave's tasks |
|
|
908
|
+
| epic_phase_review | Architect-only, Epic Mode: dispatches a read-only phase reviewer and then a phase critic, and records the evidence `phase_complete` requires while an epic is open |
|
|
882
909
|
| git_blame | Per-line git blame metadata (sha, author, date, summary) via `git blame --porcelain`; supports optional line range filtering |
|
|
883
910
|
| diff | Structured git diff with contract change detection; supports `summaryOnly` mode returning file list with additions/deletions counts |
|
|
884
911
|
| suggest_patch | Reviewer-safe structured patch suggestion; supports `format` parameter ('json' or 'unified') where unified outputs valid unified diff with `diff --git` headers, hunks, and context |
|
|
@@ -1034,6 +1061,10 @@ Tip: add `"$schema": "https://unpkg.com/opencode-swarm/opencode-swarm.schema.jso
|
|
|
1034
1061
|
"low_utility_threshold": 0.3,
|
|
1035
1062
|
"min_retrievals_for_utility": 3,
|
|
1036
1063
|
"schema_version": 1
|
|
1064
|
+
},
|
|
1065
|
+
"epic": {
|
|
1066
|
+
"mode": { "enabled": false },
|
|
1067
|
+
"cochange": { "enabled": false }
|
|
1037
1068
|
}
|
|
1038
1069
|
}
|
|
1039
1070
|
```
|
|
@@ -1216,6 +1247,8 @@ Control how tool outputs are summarized for LLM context.
|
|
|
1216
1247
|
| `/swarm pr status` | List active PR subscriptions for current session with relative timestamps (the `bunx opencode-swarm run pr status` CLI has no session context, so it lists subscriptions across all sessions) |
|
|
1217
1248
|
| `/swarm deep-dive <scope> [--profile <name>] [--max-explorers <n>]` | Read-only codebase audit with parallel explorers, dual reviewers, and critic challenge |
|
|
1218
1249
|
| `/swarm design-docs <description> [--out <dir>] [--lang <name>] [--update]` | Generate or sync language-agnostic design docs (requires `design_docs.enabled`) |
|
|
1250
|
+
| `/swarm epic start [--force] \| close [--abandon] [--land squash\|merge\|none] \| status [--repair-refs] \| report [<key>\|last] [--format json] \| learning \| prior [show\|reset [--confirm=<token>]] \| clear-merge-failure <taskId> [--confirm]` | Open, inspect, and close a plan-scoped epic (Epic Mode preview; requires `epic.mode.enabled`) |
|
|
1251
|
+
| `/swarm coupling [--phase <n>] [--threshold <-1..1>] [--min-co-changes <n>] [--format markdown\|json] [--persist] [--suggest]` | Measure plan coupling and rank modules driving conflicts; `--suggest` adds Epic plan-shaping suggestions |
|
|
1219
1252
|
| `/swarm dark-matter` | Detect hidden file couplings from co-change history |
|
|
1220
1253
|
| `/swarm finalize [--prune-branches] [--skill-review]` | Idempotent session close-out: retrospectives, lesson curation, evidence archive, git reset --hard + clean to align with remote branch (discards uncommitted changes), optional branch pruning, optional skill-improver proposal |
|
|
1221
1254
|
| `/swarm close [--prune-branches] [--skill-review]` | Deprecated alias for `/swarm finalize [--prune-branches] [--skill-review]` |
|
|
@@ -1267,12 +1300,14 @@ All binaries optional. Missing tools produce soft warnings, never hard-fail.
|
|
|
1267
1300
|
bun test
|
|
1268
1301
|
```
|
|
1269
1302
|
|
|
1303
|
+
Epic Mode's planner regression harness: `bun scripts/epic-bench.ts`.
|
|
1304
|
+
|
|
1270
1305
|
---
|
|
1271
1306
|
|
|
1272
1307
|
## Design Principles
|
|
1273
1308
|
|
|
1274
1309
|
1. **Plan before code.** Critic approves the plan before a single line is written.
|
|
1275
|
-
2. **One task at a time.** Coder gets one task and full context. Nothing else.
|
|
1310
|
+
2. **One task at a time.** Coder gets one task and full context. Nothing else. Tasks run in parallel (v8 lanes, Epic waves) only when their scopes are disjoint, each in an isolated worktree.
|
|
1276
1311
|
3. **Review everything immediately.** Correctness, security, tests, adversarial tests. Every task.
|
|
1277
1312
|
4. **Different models catch different bugs.** Blind spots of the coder are the reviewer's strength.
|
|
1278
1313
|
5. **Save everything to disk.** Resume any project any day from `.swarm/` state.
|
|
@@ -1288,9 +1323,10 @@ bun test
|
|
|
1288
1323
|
- [Architecture Deep Dive](docs/architecture.md) — control model, pipeline, tools
|
|
1289
1324
|
- [Design Rationale](docs/design-rationale.md) — why every major decision
|
|
1290
1325
|
- [Commands Reference](docs/commands.md) — `/swarm` subcommands grouped by function
|
|
1291
|
-
- [Modes Guide](docs/modes.md) — session modes (Turbo, Full-Auto) and project modes (strict/balanced/fast)
|
|
1326
|
+
- [Modes Guide](docs/modes.md) — session modes (Turbo, Full-Auto, Epic) and project modes (strict/balanced/fast)
|
|
1292
1327
|
- [Configuration](docs/configuration.md) — all config keys and examples
|
|
1293
1328
|
- [Planning Guide](docs/planning.md) — task format, phase structure, sizing
|
|
1329
|
+
- [Epic Mode maintainer guide](src/epic/README.md) — module map, invariants, shared-file seams
|
|
1294
1330
|
|
|
1295
1331
|
---
|
|
1296
1332
|
|
|
Binary file
|
|
Binary file
|
|
@@ -213,4 +213,4 @@ export declare function buildQaGateSelectionDialogue(modeLabel: 'BRAINSTORM' | '
|
|
|
213
213
|
* (output no worse than input).
|
|
214
214
|
*/
|
|
215
215
|
export declare function capToolDescriptionForPrompt(description: string): string;
|
|
216
|
-
export declare function createArchitectAgent(model: string, customPrompt?: string, customAppendPrompt?: string, adversarialTesting?: AdversarialTestingConfig, council?: CouncilWorkflowConfig, uiReview?: UIReviewConfig, memoryEnabled?: boolean, architecturalSupervision?: ArchitectureSupervisionWorkflowConfig, designDocsEnabled?: boolean, externalSkillsEnabled?: boolean, turboEnabled?: boolean, skillsEnabled?: boolean, planningProfileResolution?: ResolvedPlanningProfile): AgentDefinition;
|
|
216
|
+
export declare function createArchitectAgent(model: string, customPrompt?: string, customAppendPrompt?: string, adversarialTesting?: AdversarialTestingConfig, council?: CouncilWorkflowConfig, uiReview?: UIReviewConfig, memoryEnabled?: boolean, architecturalSupervision?: ArchitectureSupervisionWorkflowConfig, designDocsEnabled?: boolean, externalSkillsEnabled?: boolean, turboEnabled?: boolean, skillsEnabled?: boolean, planningProfileResolution?: ResolvedPlanningProfile, epicEnabled?: boolean): AgentDefinition;
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* event therefore resumes the first incomplete transition without re-running a
|
|
7
7
|
* completed one.
|
|
8
8
|
*/
|
|
9
|
+
import { epicSentinelExists } from '../epic/lifecycle.js';
|
|
10
|
+
import { commitEpicResidueAfterDelegation } from '../epic/residue-commit.js';
|
|
9
11
|
import { transferCoderSettlementToBackground } from '../workflow/coder-settlement.js';
|
|
10
12
|
import { type BackgroundDelegationRecord, markLegacyCoderSettlementTransferPending, type ReplacePendingBackgroundAdvisoryResult, recordDelegationIngestionResult } from './pending-delegations.js';
|
|
11
13
|
interface ObserverConfig {
|
|
@@ -18,6 +20,10 @@ export interface PreparedBackgroundAdvisories {
|
|
|
18
20
|
}
|
|
19
21
|
/** Test-only dependency seam; production callers should use the observer API. */
|
|
20
22
|
export declare const _internals: {
|
|
23
|
+
/** Epic v2 C3: sentinel probe gating the residue seam (one existsSync). */
|
|
24
|
+
epicSentinelExists: typeof epicSentinelExists;
|
|
25
|
+
/** Epic v2 C3 (X1): commit a background non-coder writer's residue. */
|
|
26
|
+
commitEpicResidueAfterDelegation: typeof commitEpicResidueAfterDelegation;
|
|
21
27
|
transferCoderSettlementToBackground: typeof transferCoderSettlementToBackground;
|
|
22
28
|
markLegacyCoderSettlementTransferPending: typeof markLegacyCoderSettlementTransferPending;
|
|
23
29
|
sleep: (milliseconds: number) => Promise<void>;
|
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
import"./index-
|
|
2
|
+
import"./index-1s95jrgc.js";
|
|
3
3
|
import"./index-pkhbd2t5.js";
|
|
4
4
|
import"./index-0725jpp7.js";
|
|
5
5
|
import {
|
|
6
6
|
appendCoreEventSync
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-zk6ttjkt.js";
|
|
8
8
|
import {
|
|
9
9
|
derivePlanIdentityHash
|
|
10
10
|
} from "./index-7pmbnjvj.js";
|
|
11
|
-
import"./index-
|
|
12
|
-
import"./index-
|
|
11
|
+
import"./index-z3ahy9c2.js";
|
|
12
|
+
import"./index-7vnr5cmp.js";
|
|
13
13
|
import"./index-fzpt2djt.js";
|
|
14
|
-
import"./index-
|
|
14
|
+
import"./index-qs9myayh.js";
|
|
15
15
|
import"./index-gx2vp8gx.js";
|
|
16
16
|
import {
|
|
17
17
|
loadPluginConfigWithMeta
|
|
18
|
-
} from "./index-
|
|
18
|
+
} from "./index-ejk34dnw.js";
|
|
19
19
|
import {
|
|
20
20
|
init_git_executable,
|
|
21
21
|
resolveGitExecutable
|
|
22
22
|
} from "./index-zxdawwc7.js";
|
|
23
|
-
import"./index-
|
|
24
|
-
import"./index-
|
|
23
|
+
import"./index-t0gj8s46.js";
|
|
24
|
+
import"./index-s8b67e6h.js";
|
|
25
25
|
import"./index-bk5tah7q.js";
|
|
26
26
|
import"./index-gknz3bv1.js";
|
|
27
27
|
import"./index-zpsr8rpc.js";
|
|
@@ -152,7 +152,7 @@ async function maybeSaveAutoCheckpoint(directory, plan) {
|
|
|
152
152
|
generation += 1;
|
|
153
153
|
label = buildAutoCheckpointLabel(plan, completedCount, generation);
|
|
154
154
|
}
|
|
155
|
-
const { saveCheckpointRecord } = await import("./checkpoint-
|
|
155
|
+
const { saveCheckpointRecord } = await import("./checkpoint-9q2r5c3j.js");
|
|
156
156
|
const result = await saveCheckpointRecord(label, directory);
|
|
157
157
|
if (result.success) {
|
|
158
158
|
emitAutoSavedEvent(directory, {
|
|
@@ -3,45 +3,43 @@ import {
|
|
|
3
3
|
_internals,
|
|
4
4
|
checkpoint,
|
|
5
5
|
saveCheckpointRecord
|
|
6
|
-
} from "./index-
|
|
7
|
-
import"./index-
|
|
6
|
+
} from "./index-mseerehd.js";
|
|
7
|
+
import"./index-fb5s32c2.js";
|
|
8
8
|
import"./index-6b295cas.js";
|
|
9
9
|
import"./index-9nyqt3kb.js";
|
|
10
|
-
import"./index-
|
|
11
|
-
import"./index-
|
|
12
|
-
import"./index-
|
|
10
|
+
import"./index-p69k8v0e.js";
|
|
11
|
+
import"./index-v3bmwmqw.js";
|
|
12
|
+
import"./index-xyvrfram.js";
|
|
13
13
|
import"./index-g4fs6z4e.js";
|
|
14
14
|
import"./index-m9zzj4ee.js";
|
|
15
|
-
import"./index-
|
|
15
|
+
import"./index-nkgzkt7c.js";
|
|
16
16
|
import"./index-2s7dvzff.js";
|
|
17
|
-
import"./index-
|
|
17
|
+
import"./index-1s95jrgc.js";
|
|
18
18
|
import"./index-pkhbd2t5.js";
|
|
19
19
|
import"./index-0725jpp7.js";
|
|
20
|
-
import"./index-
|
|
21
|
-
import"./index-
|
|
22
|
-
import"./index-
|
|
23
|
-
import"./index-
|
|
20
|
+
import"./index-ej1hdw16.js";
|
|
21
|
+
import"./index-zk6ttjkt.js";
|
|
22
|
+
import"./index-feaxsjrt.js";
|
|
23
|
+
import"./index-2fpv2wmc.js";
|
|
24
24
|
import"./index-ry16d01s.js";
|
|
25
25
|
import"./index-rdm3px0g.js";
|
|
26
26
|
import"./index-7pmbnjvj.js";
|
|
27
|
-
import"./index-
|
|
28
|
-
import"./index-
|
|
27
|
+
import"./index-z3ahy9c2.js";
|
|
28
|
+
import"./index-8bx6vhzk.js";
|
|
29
29
|
import"./index-t7hmqgjy.js";
|
|
30
|
-
import"./index-
|
|
30
|
+
import"./index-7vnr5cmp.js";
|
|
31
31
|
import"./index-fzpt2djt.js";
|
|
32
32
|
import"./index-ejhxgyvm.js";
|
|
33
33
|
import"./index-7g4c7s5r.js";
|
|
34
|
-
import"./index-
|
|
34
|
+
import"./index-qs9myayh.js";
|
|
35
35
|
import"./index-gx2vp8gx.js";
|
|
36
|
-
import"./index-
|
|
36
|
+
import"./index-ejk34dnw.js";
|
|
37
37
|
import"./index-zxdawwc7.js";
|
|
38
|
-
import"./index-
|
|
39
|
-
import"./index-
|
|
38
|
+
import"./index-t0gj8s46.js";
|
|
39
|
+
import"./index-s8b67e6h.js";
|
|
40
40
|
import"./index-bk5tah7q.js";
|
|
41
41
|
import"./index-gknz3bv1.js";
|
|
42
42
|
import"./index-zpsr8rpc.js";
|
|
43
|
-
import"./index-wvghb3x6.js";
|
|
44
|
-
import"./index-9rwhas09.js";
|
|
45
43
|
import"./index-zgwm4ryv.js";
|
|
46
44
|
import"./index-a76rekgs.js";
|
|
47
45
|
export {
|
|
@@ -14,26 +14,26 @@ import {
|
|
|
14
14
|
releaseCoderDispatchOwnership,
|
|
15
15
|
settleCoderDispatch,
|
|
16
16
|
transferCoderSettlementToBackground
|
|
17
|
-
} from "./index-
|
|
18
|
-
import"./index-
|
|
19
|
-
import"./index-
|
|
20
|
-
import"./index-
|
|
21
|
-
import"./index-
|
|
17
|
+
} from "./index-vhn4e6rm.js";
|
|
18
|
+
import"./index-kfevm0n5.js";
|
|
19
|
+
import"./index-n8q43eff.js";
|
|
20
|
+
import"./index-69tgdm9t.js";
|
|
21
|
+
import"./index-zyg1m9d0.js";
|
|
22
22
|
import"./index-g4fs6z4e.js";
|
|
23
|
-
import"./index-
|
|
23
|
+
import"./index-nkgzkt7c.js";
|
|
24
24
|
import"./index-2s7dvzff.js";
|
|
25
|
-
import"./index-
|
|
26
|
-
import"./index-
|
|
27
|
-
import"./index-
|
|
28
|
-
import"./index-
|
|
25
|
+
import"./index-zk6ttjkt.js";
|
|
26
|
+
import"./index-z3ahy9c2.js";
|
|
27
|
+
import"./index-r9yvpr2m.js";
|
|
28
|
+
import"./index-8bx6vhzk.js";
|
|
29
29
|
import"./index-t7hmqgjy.js";
|
|
30
|
-
import"./index-
|
|
30
|
+
import"./index-7vnr5cmp.js";
|
|
31
31
|
import"./index-fzpt2djt.js";
|
|
32
32
|
import"./index-ejhxgyvm.js";
|
|
33
33
|
import"./index-7g4c7s5r.js";
|
|
34
|
-
import"./index-
|
|
34
|
+
import"./index-qs9myayh.js";
|
|
35
35
|
import"./index-zxdawwc7.js";
|
|
36
|
-
import"./index-
|
|
36
|
+
import"./index-s8b67e6h.js";
|
|
37
37
|
import"./index-gknz3bv1.js";
|
|
38
38
|
import"./index-zpsr8rpc.js";
|
|
39
39
|
import"./index-9rwhas09.js";
|
|
@@ -6,6 +6,9 @@ import {
|
|
|
6
6
|
_internals,
|
|
7
7
|
applySafeAutoFixes,
|
|
8
8
|
collectLeanTurboGateSatisfiabilityFindings,
|
|
9
|
+
collectRawInertKeyFindings,
|
|
10
|
+
collectRawLegacyEpicConfigFindings,
|
|
11
|
+
collectRawRetiredEpicKeyFindings,
|
|
9
12
|
createConfigBackup,
|
|
10
13
|
detectStraySwarmDirs,
|
|
11
14
|
getConfigPaths,
|
|
@@ -18,42 +21,39 @@ import {
|
|
|
18
21
|
shouldRunOnStartup,
|
|
19
22
|
writeBackupArtifact,
|
|
20
23
|
writeDoctorArtifact
|
|
21
|
-
} from "./index-
|
|
22
|
-
import"./index-
|
|
24
|
+
} from "./index-tkhenmms.js";
|
|
25
|
+
import"./index-fb5s32c2.js";
|
|
23
26
|
import"./index-6b295cas.js";
|
|
24
|
-
import"./index-
|
|
25
|
-
import"./index-
|
|
26
|
-
import"./index-
|
|
27
|
-
import"./index-g4fs6z4e.js";
|
|
27
|
+
import"./index-p69k8v0e.js";
|
|
28
|
+
import"./index-v3bmwmqw.js";
|
|
29
|
+
import"./index-xyvrfram.js";
|
|
28
30
|
import"./index-m9zzj4ee.js";
|
|
29
|
-
import"./index-
|
|
31
|
+
import"./index-nkgzkt7c.js";
|
|
30
32
|
import"./index-2s7dvzff.js";
|
|
31
33
|
import"./index-0725jpp7.js";
|
|
32
|
-
import"./index-
|
|
33
|
-
import"./index-
|
|
34
|
-
import"./index-
|
|
35
|
-
import"./index-
|
|
34
|
+
import"./index-ej1hdw16.js";
|
|
35
|
+
import"./index-zk6ttjkt.js";
|
|
36
|
+
import"./index-feaxsjrt.js";
|
|
37
|
+
import"./index-2fpv2wmc.js";
|
|
36
38
|
import"./index-ry16d01s.js";
|
|
37
39
|
import"./index-rdm3px0g.js";
|
|
38
40
|
import"./index-7pmbnjvj.js";
|
|
39
|
-
import"./index-
|
|
40
|
-
import"./index-
|
|
41
|
+
import"./index-z3ahy9c2.js";
|
|
42
|
+
import"./index-8bx6vhzk.js";
|
|
41
43
|
import"./index-t7hmqgjy.js";
|
|
42
|
-
import"./index-
|
|
44
|
+
import"./index-7vnr5cmp.js";
|
|
43
45
|
import"./index-fzpt2djt.js";
|
|
44
46
|
import"./index-ejhxgyvm.js";
|
|
45
47
|
import"./index-7g4c7s5r.js";
|
|
46
|
-
import"./index-
|
|
48
|
+
import"./index-qs9myayh.js";
|
|
47
49
|
import"./index-gx2vp8gx.js";
|
|
48
|
-
import"./index-
|
|
50
|
+
import"./index-ejk34dnw.js";
|
|
49
51
|
import"./index-zxdawwc7.js";
|
|
50
|
-
import"./index-
|
|
51
|
-
import"./index-
|
|
52
|
+
import"./index-t0gj8s46.js";
|
|
53
|
+
import"./index-s8b67e6h.js";
|
|
52
54
|
import"./index-bk5tah7q.js";
|
|
53
55
|
import"./index-gknz3bv1.js";
|
|
54
56
|
import"./index-zpsr8rpc.js";
|
|
55
|
-
import"./index-wvghb3x6.js";
|
|
56
|
-
import"./index-9rwhas09.js";
|
|
57
57
|
import"./index-zgwm4ryv.js";
|
|
58
58
|
import"./index-a76rekgs.js";
|
|
59
59
|
export {
|
|
@@ -69,6 +69,9 @@ export {
|
|
|
69
69
|
getConfigPaths,
|
|
70
70
|
detectStraySwarmDirs,
|
|
71
71
|
createConfigBackup,
|
|
72
|
+
collectRawRetiredEpicKeyFindings,
|
|
73
|
+
collectRawLegacyEpicConfigFindings,
|
|
74
|
+
collectRawInertKeyFindings,
|
|
72
75
|
collectLeanTurboGateSatisfiabilityFindings,
|
|
73
76
|
applySafeAutoFixes,
|
|
74
77
|
_internals,
|
|
@@ -14,13 +14,13 @@ import {
|
|
|
14
14
|
resolveWorktreeBaseDir,
|
|
15
15
|
shortenWorktreePath,
|
|
16
16
|
writeLaneProfileToDiskReal
|
|
17
|
-
} from "./index-
|
|
18
|
-
import"./index-
|
|
17
|
+
} from "./index-zyg1m9d0.js";
|
|
18
|
+
import"./index-nkgzkt7c.js";
|
|
19
19
|
import"./index-2s7dvzff.js";
|
|
20
20
|
import"./index-fzpt2djt.js";
|
|
21
|
-
import"./index-
|
|
21
|
+
import"./index-qs9myayh.js";
|
|
22
22
|
import"./index-zxdawwc7.js";
|
|
23
|
-
import"./index-
|
|
23
|
+
import"./index-s8b67e6h.js";
|
|
24
24
|
import"./index-zpsr8rpc.js";
|
|
25
25
|
import"./index-zgwm4ryv.js";
|
|
26
26
|
import"./index-a76rekgs.js";
|
|
@@ -5,18 +5,18 @@ import {
|
|
|
5
5
|
authorizeCuration,
|
|
6
6
|
buildConfigFingerprintInput,
|
|
7
7
|
readCohortConfigFingerprint
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-sxj143a4.js";
|
|
9
9
|
import"./index-rtry5xyf.js";
|
|
10
10
|
import"./index-vzm6zre7.js";
|
|
11
|
-
import"./index-
|
|
12
|
-
import"./index-
|
|
13
|
-
import"./index-
|
|
11
|
+
import"./index-3zwhxk98.js";
|
|
12
|
+
import"./index-r9yvpr2m.js";
|
|
13
|
+
import"./index-8bx6vhzk.js";
|
|
14
14
|
import"./index-t7hmqgjy.js";
|
|
15
|
-
import"./index-
|
|
15
|
+
import"./index-7vnr5cmp.js";
|
|
16
16
|
import"./index-fzpt2djt.js";
|
|
17
17
|
import"./index-ejhxgyvm.js";
|
|
18
18
|
import"./index-7g4c7s5r.js";
|
|
19
|
-
import"./index-
|
|
19
|
+
import"./index-qs9myayh.js";
|
|
20
20
|
import"./index-gknz3bv1.js";
|
|
21
21
|
import"./index-zpsr8rpc.js";
|
|
22
22
|
import"./index-zgwm4ryv.js";
|
|
@@ -14,75 +14,75 @@ import {
|
|
|
14
14
|
runCuratorInit,
|
|
15
15
|
runCuratorPhase,
|
|
16
16
|
writeCuratorSummary
|
|
17
|
-
} from "./index-
|
|
18
|
-
import"./index-
|
|
19
|
-
import"./index-
|
|
20
|
-
import"./index-
|
|
17
|
+
} from "./index-ffgcdf49.js";
|
|
18
|
+
import"./index-9xxqdzp4.js";
|
|
19
|
+
import"./index-tkhenmms.js";
|
|
20
|
+
import"./index-9gcqmgbc.js";
|
|
21
21
|
import"./index-j2vv0h13.js";
|
|
22
|
-
import"./index-
|
|
23
|
-
import"./index-
|
|
22
|
+
import"./index-y9v41185.js";
|
|
23
|
+
import"./index-b2j231jy.js";
|
|
24
24
|
import"./index-txdagbh7.js";
|
|
25
|
-
import"./index-
|
|
25
|
+
import"./index-ajzgeb2s.js";
|
|
26
26
|
import"./index-rdec0y3z.js";
|
|
27
|
-
import"./index-
|
|
28
|
-
import"./index-
|
|
29
|
-
import"./index-
|
|
30
|
-
import"./index-
|
|
31
|
-
import"./index-
|
|
32
|
-
import"./index-
|
|
27
|
+
import"./index-0qc7a88d.js";
|
|
28
|
+
import"./index-vhn4e6rm.js";
|
|
29
|
+
import"./index-s92a5ta3.js";
|
|
30
|
+
import"./index-dmq7p8s9.js";
|
|
31
|
+
import"./index-kfevm0n5.js";
|
|
32
|
+
import"./index-mjfpaxw3.js";
|
|
33
33
|
import"./index-cjapb4hy.js";
|
|
34
|
-
import"./index-
|
|
34
|
+
import"./index-n8q43eff.js";
|
|
35
35
|
import"./index-pt7h91zc.js";
|
|
36
36
|
import"./index-q7sjgr1y.js";
|
|
37
|
-
import"./index-
|
|
38
|
-
import"./index-
|
|
37
|
+
import"./index-mseerehd.js";
|
|
38
|
+
import"./index-fb5s32c2.js";
|
|
39
39
|
import"./index-6b295cas.js";
|
|
40
40
|
import"./index-9nyqt3kb.js";
|
|
41
|
-
import"./index-
|
|
42
|
-
import"./index-
|
|
43
|
-
import"./index-
|
|
44
|
-
import"./index-
|
|
45
|
-
import"./index-
|
|
41
|
+
import"./index-p69k8v0e.js";
|
|
42
|
+
import"./index-v3bmwmqw.js";
|
|
43
|
+
import"./index-xyvrfram.js";
|
|
44
|
+
import"./index-69tgdm9t.js";
|
|
45
|
+
import"./index-zyg1m9d0.js";
|
|
46
46
|
import"./index-g4fs6z4e.js";
|
|
47
|
-
import"./index-
|
|
48
|
-
import"./index-
|
|
49
|
-
import"./index-
|
|
47
|
+
import"./index-npe10823.js";
|
|
48
|
+
import"./index-h0xhec3d.js";
|
|
49
|
+
import"./index-49e65y51.js";
|
|
50
50
|
import"./index-m9zzj4ee.js";
|
|
51
|
-
import"./index-
|
|
51
|
+
import"./index-nkgzkt7c.js";
|
|
52
52
|
import"./index-2s7dvzff.js";
|
|
53
|
-
import"./index-
|
|
54
|
-
import"./index-
|
|
53
|
+
import"./index-2kpqqcch.js";
|
|
54
|
+
import"./index-sxj143a4.js";
|
|
55
55
|
import"./index-rtry5xyf.js";
|
|
56
|
-
import"./index-
|
|
56
|
+
import"./index-1s95jrgc.js";
|
|
57
57
|
import"./index-pkhbd2t5.js";
|
|
58
58
|
import"./index-0725jpp7.js";
|
|
59
|
-
import"./index-
|
|
60
|
-
import"./index-
|
|
61
|
-
import"./index-
|
|
62
|
-
import"./index-
|
|
63
|
-
import"./index-
|
|
64
|
-
import"./index-
|
|
59
|
+
import"./index-rgkzcw2a.js";
|
|
60
|
+
import"./index-ej1hdw16.js";
|
|
61
|
+
import"./index-zk6ttjkt.js";
|
|
62
|
+
import"./index-mcv0v2dp.js";
|
|
63
|
+
import"./index-feaxsjrt.js";
|
|
64
|
+
import"./index-2fpv2wmc.js";
|
|
65
65
|
import"./index-ry16d01s.js";
|
|
66
66
|
import"./index-rdm3px0g.js";
|
|
67
67
|
import"./index-7pmbnjvj.js";
|
|
68
|
-
import"./index-
|
|
69
|
-
import"./index-
|
|
68
|
+
import"./index-z3ahy9c2.js";
|
|
69
|
+
import"./index-mp1s7b0n.js";
|
|
70
70
|
import"./index-vzm6zre7.js";
|
|
71
71
|
import"./index-ae75rja9.js";
|
|
72
|
-
import"./index-
|
|
73
|
-
import"./index-
|
|
74
|
-
import"./index-
|
|
72
|
+
import"./index-3zwhxk98.js";
|
|
73
|
+
import"./index-r9yvpr2m.js";
|
|
74
|
+
import"./index-8bx6vhzk.js";
|
|
75
75
|
import"./index-t7hmqgjy.js";
|
|
76
|
-
import"./index-
|
|
76
|
+
import"./index-7vnr5cmp.js";
|
|
77
77
|
import"./index-fzpt2djt.js";
|
|
78
78
|
import"./index-ejhxgyvm.js";
|
|
79
79
|
import"./index-7g4c7s5r.js";
|
|
80
|
-
import"./index-
|
|
80
|
+
import"./index-qs9myayh.js";
|
|
81
81
|
import"./index-gx2vp8gx.js";
|
|
82
|
-
import"./index-
|
|
82
|
+
import"./index-ejk34dnw.js";
|
|
83
83
|
import"./index-zxdawwc7.js";
|
|
84
|
-
import"./index-
|
|
85
|
-
import"./index-
|
|
84
|
+
import"./index-t0gj8s46.js";
|
|
85
|
+
import"./index-s8b67e6h.js";
|
|
86
86
|
import"./index-bk5tah7q.js";
|
|
87
87
|
import"./index-gknz3bv1.js";
|
|
88
88
|
import"./index-zpsr8rpc.js";
|