opencode-swarm 7.140.2 → 7.140.4
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/brainstorm/SKILL.md +1 -1
- package/.opencode/skills/ci-failure-batching/SKILL.md +11 -1
- package/.opencode/skills/ci-fix-monitor/SKILL.md +6 -4
- package/.opencode/skills/discover/SKILL.md +1 -1
- package/.opencode/skills/durable-session-state/SKILL.md +82 -0
- package/.opencode/skills/engineering-conventions/SKILL.md +1 -1
- package/.opencode/skills/issue-ingest/SKILL.md +13 -7
- package/.opencode/skills/issue-tracer/SKILL.md +1 -1
- package/.opencode/skills/orchestrating-subagents/SKILL.md +113 -0
- package/.opencode/skills/parallel-work-check/SKILL.md +1 -1
- package/.opencode/skills/swarm-ci-monitor/SKILL.md +5 -3
- package/.opencode/skills/swarm-pr-feedback/SKILL.md +30 -4
- package/.opencode/skills/writing-tests/SKILL.md +1 -1
- package/dist/agents/reviewer-directive-compliance.d.ts +19 -5
- package/dist/cli/{config-doctor-shc0n4q1.js → config-doctor-qqe6172n.js} +3 -3
- package/dist/cli/{core-p5cyej3r.js → core-52k057mf.js} +2 -2
- package/dist/cli/{curation-policy-7n6t8he4.js → curation-policy-9291bdat.js} +5 -7
- package/dist/cli/{curator-zp5qq24c.js → curator-04xqq68e.js} +28 -28
- package/dist/cli/{curator-llm-factory-pr4bdfqw.js → curator-llm-factory-cfm8fhdw.js} +28 -28
- package/dist/cli/{evidence-summary-service-nfdc1ht9.js → evidence-summary-service-em58myd7.js} +8 -8
- package/dist/cli/{gate-evidence-46qeyfc1.js → gate-evidence-ezxfkb22.js} +4 -4
- package/dist/cli/{guardrail-explain-thddj6jv.js → guardrail-explain-pn1bcgfz.js} +29 -29
- package/dist/cli/{guardrail-log-w8fmxe1x.js → guardrail-log-vb5zkegf.js} +4 -4
- package/dist/cli/{hive-promoter-0yg3gxg6.js → hive-promoter-z09khawt.js} +28 -28
- package/dist/cli/index-2rb3x0fk.js +2554 -0
- package/dist/cli/{index-hfvxhk4z.js → index-35qep0v7.js} +1 -1
- package/dist/cli/{index-h2waehqq.js → index-4hp8nvwb.js} +1 -1
- package/dist/cli/{index-1j5my2qy.js → index-7begd9aq.js} +4 -4
- package/dist/cli/{index-n831qq2v.js → index-a1fjhx4w.js} +822 -688
- package/dist/cli/{index-chx92bes.js → index-arza4m4j.js} +2 -2
- package/dist/cli/{index-ry0hgg3m.js → index-bfhwtdsw.js} +34 -0
- package/dist/cli/{index-jfjnn408.js → index-bn17ycxn.js} +1 -1
- package/dist/cli/{index-1m1ksyqt.js → index-c5kr20nz.js} +1 -1
- package/dist/cli/{index-4rje8dc0.js → index-djbhe0yh.js} +30 -30
- package/dist/cli/{index-t59cdg48.js → index-dtam929z.js} +2 -19
- package/dist/cli/{index-n0pja0qs.js → index-dtyeabmj.js} +2 -2
- package/dist/cli/{index-9txca231.js → index-hfjvepk2.js} +11 -9
- package/dist/cli/{index-vjqe1z2w.js → index-hfwzxh3j.js} +3 -3
- package/dist/cli/{index-n408rw7n.js → index-hxvkfx6t.js} +12 -0
- package/dist/cli/{index-brh827g0.js → index-hz0refz4.js} +10 -10
- package/dist/cli/{index-yt3vz0e1.js → index-mpytsq6k.js} +2 -2
- package/dist/cli/{index-rs1f1bh0.js → index-mrpfd1jx.js} +1 -1
- package/dist/cli/{index-0tevsq1a.js → index-pp5m7xga.js} +2 -2
- package/dist/cli/{index-b9rd29ge.js → index-rrb6cz2f.js} +1 -1
- package/dist/cli/{index-adyxbmt5.js → index-ryq97w1x.js} +2 -2
- package/dist/cli/{index-y98ngs4g.js → index-s8g7jh1k.js} +2 -2
- package/dist/cli/{index-bmmzfrc7.js → index-tj04dj06.js} +5 -2
- package/dist/cli/{index-z6md3t8m.js → index-v1an91bq.js} +54 -19
- package/dist/cli/{index-898f16j9.js → index-v3x7j9ey.js} +2 -2
- package/dist/cli/{index-7ax0bkqh.js → index-v3xhc7kg.js} +1 -1
- package/dist/cli/{index-325zmfyj.js → index-vrmkg8fm.js} +46 -15
- package/dist/cli/{index-yyyk63kk.js → index-w4etfamq.js} +2 -2
- package/dist/cli/{index-kbfsp07d.js → index-wk8s1m7b.js} +2 -2
- package/dist/cli/{index-x6mtyj6q.js → index-ysa38bnr.js} +2 -2
- package/dist/cli/index.js +28 -28
- package/dist/cli/{knowledge-escalator-58tw74js.js → knowledge-escalator-gdjnwszd.js} +19 -7
- package/dist/cli/{knowledge-events-knr0pfq4.js → knowledge-events-581x4q7n.js} +18 -5
- package/dist/cli/{knowledge-link-q46k9adx.js → knowledge-link-axx45d1h.js} +4 -4
- package/dist/cli/{knowledge-store-e2srcd89.js → knowledge-store-ttg33482.js} +5 -5
- package/dist/cli/{knowledge-validator-1dtj02q8.js → knowledge-validator-8kywqt8b.js} +7 -8
- package/dist/cli/{pending-delegations-qzrx38y9.js → pending-delegations-btwqsvz4.js} +3 -3
- package/dist/cli/{pr-subscriptions-5s59h4dd.js → pr-subscriptions-83y1cdwv.js} +3 -3
- package/dist/cli/{runner-y78d7ryb.js → runner-fh3r41nw.js} +5 -5
- package/dist/cli/{scan-cursor-7tqsvbp8.js → scan-cursor-j8ytdpam.js} +6 -6
- package/dist/cli/{schema-b046zss2.js → schema-6xfqtpvn.js} +2 -2
- package/dist/cli/{scope-persistence-dr1msqxw.js → scope-persistence-8c72jrgp.js} +4 -4
- package/dist/cli/{skill-generator-bvph9d98.js → skill-generator-n8vm1yhn.js} +18 -9
- package/dist/cli/{telemetry-sc57xtb0.js → telemetry-fb44gpba.js} +1 -1
- package/dist/cli/{worktree-collision-ownership-7a8e6gr9.js → worktree-collision-ownership-f28r473k.js} +3 -3
- package/dist/commands/ci-simulate.d.ts +7 -3
- package/dist/commands/close.d.ts +8 -0
- package/dist/commands/registry.d.ts +2 -2
- package/dist/commands/sdd.d.ts +15 -0
- package/dist/config/bundled-skills.d.ts +1 -1
- package/dist/config/schema.d.ts +2 -0
- package/dist/git/branch.d.ts +1 -1
- package/dist/hooks/compaction-customizer.d.ts +8 -0
- package/dist/hooks/delegate-ack-collector.d.ts +5 -0
- package/dist/hooks/hive-promoter.d.ts +4 -4
- package/dist/hooks/issue-trace-reducer.d.ts +7 -1
- package/dist/hooks/issue-trace-state.d.ts +18 -0
- package/dist/hooks/issue-trace.d.ts +3 -1
- package/dist/hooks/knowledge-application-gate.d.ts +8 -3
- package/dist/hooks/knowledge-application.d.ts +8 -5
- package/dist/hooks/knowledge-escalator.d.ts +9 -5
- package/dist/hooks/knowledge-events.d.ts +21 -8
- package/dist/hooks/knowledge-injector.d.ts +9 -0
- package/dist/hooks/knowledge-receipt-ledger-storage.d.ts +49 -0
- package/dist/hooks/knowledge-receipt-ledger.d.ts +305 -0
- package/dist/hooks/knowledge-receipt-observability.d.ts +28 -0
- package/dist/hooks/knowledge-receipt-validator.d.ts +13 -50
- package/dist/hooks/knowledge-store.d.ts +6 -1
- package/dist/hooks/knowledge-types.d.ts +12 -0
- package/dist/hooks/phase-complete-directive-gate.d.ts +3 -1
- package/dist/hooks/phase-directives.d.ts +4 -4
- package/dist/hooks/pr-workflow-gate.d.ts +34 -1
- package/dist/hooks/promotion-evidence-store.d.ts +14 -8
- package/dist/hooks/reviewer-verdict-parser.d.ts +34 -10
- package/dist/index.js +551 -532
- package/dist/knowledge/curation-policy.d.ts +0 -2
- package/dist/observability/catalog.d.ts +5 -3
- package/dist/observability/legacy.d.ts +4 -3
- package/dist/telemetry.d.ts +1 -1
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/manifest.d.ts +3 -0
- package/dist/tools/phase-complete.d.ts +9 -0
- package/dist/tools/rebind-pr-feedback-head.d.ts +17 -0
- package/dist/tools/record-implementation-review.d.ts +19 -0
- package/dist/tools/record-recurrence-sweep.d.ts +17 -0
- package/dist/tools/run-pr-feedback-stage-a.d.ts +8 -0
- package/dist/tools/tool-metadata.d.ts +12 -0
- package/package.json +3 -1
- package/dist/cli/index-jfp1bgt1.js +0 -666
|
@@ -60,7 +60,7 @@ If `council.general.enabled` is true in the resolved opencode-swarm config AND a
|
|
|
60
60
|
→ REQUIRED: The reviewer Task dispatch MUST contain a literal `ACCEPTANCE:` line. This is a pre-plan spec review (no fr_refs yet), so resolve per ACCEPTANCE FIELD RESOLUTION in your system prompt using a one-line task-derived DONE restatement, e.g. "DONE = reviewer flags HOW-encoded requirements, untestable requirements, missing edge cases, and silent assumptions in the draft spec." A missing line is BLOCKED by ACCEPTANCE_FIELD_REQUIRED.
|
|
61
61
|
- Apply reviewer feedback. If reviewer rejects, iterate once and re-review. After two rounds, surface remaining disagreements to the user.
|
|
62
62
|
- Before writing `.swarm/spec.md`, apply the FR-002 non-shadowing check: if a non-native spec already exists, do not shadow it (see MODE: SPECIFY step 1b).
|
|
63
|
-
-
|
|
63
|
+
- Resolve the effective spec first via `/swarm sdd status` (issue #2131 finding 9): write `.swarm/spec.md` ONLY when no non-native effective spec (openspec / speckit projection) is active — those sources are read-only inputs (see the status output's `allowed mutations` line); refine them in their own tool instead of shadowing them.
|
|
64
64
|
- Exit when reviewer signs off (or user explicitly accepts remaining disagreements).
|
|
65
65
|
|
|
66
66
|
**Phase 6: DEFER QA AND EXECUTION PROFILE SELECTION.**
|
|
@@ -21,7 +21,17 @@ check set is complete and includes all known failed checks in `failedChecks`.
|
|
|
21
21
|
- For each: `gh run view <run-id> --log-failed`
|
|
22
22
|
- Build a complete failure ledger
|
|
23
23
|
4. **Fix ALL failures in one changeset:** Cluster by root cause, fix each cluster, verify locally
|
|
24
|
-
5. **
|
|
24
|
+
5. **Publish through `commit-pr`.** This skill owns diagnosis and fix-planning
|
|
25
|
+
ONLY (issue #2131 criterion E): before any commit or push, compose the
|
|
26
|
+
`commit-pr` skill for the commit message, PR body/invariant-audit/test-plan
|
|
27
|
+
discipline, and the push protocol. The batching goal is ONE push cycle
|
|
28
|
+
(collect all → fix all → push once), not literally one commit — a single new
|
|
29
|
+
commit containing all batched fixes satisfies the goal. Guardrail facts (verified in the
|
|
30
|
+
tool-before push guardrail): bare `git push --force`
|
|
31
|
+
and `-f` are deny-pattern-blocked; `--force-with-lease` is EXEMPT because it
|
|
32
|
+
refuses to overwrite remote work gained since your last fetch — commit-pr
|
|
33
|
+
mandates it for fork/rebase flows. Even so, prefer a normal new fix commit
|
|
34
|
+
over amending an already-pushed commit.
|
|
25
35
|
6. **Only re-push if NEW failures surface** that were not in the original batch.
|
|
26
36
|
|
|
27
37
|
## Why this matters
|
|
@@ -18,7 +18,7 @@ This skill was originally written for desktop Claude Code (Windows) with `gh`
|
|
|
18
18
|
CLI. In the **remote execution / GitHub MCP** environment, use the equivalent
|
|
19
19
|
MCP tools instead:
|
|
20
20
|
|
|
21
|
-
|
|
|
21
|
+
| Capability needed | `gh` CLI | Example remote-MCP shape (resolve the real names via ToolSearch) |
|
|
22
22
|
|---|---|
|
|
23
23
|
| `gh pr checks <number>` | `mcp__github__pull_request_read` method `get_check_runs` |
|
|
24
24
|
| `gh pr view <number> --json checks` | `mcp__github__pull_request_read` method `get_check_runs` |
|
|
@@ -26,9 +26,11 @@ MCP tools instead:
|
|
|
26
26
|
| `gh pr edit --title` | `mcp__github__update_pull_request` with `title` |
|
|
27
27
|
| `gh pr view --json mergeable` | `mcp__github__pull_request_read` method `get` |
|
|
28
28
|
|
|
29
|
-
> MCP tool names are injected by the runtime harness and
|
|
30
|
-
>
|
|
31
|
-
>
|
|
29
|
+
> MCP tool names are injected by the runtime harness and are NOT stable across
|
|
30
|
+
> environments. Treat the right-hand column as an example SHAPE only: resolve
|
|
31
|
+
> the actual tools by CAPABILITY (PR read with check-run support, job-log read,
|
|
32
|
+
> PR update) via `ToolSearch` before first use in a session — never assume a
|
|
33
|
+
> specific `mcp__github__*` name exists (issue #2131 finding 9).
|
|
32
34
|
|
|
33
35
|
## Step 1 — Fetch current status
|
|
34
36
|
|
|
@@ -18,4 +18,4 @@ After explorer returns:
|
|
|
18
18
|
- Run `symbols` tool on key files identified by explorer to understand public API surfaces
|
|
19
19
|
- For multi-file module surveys: prefer `batch_symbols` over sequential single-file symbols calls
|
|
20
20
|
- Run `complexity_hotspots` if not already run during project discovery (check context.md for existing analysis). Note modules with recommendation "security_review" or "full_gates" in context.md.
|
|
21
|
-
- Check for project governance files using the `glob` tool with patterns `project-instructions.md`, `docs/project-instructions.md`, `CONTRIBUTING.md`, `INSTRUCTIONS.md`, `AGENTS.md`, and `CLAUDE.md` (process all matches found). For each file found: read it and extract all MUST (mandatory constraints) and SHOULD (recommended practices) rules. Write the extracted rules
|
|
21
|
+
- Check for project governance files using the `glob` tool with patterns `project-instructions.md`, `docs/project-instructions.md`, `CONTRIBUTING.md`, `INSTRUCTIONS.md`, `AGENTS.md`, and `CLAUDE.md` (process all matches found). For each file found: read it and extract all MUST (mandatory constraints) and SHOULD (recommended practices) rules. Write the extracted rules to `.swarm/context.md` under a `## Project Governance` section — append if the section exists, create it if not — PRESERVING PROVENANCE for every rule (issue #2131 finding 9): each entry records (a) its source file, (b) the subtree scope the file declares or implies (repo-wide when undeclared), (c) precedence — `AGENTS.md`/`project-instructions.md` outrank `CONTRIBUTING.md`/`INSTRUCTIONS.md`/`CLAUDE.md` when rules conflict, (d) strength (MUST vs SHOULD), and (e) a conflict flag naming the other file whose rule it contradicts, if any. Never flatten conflicting rules into one; surface the conflict. If no MUST or SHOULD rules are found in the file, skip writing. If no governance file is found: skip silently. Existing DISCOVER steps are unchanged.
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: durable-session-state
|
|
3
|
+
audience: swarm-plugin
|
|
4
|
+
description: >
|
|
5
|
+
Persist plans, scope decisions, evidence, and reviewer/critic verdicts to
|
|
6
|
+
durable files during long or multi-phase tasks so work survives context
|
|
7
|
+
compaction, session resumes, and handoffs. Use for swarm-mode tasks, before
|
|
8
|
+
context grows large, when recording approval gates, and when resuming after
|
|
9
|
+
compaction or a session restart.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Durable Session State
|
|
13
|
+
|
|
14
|
+
Long swarm-mode sessions outlive their context window. Compaction summarizes
|
|
15
|
+
history, and summaries lose exactly the things the swarm gates depend on:
|
|
16
|
+
which diff a reviewer approved, what evidence was recorded, which decisions
|
|
17
|
+
are settled. Without durable artifacts, a resumed session re-litigates settled
|
|
18
|
+
decisions or — worse — treats a stale approval as current. Persist state to
|
|
19
|
+
files as you go; treat the conversation as cache, not storage.
|
|
20
|
+
|
|
21
|
+
## Where artifacts live
|
|
22
|
+
|
|
23
|
+
- Generic swarm tasks: `.claude/session/tasks/<task-slug>/` in the project.
|
|
24
|
+
- Issue-tracer work: `.claude/issue-traces/<issue>/` (that skill's own schema
|
|
25
|
+
— `08b-implementation-review.md`, `09-final-critic.md` — wins for its work).
|
|
26
|
+
- Never write task artifacts to the repo root, and never under `.swarm/` —
|
|
27
|
+
that directory is the OpenCode plugin's runtime state, not Claude Code's.
|
|
28
|
+
- These artifacts are working state, not deliverables: do not commit them
|
|
29
|
+
unless the user asks. Before committing, check `git status` and exclude
|
|
30
|
+
them explicitly.
|
|
31
|
+
|
|
32
|
+
## What to persist
|
|
33
|
+
|
|
34
|
+
Keep it to four small files per task; update in place:
|
|
35
|
+
|
|
36
|
+
1. `plan.md` — task scope, success criteria, files in scope, what must not
|
|
37
|
+
break. Update when scope changes; never fork a second plan file.
|
|
38
|
+
2. `decisions.md` — one line per settled decision with a one-line rationale
|
|
39
|
+
("chose X over Y because Z"). Settled means: do not reopen without new
|
|
40
|
+
evidence or a user request.
|
|
41
|
+
3. `evidence.md` — validation commands run and their outcomes (pass/fail plus
|
|
42
|
+
the load-bearing output lines, not full logs).
|
|
43
|
+
4. `gates.md` — the approval ledger. One entry per reviewer/critic verdict:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
## <gate> — <APPROVE|NEEDS_REVISION|BLOCKED>
|
|
47
|
+
when: <ISO timestamp or turn marker>
|
|
48
|
+
head: <git rev-parse HEAD>
|
|
49
|
+
diff: <git diff --stat summary>
|
|
50
|
+
items: <blocking items, or none>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## When to write
|
|
54
|
+
|
|
55
|
+
- At phase boundaries (scope settled, plan built, implementation done, each
|
|
56
|
+
gate verdict received).
|
|
57
|
+
- Before ending a turn while background subagents are running.
|
|
58
|
+
- Whenever you notice the conversation is long — write ahead of compaction,
|
|
59
|
+
not after it.
|
|
60
|
+
|
|
61
|
+
## Resume protocol
|
|
62
|
+
|
|
63
|
+
On resuming (after compaction, a restart, or a handoff), before doing new
|
|
64
|
+
work:
|
|
65
|
+
|
|
66
|
+
1. Re-read the task's artifacts. They are authoritative over your memory of
|
|
67
|
+
the conversation.
|
|
68
|
+
2. Do not re-litigate `decisions.md` entries or redo work `evidence.md`
|
|
69
|
+
already proves, absent new evidence or a user request.
|
|
70
|
+
3. Check gate staleness: if `git rev-parse HEAD` or the working-tree diff no
|
|
71
|
+
longer matches the latest APPROVE entry in `gates.md`, that approval is
|
|
72
|
+
invalid — re-run the affected reviewer/critic gate on the current diff.
|
|
73
|
+
4. If artifacts and the summarized conversation disagree, trust the artifacts
|
|
74
|
+
and say so.
|
|
75
|
+
|
|
76
|
+
## Relationship to swarm gates
|
|
77
|
+
|
|
78
|
+
The swarm-mode contract invalidates any approval issued before the latest
|
|
79
|
+
edit. The `gates.md` ledger is what makes that rule *checkable* instead of
|
|
80
|
+
vibes: record the HEAD and diff summary at approval time, compare on resume
|
|
81
|
+
and before final synthesis. If you cannot demonstrate approval-after-last-edit
|
|
82
|
+
from the ledger, the gate is not satisfied.
|
|
@@ -201,7 +201,7 @@ When a sandbox executor (`src/sandbox/{linux,macos,win32}/*.ts`) interpolates en
|
|
|
201
201
|
|
|
202
202
|
- **Keys must match POSIX env-var name syntax.** Every env key must be validated against the regex `/^[A-Za-z_][A-Za-z0-9_]*$/` (a leading letter or underscore, then letters/digits/underscores) before being interpolated. Define or reuse a single `isValidEnvKey(key: string): boolean` helper colocated with the `SandboxExecutor` interface in `src/sandbox/executor.ts` (around line 24+); do not duplicate the regex inline at every call site. Keys that fail validation must be silently dropped (not raised) so that one bad caller cannot wedge the sandbox path — but the drop must be observable in the advisory/observability layer (`pendingAdvisoryMessages` or structured log), never silent.
|
|
203
203
|
- **Values must be shell-quoted or treated as opaque single tokens.** On POSIX, prepend a leading single quote, escape any embedded single quotes by replacing `'` with `'\''`, and append a trailing single quote. On Windows PowerShell, **prefer single-quoted literal contexts (e.g. `'$env:NAME'`) and run values through a `psStringEscape`-style helper that escapes backtick, `$`, `"`, and `` ` ``** (the special characters in double-quoted PowerShell strings). Single-quoted PowerShell strings are literal — only `'` needs escaping, doubling it to `''`. If a context requires double-quoted PS values, escape embedded `"` as `` ` ``, backtick as `` `` ``, and `$` as `` ` `` (backtick is the PS escape character in double-quoted strings; `$` must be escaped to prevent variable expansion). On bwrap, always pass values as separate argv tokens after the `--setenv` flag (`--setenv KEY VALUE`, two tokens), never as a single concatenated `KEY=VALUE` token that an intermediate shell would interpret.
|
|
204
|
-
- **Use the array-form argv for every sandbox subprocess.** Never `shell:`-interpolate. The same invariant-3 rules (`array-form spawn`, `stdin: 'ignore'`, `cwd`, `timeout`, `proc.kill()` in `finally`) apply to sandbox spawns as to any other subprocess
|
|
204
|
+
- **Use the array-form argv for every sandbox subprocess.** Never `shell:`-interpolate. The same invariant-3 rules (`array-form spawn`, `stdin: 'ignore'`, `cwd`, `timeout`, `proc.kill()` in `finally`) apply to sandbox spawns as to any other subprocess; opencode-swarm repository contributors can also consult the repo's subprocess-safety developer skill.
|
|
205
205
|
|
|
206
206
|
## Sandbox fallback parity (Windows and Linux)
|
|
207
207
|
|
|
@@ -84,17 +84,23 @@ its receipt gates ARE the mechanical implementation for the parts it owns):
|
|
|
84
84
|
- **Plan-critic gate before EXECUTE** — the reducer will not advance to EXECUTE until the
|
|
85
85
|
plan-critic approval is observed.
|
|
86
86
|
- **Authoritative plan state** — read through the ledger-aware loader, never the projection.
|
|
87
|
+
- **Independent implementation review before commit-pr handoff** — fresh-context reviewer
|
|
88
|
+
AND critic passes must both approve the diff; record them with
|
|
89
|
+
`record_implementation_review` (else the engine emits a one-shot review directive). The
|
|
90
|
+
receipt is an agent self-attestation of the fresh-context discipline; under
|
|
91
|
+
PR-review/feedback modes the mechanically authenticated reviewer gates remain the
|
|
92
|
+
PR-workflow machinery.
|
|
93
|
+
- **Recurrence sweep before commit-pr handoff** — the defect class must be characterized,
|
|
94
|
+
searched with explicit predicates, every hit dispositioned, and a guardrail installed
|
|
95
|
+
with proof it catches the original defect (or the "no defect class" fast path recorded);
|
|
96
|
+
record it with `record_recurrence_sweep` (else the engine emits a one-shot sweep directive).
|
|
87
97
|
- **Honest completion** — `publication_handoff` is NOT "resolved"; terminal `published` needs
|
|
88
98
|
an issue-bound publication receipt.
|
|
89
99
|
- **Durable delivery** — a transition persists only after its directive is delivered.
|
|
90
100
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
review** (separate reviewer/critic contexts on the diff — when run under PR-review/feedback
|
|
95
|
-
modes those are enforced by the PR-workflow gates, not by this trace engine) and the
|
|
96
|
-
**recurrence sweep** (checking for related prior fixes of the same root cause). Surface
|
|
97
|
-
both honestly in the trace's evidence; do not claim the Contract is fully composed here.
|
|
101
|
+
With these receipts the Full-Resolution Contract is mechanically composed into this trace
|
|
102
|
+
path end to end; the receipts are issue-bound and survive until the next `/swarm issue` or
|
|
103
|
+
`/swarm reset`.
|
|
98
104
|
|
|
99
105
|
RULES:
|
|
100
106
|
- One question per message in INTAKE dialogue (max 6 questions)
|
|
@@ -74,7 +74,7 @@ Use these sources in this order.
|
|
|
74
74
|
Before meaningful work, discover the repository's own contract in this order. Do not assume one project's conventions apply to another.
|
|
75
75
|
|
|
76
76
|
1. Read the repo-root agent instruction files (`AGENTS.md` and any runtime-specific root instruction file your agent loads).
|
|
77
|
-
2. Read the repo's contributing/commit/test skills or docs if present (e.g. a
|
|
77
|
+
2. Read the repo's contributing/commit/test skills or docs if present (e.g. a contributing guide, a `writing-tests` skill, a `commit-pr` skill).
|
|
78
78
|
3. Inspect manifests (package/build metadata), test configs, and CI configs to learn the verification commands — from files, not memory.
|
|
79
79
|
4. Only if an invariants/architecture-contract doc exists, perform the invariant audit against it and record touched-invariant evidence in the PR body. If none exists, state "no invariant doc found" in the PR body — never fabricate an audit.
|
|
80
80
|
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: orchestrating-subagents
|
|
3
|
+
audience: swarm-plugin
|
|
4
|
+
description: >
|
|
5
|
+
Tiering and economics for delegating to subagents: which agent type, model,
|
|
6
|
+
and effort to use per role (explorer, implementer, reviewer, critic), how many
|
|
7
|
+
agents to launch in parallel, how to write scoped subagent prompts with
|
|
8
|
+
bounded structured returns, and how to keep the main context clean. Use when
|
|
9
|
+
launching subagents, parallel explorers, independent reviewers, or critic
|
|
10
|
+
passes — especially for swarm-mode, qa-sweep, or issue-tracer work.
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Orchestrating Subagents
|
|
14
|
+
|
|
15
|
+
Swarm-mode work in this repo delegates heavily (explorer → reviewer → critic).
|
|
16
|
+
This skill defines HOW to delegate so validation gates stay strong while
|
|
17
|
+
breadth stays fast and cheap. It complements — never replaces — the gates in
|
|
18
|
+
`.claude/session/swarm-mode.md`, qa-sweep, and swarm-implement.
|
|
19
|
+
|
|
20
|
+
## Role → tier mapping
|
|
21
|
+
|
|
22
|
+
| Role | Agent type | Model / effort | Rationale |
|
|
23
|
+
|---|---|---|---|
|
|
24
|
+
| Explorer (mapping, candidate findings) | `Explore` when read-only suffices | Cheaper/faster tier acceptable; low–medium effort | Recall-bound, not reasoning-bound; the reviewer gate catches misses |
|
|
25
|
+
| Implementer (scoped edits) | general-purpose | Session model; medium–high effort | Edits need project conventions (CLAUDE.md context) |
|
|
26
|
+
| Reviewer (independent validation) | general-purpose, **fresh context** | Session (strongest) model; high effort | Precision-bound; false approvals are the expensive failure |
|
|
27
|
+
| Critic (final challenge) | general-purpose, **fresh context** | Session (strongest) model; high effort | Same — this is the last line of defense |
|
|
28
|
+
|
|
29
|
+
Hard rule: economize on explorers, never on reviewers or critics. If the
|
|
30
|
+
harness exposes model or effort overrides for subagents, tier explorers down;
|
|
31
|
+
do not tier the reviewer or critic below the session model or below high
|
|
32
|
+
effort. If no override is available, tier by agent type (`Explore` is
|
|
33
|
+
lightweight: read-only tools, skips CLAUDE.md) and by prompt scope.
|
|
34
|
+
|
|
35
|
+
## Fan-out discipline
|
|
36
|
+
|
|
37
|
+
- Launch parallel agents only for **disjoint scopes**. Before launching, write
|
|
38
|
+
one line per agent stating its scope; if two overlap, merge them.
|
|
39
|
+
- 2–4 explorers per wave is a heuristic only when the active workflow does
|
|
40
|
+
not define its own fan-out contract. A workflow-specific contract overrides
|
|
41
|
+
this heuristic: PR review, for example, requires all six base dimensions and
|
|
42
|
+
all eleven risk families to be covered on every PR — its capability profiles
|
|
43
|
+
and depth tiers (see swarm-pr-review) govern how many lanes carry that
|
|
44
|
+
coverage, and under the plugin's mechanical controller the tier is computed
|
|
45
|
+
from the bound diff and the matching lane floors are enforced outright. No
|
|
46
|
+
time, cost, repository-size, or simplicity
|
|
47
|
+
rationale may reduce the coverage a workflow mandates.
|
|
48
|
+
Outside fixed-fan-out workflows, more agents than distinct scopes adds token
|
|
49
|
+
cost and synthesis burden without adding recall.
|
|
50
|
+
- Launch independent agents **in a single message** so they run concurrently.
|
|
51
|
+
- Do not re-run a search an agent is already doing; wait for its report.
|
|
52
|
+
- Scale waves, not width: if the first wave surfaces new territory, launch a
|
|
53
|
+
second targeted wave rather than one giant speculative first wave.
|
|
54
|
+
|
|
55
|
+
## Subagent prompt contract
|
|
56
|
+
|
|
57
|
+
Every delegation prompt must state:
|
|
58
|
+
|
|
59
|
+
1. **Scope** — exact directories, files, or question. Name what is out of scope.
|
|
60
|
+
2. **Deliverable** — the structure of the report (per-item findings, then a
|
|
61
|
+
ranked summary). The agent's final message is the only thing you receive.
|
|
62
|
+
3. **Evidence bar** — exact `file:line` references; no invented paths; verify a
|
|
63
|
+
path exists before citing it.
|
|
64
|
+
4. **Status labels** — explorers return CANDIDATE findings only; reviewers
|
|
65
|
+
classify CONFIRMED / DISPROVED / UNVERIFIED / PRE_EXISTING; reviewer and
|
|
66
|
+
critic verdicts are APPROVE / NEEDS_REVISION / BLOCKED.
|
|
67
|
+
5. **Output bound** — compact structured returns; no full-file dumps.
|
|
68
|
+
|
|
69
|
+
For reviewers and critics additionally:
|
|
70
|
+
- Give the **claims and locations**, not the author's justification — the
|
|
71
|
+
reviewer must re-derive, not confirm, the reasoning.
|
|
72
|
+
- State the adversarial default explicitly: "default to DISPROVED/UNVERIFIED
|
|
73
|
+
unless the code evidence supports the finding."
|
|
74
|
+
- A reviewer or critic must be a **fresh agent**, never a continued
|
|
75
|
+
conversation with the agent whose work it judges.
|
|
76
|
+
|
|
77
|
+
## Independence and staleness
|
|
78
|
+
|
|
79
|
+
- Reviewer and critic review the **latest diff**, not a description of it. Give
|
|
80
|
+
them the branch state and the validation evidence, and require them to run
|
|
81
|
+
`git diff`/`git log` themselves.
|
|
82
|
+
- Any edit after an approval invalidates it. Record what was approved (e.g.
|
|
83
|
+
`git rev-parse HEAD`, `git diff --stat`) so staleness is checkable — see the
|
|
84
|
+
durable-session-state skill.
|
|
85
|
+
|
|
86
|
+
## Nesting limitation
|
|
87
|
+
|
|
88
|
+
Whether a subagent can spawn further subagents depends on the harness and
|
|
89
|
+
agent type — check whether a subagent tool (`Agent` or `Task`) is actually
|
|
90
|
+
available in your context before assuming either way. If a skill mandating
|
|
91
|
+
fresh-subagent review (qa-sweep, swarm-implement) executes in a context
|
|
92
|
+
**without** a subagent tool:
|
|
93
|
+
- perform the same review checklist yourself as a clearly labeled
|
|
94
|
+
**fallback self-review**, and
|
|
95
|
+
- disclose in your report that independent review was unavailable in this
|
|
96
|
+
context, so the orchestrator can re-run the gate with a real fresh agent.
|
|
97
|
+
Never silently present self-review as independent review.
|
|
98
|
+
|
|
99
|
+
## Main-context hygiene
|
|
100
|
+
|
|
101
|
+
- Push reading-heavy work into subagents; keep the main thread for scoping,
|
|
102
|
+
synthesis, and decisions.
|
|
103
|
+
- Do not paste subagent transcripts or large tool outputs back into the main
|
|
104
|
+
thread; carry forward only validated findings and verdicts.
|
|
105
|
+
- When a subagent report arrives, extract the load-bearing facts into your
|
|
106
|
+
durable task artifacts (see durable-session-state) before moving on.
|
|
107
|
+
|
|
108
|
+
## When not to delegate
|
|
109
|
+
|
|
110
|
+
Answer directly, without a subagent, when the task is a single-fact lookup you
|
|
111
|
+
can resolve with one or two targeted Grep/Read calls, or when you already know
|
|
112
|
+
the file and symbol. Delegation overhead should buy breadth, isolation, or
|
|
113
|
+
independence — if it buys none of those, skip it.
|
|
@@ -122,7 +122,7 @@ The parallel-work-check skill is referenced by other skills that start work on a
|
|
|
122
122
|
| Skill | Usage |
|
|
123
123
|
|-------|-------|
|
|
124
124
|
| `file:.swarm/bundled-skills/swarm-pr-feedback/SKILL.md` | Checks before starting PR feedback fixes — ensures no parallel work has already addressed the same findings |
|
|
125
|
-
| Legacy
|
|
125
|
+
| Legacy pr-review-fix alias | Compatibility entry that delegates to the bundled `swarm-pr-feedback` protocol |
|
|
126
126
|
| `file:.swarm/bundled-skills/swarm-implement/SKILL.md` | Checks before implementation Phase 1 — ensures the branch is up-to-date before planning |
|
|
127
127
|
| Any skill that starts work on an existing branch | Run the parallel-work-check protocol before beginning fixes or implementation |
|
|
128
128
|
|
|
@@ -55,14 +55,16 @@ ci-fix-monitor; do not re-derive it here.
|
|
|
55
55
|
The canonical uses the `gh` CLI. In remote/MCP environments, use the equivalent
|
|
56
56
|
MCP tools and verify availability first:
|
|
57
57
|
|
|
58
|
-
| `gh` CLI |
|
|
58
|
+
| Capability needed | `gh` CLI | Example remote-MCP shape (resolve the real names via ToolSearch) |
|
|
59
59
|
|---|---|
|
|
60
60
|
| `gh pr checks <N>` | `mcp__github__pull_request_read` method `get_check_runs` |
|
|
61
61
|
| `gh pr view <N> --json mergeable,mergeStateStatus,reviewDecision` | `mcp__github__pull_request_read` method `get` |
|
|
62
62
|
| `gh run view <run> --log` | `mcp__github__get_job_logs` with `job_id`, `return_content: true` |
|
|
63
63
|
|
|
64
|
-
> MCP tool names are injected by the harness and
|
|
65
|
-
> environments.
|
|
64
|
+
> MCP tool names are injected by the harness and are NOT stable across
|
|
65
|
+
> environments. The right-hand column is an example SHAPE only: resolve tools
|
|
66
|
+
> by CAPABILITY (PR read, job-log read) via `ToolSearch` before first use —
|
|
67
|
+
> never assume a specific `mcp__github__*` name exists (issue #2131 finding 9).
|
|
66
68
|
|
|
67
69
|
## Step 1 — Pre-flight gates (run ONCE, before entering the loop)
|
|
68
70
|
|
|
@@ -619,10 +619,32 @@ settle on the Stage-A digest. After they settle, only one standalone `git commit
|
|
|
619
619
|
command may create the reviewed commit; push and remote publication remain
|
|
620
620
|
blocked until that exact commit is armed. The first completion requires a clean
|
|
621
621
|
index/worktree and a non-merge direct child commit whose sole parent is the
|
|
622
|
-
immutable intake head, so
|
|
622
|
+
immutable intake head, so multiple commits, merge commits,
|
|
623
623
|
amend/non-descendant histories,
|
|
624
624
|
`--allow-empty`, and partially committed reviewed content fail closed. There is no speed, efficiency, token, or time exception.
|
|
625
625
|
|
|
626
|
+
**Verified no-change terminal (issue #2131 C1).** When the ENTIRE immutable
|
|
627
|
+
inventory is verified as a no-change outcome — every `FB-###` item classified
|
|
628
|
+
`DISPROVED`, `PRE_EXISTING`, `NEEDS_MORE_EVIDENCE`, or `NEEDS_USER_DECISION`
|
|
629
|
+
in the settled verification lanes — a correct workflow needs NO content commit.
|
|
630
|
+
After every ordered gate settles, call `complete_pr_workflow` with the intake
|
|
631
|
+
`pr_head_sha` while HEAD still equals that intake head and the tree is clean:
|
|
632
|
+
it returns `verified-no-change` and clears the gate terminally (nothing to
|
|
633
|
+
publish; an empty or `--allow-empty` commit is still forbidden). Any item
|
|
634
|
+
classified `CONFIRMED`/`PARTIAL` requires the ordinary exactly-one-reviewed-
|
|
635
|
+
commit path above.
|
|
636
|
+
|
|
637
|
+
**Base-sync/rebind (issue #2131 C2).** When base drift or merge conflicts force
|
|
638
|
+
a merge/rebase, the repaired history is no longer a direct child of the intake
|
|
639
|
+
head and the ordinary publication path can never be satisfied. Do NOT abort
|
|
640
|
+
ad-hoc: finish the repair, fetch the new authoritative PR head, check it out,
|
|
641
|
+
then call `rebind_pr_feedback_head` with the new full PR head SHA. It moves the
|
|
642
|
+
immutable intake head to the new head, preserves the immutable inventory, and
|
|
643
|
+
invalidates every ancestry-bound receipt (Stage A, verification, ordered
|
|
644
|
+
gates) — re-run the entire mechanical ladder on the new ancestry. It refuses a
|
|
645
|
+
no-op rebind, refuses while publication is armed, and refuses while lanes are
|
|
646
|
+
in flight.
|
|
647
|
+
|
|
626
648
|
**Without the controller (Profiles B/C).** The same gates run in the same
|
|
627
649
|
order with the same one-row-per-feedback-ID verdict contracts; what changes is
|
|
628
650
|
the executor. Stage A: run the repository's discovered build, typecheck, and
|
|
@@ -691,9 +713,13 @@ because a name such as `test` or `build` can hide a no-op. A
|
|
|
691
713
|
reproduction must also return non-empty machine-observable runner output.
|
|
692
714
|
The reproduction check also supplies one `feedback_targets` row per immutable
|
|
693
715
|
feedback ID, in inventory order: exact `feedback_item_id`, one executed `target`,
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
716
|
+
concrete `expected_behavior`, and a typed `proof_kind` (`defect`, `metadata`,
|
|
717
|
+
`source-proof`, `conflict`, `ci`, or `user-decision`). Missing, duplicate,
|
|
718
|
+
invented, target-less, or kind-less mappings block Stage B; the controller
|
|
719
|
+
persists that exact per-item mapping. This is a STRUCTURAL mapping with a typed
|
|
720
|
+
proof kind — it proves each item maps to a target the executed command actually
|
|
721
|
+
selects, not that the target is causally decisive for that item; the Stage B
|
|
722
|
+
reviewer lane owns that judgement (issue #2131 C4).
|
|
697
723
|
No-op/help/list/dry-run,
|
|
698
724
|
fix/update, package publication/deployment, Git mutation, remote client,
|
|
699
725
|
shell/eval/wrapper, and credentialed publication surfaces fail closed. The
|
|
@@ -143,7 +143,7 @@ When test files pass individually but fail when run together, follow this protoc
|
|
|
143
143
|
5. **Specific symptom — closure capture failure**: `vi.mock()` captures closures at **hoist time** (before `beforeEach` runs). Reassigning `mockFn.mockImplementation(newFn)` in the test body does **NOT** update the hoisted closure — the mock still calls the original function.
|
|
144
144
|
- Symptom: `expect(mockFn).toHaveBeenCalledTimes(N)` fails with an unexpected count
|
|
145
145
|
- Symptom: `expect(mockFn).not.toHaveBeenCalled()` fails because the real function was called
|
|
146
|
-
6. **Fix path**: Migrate the affected test file to `_internals` DI seam pattern
|
|
146
|
+
6. **Fix path**: Migrate the affected test file to the `_internals` DI seam pattern documented above (opencode-swarm repository contributors also have a dedicated mock-to-internals-migration skill that walks the recipe in depth). This eliminates both the `vi.mock()` call and the closure capture surface area. **Exception — reference-captured functions**: if the source code passes a function as a direct argument or captures it in a closure at module scope (e.g., `transactFile(path, readKnowledge, ...)`), the reference bypasses `_internals` entirely — mutating `_internals.readKnowledge` changes only the object property, not the module-scope binding the source already holds. Migrating to `_internals` does not help. In that case, test via observable outcomes (e.g., run concurrent callers and assert on final persisted state).
|
|
147
147
|
|
|
148
148
|
## Two-Tier Mock Convention
|
|
149
149
|
|
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
* Reviewer DIRECTIVE_COMPLIANCE support (Swarm Learning System, Change 2 /
|
|
3
3
|
* Task 2.1).
|
|
4
4
|
*
|
|
5
|
-
* The reviewer must emit a per-
|
|
5
|
+
* The reviewer must emit a per-membership verdict for every knowledge directive shown
|
|
6
6
|
* during the phase. This module owns:
|
|
7
7
|
* - DIRECTIVE_COMPLIANCE_OUTPUT_SPEC: the static format documentation embedded
|
|
8
8
|
* in the reviewer system prompt (always present).
|
|
9
|
-
* - buildDirectiveComplianceBlock: the dynamic, per-phase list of
|
|
9
|
+
* - buildDirectiveComplianceBlock: the dynamic, per-phase list of exact
|
|
10
|
+
* trace + entry memberships
|
|
10
11
|
* to verify (with priorities + any verification_predicate), injected into the
|
|
11
12
|
* reviewer's delegation prompt at runtime.
|
|
12
13
|
*
|
|
@@ -18,7 +19,15 @@ import type { DirectivePriority } from '../hooks/knowledge-types.js';
|
|
|
18
19
|
export declare const DIRECTIVES_TO_VERIFY_TAG = "<directives_to_verify>";
|
|
19
20
|
/** A directive the reviewer must produce a verdict for. */
|
|
20
21
|
export interface DirectiveToVerify {
|
|
21
|
-
|
|
22
|
+
/** Exact retrieval membership this verdict must close. */
|
|
23
|
+
trace_id: string;
|
|
24
|
+
entry_id: string;
|
|
25
|
+
/** Session recorded with the originating retrieval membership. */
|
|
26
|
+
session_id: string;
|
|
27
|
+
cohort_id?: string;
|
|
28
|
+
source_link_id?: string;
|
|
29
|
+
prior_terminal_outcome?: 'violated';
|
|
30
|
+
prior_terminal_event_id?: string;
|
|
22
31
|
priority: DirectivePriority;
|
|
23
32
|
lesson?: string;
|
|
24
33
|
verification_predicate?: string;
|
|
@@ -27,10 +36,15 @@ export interface DirectiveToVerify {
|
|
|
27
36
|
* Static spec embedded in the reviewer system prompt. Documents the mandatory
|
|
28
37
|
* DIRECTIVE_COMPLIANCE output section and its verdict grammar.
|
|
29
38
|
*/
|
|
30
|
-
export declare const DIRECTIVE_COMPLIANCE_OUTPUT_SPEC = "DIRECTIVE_COMPLIANCE: one line per
|
|
39
|
+
export declare const DIRECTIVE_COMPLIANCE_OUTPUT_SPEC = "DIRECTIVE_COMPLIANCE: one line per retrieval membership shown during this phase. Copy the encoded trace_id and entry_id tokens exactly from the DIRECTIVES TO VERIFY block. Use exactly one of:\n VERIFIED:<trace_id>:<entry_id> evidence=<file:line | predicate_passed>\n VIOLATED:<trace_id>:<entry_id> evidence=<file:line | failing_predicate>\n N/A:<trace_id>:<entry_id> reason=<why it does not apply to this change>\nEvery listed trace_id + entry_id pair MUST appear exactly once. The same entry_id may appear under more than one trace_id and requires one verdict per pair. If a directive carries a verification_predicate, you MUST run it and report predicate_passed / failing_predicate as the evidence. Omitting a listed CRITICAL pair is itself a VIOLATED verdict.";
|
|
40
|
+
/** Encode arbitrary correlation identifiers into one delimiter-safe token. */
|
|
41
|
+
export declare function encodeDirectiveCorrelationId(value: string): string;
|
|
42
|
+
/** Decode one correlation token, rejecting malformed or unbounded values. */
|
|
43
|
+
export declare function decodeDirectiveCorrelationId(token: string): string | null;
|
|
31
44
|
/**
|
|
32
45
|
* Render the per-phase "DIRECTIVES TO VERIFY" block injected into the reviewer's
|
|
33
|
-
* delegation prompt. Deterministic (sorted by priority then
|
|
46
|
+
* delegation prompt. Deterministic (sorted by priority then entry + trace).
|
|
47
|
+
* Returns null
|
|
34
48
|
* when there is nothing to verify (no block emitted).
|
|
35
49
|
*/
|
|
36
50
|
export declare function buildDirectiveComplianceBlock(directives: DirectiveToVerify[]): string | null;
|
|
@@ -12,11 +12,11 @@ import {
|
|
|
12
12
|
shouldRunOnStartup,
|
|
13
13
|
writeBackupArtifact,
|
|
14
14
|
writeDoctorArtifact
|
|
15
|
-
} from "./index-
|
|
15
|
+
} from "./index-arza4m4j.js";
|
|
16
16
|
import"./index-ee3x66a5.js";
|
|
17
17
|
import"./index-zgwm4ryv.js";
|
|
18
|
-
import"./index-
|
|
19
|
-
import"./index-
|
|
18
|
+
import"./index-tj04dj06.js";
|
|
19
|
+
import"./index-hxvkfx6t.js";
|
|
20
20
|
import"./index-zjygnfay.js";
|
|
21
21
|
import"./index-bk5tah7q.js";
|
|
22
22
|
import"./index-bpmtbmy9.js";
|
|
@@ -14,12 +14,12 @@ import {
|
|
|
14
14
|
resolveWorktreeBaseDir,
|
|
15
15
|
shortenWorktreePath,
|
|
16
16
|
writeLaneProfileToDiskReal
|
|
17
|
-
} from "./index-
|
|
17
|
+
} from "./index-v3x7j9ey.js";
|
|
18
18
|
import"./index-ee3x66a5.js";
|
|
19
19
|
import"./index-4nt52yr9.js";
|
|
20
20
|
import"./index-4rhhvd1a.js";
|
|
21
21
|
import"./index-zgwm4ryv.js";
|
|
22
|
-
import"./index-
|
|
22
|
+
import"./index-hxvkfx6t.js";
|
|
23
23
|
import"./index-zjygnfay.js";
|
|
24
24
|
import"./index-a76rekgs.js";
|
|
25
25
|
export {
|
|
@@ -4,18 +4,16 @@ import {
|
|
|
4
4
|
authorizeCuration,
|
|
5
5
|
buildConfigFingerprintInput,
|
|
6
6
|
readCohortConfigFingerprint
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-dtam929z.js";
|
|
8
8
|
import"./index-rtry5xyf.js";
|
|
9
|
-
import"./index-
|
|
10
|
-
import"./index-
|
|
11
|
-
import"./index-rs1f1bh0.js";
|
|
12
|
-
import"./index-h2waehqq.js";
|
|
9
|
+
import"./index-mrpfd1jx.js";
|
|
10
|
+
import"./index-4hp8nvwb.js";
|
|
13
11
|
import"./index-ed5ykebp.js";
|
|
14
|
-
import"./index-
|
|
12
|
+
import"./index-35qep0v7.js";
|
|
15
13
|
import"./index-7g4c7s5r.js";
|
|
16
14
|
import"./index-4nt52yr9.js";
|
|
17
15
|
import"./index-zgwm4ryv.js";
|
|
18
|
-
import"./index-
|
|
16
|
+
import"./index-bfhwtdsw.js";
|
|
19
17
|
import"./index-bpmtbmy9.js";
|
|
20
18
|
import"./index-a76rekgs.js";
|
|
21
19
|
export {
|
|
@@ -14,59 +14,59 @@ import {
|
|
|
14
14
|
runCuratorInit,
|
|
15
15
|
runCuratorPhase,
|
|
16
16
|
writeCuratorSummary
|
|
17
|
-
} from "./index-
|
|
17
|
+
} from "./index-a1fjhx4w.js";
|
|
18
18
|
import"./index-41hkt36g.js";
|
|
19
|
-
import"./index-
|
|
20
|
-
import"./index-
|
|
21
|
-
import"./index-
|
|
22
|
-
import"./index-
|
|
23
|
-
import"./index-
|
|
19
|
+
import"./index-c5kr20nz.js";
|
|
20
|
+
import"./index-ysa38bnr.js";
|
|
21
|
+
import"./index-arza4m4j.js";
|
|
22
|
+
import"./index-hz0refz4.js";
|
|
23
|
+
import"./index-w4etfamq.js";
|
|
24
24
|
import"./index-y8552snf.js";
|
|
25
25
|
import"./index-4905hd2m.js";
|
|
26
26
|
import"./index-134d35c1.js";
|
|
27
|
-
import"./index-
|
|
28
|
-
import"./index-
|
|
29
|
-
import"./index-
|
|
27
|
+
import"./index-hfjvepk2.js";
|
|
28
|
+
import"./index-v1an91bq.js";
|
|
29
|
+
import"./index-mpytsq6k.js";
|
|
30
30
|
import"./index-v2xrer41.js";
|
|
31
31
|
import"./index-c8s9a3zh.js";
|
|
32
32
|
import"./index-9ss2m4rs.js";
|
|
33
|
-
import"./index-
|
|
34
|
-
import"./index-
|
|
33
|
+
import"./index-bn17ycxn.js";
|
|
34
|
+
import"./index-ryq97w1x.js";
|
|
35
35
|
import"./index-556ja8an.js";
|
|
36
|
-
import"./index-
|
|
36
|
+
import"./index-wk8s1m7b.js";
|
|
37
37
|
import"./index-1kyex7z2.js";
|
|
38
38
|
import"./index-b8zgtz81.js";
|
|
39
|
-
import"./index-
|
|
40
|
-
import"./index-
|
|
41
|
-
import"./index-k46me75h.js";
|
|
42
|
-
import"./index-ee3x66a5.js";
|
|
39
|
+
import"./index-v3x7j9ey.js";
|
|
40
|
+
import"./index-rrb6cz2f.js";
|
|
43
41
|
import"./index-74hpm6sh.js";
|
|
44
|
-
import"./index-
|
|
42
|
+
import"./index-dtyeabmj.js";
|
|
45
43
|
import"./index-8fwhhayc.js";
|
|
46
44
|
import"./index-q1exe2b3.js";
|
|
47
|
-
import"./index-
|
|
48
|
-
import"./index-
|
|
45
|
+
import"./index-2rb3x0fk.js";
|
|
46
|
+
import"./index-k46me75h.js";
|
|
47
|
+
import"./index-ee3x66a5.js";
|
|
48
|
+
import"./index-7begd9aq.js";
|
|
49
|
+
import"./index-dtam929z.js";
|
|
49
50
|
import"./index-rtry5xyf.js";
|
|
50
|
-
import"./index-
|
|
51
|
-
import"./index-jfp1bgt1.js";
|
|
51
|
+
import"./index-vrmkg8fm.js";
|
|
52
52
|
import"./index-ae75rja9.js";
|
|
53
|
-
import"./index-
|
|
54
|
-
import"./index-
|
|
53
|
+
import"./index-mrpfd1jx.js";
|
|
54
|
+
import"./index-4hp8nvwb.js";
|
|
55
55
|
import"./index-ed5ykebp.js";
|
|
56
|
-
import"./index-
|
|
56
|
+
import"./index-35qep0v7.js";
|
|
57
57
|
import"./index-7g4c7s5r.js";
|
|
58
58
|
import"./index-4nt52yr9.js";
|
|
59
|
-
import"./index-
|
|
59
|
+
import"./index-pp5m7xga.js";
|
|
60
60
|
import"./index-gprxjmm7.js";
|
|
61
61
|
import"./index-n832052r.js";
|
|
62
62
|
import"./index-d181x9zr.js";
|
|
63
63
|
import"./index-4rhhvd1a.js";
|
|
64
64
|
import"./index-zgwm4ryv.js";
|
|
65
|
-
import"./index-
|
|
66
|
-
import"./index-
|
|
65
|
+
import"./index-tj04dj06.js";
|
|
66
|
+
import"./index-hxvkfx6t.js";
|
|
67
67
|
import"./index-zjygnfay.js";
|
|
68
68
|
import"./index-bk5tah7q.js";
|
|
69
|
-
import"./index-
|
|
69
|
+
import"./index-bfhwtdsw.js";
|
|
70
70
|
import"./index-bpmtbmy9.js";
|
|
71
71
|
import"./index-a76rekgs.js";
|
|
72
72
|
export {
|