opencode-swarm 7.107.5 → 7.108.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/codebase-review-swarm/SKILL.md +15 -0
- package/.opencode/skills/codebase-review-swarm/references/review-protocol-v8.2.md +15 -0
- package/.opencode/skills/engineering-conventions/SKILL.md +1 -1
- package/.opencode/skills/execute/SKILL.md +2 -0
- package/.opencode/skills/phase-wrap/SKILL.md +6 -1
- package/.opencode/skills/swarm-implement/SKILL.md +161 -0
- package/.opencode/skills/swarm-pr-feedback/SKILL.md +5 -2
- package/.opencode/skills/swarm-pr-review/SKILL.md +61 -0
- package/.opencode/skills/writing-tests/SKILL.md +7 -0
- package/dist/cli/{capability-probe-wsjzcp48.js → capability-probe-sh9bwh39.js} +2 -1
- package/dist/cli/{config-doctor-kdq3vae4.js → config-doctor-q354tb2w.js} +2 -2
- package/dist/cli/core-vev13ej2.js +34 -0
- package/dist/cli/{curator-drift-ed7p5mfy.js → curator-drift-fdfgj9qf.js} +3 -3
- package/dist/cli/{curator-k9swkynp.js → curator-js92gc8a.js} +24 -20
- package/dist/cli/curator-llm-factory-n70bxf40.js +40 -0
- package/dist/cli/{dispatch-anmxxhen.js → dispatch-zr1xja4t.js} +2 -2
- package/dist/cli/{evidence-summary-service-6zsgw7x7.js → evidence-summary-service-bjhr75v0.js} +9 -7
- package/dist/cli/{gate-evidence-pgr7d942.js → gate-evidence-v6ds8rcp.js} +5 -4
- package/dist/cli/guardrail-explain-sn2a4pb7.js +41 -0
- package/dist/cli/{guardrail-log-fjypsmek.js → guardrail-log-8mqqsssq.js} +4 -4
- package/dist/cli/hive-promoter-3hh8ph4a.js +48 -0
- package/dist/cli/{index-9b7qp18e.js → index-1cn967sa.js} +2 -2
- package/dist/cli/{index-vzq4h90s.js → index-1emhz3zb.js} +1380 -2013
- package/dist/cli/{index-n1sptn1w.js → index-2nt4mq9n.js} +1 -1
- package/dist/cli/{index-6h82c2h0.js → index-48mc4d48.js} +1056 -192
- package/dist/cli/{index-bq8kd9r9.js → index-5gnp8fyw.js} +3 -3
- package/dist/cli/index-5mkc2f9z.js +154 -0
- package/dist/cli/{index-0kxc7t16.js → index-6jng9c8t.js} +1 -1
- package/dist/cli/{index-jrka8jd4.js → index-7jyndvsy.js} +2 -2
- package/dist/cli/{index-b9v501fr.js → index-7xgqky26.js} +33 -5
- package/dist/cli/{index-4r5z8sgw.js → index-85bacexr.js} +2 -2
- package/dist/cli/{index-bpgqbwmf.js → index-9qxntjtx.js} +6 -6
- package/dist/cli/index-f1qyj61w.js +418 -0
- package/dist/cli/{index-wvxhynxq.js → index-fm7xz1ne.js} +1 -1
- package/dist/cli/{index-dfdg4ws5.js → index-fz1jgbvw.js} +6 -6
- package/dist/cli/{index-pchpahdf.js → index-h4c4rrwx.js} +20 -3
- package/dist/cli/{index-kxm3bdjh.js → index-mmny81g1.js} +6 -6
- package/dist/cli/{index-v4fcn4tr.js → index-q1exe2b3.js} +2 -198
- package/dist/cli/{index-57ymmh7h.js → index-r3j3458j.js} +4 -4
- package/dist/cli/{index-3naa2ajc.js → index-vvk2g744.js} +10 -156
- package/dist/cli/{index-zej8cy0j.js → index-vx76tcxe.js} +1 -1
- package/dist/cli/{index-xmarctsf.js → index-wg0665ft.js} +7 -7
- package/dist/cli/{index-4vsgp5a8.js → index-wj4jeavn.js} +1 -1
- package/dist/cli/index-wvrj16f0.js +206 -0
- package/dist/cli/{index-w1tvqh4x.js → index-x06d2qqm.js} +28 -24
- package/dist/cli/index-x2q0gnt8.js +254 -0
- package/dist/cli/{index-xg18az81.js → index-yw8qpf51.js} +1 -1
- package/dist/cli/index.js +24 -20
- package/dist/cli/{knowledge-escalator-3sgwrgy9.js → knowledge-escalator-6v7sjprx.js} +8 -7
- package/dist/cli/{knowledge-events-kfc6xmkw.js → knowledge-events-6n3x3he2.js} +6 -5
- package/dist/cli/{knowledge-store-kyacem71.js → knowledge-store-exkw6yb1.js} +6 -5
- package/dist/cli/{knowledge-validator-ez3ws8ef.js → knowledge-validator-exymfcb9.js} +7 -6
- package/dist/cli/{pending-delegations-vfnpm8zt.js → pending-delegations-yyz3fcfn.js} +5 -4
- package/dist/cli/{pr-subscriptions-bpvazmsw.js → pr-subscriptions-vv8byxe6.js} +6 -5
- package/dist/cli/{schema-x0ekqzvs.js → schema-x17zmd03.js} +1 -1
- package/dist/cli/scope-persistence-6m5nsp1r.js +20 -0
- package/dist/cli/{skill-generator-x83re96d.js → skill-generator-mx9br4ty.js} +9 -8
- package/dist/commands/_shared/url-security.d.ts +13 -3
- package/dist/commands/close.d.ts +11 -0
- package/dist/commands/lanes.d.ts +35 -0
- package/dist/commands/registry.d.ts +7 -0
- package/dist/config/bundled-skills.d.ts +1 -1
- package/dist/config/schema.d.ts +102 -0
- package/dist/config/skill-mirrors.d.ts +1 -1
- package/dist/git/branch.d.ts +53 -7
- package/dist/git/index.d.ts +5 -1
- package/dist/git/pr.d.ts +35 -2
- package/dist/hooks/delegation-gate/worktree-isolation.d.ts +118 -2
- package/dist/hooks/delegation-gate/worktree-merge-status.d.ts +17 -0
- package/dist/hooks/init-orphan-recovery-advisory.d.ts +58 -0
- package/dist/hooks/init-orphan-recovery.d.ts +65 -0
- package/dist/index.js +427 -416
- package/dist/sandbox/executor.d.ts +11 -1
- package/dist/sandbox/linux/bubblewrap-executor.d.ts +3 -1
- package/dist/sandbox/macos/sandbox-exec-executor.d.ts +3 -1
- package/dist/sandbox/win32/native-sandbox-executor.d.ts +1 -1
- package/dist/sandbox/win32/restricted-environment-executor.d.ts +4 -1
- package/dist/turbo/lean/runner.d.ts +11 -20
- package/dist/turbo/lean/worktree.d.ts +9 -3
- package/dist/utils/bun-compat.d.ts +30 -0
- package/dist/worktree/core.d.ts +55 -0
- package/dist/worktree/merge.d.ts +5 -1
- package/dist/worktree/types.d.ts +38 -0
- package/package.json +2 -1
- package/dist/cli/curator-llm-factory-ed67kywr.js +0 -36
- package/dist/cli/guardrail-explain-vd6da30t.js +0 -37
- package/dist/cli/hive-promoter-gh0nva5c.js +0 -44
|
@@ -64,6 +64,21 @@ Use these baselines unless repository policy explicitly requires stricter or old
|
|
|
64
64
|
7. Write `review-report.md` only after coverage closure and final critic PASS.
|
|
65
65
|
8. Final response reports only the run path, selected tracks, counts summary, highest-risk items, coverage limitations, and confirmation that no source files were modified.
|
|
66
66
|
|
|
67
|
+
## Pre-flight: PR Branch Checkout Before Explorer Dispatch
|
|
68
|
+
|
|
69
|
+
When the review target is a PR branch or commit range, complete this before any
|
|
70
|
+
explorer or candidate-generation dispatch:
|
|
71
|
+
|
|
72
|
+
1. Verify the working tree is clean with `git status --porcelain`. If
|
|
73
|
+
uncommitted changes exist, stash them or abort the checkout to prevent data
|
|
74
|
+
loss.
|
|
75
|
+
2. Fetch and check out the PR head branch locally. Explorer agents read the
|
|
76
|
+
working-tree filesystem (`Read`/`Glob`/`Grep`), not git history, so reviewing
|
|
77
|
+
a PR while the base branch is checked out produces invalid candidates.
|
|
78
|
+
3. Record the exact commit range (`base_ref..head_ref`) in the source-of-truth
|
|
79
|
+
packet and pass that range in every explorer/candidate-generation delegation
|
|
80
|
+
so agents have revision context for targeted `git show` inspection.
|
|
81
|
+
|
|
67
82
|
## Async advisory lanes
|
|
68
83
|
|
|
69
84
|
When selected-track inventory or candidate generation decomposes into independent read-only units, launch those units with `dispatch_lanes_async` when available. Record each returned `batch_id`, then continue architect-owned deterministic work that does not depend on lane output: update the coverage ledger shell, run safe local tools, prepare validation shards, and document unresolved coverage units. Do not mark coverage `REVIEWED`, promote candidates to findings, or write the final report from running lanes.
|
|
@@ -190,6 +190,21 @@ The source-of-truth packet must include repo identity, tech stack, commands, pub
|
|
|
190
190
|
|
|
191
191
|
The repository-context packet must be concise and global: architectural style, key modules and responsibilities, primary data flows, trust boundaries, notable tech decisions, and cross-cutting patterns visible from quoted Phase 0 inventory.
|
|
192
192
|
|
|
193
|
+
### 0J-bis - PR branch checkout pre-flight
|
|
194
|
+
|
|
195
|
+
If the review target is a PR branch or commit range, complete this before Phase 1
|
|
196
|
+
candidate-generation dispatch:
|
|
197
|
+
|
|
198
|
+
1. Verify the working tree is clean with `git status --porcelain`. If
|
|
199
|
+
uncommitted changes exist, stash them or abort the checkout to prevent data
|
|
200
|
+
loss.
|
|
201
|
+
2. Fetch and check out the PR head branch locally. Explorer agents read the
|
|
202
|
+
working-tree filesystem (`Read`/`Glob`/`Grep`), not git history; without the
|
|
203
|
+
checkout, they inspect the base branch and produce invalid candidates.
|
|
204
|
+
3. Record `base_ref..head_ref` in `source-of-truth-packet.md` and pass that
|
|
205
|
+
commit range in every explorer/candidate-generation delegation so lanes can
|
|
206
|
+
use `git show` for revision-specific inspection.
|
|
207
|
+
|
|
193
208
|
### 0K — User review mode gate
|
|
194
209
|
|
|
195
210
|
Stop and present the ten review choices unless the user’s original request already selected tracks and explicitly authorized continuing. If the user selects a focused review, do not run unrelated tracks; record omitted tracks in coverage notes.
|
|
@@ -102,7 +102,7 @@ The `commit-pr` skill Tier 1 - quality section pins the biome command to the pac
|
|
|
102
102
|
The cross-tree skill mirror contract is the authoritative registry at `src/config/skill-mirrors.ts`. If your PR modifies `.opencode/skills/<X>/SKILL.md` or `.claude/skills/<X>/SKILL.md`, consult that file to determine the contract kind for skill `<X>`:
|
|
103
103
|
|
|
104
104
|
- **`identical`:** `.opencode` and `.claude` SKILL.md must be byte-identical (the `canonical` field records which side wins when they drift). Update both trees byte-for-byte in the same commit. Verify with `bun run drift:check`. PR #1512 (lane-dispatch) introduced drift in council/deep-dive by only updating `.opencode` — a contract violation.
|
|
105
|
-
- **`divergent`:** both must exist but content intentionally differs per runtime. Examples: `engineering-conventions` is divergent (different frontmatter, different conventions per Claude Code vs OpenCode)
|
|
105
|
+
- **`divergent`:** both must exist but content intentionally differs per runtime. Examples: `engineering-conventions` is divergent (different frontmatter, different conventions per Claude Code vs OpenCode). `writing-tests` is classified divergent because the additional-contract model does not yet have an adapter kind, but operationally `.opencode/skills/writing-tests/SKILL.md` is canonical and `.claude/skills/writing-tests/SKILL.md` delegates to it.
|
|
106
106
|
- **`opencode-only`:** `.opencode` exists; no `.claude` mirror expected. Examples: `loop` (would shadow Claude Code's built-in `/loop`), `running-tests` (OpenCode-runtime guidance).
|
|
107
107
|
- **Adapter shim pattern:** for architect MODE skills like `swarm-pr-review` and `swarm-pr-feedback`, the `.claude` and `.agents` files are thin adapter shims that delegate to the canonical `.opencode` file via `expectedCanonicalRef`. When updating these, the canonical content goes in `.opencode`; the adapter shim typically needs no change unless the cross-tree delegation interface changes.
|
|
108
108
|
|
|
@@ -53,6 +53,7 @@ All other gates: failure → return to coder. No self-fixes. No workarounds.
|
|
|
53
53
|
5b-BASE (required, once per task): Call `sast_scan` with `{ capture_baseline: true, phase: <N>, changed_files: <files from 5b-PRE> }` where `<N>` is the current phase number (extract from current task ID: task "3.2" → phase 3, task "1.5" → phase 1). The tool maintains `.swarm/evidence/{phase}/sast-baseline.json` as a phase-scoped, incrementally merged baseline of pre-existing SAST findings. Calling twice for the same files is safe (idempotent merge). Do NOT re-capture mid-task.
|
|
54
54
|
→ REQUIRED: Print "sast-baseline: [WRITTEN — N fingerprints | MERGED — N fingerprints | SKIPPED — gate disabled | ERROR — details]"
|
|
55
55
|
→ Subsequent `pre_check_batch` calls with `phase: <N>` will automatically diff against this baseline — only NEW findings (not in baseline) drive the fail verdict.
|
|
56
|
+
-> PREFLIGHT CHECKLIST: Before first coder delegation, answer "SAST baseline captured before first coder delegation? yes/no/disabled/error". If the answer is no, do not delegate to coder; run 5b-BASE first. If disabled or error, record the exact tool result.
|
|
56
57
|
5b. the active swarm's coder agent - Implement (if designer scaffold produced, include it as INPUT).
|
|
57
58
|
5b-bis. **CODER OUTPUT VERIFICATION**: After the coder reports completion, do NOT accept the self-report alone. Run `diff` (step 5c) and inspect at least one of the modified files yourself to confirm the change exists. The coder may report DONE without having produced any diff. A 30-second read of the changed file(s) catches this failure mode. This is NOT a separate explorer dispatch — the existing `diff` tool at step 5c is the verification mechanism; the key discipline is checking that `diff` returns actual changes before proceeding, rather than forwarding the coder's self-report to the next gate.
|
|
58
59
|
5c. Run `diff` tool. If `hasContractChanges` → the active swarm's explorer agent integration analysis. If COMPATIBILITY SIGNALS=INCOMPATIBLE or MIGRATION_SURFACE=yes → coder retry. If COMPATIBILITY SIGNALS=COMPATIBLE and MIGRATION_SURFACE=no → proceed.
|
|
@@ -157,6 +158,7 @@ PRE-COMMIT RULE — Before ANY commit or push:
|
|
|
157
158
|
[ ] Did the active swarm's reviewer agent run and return APPROVED? (not "I reviewed it" — the agent must have run)
|
|
158
159
|
[ ] Did the active swarm's test_engineer agent run and return PASS? (not "the code looks correct" — the agent must have run)
|
|
159
160
|
[ ] Did pre_check_batch run with gates_passed true?
|
|
161
|
+
[ ] SAST baseline captured before first coder delegation (or explicit disabled/error recorded)?
|
|
160
162
|
[ ] Did the diff step run?
|
|
161
163
|
[ ] Did regression-sweep run (or SKIP with no related tests or test_runner error)?
|
|
162
164
|
[ ] Did test-drift check run (or NOT TRIGGERED)?
|
|
@@ -95,7 +95,12 @@ The tool will automatically write the retrospective to \`.swarm/evidence/retro-{
|
|
|
95
95
|
- `.swarm/evidence/{phase}/drift-verifier.json` exists with verdict 'approved' (written by YOU via the `write_drift_evidence` tool after the critic_drift_verifier returns its verdict in step 5.5) — required when .swarm/spec.md exists
|
|
96
96
|
- `.swarm/evidence/{phase}/hallucination-guard.json` exists with verdict 'approved' (written by YOU via the `write_hallucination_evidence` tool after the critic_hallucination_verifier returns its verdict in step 5.55) — ONLY required when `hallucination_guard` is enabled in the QA gate profile
|
|
97
97
|
- `.swarm/evidence/{phase}/mutation-gate.json` exists with verdict 'pass' or 'warn' (written by YOU via the `write_mutation_evidence` tool after step 5.56) — ONLY required when `mutation_test` is enabled in the QA gate profile
|
|
98
|
-
|
|
98
|
+
- regression-test falsification evidence exists for at least one regression
|
|
99
|
+
test added or modified in this phase: fix removed/bypassed -> test fails
|
|
100
|
+
for the expected reason -> fix restored -> test passes. If the phase
|
|
101
|
+
changed no regression tests, record `not applicable` with the changed-file
|
|
102
|
+
evidence.
|
|
103
|
+
If any required file is missing, run the missing gate first. Turbo mode skips all gates automatically.
|
|
99
104
|
NOTE: Steps 5.5, 5.55, and 5.56 are enforced by runtime hooks. If `hallucination_guard` is enabled and you skip the critic_hallucination_verifier delegation (or fail to call `write_hallucination_evidence`), phase_complete will be BLOCKED by the plugin. Similarly, if `mutation_test` is enabled and you skip step 5.56 (or fail to call `write_mutation_evidence`), phase_complete will be BLOCKED. These are not suggestions — they are hard enforcement mechanisms.
|
|
100
105
|
5.65. **Phase Council (conditional on QA gate — `phase_council`)**: Check whether `phase_council` is enabled in the effective QA gate profile (visible via `get_qa_gate_profile`). If disabled, skip silently and proceed to step 5.7.
|
|
101
106
|
This gate is triggered by the `phase_council` QA gate, NOT by `council_mode`. (`council_mode` controls per-task Stage B replacement in MODE: EXECUTE; `phase_council` controls holistic phase-level review here in MODE: PHASE-WRAP.)
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: swarm-implement
|
|
3
|
+
description: Execute complex implementation work with a swarm-like workflow: parallel exploration, scoped planning, objective validation, mandatory independent implementation review for changed work, and final critic approval. Use for feature work, bug fixes, refactors, and multi-file changes.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /swarm-implement
|
|
8
|
+
|
|
9
|
+
Use this skill for implementation work when you want a fast, high-quality swarm
|
|
10
|
+
workflow rather than a single-threaded assistant.
|
|
11
|
+
|
|
12
|
+
## Purpose
|
|
13
|
+
|
|
14
|
+
Complete real coding tasks while preserving speed and adding swarm-style quality
|
|
15
|
+
discipline.
|
|
16
|
+
|
|
17
|
+
## Core operating model
|
|
18
|
+
|
|
19
|
+
Use this execution ladder:
|
|
20
|
+
|
|
21
|
+
1. Explore in parallel.
|
|
22
|
+
2. Build a scoped plan.
|
|
23
|
+
3. Implement in small, coherent units.
|
|
24
|
+
4. Run objective validation.
|
|
25
|
+
5. For any worktree edit, use independent reviewer validation on the latest diff
|
|
26
|
+
and evidence.
|
|
27
|
+
6. For any worktree edit, use a separate final critic after reviewer approval.
|
|
28
|
+
7. Synthesize and report what changed, what was verified, and what remains risky.
|
|
29
|
+
|
|
30
|
+
## Command Namespace
|
|
31
|
+
|
|
32
|
+
Swarm commands always use `/swarm <subcommand>`. Never invoke bare subcommand
|
|
33
|
+
names that collide with host commands such as `/plan`, `/reset`, `/checkpoint`,
|
|
34
|
+
or `/status`.
|
|
35
|
+
|
|
36
|
+
## High-risk work
|
|
37
|
+
|
|
38
|
+
Always use the deeper validation path for auth, permissions, payments,
|
|
39
|
+
destructive actions, dependency changes, public APIs, schemas, migrations,
|
|
40
|
+
concurrency, queues, retries, state machines, caching, file access, subprocesses,
|
|
41
|
+
parsing, secrets, security-sensitive logic, and large cross-file refactors with
|
|
42
|
+
correctness risk.
|
|
43
|
+
|
|
44
|
+
## Recommended workflow
|
|
45
|
+
|
|
46
|
+
### Phase 0 - Establish scope
|
|
47
|
+
|
|
48
|
+
Determine the exact task scope first:
|
|
49
|
+
|
|
50
|
+
- what changed or needs to change,
|
|
51
|
+
- what files are likely involved,
|
|
52
|
+
- what success looks like,
|
|
53
|
+
- what must not be broken,
|
|
54
|
+
- what verification is required.
|
|
55
|
+
|
|
56
|
+
If the task is unclear, ask targeted questions or create a short written plan
|
|
57
|
+
before coding.
|
|
58
|
+
|
|
59
|
+
### Phase 0a - Parallel work check
|
|
60
|
+
|
|
61
|
+
If this project has the OpenCode-generated
|
|
62
|
+
[`parallel-work-check` skill](../generated/parallel-work-check/SKILL.md), follow
|
|
63
|
+
its full protocol. Otherwise, before starting implementation on an existing
|
|
64
|
+
branch:
|
|
65
|
+
|
|
66
|
+
1. Fetch remote state and compare with local (`git fetch` plus HEAD hashes).
|
|
67
|
+
2. If parallel swarm work is detected on the target branch, read the new commits,
|
|
68
|
+
decide whether to integrate, supersede, or proceed, and document the decision.
|
|
69
|
+
3. Prefer the parallel work unless you can clearly articulate why your approach
|
|
70
|
+
is better.
|
|
71
|
+
|
|
72
|
+
### Phase 0b - PR branch checkout pre-flight
|
|
73
|
+
|
|
74
|
+
When implementation or review-scoping work depends on explorer agents reading a
|
|
75
|
+
PR branch or commit range, complete this before Phase 1 explorer dispatch:
|
|
76
|
+
|
|
77
|
+
1. Verify the working tree is clean with `git status --porcelain`. If
|
|
78
|
+
uncommitted changes exist, stash them or abort the checkout to prevent data
|
|
79
|
+
loss.
|
|
80
|
+
2. Fetch and check out the PR head branch locally. Explorer agents read files
|
|
81
|
+
from the working tree (`Read`/`Glob`/`Grep`), not from git history, so a stale
|
|
82
|
+
checkout makes them inspect the base branch.
|
|
83
|
+
3. Pass the exact commit range (`base_ref..head_ref`) in every explorer
|
|
84
|
+
delegation so agents have revision context for targeted `git show`
|
|
85
|
+
inspection.
|
|
86
|
+
|
|
87
|
+
### Phase 1 - Parallel exploration
|
|
88
|
+
|
|
89
|
+
Launch parallel subagents for disjoint investigation tasks such as repository
|
|
90
|
+
mapping, locating existing patterns, finding tests/contracts, side-effect
|
|
91
|
+
analysis, and dependency or migration checks. Keep the main context focused.
|
|
92
|
+
|
|
93
|
+
### Phase 2 - Plan
|
|
94
|
+
|
|
95
|
+
Create a concrete implementation plan before editing for any non-trivial task.
|
|
96
|
+
Include files to change, intended behavior, risks, validation commands, and
|
|
97
|
+
whether reviewer and critic passes are required.
|
|
98
|
+
|
|
99
|
+
### Phase 3 - Implement in scoped units
|
|
100
|
+
|
|
101
|
+
Implement in coherent, reviewable chunks. Follow existing repository patterns.
|
|
102
|
+
|
|
103
|
+
**`declare_scope` discipline.** Before every coder or test-engineer delegation (and before every retry of one), call `declare_scope({ taskId, files })` with the exact file list the delegated agent is allowed to modify — including generated/lockfile paths the change will produce (e.g. `dist/*`, `package-lock.json`, `bun.lock`). Scope is enforced at the Edit/Write/Patch tool layer only — bash-based writes (`sed -i`, `echo >`, `cat > <<HEREDOC`, heredoc-to-file redirects) bypass the check (see issue #520), so do not rely on `declare_scope` to bound shell-redirect writes. If the file list is not 100% obvious from the prompt, declare the containing directories instead. Repeat the declaration before every retry, even when files appear unchanged — scope state is per-attempt, not per-task.
|
|
104
|
+
|
|
105
|
+
If the project exposes `sast_scan` with `capture_baseline`, capture the
|
|
106
|
+
phase-scoped SAST baseline before first coder delegation so later scans fail only
|
|
107
|
+
on new findings rather than pre-existing infrastructure noise.
|
|
108
|
+
|
|
109
|
+
### Phase 4 - Objective validation
|
|
110
|
+
|
|
111
|
+
Run the strongest objective checks available for the task: tests, lint,
|
|
112
|
+
typecheck, build, targeted repro scripts, and local runtime verification where
|
|
113
|
+
relevant. If you cannot verify it, do not claim it is done.
|
|
114
|
+
|
|
115
|
+
### Phase 5 - Independent reviewer validation
|
|
116
|
+
|
|
117
|
+
Use an independent reviewer subagent when the task edits code, tests, docs,
|
|
118
|
+
package metadata, release notes, or skill files. The reviewer must inspect the
|
|
119
|
+
actual current diff and validation evidence after implementation. Any later edit
|
|
120
|
+
invalidates approval and requires re-review.
|
|
121
|
+
|
|
122
|
+
Reviewer responsibilities:
|
|
123
|
+
|
|
124
|
+
- inspect the implementation with fresh context,
|
|
125
|
+
- look for correctness bugs, edge cases, regressions, claim-vs-actual
|
|
126
|
+
mismatches, and test blind spots,
|
|
127
|
+
- default to disbelief until evidence supports the change,
|
|
128
|
+
- classify issues as `CONFIRMED`, `DISPROVED`, `UNVERIFIED`, or `PRE_EXISTING`
|
|
129
|
+
when useful,
|
|
130
|
+
- verify that at least one regression test in the diff has falsification
|
|
131
|
+
evidence when the task claims regression coverage: the fix was temporarily
|
|
132
|
+
removed or bypassed, the test failed for the expected reason, the fix was
|
|
133
|
+
restored, and the test passed again. If no regression test is applicable, the
|
|
134
|
+
reviewer must record why,
|
|
135
|
+
- return `APPROVE`, `NEEDS_REVISION`, or `BLOCKED`.
|
|
136
|
+
|
|
137
|
+
`NEEDS_REVISION` or `BLOCKED` blocks completion until fixed and re-reviewed.
|
|
138
|
+
|
|
139
|
+
### Phase 6 - Critic challenge
|
|
140
|
+
|
|
141
|
+
Use a critic subagent after independent reviewer approval for any task that edits
|
|
142
|
+
code, tests, docs, package metadata, release notes, or skill files. The critic
|
|
143
|
+
must challenge the reviewer-approved current diff and evidence. Any later edit
|
|
144
|
+
invalidates critic approval and requires another critic pass.
|
|
145
|
+
|
|
146
|
+
### Phase 7 - Final synthesis
|
|
147
|
+
|
|
148
|
+
Before calling work complete, verify:
|
|
149
|
+
|
|
150
|
+
- objective validation ran and results were recorded,
|
|
151
|
+
- the independent reviewer approved the latest diff and evidence,
|
|
152
|
+
- a separate critic approved after reviewer approval,
|
|
153
|
+
- every `NEEDS_REVISION` or `BLOCKED` item was fixed and re-reviewed,
|
|
154
|
+
- no edit occurred after the latest reviewer/critic approval,
|
|
155
|
+
- no behavior is unwired or deferred without explicit user instruction.
|
|
156
|
+
|
|
157
|
+
## Adapter notes
|
|
158
|
+
|
|
159
|
+
Runtime-specific adapter skills in `.claude/skills/swarm-implement/` and
|
|
160
|
+
`.agents/skills/swarm-implement/` must stay thin and delegate to this canonical
|
|
161
|
+
`.opencode` workflow.
|
|
@@ -141,8 +141,11 @@ tree:
|
|
|
141
141
|
filesystem (`Read`/`Glob`/`Grep`), and fixes must land on the PR branch — without a
|
|
142
142
|
checkout you would verify and patch the base branch's code instead. Record the
|
|
143
143
|
`base_ref..head_ref` range for diff-scoped inspection.
|
|
144
|
-
|
|
145
|
-
|
|
144
|
+
- Pass the `base_ref..head_ref` commit range in every read-only verification or
|
|
145
|
+
explorer/advisory-lane delegation so lane agents can inspect specific revisions
|
|
146
|
+
with `git show` when needed.
|
|
147
|
+
- If no PR reference was provided (a pasted-feedback session on the current branch),
|
|
148
|
+
confirm the current branch is the intended PR branch before editing.
|
|
146
149
|
|
|
147
150
|
When a verification lane result includes `output_ref`, treat `output` as a
|
|
148
151
|
preview and call `retrieve_lane_output` before using it to classify, resolve,
|
|
@@ -422,6 +422,54 @@ The context pack must include, when available:
|
|
|
422
422
|
|
|
423
423
|
---
|
|
424
424
|
|
|
425
|
+
## Review Finding Persistence
|
|
426
|
+
|
|
427
|
+
Do not rely on conversation context to preserve review findings. Create a run
|
|
428
|
+
artifact under `.swarm/pr-review/<run_id>/findings.jsonl` when file writes are
|
|
429
|
+
allowed, or under `.swarm/evidence/pr-review-<run_id>-findings.jsonl` when the
|
|
430
|
+
review already uses the evidence tree.
|
|
431
|
+
|
|
432
|
+
Each persisted finding record must include at least:
|
|
433
|
+
|
|
434
|
+
```json
|
|
435
|
+
{"finding_id":"F-001","status":"PENDING","file_line":"src/file.ts:123","evidence":"quote, command output, lane id, or reviewer rationale","next_action":"route_to_reviewer"}
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
Minimum field contract:
|
|
439
|
+
|
|
440
|
+
- `finding_id`: stable ID from the candidate/reviewer/critic ledger.
|
|
441
|
+
- `status`: one of `PENDING`, `CONFIRMED`, `DISPROVED`, or `PRE_EXISTING`.
|
|
442
|
+
- `file_line`: exact `file:line` reference, or `N/A` with reason when the
|
|
443
|
+
finding is cross-file or artifact-only.
|
|
444
|
+
- `evidence`: compact source-backed proof, including lane/reviewer/critic IDs or
|
|
445
|
+
command output references when available.
|
|
446
|
+
- `next_action`: the next required action, such as `route_to_reviewer`,
|
|
447
|
+
`route_to_critic`, `report`, `suppress_with_reason`, or `handoff_to_feedback`.
|
|
448
|
+
|
|
449
|
+
Persist after every major validation boundary:
|
|
450
|
+
|
|
451
|
+
1. **Post-explorer:** after Phase 3/4 candidate parsing and before reviewer
|
|
452
|
+
dispatch, write all candidates as `PENDING` with their lane provenance.
|
|
453
|
+
2. **Post-reviewer:** after Phase 6 reviewer validation, update each reviewed
|
|
454
|
+
record to `CONFIRMED`, `DISPROVED`, `PRE_EXISTING`, or keep `PENDING` with a
|
|
455
|
+
concrete `next_action` if more evidence is required.
|
|
456
|
+
3. **Post-critic:** after Phase 8 critic challenge, update final status,
|
|
457
|
+
severity/action notes in `evidence`, and final reporting or handoff action.
|
|
458
|
+
|
|
459
|
+
Resume/reload procedure:
|
|
460
|
+
|
|
461
|
+
1. Before continuing any compacted or resumed review, read the latest
|
|
462
|
+
`findings.jsonl` artifact and reconstruct the candidate/reviewer/critic
|
|
463
|
+
ledger from disk before dispatching more lanes.
|
|
464
|
+
2. If the artifact is missing but a review context says prior lanes ran, stop and
|
|
465
|
+
surface the missing artifact as a coverage gap instead of reclassifying from
|
|
466
|
+
memory.
|
|
467
|
+
3. Append new records rather than overwriting history unless the artifact format
|
|
468
|
+
explicitly tracks revisions; latest record for a `finding_id` wins during
|
|
469
|
+
reload.
|
|
470
|
+
|
|
471
|
+
---
|
|
472
|
+
|
|
425
473
|
## Phase 1: Intent Reconstruction / Obligation Extraction
|
|
426
474
|
|
|
427
475
|
Reconstruct what the PR is obligated to deliver before looking for bugs.
|
|
@@ -551,6 +599,10 @@ rather than preview-text extraction:
|
|
|
551
599
|
|
|
552
600
|
If a lane has `output_degraded: true`, `transcript_incomplete: true`, or no usable `output_ref`, apply the COVERAGE GATE from Phase 3: retry (max 2) with materially different parameters, then use blocking `dispatch_lanes` or the Task tool as verified-equivalent fallbacks when lane tools do not work. If the gap cannot be closed, stop and surface the lane failure to the user as BLOCKED. Do not mark affected candidates UNVERIFIED to proceed past the gap. Never infer candidate absence from a preview.
|
|
553
601
|
|
|
602
|
+
After candidate parsing and before reviewer dispatch, persist the post-explorer
|
|
603
|
+
candidate ledger using the Review Finding Persistence contract. This is the
|
|
604
|
+
durable recovery point for context compaction before Phase 6.
|
|
605
|
+
|
|
554
606
|
**Fallback convention:** If the parser is unavailable, the explorer MAY emit
|
|
555
607
|
`[CANDIDATE]` rows in the lane output as a fallback convention (see the
|
|
556
608
|
Explorer Prompt Template at the end of this skill), but the orchestrator
|
|
@@ -728,6 +780,11 @@ Reviewer output format:
|
|
|
728
780
|
|
|
729
781
|
`DISPROVED` findings must include the reason. `PRE_EXISTING` findings must include the base-branch evidence if available.
|
|
730
782
|
|
|
783
|
+
After reviewer lanes settle, persist the post-reviewer finding ledger before
|
|
784
|
+
critic routing or synthesis. The artifact must preserve `CONFIRMED`,
|
|
785
|
+
`DISPROVED`, `PRE_EXISTING`, and still-`PENDING` records with reviewer IDs and
|
|
786
|
+
next actions.
|
|
787
|
+
|
|
731
788
|
---
|
|
732
789
|
|
|
733
790
|
## Phase 7: Falsification Probe Requirement
|
|
@@ -782,6 +839,10 @@ The `[CRITIC]` row in the format above is **mandatory contract**, not advisory o
|
|
|
782
839
|
|
|
783
840
|
Refuted findings become `DISPROVED` or `ADVISORY`, depending on critic rationale. Downgrades must be listed in the final validation provenance.
|
|
784
841
|
|
|
842
|
+
After critic lanes settle, persist the post-critic finding ledger before final
|
|
843
|
+
synthesis. This artifact is the source of truth for resumed reporting and for
|
|
844
|
+
any later `swarm-pr-feedback` handoff.
|
|
845
|
+
|
|
785
846
|
---
|
|
786
847
|
|
|
787
848
|
## Runtime-Aware False-Positive Guard Checklist
|
|
@@ -580,6 +580,13 @@ Rules:
|
|
|
580
580
|
- The leading comment in the body explains the **prior buggy behavior** in concrete terms — what the code did before, not what it does now.
|
|
581
581
|
- One regression test per finding. Do not pile unrelated assertions into a single regression block.
|
|
582
582
|
|
|
583
|
+
Regression tests must be falsifiable. Before marking regression coverage
|
|
584
|
+
complete, temporarily remove or bypass the fix, run the regression test and
|
|
585
|
+
confirm it fails for the expected reason, restore the fix, then rerun the test
|
|
586
|
+
and confirm it passes. Record both commands/results in the task evidence. If the
|
|
587
|
+
fix cannot be safely reverted, document the exact reason and use the smallest
|
|
588
|
+
equivalent mutation that would reintroduce the bug.
|
|
589
|
+
|
|
583
590
|
Examples in-tree: `tests/unit/graph/graph-query.test.ts`, `tests/unit/graph/import-extractor.test.ts`, `tests/unit/graph/graph-store.test.ts`.
|
|
584
591
|
|
|
585
592
|
### Guardrail Authority Tests
|
|
@@ -5,7 +5,8 @@ import {
|
|
|
5
5
|
isBubblewrapAvailable,
|
|
6
6
|
isSandboxExecAvailable,
|
|
7
7
|
isWindowsSandboxAvailable
|
|
8
|
-
} from "./index-
|
|
8
|
+
} from "./index-wvrj16f0.js";
|
|
9
|
+
import"./index-q1exe2b3.js";
|
|
9
10
|
import"./index-zgwm4ryv.js";
|
|
10
11
|
import"./index-a76rekgs.js";
|
|
11
12
|
init_capability_probe();
|
|
@@ -12,8 +12,8 @@ import {
|
|
|
12
12
|
shouldRunOnStartup,
|
|
13
13
|
writeBackupArtifact,
|
|
14
14
|
writeDoctorArtifact
|
|
15
|
-
} from "./index-
|
|
16
|
-
import"./index-
|
|
15
|
+
} from "./index-fm7xz1ne.js";
|
|
16
|
+
import"./index-h4c4rrwx.js";
|
|
17
17
|
import"./index-bfwt3abw.js";
|
|
18
18
|
import"./index-5e4e2hvv.js";
|
|
19
19
|
import"./index-p0arc26j.js";
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
_internals,
|
|
4
|
+
assertCleanWorkingTree,
|
|
5
|
+
autoCommitDirty,
|
|
6
|
+
checkPathBudget,
|
|
7
|
+
cleanUntrackedFiles,
|
|
8
|
+
isCleanWorktree,
|
|
9
|
+
makeWorktreeBranchName,
|
|
10
|
+
provisionWorktree,
|
|
11
|
+
removeLaneProfileFromDiskReal,
|
|
12
|
+
removeWorktree,
|
|
13
|
+
shortenWorktreePath,
|
|
14
|
+
writeLaneProfileToDiskReal
|
|
15
|
+
} from "./index-f1qyj61w.js";
|
|
16
|
+
import"./index-5e4e2hvv.js";
|
|
17
|
+
import"./index-p0arc26j.js";
|
|
18
|
+
import"./index-zgwm4ryv.js";
|
|
19
|
+
import"./index-7xgqky26.js";
|
|
20
|
+
import"./index-a76rekgs.js";
|
|
21
|
+
export {
|
|
22
|
+
writeLaneProfileToDiskReal,
|
|
23
|
+
shortenWorktreePath,
|
|
24
|
+
removeWorktree,
|
|
25
|
+
removeLaneProfileFromDiskReal,
|
|
26
|
+
provisionWorktree,
|
|
27
|
+
makeWorktreeBranchName,
|
|
28
|
+
isCleanWorktree,
|
|
29
|
+
cleanUntrackedFiles,
|
|
30
|
+
checkPathBudget,
|
|
31
|
+
autoCommitDirty,
|
|
32
|
+
assertCleanWorkingTree,
|
|
33
|
+
_internals
|
|
34
|
+
};
|
|
@@ -8,16 +8,16 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
readSwarmFileAsync,
|
|
10
10
|
validateSwarmPath
|
|
11
|
-
} from "./index-
|
|
11
|
+
} from "./index-r3j3458j.js";
|
|
12
|
+
import"./index-jtqkh8jf.js";
|
|
12
13
|
import"./index-5e4e2hvv.js";
|
|
13
14
|
import"./index-p0arc26j.js";
|
|
14
|
-
import"./index-jtqkh8jf.js";
|
|
15
15
|
import {
|
|
16
16
|
init_logger,
|
|
17
17
|
warn
|
|
18
18
|
} from "./index-zgwm4ryv.js";
|
|
19
19
|
import"./index-293f68mj.js";
|
|
20
|
-
import"./index-
|
|
20
|
+
import"./index-7xgqky26.js";
|
|
21
21
|
import"./index-a76rekgs.js";
|
|
22
22
|
|
|
23
23
|
// src/hooks/curator-drift.ts
|
|
@@ -11,35 +11,39 @@ import {
|
|
|
11
11
|
runCuratorInit,
|
|
12
12
|
runCuratorPhase,
|
|
13
13
|
writeCuratorSummary
|
|
14
|
-
} from "./index-
|
|
15
|
-
import"./index-
|
|
14
|
+
} from "./index-1emhz3zb.js";
|
|
15
|
+
import"./index-wj4jeavn.js";
|
|
16
|
+
import"./index-5gnp8fyw.js";
|
|
16
17
|
import"./index-c8s9a3zh.js";
|
|
17
|
-
import"./index-
|
|
18
|
-
import"./index-
|
|
18
|
+
import"./index-fm7xz1ne.js";
|
|
19
|
+
import"./index-48mc4d48.js";
|
|
19
20
|
import"./index-91j1sqzm.js";
|
|
20
|
-
import"./index-
|
|
21
|
+
import"./index-yw8qpf51.js";
|
|
22
|
+
import"./index-85bacexr.js";
|
|
21
23
|
import"./index-09xpycan.js";
|
|
22
|
-
import"./index-
|
|
23
|
-
import"./index-
|
|
24
|
-
import"./index-
|
|
25
|
-
import"./index-
|
|
26
|
-
import"./index-
|
|
27
|
-
import"./index-
|
|
28
|
-
import"./index-n1sptn1w.js";
|
|
24
|
+
import"./index-h4c4rrwx.js";
|
|
25
|
+
import"./index-9qxntjtx.js";
|
|
26
|
+
import"./index-mmny81g1.js";
|
|
27
|
+
import"./index-fz1jgbvw.js";
|
|
28
|
+
import"./index-wg0665ft.js";
|
|
29
|
+
import"./index-2nt4mq9n.js";
|
|
29
30
|
import"./index-bfwt3abw.js";
|
|
30
|
-
import"./index-
|
|
31
|
-
import"./index-
|
|
32
|
-
import"./index-
|
|
33
|
-
import"./index-
|
|
34
|
-
import"./index-
|
|
31
|
+
import"./index-wvrj16f0.js";
|
|
32
|
+
import"./index-q1exe2b3.js";
|
|
33
|
+
import"./index-x2q0gnt8.js";
|
|
34
|
+
import"./index-f1qyj61w.js";
|
|
35
|
+
import"./index-r3j3458j.js";
|
|
36
|
+
import"./index-jtqkh8jf.js";
|
|
35
37
|
import"./index-5e4e2hvv.js";
|
|
36
38
|
import"./index-p0arc26j.js";
|
|
37
|
-
import"./index-jtqkh8jf.js";
|
|
38
39
|
import"./index-zgwm4ryv.js";
|
|
40
|
+
import"./index-6jng9c8t.js";
|
|
41
|
+
import"./index-1cn967sa.js";
|
|
39
42
|
import"./index-293f68mj.js";
|
|
40
|
-
import"./index-
|
|
41
|
-
import"./index-b9v501fr.js";
|
|
43
|
+
import"./index-5mkc2f9z.js";
|
|
42
44
|
import"./index-vn263hqt.js";
|
|
45
|
+
import"./index-vvk2g744.js";
|
|
46
|
+
import"./index-7xgqky26.js";
|
|
43
47
|
import"./index-a76rekgs.js";
|
|
44
48
|
export {
|
|
45
49
|
writeCuratorSummary,
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
import {
|
|
3
|
+
createCuratorLLMDelegate
|
|
4
|
+
} from "./index-1emhz3zb.js";
|
|
5
|
+
import"./index-wj4jeavn.js";
|
|
6
|
+
import"./index-5gnp8fyw.js";
|
|
7
|
+
import"./index-c8s9a3zh.js";
|
|
8
|
+
import"./index-fm7xz1ne.js";
|
|
9
|
+
import"./index-48mc4d48.js";
|
|
10
|
+
import"./index-91j1sqzm.js";
|
|
11
|
+
import"./index-yw8qpf51.js";
|
|
12
|
+
import"./index-85bacexr.js";
|
|
13
|
+
import"./index-09xpycan.js";
|
|
14
|
+
import"./index-h4c4rrwx.js";
|
|
15
|
+
import"./index-9qxntjtx.js";
|
|
16
|
+
import"./index-mmny81g1.js";
|
|
17
|
+
import"./index-fz1jgbvw.js";
|
|
18
|
+
import"./index-wg0665ft.js";
|
|
19
|
+
import"./index-2nt4mq9n.js";
|
|
20
|
+
import"./index-bfwt3abw.js";
|
|
21
|
+
import"./index-wvrj16f0.js";
|
|
22
|
+
import"./index-q1exe2b3.js";
|
|
23
|
+
import"./index-x2q0gnt8.js";
|
|
24
|
+
import"./index-f1qyj61w.js";
|
|
25
|
+
import"./index-r3j3458j.js";
|
|
26
|
+
import"./index-jtqkh8jf.js";
|
|
27
|
+
import"./index-5e4e2hvv.js";
|
|
28
|
+
import"./index-p0arc26j.js";
|
|
29
|
+
import"./index-zgwm4ryv.js";
|
|
30
|
+
import"./index-6jng9c8t.js";
|
|
31
|
+
import"./index-1cn967sa.js";
|
|
32
|
+
import"./index-293f68mj.js";
|
|
33
|
+
import"./index-5mkc2f9z.js";
|
|
34
|
+
import"./index-vn263hqt.js";
|
|
35
|
+
import"./index-vvk2g744.js";
|
|
36
|
+
import"./index-7xgqky26.js";
|
|
37
|
+
import"./index-a76rekgs.js";
|
|
38
|
+
export {
|
|
39
|
+
createCuratorLLMDelegate
|
|
40
|
+
};
|
|
@@ -11,11 +11,11 @@ import {
|
|
|
11
11
|
defaultTestFilesFor,
|
|
12
12
|
detectProjectLanguages,
|
|
13
13
|
tokenizeCommand
|
|
14
|
-
} from "./index-
|
|
14
|
+
} from "./index-yw8qpf51.js";
|
|
15
15
|
import"./index-5e4e2hvv.js";
|
|
16
16
|
import"./index-p0arc26j.js";
|
|
17
17
|
import"./index-zgwm4ryv.js";
|
|
18
|
-
import"./index-
|
|
18
|
+
import"./index-7xgqky26.js";
|
|
19
19
|
import"./index-a76rekgs.js";
|
|
20
20
|
|
|
21
21
|
// src/lang/dispatch.ts
|
package/dist/cli/{evidence-summary-service-6zsgw7x7.js → evidence-summary-service-bjhr75v0.js}
RENAMED
|
@@ -6,21 +6,23 @@ import {
|
|
|
6
6
|
loadPlanJsonOnly,
|
|
7
7
|
mergeDurableGateEntriesFromEvidence,
|
|
8
8
|
readDurableGateEvidence
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-48mc4d48.js";
|
|
10
10
|
import"./index-91j1sqzm.js";
|
|
11
|
-
import"./index-
|
|
12
|
-
import"./index-
|
|
13
|
-
import"./index-
|
|
11
|
+
import"./index-q1exe2b3.js";
|
|
12
|
+
import"./index-r3j3458j.js";
|
|
13
|
+
import"./index-jtqkh8jf.js";
|
|
14
14
|
import"./index-5e4e2hvv.js";
|
|
15
15
|
import"./index-p0arc26j.js";
|
|
16
|
-
import"./index-jtqkh8jf.js";
|
|
17
16
|
import {
|
|
18
17
|
log
|
|
19
18
|
} from "./index-zgwm4ryv.js";
|
|
19
|
+
import"./index-6jng9c8t.js";
|
|
20
|
+
import"./index-1cn967sa.js";
|
|
20
21
|
import"./index-293f68mj.js";
|
|
21
|
-
import"./index-
|
|
22
|
-
import"./index-b9v501fr.js";
|
|
22
|
+
import"./index-5mkc2f9z.js";
|
|
23
23
|
import"./index-vn263hqt.js";
|
|
24
|
+
import"./index-vvk2g744.js";
|
|
25
|
+
import"./index-7xgqky26.js";
|
|
24
26
|
import"./index-a76rekgs.js";
|
|
25
27
|
|
|
26
28
|
// src/services/evidence-summary-service.ts
|
|
@@ -9,12 +9,13 @@ import {
|
|
|
9
9
|
readTaskEvidenceRaw,
|
|
10
10
|
recordAgentDispatch,
|
|
11
11
|
recordGateEvidence
|
|
12
|
-
} from "./index-
|
|
13
|
-
import"./index-
|
|
12
|
+
} from "./index-6jng9c8t.js";
|
|
13
|
+
import"./index-1cn967sa.js";
|
|
14
14
|
import"./index-293f68mj.js";
|
|
15
|
-
import"./index-
|
|
16
|
-
import"./index-b9v501fr.js";
|
|
15
|
+
import"./index-5mkc2f9z.js";
|
|
17
16
|
import"./index-vn263hqt.js";
|
|
17
|
+
import"./index-vvk2g744.js";
|
|
18
|
+
import"./index-7xgqky26.js";
|
|
18
19
|
import"./index-a76rekgs.js";
|
|
19
20
|
export {
|
|
20
21
|
recordGateEvidence,
|