opencode-swarm 7.144.2 → 7.144.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/swarm-pr-review/SKILL.md +3 -1
- package/.opencode/skills/swarm-pr-review/references/lane-output-recoverability.md +124 -0
- package/.opencode/skills/swarm-pr-review/references/prompt-templates.md +2 -0
- package/README.md +3 -1
- package/dist/background/pending-delegations.d.ts +34 -0
- package/dist/cli/{config-doctor-7dfvxwjb.js → config-doctor-rw9zrjk6.js} +3 -3
- package/dist/cli/{core-dwmwdc4y.js → core-zjx9aqaf.js} +3 -3
- package/dist/cli/{curation-policy-pkb2eeb1.js → curation-policy-0wbrh11c.js} +5 -5
- package/dist/cli/curator-drift-2jbjv03a.js +1 -1
- package/dist/cli/{curator-w213v33y.js → curator-g54a7wv0.js} +33 -33
- package/dist/cli/{curator-llm-factory-rrs1q4hg.js → curator-llm-factory-xgb4pxmm.js} +33 -33
- package/dist/cli/{evidence-summary-service-t7n2h1he.js → evidence-summary-service-fnr5y54e.js} +14 -14
- package/dist/cli/{gate-evidence-xvxn603y.js → gate-evidence-2xt1x07r.js} +7 -7
- package/dist/cli/{guardrail-explain-v1mwsnkq.js → guardrail-explain-6wcgr9tz.js} +34 -34
- package/dist/cli/{guardrail-log-dn03dpz2.js → guardrail-log-5w4b9zrw.js} +4 -4
- package/dist/cli/{hive-promoter-asjtj7ga.js → hive-promoter-x63ehffd.js} +35 -35
- package/dist/cli/{index-ckrasab9.js → index-03pv47h2.js} +9 -9
- package/dist/cli/{index-4q9vfav6.js → index-1csyxv0f.js} +1 -1
- package/dist/cli/{index-s2rcz51a.js → index-1jsmmx7y.js} +66 -34
- package/dist/cli/{index-jsfghpy2.js → index-2m7mavaz.js} +2 -2
- package/dist/cli/{index-p3tnmkvc.js → index-4w5qdbk7.js} +12 -12
- package/dist/cli/{index-dhh2j2nd.js → index-8j0va7jp.js} +2 -2
- package/dist/cli/{index-y95nwsge.js → index-9qq7c18c.js} +1 -1
- package/dist/cli/{index-qpt8ahph.js → index-az8etqpp.js} +12 -12
- package/dist/cli/{index-gdd4jt6b.js → index-bt9aa01f.js} +1 -1
- package/dist/cli/{index-333kvewd.js → index-btmsqv7p.js} +4 -4
- package/dist/cli/{index-d55crzd4.js → index-cz25e8xp.js} +7 -7
- package/dist/cli/{index-g2ajae1z.js → index-d12jd5mn.js} +2 -2
- package/dist/cli/{index-tq5s07ta.js → index-dty5qgk2.js} +1 -1
- package/dist/cli/{index-k31en0ja.js → index-f9vvg5xb.js} +3 -3
- package/dist/cli/{index-k92cagmt.js → index-fqcjragy.js} +2 -2
- package/dist/cli/{index-jb4tchvy.js → index-h98t1m88.js} +2 -2
- package/dist/cli/{index-4fda8kkw.js → index-jabkn643.js} +30 -5
- package/dist/cli/{index-erfnw81g.js → index-mazgg5s2.js} +1 -1
- package/dist/cli/{index-m6wv2qdr.js → index-nckg4gxb.js} +2 -2
- package/dist/cli/{index-tg9fn2dy.js → index-p7cm3gtj.js} +38 -36
- package/dist/cli/{index-dg2w0wr4.js → index-psvxq93b.js} +3 -3
- package/dist/cli/{index-zr370283.js → index-pw83zgny.js} +3 -3
- package/dist/cli/{index-nretd4qn.js → index-q4ed1jk7.js} +1539 -963
- package/dist/cli/{index-hqvt3mhk.js → index-q67jb94n.js} +1 -1
- package/dist/cli/{index-whezv7vc.js → index-v3y3qg48.js} +1 -1
- package/dist/cli/{index-av0f6mm0.js → index-x6tp0hfr.js} +9 -9
- package/dist/cli/{index-h3z64mhz.js → index-y8j8ehc8.js} +2 -2
- package/dist/cli/{index-ne8cfgw5.js → index-yts89pqg.js} +4 -4
- package/dist/cli/{index-w7x7qxz2.js → index-ywn7vtxp.js} +1 -1
- package/dist/cli/{index-g1c5fgaw.js → index-z6v7kwpa.js} +4 -4
- package/dist/cli/{index-7ca3a6gj.js → index-zb0xcz9t.js} +10 -10
- package/dist/cli/index.js +34 -34
- package/dist/cli/{knowledge-escalator-cg19dhe5.js → knowledge-escalator-ypg14d5r.js} +13 -13
- package/dist/cli/{knowledge-events-yzvysaqd.js → knowledge-events-nkrym4wb.js} +11 -11
- package/dist/cli/{knowledge-link-fn5j3r4q.js → knowledge-link-e4qgqmpx.js} +4 -4
- package/dist/cli/{knowledge-store-6f77xpmm.js → knowledge-store-vh3nhtg2.js} +6 -6
- package/dist/cli/{knowledge-validator-4b28zdxa.js → knowledge-validator-jrxvexv6.js} +8 -8
- package/dist/cli/{pending-delegations-thy8g30k.js → pending-delegations-pw79c8ds.js} +3 -3
- package/dist/cli/{pr-subscriptions-jyav582d.js → pr-subscriptions-fk628bhc.js} +3 -3
- package/dist/cli/{runner-pde6b5sx.js → runner-b02sz2vx.js} +5 -5
- package/dist/cli/{scan-cursor-nqbb1xt6.js → scan-cursor-fp7w5jmc.js} +7 -7
- package/dist/cli/{schema-jj2pb6zp.js → schema-rptwqbm4.js} +2 -2
- package/dist/cli/{scope-persistence-63nasq0z.js → scope-persistence-0bkaxawa.js} +7 -7
- package/dist/cli/{skill-generator-nsymtdqm.js → skill-generator-nh8b4gjv.js} +16 -16
- package/dist/cli/{telemetry-xyfb5vm8.js → telemetry-cybx6cfz.js} +1 -1
- package/dist/cli/{worktree-collision-ownership-j6d33p49.js → worktree-collision-ownership-hqd9ypsz.js} +6 -6
- package/dist/cli/{worktree-isolation-g54kxw6x.js → worktree-isolation-canf3rj8.js} +33 -33
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/recover.d.ts +17 -0
- package/dist/commands/registry.d.ts +10 -2
- package/dist/commands/reset-session.d.ts +2 -0
- package/dist/hooks/context-budget.d.ts +4 -0
- package/dist/hooks/context-usage.d.ts +48 -0
- package/dist/hooks/pr-workflow-gate.d.ts +160 -4
- package/dist/index.js +556 -550
- package/dist/observability/catalog.d.ts +8 -6
- package/dist/sast/semgrep.d.ts +3 -2
- package/dist/telemetry.d.ts +17 -1
- package/dist/tools/context-status.d.ts +9 -3
- package/dist/tools/dispatch-lanes.d.ts +27 -2
- package/dist/tools/pre-check-batch.d.ts +9 -0
- package/dist/tools/sast-scan.d.ts +3 -0
- package/dist/workflow/coder-settlement.d.ts +74 -0
- package/package.json +1 -1
|
@@ -915,6 +915,8 @@ or synthesis begins, whichever layer enforces it.
|
|
|
915
915
|
|
|
916
916
|
Inline `output` is delivered on the first poll that observes a lane settled; subsequent polls carry `output_omitted_repeat: true` with metadata and `output_ref`, and full text is retrieved via `retrieve_lane_output`.
|
|
917
917
|
|
|
918
|
+
Host transport metadata is not stronger than the durable artifact. A truncated inline preview is accepted when its full `output_ref` artifact passes every identity, digest, revision, ownership, and row-coverage check. If the host status call times out, collection treats readiness as unknown and may inspect messages under a separate bounded budget, but it settles the lane only when the latest assistant message carries terminal proof. Only base and micro discovery lanes may retain independently validated positive `[CANDIDATE]` coverage from an incomplete transcript; council, reviewer, and critic outputs remain fail-closed and require retry. Incompleteness can never establish `[CLEAN]`, including for sibling dimensions in a consolidated lane. Every accepted transport recovery is disclosed in `salvaged_workflow_lanes`, with typed per-lane reasons in `salvaged_workflow_lane_recoveries`. See `references/lane-output-recoverability.md`.
|
|
919
|
+
|
|
918
920
|
Before Phase 4 or synthesis, all base lanes must be settled. `dispatch_lanes_async` accepts a maximum of 8 lanes per call; base lanes (6) and micro-lanes (Phase 4) are dispatched in separate calls by design. Do not let one lane's conclusions bias another lane.
|
|
919
921
|
|
|
920
922
|
**COVERAGE GATE — zero tolerance for unclosed gaps.** After `collect_lane_results`, verify every lane produced validated output. Two failure modes exist:
|
|
@@ -991,7 +993,7 @@ candidate parser rather than preview-text extraction:
|
|
|
991
993
|
4. Stage reviewer-sized chunks, but do not dispatch reviewers yet. Phase 4 must
|
|
992
994
|
complete trigger accounting and settle every launched micro-lane first.
|
|
993
995
|
|
|
994
|
-
If a lane has `output_degraded: true`, `transcript_incomplete: true
|
|
996
|
+
If a lane has `output_degraded: true`, no usable `output_ref`, or `transcript_incomplete: true` without typed positive-candidate recovery, apply the COVERAGE GATE (Phase 3). An incomplete base or micro discovery lane may proceed only when it is explicitly named by a `salvaged_workflow_lane_recoveries` entry whose `kind` is `transcript-incomplete-terminal-candidate`; that recovery validates the retained positive `[CANDIDATE]` row only. Council, reviewer, and critic lanes never qualify for this incomplete-transcript recovery and must retry. Recovery never validates `[CLEAN]`, candidate absence, an unowned sibling lane, or an incomplete lane with no matching entry. Do not use blocking or direct-Task fallbacks while the controller is active, mark affected candidates UNVERIFIED to proceed, or infer candidate absence from a preview. Under Profiles B/C, which have no typed recovery validation, a truncated, incomplete, empty, or attestation-free subagent report is the same lane-output failure and takes the same COVERAGE GATE.
|
|
995
997
|
|
|
996
998
|
After candidate parsing and before reviewer dispatch, persist the post-explorer
|
|
997
999
|
candidate ledger using the Review Finding Persistence contract. This is the
|
|
@@ -25,6 +25,34 @@ do not. The per-obligation CLEAN rules: a `[CLEAN]` conflicts with `[CANDIDATE]`
|
|
|
25
25
|
rows only for the SAME lane; a valid CLEAN for a different lane in an unscoped
|
|
26
26
|
parse is skipped, not an error; duplicates for the same lane still fail.
|
|
27
27
|
|
|
28
|
+
## Host-transport recovery (recorded as salvage)
|
|
29
|
+
|
|
30
|
+
Collection preserves a strict evidence hierarchy: the complete immutable
|
|
31
|
+
`output_ref` artifact outranks its bounded inline preview. Consequently,
|
|
32
|
+
`result.truncated` is not a failure when that artifact still passes identity,
|
|
33
|
+
digest, exact-head, scope, ownership, and row-coverage validation. The affected
|
|
34
|
+
workflow lane is recorded in `salvaged_workflow_lanes` even when no parser repair
|
|
35
|
+
was necessary. That compatibility list is paired with typed per-lane metadata in
|
|
36
|
+
`salvaged_workflow_lane_recoveries`.
|
|
37
|
+
|
|
38
|
+
A host `session.status` timeout means readiness is **unknown**, not busy and not
|
|
39
|
+
complete. Status and message calls receive separate fair bounded budgets so one
|
|
40
|
+
lane cannot starve later lanes. For unknown readiness, a readable transcript is
|
|
41
|
+
accepted only when the newest assistant message proves terminal completion; a
|
|
42
|
+
mid-run snapshot remains pending. Invalid output also remains pending while
|
|
43
|
+
readiness is unknown, because the agent may still be producing its protocol row.
|
|
44
|
+
|
|
45
|
+
When the host message window is incomplete, independently validated positive
|
|
46
|
+
`[CANDIDATE]` rows may be recovered only for base and micro discovery lanes;
|
|
47
|
+
their exact owned workflow lanes are marked salvaged. Council, reviewer, and
|
|
48
|
+
critic outputs remain fail-closed and require retry when incomplete. `[CLEAN]`
|
|
49
|
+
is absence evidence and therefore requires a complete transcript. One positive
|
|
50
|
+
row in a consolidated lane never salvages a sibling dimension whose only
|
|
51
|
+
evidence is `[CLEAN]` or missing. Recovery reasons are lane-scoped and use four
|
|
52
|
+
kinds: `parser-normalization`, `parser-row-recovery`,
|
|
53
|
+
`truncated-preview-durable-artifact`, and
|
|
54
|
+
`transcript-incomplete-terminal-candidate`.
|
|
55
|
+
|
|
28
56
|
## Verdict-row pipe tolerance and its fidelity boundary
|
|
29
57
|
|
|
30
58
|
`[REVIEWED]` (10-field), `[CRITIC]` (6-field), and `[FEEDBACK-VERIFIED]`
|
|
@@ -136,6 +164,102 @@ A lane with a **recent** `updatedAt` still blocks — a check that can run and
|
|
|
136
164
|
reports "still progressing" is not softened. Collect it with
|
|
137
165
|
`collect_lane_results`, or wait for the horizon.
|
|
138
166
|
|
|
167
|
+
### A live session past the horizon is retained, not discarded
|
|
168
|
+
|
|
169
|
+
Nothing heartbeats `updatedAt`, so age alone cannot tell a dead lane from a slow
|
|
170
|
+
one. Before settling anything, the gate now runs a **liveness probe** over the
|
|
171
|
+
stale candidates: if the host affirmatively reports a lane's session as `busy` or
|
|
172
|
+
`retry`, that lane is **retained** — it keeps blocking, its record stays
|
|
173
|
+
`pending`/`running`, and its transcript stays collectable.
|
|
174
|
+
|
|
175
|
+
The probe is deliberately **fail-open**. For its error and no-data cases that is
|
|
176
|
+
the inverse of the collector's readiness check, which refuses to collect a lane it
|
|
177
|
+
cannot verify; the two agree rather than invert on a host that exposes no
|
|
178
|
+
`session.status` at all, where the collector proceeds and the probe reports
|
|
179
|
+
`probe-unavailable`. Only a probe that RAN and named a live session may contradict
|
|
180
|
+
staleness. Every other outcome settles exactly as age alone would, and says why:
|
|
181
|
+
|
|
182
|
+
| Outcome | `probe_status` |
|
|
183
|
+
| --- | --- |
|
|
184
|
+
| No session handle, or the host exposes no `status` | `probe-unavailable` |
|
|
185
|
+
| The call threw | `probe-error` |
|
|
186
|
+
| The call exceeded the 5s probe deadline | `probe-timeout` |
|
|
187
|
+
| The response carried an `error` | `probe-error` |
|
|
188
|
+
| The response carried no `data` | `probe-no-data` |
|
|
189
|
+
|
|
190
|
+
Where it surfaces: `probe_retained_lanes` on the `complete_pr_workflow` response,
|
|
191
|
+
`probe_status` on both tool responses, `probedAliveLanes` / `probeStatus` on the
|
|
192
|
+
`pr_workflow_lanes_presumed_stale` record, and `probeRetainedLanes` /
|
|
193
|
+
`probeStatus` / `probeRetentionOverrideLanes` on the `pr_workflow_aborted` event.
|
|
194
|
+
Note that the event's `openLanes` now counts fresh open lanes PLUS probe-retained
|
|
195
|
+
lanes, so a successful force abort can record a non-zero value where it always
|
|
196
|
+
recorded `0` before. The settled-lane disclosure
|
|
197
|
+
appends either `liveness probe found no live session` or `settled despite
|
|
198
|
+
liveness probe failure (<reason>)`, so "re-verified" and "not re-verified" are
|
|
199
|
+
never confused.
|
|
200
|
+
|
|
201
|
+
**Retention has one override, and it is human-only.** A session that never goes
|
|
202
|
+
idle would otherwise make the workflow permanently unexitable. `/swarm
|
|
203
|
+
abort-pr-workflow` (the `force` path, not agent-callable) clears the gate when
|
|
204
|
+
probe-retained lanes are the ONLY thing still blocking, and discloses exactly
|
|
205
|
+
which lanes it overrode — those sessions are not stopped and their output is not
|
|
206
|
+
collected. A lane with a fresh `updatedAt` is never overridden.
|
|
207
|
+
|
|
208
|
+
On that override path only, the overridden lanes' delegation records are also
|
|
209
|
+
finalized to `stale` — immediately **after** the gate clears, never before.
|
|
210
|
+
Without that finalization the session would be left un-restartable:
|
|
211
|
+
`prepare_pr_workflow_checkout` refuses while any `pending` / `running`
|
|
212
|
+
`swarm-pr-*` record of the session exists, with no age filter, and an overridden
|
|
213
|
+
lane never terminates on its own. So an override is the one case where a retained
|
|
214
|
+
lane's record does NOT stay `pending` and its transcript stops being collectable,
|
|
215
|
+
and the disclosure says so explicitly.
|
|
216
|
+
|
|
217
|
+
The ordering matters for recoverability, which is what this document is about.
|
|
218
|
+
The clear is CAS-guarded and can legitimately lose its compare-and-swap and
|
|
219
|
+
throw; the finalization is irreversible. Doing the irreversible half second means
|
|
220
|
+
a failed clear abandons no RETAINED lane and the operator's retry is a real
|
|
221
|
+
override — so **a `pr_workflow_abort_not_completed` retraction in
|
|
222
|
+
`.swarm/events.jsonl` means the lanes named in `probeRetentionOverrideLanes` were
|
|
223
|
+
not finalized by the override, and their output is still collectable**
|
|
224
|
+
(`probeRetentionOverrideFinalized: false`).
|
|
225
|
+
|
|
226
|
+
Read that scope literally. It does NOT mean the abort finalized nothing:
|
|
227
|
+
settlement durably sweeps the same batch's probe-DEAD lanes to `stale` *before*
|
|
228
|
+
the clear is attempted, so those are already terminal when the retraction is
|
|
229
|
+
written. Nor does it guarantee the named lanes are still `pending` by the time
|
|
230
|
+
you read the record — a concurrent force abort for the same session can clear and
|
|
231
|
+
finalize them, and that is itself one of the ways this CAS loses. Treat
|
|
232
|
+
`.swarm/delegations.jsonl` as the authority and re-read it rather than inferring
|
|
233
|
+
record state from the retraction alone.
|
|
234
|
+
|
|
235
|
+
The override's disclosure separates three facts that used to be conflated, and
|
|
236
|
+
every one of them is a POSITIVE observation rather than an inference from
|
|
237
|
+
absence:
|
|
238
|
+
|
|
239
|
+
1. Which overridden records went terminal `stale` — named by `correlationId`.
|
|
240
|
+
Only these have output that is no longer collectable.
|
|
241
|
+
2. Which overridden records the sweep left INTACT because they had already moved
|
|
242
|
+
on — named as `correlationId (status)` with the status actually observed on
|
|
243
|
+
disk. **This abort did not discard them, so check `collect_lane_results`
|
|
244
|
+
before assuming that work is gone.** The clause deliberately stops at "left
|
|
245
|
+
intact" rather than promising collectable output: an `error` or
|
|
246
|
+
`ingestion_error` record comes back as `failed` with no result text, and an
|
|
247
|
+
`ingesting` one is filtered out of `lane_results` until it settles, so the
|
|
248
|
+
status is what tells you whether there is anything to read. An earlier
|
|
249
|
+
version inferred (1) from a lane's absence from the still-open set, and a
|
|
250
|
+
raced-to-`completed` lane is absent for the opposite reason a finalized one
|
|
251
|
+
is, so it was reported as gone while its transcript sat on disk.
|
|
252
|
+
3. Whether the session can start a new PR workflow. This is read back over EVERY
|
|
253
|
+
still-open `swarm-pr-*` record of the session, not just the overridden ones —
|
|
254
|
+
because the ordinary settlement sweep swallows a store-lock timeout and
|
|
255
|
+
returns `0`, so a lane the abort reported as settled can still be `pending` on
|
|
256
|
+
disk and refuse the next checkout preparation. When that happens the
|
|
257
|
+
disclosure names the blocking `correlationId`s instead of claiming
|
|
258
|
+
restartability.
|
|
259
|
+
|
|
260
|
+
`.swarm/delegations.jsonl` remains the authority on which rows actually went
|
|
261
|
+
terminal.
|
|
262
|
+
|
|
139
263
|
### A corrupted gate state no longer defeats abort
|
|
140
264
|
|
|
141
265
|
If the durable gate-state file fails schema validation but is still valid JSON,
|
|
@@ -65,6 +65,7 @@ Use this template when dispatching a base explorer:
|
|
|
65
65
|
```text
|
|
66
66
|
You are a base explorer. Optimize for recall, not final judgment.
|
|
67
67
|
Return candidates only. Do not use CONFIRMED, DISPROVED, or PRE_EXISTING.
|
|
68
|
+
Do not narrate progress or repeat the prompt. Keep the complete final response at or below 12,000 characters; spend that budget on evidence-bearing rows and the minimum prose needed to make them auditable.
|
|
68
69
|
|
|
69
70
|
Lane:
|
|
70
71
|
Scope:
|
|
@@ -105,6 +106,7 @@ Use this template when dispatching a micro-lane or council explorer:
|
|
|
105
106
|
```text
|
|
106
107
|
You are a micro-lane or council explorer. Optimize for recall, not final judgment.
|
|
107
108
|
Return candidates only. Do not use CONFIRMED, DISPROVED, or PRE_EXISTING.
|
|
109
|
+
Do not narrate progress or repeat the prompt. Keep the complete final response at or below 12,000 characters; spend that budget on evidence-bearing rows and the minimum prose needed to make them auditable.
|
|
108
110
|
|
|
109
111
|
Micro/council lane:
|
|
110
112
|
Scope:
|
package/README.md
CHANGED
|
@@ -238,12 +238,14 @@ several places depending on your platform and OpenCode version:
|
|
|
238
238
|
`~/.config/opencode/node_modules/opencode-swarm/`
|
|
239
239
|
- Package cache layout:
|
|
240
240
|
`~/.cache/opencode/packages/opencode-swarm@latest/`
|
|
241
|
+
- Older bare package cache layout:
|
|
242
|
+
`~/.cache/opencode/packages/opencode-swarm/`
|
|
241
243
|
- Platform-specific macOS / Windows cache roots:
|
|
242
244
|
`~/Library/Caches/opencode/...`, `%LOCALAPPDATA%\opencode\...`, or `%APPDATA%\opencode\...`
|
|
243
245
|
|
|
244
246
|
The updater also clears known OpenCode lock files (`bun.lock`, `bun.lockb`, and `package-lock.json`) so the next start resolves the latest package.
|
|
245
247
|
|
|
246
|
-
To upgrade to the latest published version (clears
|
|
248
|
+
To upgrade to the latest published version (clears all known layouts automatically):
|
|
247
249
|
|
|
248
250
|
```bash
|
|
249
251
|
bunx opencode-swarm update # cache-only refresh, then restart opencode
|
|
@@ -212,6 +212,12 @@ export interface BackgroundPromptSnapshot {
|
|
|
212
212
|
truncated: boolean;
|
|
213
213
|
digest: string;
|
|
214
214
|
}
|
|
215
|
+
export type BackgroundDelegationRecoveryKind = 'parser-normalization' | 'parser-row-recovery' | 'truncated-preview-durable-artifact' | 'transcript-incomplete-terminal-candidate';
|
|
216
|
+
export interface BackgroundDelegationWorkflowLaneRecovery {
|
|
217
|
+
workflowLane: string;
|
|
218
|
+
kind: BackgroundDelegationRecoveryKind;
|
|
219
|
+
reason: string;
|
|
220
|
+
}
|
|
215
221
|
export interface BackgroundDelegationResult {
|
|
216
222
|
text?: string;
|
|
217
223
|
error?: string;
|
|
@@ -231,6 +237,13 @@ export interface BackgroundDelegationResult {
|
|
|
231
237
|
* a well-formed one after the fact, which is where post-mortems actually look.
|
|
232
238
|
*/
|
|
233
239
|
salvagedWorkflowLanes?: string[];
|
|
240
|
+
/**
|
|
241
|
+
* Per-workflow-lane recovery disclosures retained on the durable ledger.
|
|
242
|
+
* Unlike `salvagedWorkflowLanes`, which is the compatibility list surface,
|
|
243
|
+
* this captures the exact recovery class and human-readable reason so
|
|
244
|
+
* transport recovery is not collapsed into the same bucket as parser repair.
|
|
245
|
+
*/
|
|
246
|
+
salvagedWorkflowLaneRecoveries?: BackgroundDelegationWorkflowLaneRecovery[];
|
|
234
247
|
}
|
|
235
248
|
export interface BackgroundTerminalResult {
|
|
236
249
|
/** Stable identity derived from trusted correlation + immutable result metadata. */
|
|
@@ -435,6 +448,7 @@ export declare function appendDelegationTransition(directory: string, correlatio
|
|
|
435
448
|
status: BackgroundDelegationStatus;
|
|
436
449
|
result?: BackgroundDelegationResult;
|
|
437
450
|
completedAt?: number;
|
|
451
|
+
expectedCurrentStatuses?: readonly BackgroundDelegationStatus[];
|
|
438
452
|
}): Promise<BackgroundDelegationRecord | null>;
|
|
439
453
|
export interface BuildBackgroundCompletionEventIdInput {
|
|
440
454
|
correlationId: string;
|
|
@@ -544,9 +558,29 @@ export declare function findOpenAsyncLaneBatches(directory: string): BackgroundD
|
|
|
544
558
|
* The sweep is directory-wide with no session or mode filter, so a caller whose
|
|
545
559
|
* own decision covers only some status classes must narrow accordingly rather
|
|
546
560
|
* than finalizing records it never reasoned about.
|
|
561
|
+
*
|
|
562
|
+
* `options.excludeCorrelationIds` (issue #2251) is the per-record counterpart:
|
|
563
|
+
* status narrowing cannot express "this specific overdue record was verified
|
|
564
|
+
* alive". Both filters are AND-ed — an excluded record is spared regardless of
|
|
565
|
+
* status or age.
|
|
566
|
+
*
|
|
567
|
+
* `options.includeCorrelationIds` (issue #2251) inverts that: the sweep visits
|
|
568
|
+
* ONLY the named records. It exists so a caller that decided something about a
|
|
569
|
+
* specific, already-identified handful of lanes can finalize exactly those
|
|
570
|
+
* without a directory-wide pass that would also finalize other sessions' records
|
|
571
|
+
* and retryable `ingestion_error` records it never reasoned about. Passing an
|
|
572
|
+
* empty set sweeps nothing.
|
|
573
|
+
*
|
|
574
|
+
* Narrowing to a record does NOT force it terminal: the status and age filters
|
|
575
|
+
* still apply, so a named record that has since reached a terminal status (a
|
|
576
|
+
* lane that completed between the caller's decision and this call) is spared and
|
|
577
|
+
* its collected output survives. That is deliberate — an unconditional write
|
|
578
|
+
* here would re-introduce the very discard this subsystem exists to prevent.
|
|
547
579
|
*/
|
|
548
580
|
export declare function sweepStaleDelegations(directory: string, timeoutMs: number, options?: {
|
|
549
581
|
statuses?: ReadonlySet<SweepableDelegationStatus>;
|
|
582
|
+
excludeCorrelationIds?: ReadonlySet<string>;
|
|
583
|
+
includeCorrelationIds?: ReadonlySet<string>;
|
|
550
584
|
}): Promise<number>;
|
|
551
585
|
export interface BackgroundDelegationFallbackArtifact {
|
|
552
586
|
schemaVersion: 1;
|
|
@@ -12,10 +12,10 @@ import {
|
|
|
12
12
|
shouldRunOnStartup,
|
|
13
13
|
writeBackupArtifact,
|
|
14
14
|
writeDoctorArtifact
|
|
15
|
-
} from "./index-
|
|
16
|
-
import"./index-h3z64mhz.js";
|
|
17
|
-
import"./index-whezv7vc.js";
|
|
15
|
+
} from "./index-h98t1m88.js";
|
|
18
16
|
import"./index-z6xqpmqg.js";
|
|
17
|
+
import"./index-y8j8ehc8.js";
|
|
18
|
+
import"./index-v3y3qg48.js";
|
|
19
19
|
import"./index-zjygnfay.js";
|
|
20
20
|
import"./index-bk5tah7q.js";
|
|
21
21
|
import"./index-bpmtbmy9.js";
|
|
@@ -14,10 +14,10 @@ import {
|
|
|
14
14
|
resolveWorktreeBaseDir,
|
|
15
15
|
shortenWorktreePath,
|
|
16
16
|
writeLaneProfileToDiskReal
|
|
17
|
-
} from "./index-
|
|
18
|
-
import"./index-4rhhvd1a.js";
|
|
19
|
-
import"./index-whezv7vc.js";
|
|
17
|
+
} from "./index-8j0va7jp.js";
|
|
20
18
|
import"./index-z6xqpmqg.js";
|
|
19
|
+
import"./index-4rhhvd1a.js";
|
|
20
|
+
import"./index-v3y3qg48.js";
|
|
21
21
|
import"./index-zjygnfay.js";
|
|
22
22
|
import"./index-4nt52yr9.js";
|
|
23
23
|
import"./index-zgwm4ryv.js";
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
authorizeCuration,
|
|
5
5
|
buildConfigFingerprintInput,
|
|
6
6
|
readCohortConfigFingerprint
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-dty5qgk2.js";
|
|
8
8
|
import"./index-rtry5xyf.js";
|
|
9
|
-
import"./index-
|
|
10
|
-
import"./index-
|
|
9
|
+
import"./index-ywn7vtxp.js";
|
|
10
|
+
import"./index-mazgg5s2.js";
|
|
11
11
|
import"./index-ed5ykebp.js";
|
|
12
|
-
import"./index-
|
|
12
|
+
import"./index-f9vvg5xb.js";
|
|
13
|
+
import"./index-1jsmmx7y.js";
|
|
13
14
|
import"./index-7g4c7s5r.js";
|
|
14
|
-
import"./index-s2rcz51a.js";
|
|
15
15
|
import"./index-bpmtbmy9.js";
|
|
16
16
|
import"./index-4nt52yr9.js";
|
|
17
17
|
import"./index-zgwm4ryv.js";
|
|
@@ -14,58 +14,58 @@ 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-q4ed1jk7.js";
|
|
18
|
+
import"./index-d12jd5mn.js";
|
|
19
|
+
import"./index-h98t1m88.js";
|
|
20
|
+
import"./index-az8etqpp.js";
|
|
21
21
|
import"./index-134d35c1.js";
|
|
22
22
|
import"./index-b6e016tv.js";
|
|
23
|
-
import"./index-
|
|
24
|
-
import"./index-
|
|
23
|
+
import"./index-1csyxv0f.js";
|
|
24
|
+
import"./index-fqcjragy.js";
|
|
25
25
|
import"./index-y8552snf.js";
|
|
26
|
-
import"./index-
|
|
26
|
+
import"./index-nckg4gxb.js";
|
|
27
27
|
import"./index-70ha9e09.js";
|
|
28
28
|
import"./index-c8s9a3zh.js";
|
|
29
29
|
import"./index-9ss2m4rs.js";
|
|
30
|
-
import"./index-d55crzd4.js";
|
|
31
30
|
import"./index-74hpm6sh.js";
|
|
32
|
-
import"./index-
|
|
33
|
-
import"./index-
|
|
34
|
-
import"./index-
|
|
35
|
-
import"./index-
|
|
36
|
-
import"./index-
|
|
37
|
-
import"./index-
|
|
31
|
+
import"./index-bt9aa01f.js";
|
|
32
|
+
import"./index-zb0xcz9t.js";
|
|
33
|
+
import"./index-x6tp0hfr.js";
|
|
34
|
+
import"./index-yts89pqg.js";
|
|
35
|
+
import"./index-dty5qgk2.js";
|
|
36
|
+
import"./index-rtry5xyf.js";
|
|
38
37
|
import"./index-zsrtt42s.js";
|
|
38
|
+
import"./index-jabkn643.js";
|
|
39
39
|
import"./index-k3cxyk66.js";
|
|
40
|
-
import"./index-
|
|
41
|
-
import"./index-
|
|
42
|
-
import"./index-
|
|
43
|
-
import"./index-
|
|
40
|
+
import"./index-cz25e8xp.js";
|
|
41
|
+
import"./index-8j0va7jp.js";
|
|
42
|
+
import"./index-pw83zgny.js";
|
|
43
|
+
import"./index-z6v7kwpa.js";
|
|
44
|
+
import"./index-556ja8an.js";
|
|
44
45
|
import"./index-7sy3aa9m.js";
|
|
45
46
|
import"./index-wx8zdh4a.js";
|
|
46
|
-
import"./index-
|
|
47
|
-
import"./index-
|
|
47
|
+
import"./index-8fwhhayc.js";
|
|
48
|
+
import"./index-q1exe2b3.js";
|
|
49
|
+
import"./index-03pv47h2.js";
|
|
50
|
+
import"./index-4w5qdbk7.js";
|
|
51
|
+
import"./index-psvxq93b.js";
|
|
48
52
|
import"./index-gprxjmm7.js";
|
|
49
53
|
import"./index-n832052r.js";
|
|
50
|
-
import"./index-y95nwsge.js";
|
|
51
|
-
import"./index-h3z64mhz.js";
|
|
52
54
|
import"./index-rn0eq85g.js";
|
|
53
|
-
import"./index-4rhhvd1a.js";
|
|
54
|
-
import"./index-whezv7vc.js";
|
|
55
55
|
import"./index-z6xqpmqg.js";
|
|
56
|
+
import"./index-9qq7c18c.js";
|
|
57
|
+
import"./index-y8j8ehc8.js";
|
|
58
|
+
import"./index-4rhhvd1a.js";
|
|
59
|
+
import"./index-v3y3qg48.js";
|
|
56
60
|
import"./index-zjygnfay.js";
|
|
57
|
-
import"./index-ne8cfgw5.js";
|
|
58
|
-
import"./index-tq5s07ta.js";
|
|
59
|
-
import"./index-rtry5xyf.js";
|
|
60
|
-
import"./index-ckrasab9.js";
|
|
61
61
|
import"./index-ae75rja9.js";
|
|
62
|
-
import"./index-
|
|
63
|
-
import"./index-
|
|
64
|
-
import"./index-bk5tah7q.js";
|
|
62
|
+
import"./index-ywn7vtxp.js";
|
|
63
|
+
import"./index-mazgg5s2.js";
|
|
65
64
|
import"./index-ed5ykebp.js";
|
|
66
|
-
import"./index-
|
|
65
|
+
import"./index-bk5tah7q.js";
|
|
66
|
+
import"./index-f9vvg5xb.js";
|
|
67
|
+
import"./index-1jsmmx7y.js";
|
|
67
68
|
import"./index-7g4c7s5r.js";
|
|
68
|
-
import"./index-s2rcz51a.js";
|
|
69
69
|
import"./index-bpmtbmy9.js";
|
|
70
70
|
import"./index-4nt52yr9.js";
|
|
71
71
|
import"./index-zgwm4ryv.js";
|
|
@@ -1,58 +1,58 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
createCuratorLLMDelegate
|
|
4
|
-
} from "./index-
|
|
5
|
-
import"./index-
|
|
6
|
-
import"./index-
|
|
7
|
-
import"./index-
|
|
4
|
+
} from "./index-q4ed1jk7.js";
|
|
5
|
+
import"./index-d12jd5mn.js";
|
|
6
|
+
import"./index-h98t1m88.js";
|
|
7
|
+
import"./index-az8etqpp.js";
|
|
8
8
|
import"./index-134d35c1.js";
|
|
9
9
|
import"./index-b6e016tv.js";
|
|
10
|
-
import"./index-
|
|
11
|
-
import"./index-
|
|
10
|
+
import"./index-1csyxv0f.js";
|
|
11
|
+
import"./index-fqcjragy.js";
|
|
12
12
|
import"./index-y8552snf.js";
|
|
13
|
-
import"./index-
|
|
13
|
+
import"./index-nckg4gxb.js";
|
|
14
14
|
import"./index-70ha9e09.js";
|
|
15
15
|
import"./index-c8s9a3zh.js";
|
|
16
16
|
import"./index-9ss2m4rs.js";
|
|
17
|
-
import"./index-d55crzd4.js";
|
|
18
17
|
import"./index-74hpm6sh.js";
|
|
19
|
-
import"./index-
|
|
20
|
-
import"./index-
|
|
21
|
-
import"./index-
|
|
22
|
-
import"./index-
|
|
23
|
-
import"./index-
|
|
24
|
-
import"./index-
|
|
18
|
+
import"./index-bt9aa01f.js";
|
|
19
|
+
import"./index-zb0xcz9t.js";
|
|
20
|
+
import"./index-x6tp0hfr.js";
|
|
21
|
+
import"./index-yts89pqg.js";
|
|
22
|
+
import"./index-dty5qgk2.js";
|
|
23
|
+
import"./index-rtry5xyf.js";
|
|
25
24
|
import"./index-zsrtt42s.js";
|
|
25
|
+
import"./index-jabkn643.js";
|
|
26
26
|
import"./index-k3cxyk66.js";
|
|
27
|
-
import"./index-
|
|
28
|
-
import"./index-
|
|
29
|
-
import"./index-
|
|
30
|
-
import"./index-
|
|
27
|
+
import"./index-cz25e8xp.js";
|
|
28
|
+
import"./index-8j0va7jp.js";
|
|
29
|
+
import"./index-pw83zgny.js";
|
|
30
|
+
import"./index-z6v7kwpa.js";
|
|
31
|
+
import"./index-556ja8an.js";
|
|
31
32
|
import"./index-7sy3aa9m.js";
|
|
32
33
|
import"./index-wx8zdh4a.js";
|
|
33
|
-
import"./index-
|
|
34
|
-
import"./index-
|
|
34
|
+
import"./index-8fwhhayc.js";
|
|
35
|
+
import"./index-q1exe2b3.js";
|
|
36
|
+
import"./index-03pv47h2.js";
|
|
37
|
+
import"./index-4w5qdbk7.js";
|
|
38
|
+
import"./index-psvxq93b.js";
|
|
35
39
|
import"./index-gprxjmm7.js";
|
|
36
40
|
import"./index-n832052r.js";
|
|
37
|
-
import"./index-y95nwsge.js";
|
|
38
|
-
import"./index-h3z64mhz.js";
|
|
39
41
|
import"./index-rn0eq85g.js";
|
|
40
|
-
import"./index-4rhhvd1a.js";
|
|
41
|
-
import"./index-whezv7vc.js";
|
|
42
42
|
import"./index-z6xqpmqg.js";
|
|
43
|
+
import"./index-9qq7c18c.js";
|
|
44
|
+
import"./index-y8j8ehc8.js";
|
|
45
|
+
import"./index-4rhhvd1a.js";
|
|
46
|
+
import"./index-v3y3qg48.js";
|
|
43
47
|
import"./index-zjygnfay.js";
|
|
44
|
-
import"./index-ne8cfgw5.js";
|
|
45
|
-
import"./index-tq5s07ta.js";
|
|
46
|
-
import"./index-rtry5xyf.js";
|
|
47
|
-
import"./index-ckrasab9.js";
|
|
48
48
|
import"./index-ae75rja9.js";
|
|
49
|
-
import"./index-
|
|
50
|
-
import"./index-
|
|
51
|
-
import"./index-bk5tah7q.js";
|
|
49
|
+
import"./index-ywn7vtxp.js";
|
|
50
|
+
import"./index-mazgg5s2.js";
|
|
52
51
|
import"./index-ed5ykebp.js";
|
|
53
|
-
import"./index-
|
|
52
|
+
import"./index-bk5tah7q.js";
|
|
53
|
+
import"./index-f9vvg5xb.js";
|
|
54
|
+
import"./index-1jsmmx7y.js";
|
|
54
55
|
import"./index-7g4c7s5r.js";
|
|
55
|
-
import"./index-s2rcz51a.js";
|
|
56
56
|
import"./index-bpmtbmy9.js";
|
|
57
57
|
import"./index-4nt52yr9.js";
|
|
58
58
|
import"./index-zgwm4ryv.js";
|
package/dist/cli/{evidence-summary-service-t7n2h1he.js → evidence-summary-service-fnr5y54e.js}
RENAMED
|
@@ -6,32 +6,32 @@ import {
|
|
|
6
6
|
loadPlanJsonOnly,
|
|
7
7
|
mergeDurableGateEntriesFromEvidence,
|
|
8
8
|
readDurableGateEvidence
|
|
9
|
-
} from "./index-
|
|
9
|
+
} from "./index-az8etqpp.js";
|
|
10
10
|
import"./index-134d35c1.js";
|
|
11
|
-
import"./index-
|
|
11
|
+
import"./index-fqcjragy.js";
|
|
12
12
|
import"./index-y8552snf.js";
|
|
13
13
|
import"./index-9ss2m4rs.js";
|
|
14
|
-
import"./index-d55crzd4.js";
|
|
15
|
-
import"./index-g1c5fgaw.js";
|
|
16
|
-
import"./index-556ja8an.js";
|
|
17
14
|
import"./index-zsrtt42s.js";
|
|
18
|
-
import"./index-
|
|
15
|
+
import"./index-cz25e8xp.js";
|
|
16
|
+
import"./index-8j0va7jp.js";
|
|
17
|
+
import"./index-z6v7kwpa.js";
|
|
18
|
+
import"./index-556ja8an.js";
|
|
19
19
|
import"./index-q1exe2b3.js";
|
|
20
20
|
import"./index-gprxjmm7.js";
|
|
21
21
|
import"./index-n832052r.js";
|
|
22
|
-
import"./index-y95nwsge.js";
|
|
23
|
-
import"./index-h3z64mhz.js";
|
|
24
22
|
import"./index-rn0eq85g.js";
|
|
25
|
-
import"./index-4rhhvd1a.js";
|
|
26
|
-
import"./index-whezv7vc.js";
|
|
27
23
|
import"./index-z6xqpmqg.js";
|
|
24
|
+
import"./index-9qq7c18c.js";
|
|
25
|
+
import"./index-y8j8ehc8.js";
|
|
26
|
+
import"./index-4rhhvd1a.js";
|
|
27
|
+
import"./index-v3y3qg48.js";
|
|
28
28
|
import"./index-zjygnfay.js";
|
|
29
|
-
import"./index-
|
|
30
|
-
import"./index-bk5tah7q.js";
|
|
29
|
+
import"./index-mazgg5s2.js";
|
|
31
30
|
import"./index-ed5ykebp.js";
|
|
32
|
-
import"./index-
|
|
31
|
+
import"./index-bk5tah7q.js";
|
|
32
|
+
import"./index-f9vvg5xb.js";
|
|
33
|
+
import"./index-1jsmmx7y.js";
|
|
33
34
|
import"./index-7g4c7s5r.js";
|
|
34
|
-
import"./index-s2rcz51a.js";
|
|
35
35
|
import"./index-bpmtbmy9.js";
|
|
36
36
|
import"./index-4nt52yr9.js";
|
|
37
37
|
import {
|
|
@@ -17,19 +17,19 @@ import {
|
|
|
17
17
|
reduceTaskWorkflowSnapshot,
|
|
18
18
|
transitionTaskWorkflowEvidence,
|
|
19
19
|
withTaskEvidenceTransaction
|
|
20
|
-
} from "./index-
|
|
20
|
+
} from "./index-cz25e8xp.js";
|
|
21
|
+
import"./index-8j0va7jp.js";
|
|
21
22
|
import"./index-556ja8an.js";
|
|
22
|
-
import"./index-dhh2j2nd.js";
|
|
23
23
|
import"./index-rn0eq85g.js";
|
|
24
|
-
import"./index-4rhhvd1a.js";
|
|
25
|
-
import"./index-whezv7vc.js";
|
|
26
24
|
import"./index-z6xqpmqg.js";
|
|
25
|
+
import"./index-4rhhvd1a.js";
|
|
26
|
+
import"./index-v3y3qg48.js";
|
|
27
27
|
import"./index-zjygnfay.js";
|
|
28
|
-
import"./index-
|
|
28
|
+
import"./index-mazgg5s2.js";
|
|
29
29
|
import"./index-ed5ykebp.js";
|
|
30
|
-
import"./index-
|
|
30
|
+
import"./index-f9vvg5xb.js";
|
|
31
|
+
import"./index-1jsmmx7y.js";
|
|
31
32
|
import"./index-7g4c7s5r.js";
|
|
32
|
-
import"./index-s2rcz51a.js";
|
|
33
33
|
import"./index-bpmtbmy9.js";
|
|
34
34
|
import"./index-4nt52yr9.js";
|
|
35
35
|
import"./index-zgwm4ryv.js";
|