opencode-swarm 7.184.17 → 7.185.1

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.
Files changed (107) hide show
  1. package/README.md +6 -1
  2. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  3. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  4. package/dist/background/pr-review-trigger-receipt-reader.d.ts +35 -0
  5. package/dist/background/pr-subscriptions.d.ts +18 -0
  6. package/dist/background/stage-b-dispatch-binding-store.d.ts +115 -0
  7. package/dist/cli/{auto-checkpoint-8whpytsm.js → auto-checkpoint-2jecngee.js} +7 -7
  8. package/dist/cli/{checkpoint-zjtcn0tx.js → checkpoint-qm05wdbh.js} +14 -14
  9. package/dist/cli/{coder-settlement-0z8sr1ep.js → coder-settlement-56prayae.js} +10 -10
  10. package/dist/cli/{config-doctor-4zwh0dkn.js → config-doctor-3b99vx74.js} +2 -2
  11. package/dist/cli/{core-fqbga0z4.js → core-cxnqsrxp.js} +3 -3
  12. package/dist/cli/{curation-policy-1rzheh1x.js → curation-policy-ytzwb080.js} +4 -4
  13. package/dist/cli/{curator-fkebhqnh.js → curator-5k3mktpe.js} +39 -39
  14. package/dist/cli/{curator-drift-44ba54w1.js → curator-drift-dt4g79a4.js} +8 -8
  15. package/dist/cli/curator-llm-factory-hkk29g2y.js +81 -0
  16. package/dist/cli/{evidence-summary-service-e6wesfq2.js → evidence-summary-service-8e2fghz0.js} +17 -17
  17. package/dist/cli/{gate-evidence-8chc9f8q.js → gate-evidence-vk8rebsx.js} +5 -5
  18. package/dist/cli/guardrail-explain-ma658hkw.js +82 -0
  19. package/dist/cli/{guardrail-log-t0ketv64.js → guardrail-log-m6mydjet.js} +6 -6
  20. package/dist/cli/{guardrail-reset-rzva9emn.js → guardrail-reset-w41yndke.js} +39 -39
  21. package/dist/cli/{hive-promoter-h60dddna.js → hive-promoter-400xzdds.js} +39 -39
  22. package/dist/cli/{index-r472pepw.js → index-07bk0zm9.js} +1 -1
  23. package/dist/cli/{index-mfqge140.js → index-1fc5aj26.js} +1 -1
  24. package/dist/cli/{index-denfahc5.js → index-2b3bgm20.js} +1 -1
  25. package/dist/cli/{index-7n1pfpnj.js → index-2c6e1p7j.js} +3 -3
  26. package/dist/cli/{index-7rzgdcvc.js → index-373880cv.js} +1 -1
  27. package/dist/cli/{index-y0534tfs.js → index-5n08z6qj.js} +5 -5
  28. package/dist/cli/{index-jtg0zsnx.js → index-62akgg9d.js} +1 -1
  29. package/dist/cli/{index-2y9b45jj.js → index-6sffjy74.js} +1 -1
  30. package/dist/cli/{index-sfsydeh8.js → index-6wqv8f7d.js} +5 -5
  31. package/dist/cli/{index-pwcbtbhd.js → index-74yxwf8y.js} +1 -1
  32. package/dist/cli/{index-bktc2g9n.js → index-7jt24hpz.js} +2 -2
  33. package/dist/cli/{index-y8gxcmnj.js → index-7n3h39h9.js} +7 -7
  34. package/dist/cli/{index-fxf3zhtq.js → index-8nsjefpc.js} +1 -1
  35. package/dist/cli/{index-7r3pkgma.js → index-9g61bfj9.js} +1 -1
  36. package/dist/cli/{index-wxr5me67.js → index-9h93zjm3.js} +5 -1
  37. package/dist/cli/{index-dftztz4y.js → index-afmyp3kt.js} +1 -1
  38. package/dist/cli/{index-m8342y3n.js → index-cnbpht7m.js} +3 -3
  39. package/dist/cli/{index-tyzmjw2s.js → index-cp2nerjd.js} +420 -9
  40. package/dist/cli/{index-a7y29h92.js → index-dryhmaft.js} +3 -3
  41. package/dist/cli/{index-e708d35g.js → index-dz5cbkrm.js} +4 -4
  42. package/dist/cli/{index-naxrpyb0.js → index-ek5gvpvm.js} +7 -7
  43. package/dist/cli/{index-kxacpqwf.js → index-ekyg4p8b.js} +1 -1
  44. package/dist/cli/{index-hk2cap4d.js → index-fa014mra.js} +3 -3
  45. package/dist/cli/{index-pak3x772.js → index-hgfkcb1q.js} +1547 -1115
  46. package/dist/cli/{index-drndbj24.js → index-m1bhg85z.js} +2 -2
  47. package/dist/cli/{index-cftva3pa.js → index-nen885g8.js} +1 -1
  48. package/dist/cli/{index-hx4jkj05.js → index-nhw5rt5x.js} +4 -4
  49. package/dist/cli/{index-cyn2cb6k.js → index-nw16apxs.js} +5 -5
  50. package/dist/cli/{index-4v60grax.js → index-pa6fzbms.js} +4 -4
  51. package/dist/cli/{index-48we80k1.js → index-ppj5bjaq.js} +7 -7
  52. package/dist/cli/{index-gx03v1y5.js → index-pppjg0ct.js} +10 -10
  53. package/dist/cli/{index-vs1y869b.js → index-r9zc92pb.js} +41 -41
  54. package/dist/cli/{index-0pvvktht.js → index-rr1dggfe.js} +8 -3
  55. package/dist/cli/{index-8twhrz1w.js → index-rtznwf0g.js} +39 -39
  56. package/dist/cli/{index-m1pqenq9.js → index-s68z4a39.js} +2 -2
  57. package/dist/cli/{index-ww747mdg.js → index-s7va6n84.js} +3 -3
  58. package/dist/cli/{index-pef8ay7c.js → index-smwybqka.js} +2 -2
  59. package/dist/cli/{index-dky6qwrk.js → index-ss6b8jpz.js} +2 -2
  60. package/dist/cli/{index-yydv4jfy.js → index-vqz0avr4.js} +2 -2
  61. package/dist/cli/{index-yx5z4200.js → index-xgdypzch.js} +1 -1
  62. package/dist/cli/{index-0zjg4kt5.js → index-ycqsnfd1.js} +4 -4
  63. package/dist/cli/{index-bntwj2tp.js → index-yj7etak0.js} +3 -2
  64. package/dist/cli/{index-50q314wd.js → index-zt3taseq.js} +2 -2
  65. package/dist/cli/{index-4g4sr4ah.js → index-zxck9sr7.js} +1 -1
  66. package/dist/cli/index.js +40 -40
  67. package/dist/cli/{knowledge-escalator-kdeqdj0h.js → knowledge-escalator-30bb9fyg.js} +11 -11
  68. package/dist/cli/{knowledge-events-6fs0tz97.js → knowledge-events-gfbx97x0.js} +9 -9
  69. package/dist/cli/{knowledge-link-vvyfhhmr.js → knowledge-link-dv78fb9g.js} +3 -3
  70. package/dist/cli/{knowledge-store-z3fee1x1.js → knowledge-store-2ssd489f.js} +4 -4
  71. package/dist/cli/{knowledge-validator-sz1bmbvt.js → knowledge-validator-7bxvezgv.js} +6 -6
  72. package/dist/cli/{mcp-e1cnm4k3.js → mcp-apr65eya.js} +1 -1
  73. package/dist/cli/{model-preflight-936dhs10.js → model-preflight-g7b12yn2.js} +39 -39
  74. package/dist/cli/{pending-delegations-m0vf63yd.js → pending-delegations-x8q7cxr7.js} +10 -10
  75. package/dist/cli/{pr-subscriptions-2gvfff4q.js → pr-subscriptions-qwr6ybcb.js} +10 -10
  76. package/dist/cli/{pr-workflow-gate-68rg74bk.js → pr-workflow-gate-qd5tfkak.js} +39 -39
  77. package/dist/cli/{runner-cwmgb9rw.js → runner-tb3eppeg.js} +4 -4
  78. package/dist/cli/{scan-cursor-qzsanqx4.js → scan-cursor-1m6dj2s2.js} +5 -5
  79. package/dist/cli/{schema-jx4v0hg7.js → schema-yvhamv41.js} +3 -1
  80. package/dist/cli/{scope-persistence-qk1h0c13.js → scope-persistence-xdedbzdg.js} +13 -13
  81. package/dist/cli/{server-z9az3wc5.js → server-nhdkvdt2.js} +39 -39
  82. package/dist/cli/{skill-generator-h0veywz6.js → skill-generator-fzvp9m8z.js} +13 -13
  83. package/dist/cli/{snapshot-coordination-init-mwrvch16.js → snapshot-coordination-init-xqxek8kn.js} +39 -39
  84. package/dist/cli/{speckit-checkoff-skyray2c.js → speckit-checkoff-57tf4079.js} +4 -4
  85. package/dist/cli/{workspace-snapshot-gnwak61t.js → workspace-snapshot-kcfkk3a2.js} +3 -3
  86. package/dist/cli/{worktree-collision-ownership-wvxm7q1h.js → worktree-collision-ownership-80n814a8.js} +11 -11
  87. package/dist/cli/{worktree-isolation-bmzkxa64.js → worktree-isolation-kaxkr61t.js} +39 -39
  88. package/dist/commands/_shared/url-security.d.ts +20 -9
  89. package/dist/commands/pr-ref.d.ts +44 -8
  90. package/dist/commands/pr-subscribe.d.ts +0 -8
  91. package/dist/commands/pr-unsubscribe.d.ts +2 -1
  92. package/dist/config/schema.d.ts +17 -0
  93. package/dist/hooks/delegation-gate.d.ts +5 -1
  94. package/dist/hooks/extractors.d.ts +24 -0
  95. package/dist/hooks/pr-auto-subscribe.d.ts +5 -4
  96. package/dist/index.js +533 -529
  97. package/dist/pr-review/completion.d.ts +14 -1
  98. package/dist/pr-review/types.d.ts +8 -1
  99. package/dist/providers/forge-provider.d.ts +167 -0
  100. package/dist/providers/host-guards.d.ts +31 -0
  101. package/dist/tools/write-pr-review-trigger-eval.d.ts +2 -0
  102. package/dist/utils/gh-executable.d.ts +10 -0
  103. package/dist/utils/glab-executable.d.ts +85 -0
  104. package/opencode-swarm.schema.json +19 -0
  105. package/package.json +1 -1
  106. package/dist/cli/curator-llm-factory-65qve6xk.js +0 -81
  107. package/dist/cli/guardrail-explain-2prdgvjk.js +0 -82
package/README.md CHANGED
@@ -45,6 +45,7 @@ Most AI coding tools let one model write code and ask that same model whether th
45
45
  - 🎯 **Governed Skill Optimizer** — Manually-activated, single-skill optimizer (`/swarm skill-opt plan|run|status|diff|approve|reject|rollback|history`) that drives one allowlisted `SKILL.md` candidate at a time through deterministic draft → smoke → evaluation-substrate validation → manual approval → atomic activation/rollback. Bounded, restartable, reversible, and unable to mutate source/harness/security surfaces. Disabled by default (`skill_opt.enabled: false`); see [docs/skill-optimizer.md](docs/skill-optimizer.md).
46
46
  - 🔄 **Phase completion gates** — completion-verify and drift verifier gates enforced before phase completion
47
47
  - 🔁 **Resumable sessions** — all state saved to `.swarm/`; pick up any project any day
48
+ - 🔀 **GitLab as a first-class forge** (#2733) — MR and issue URLs (`https://<gitlab-host>/owner/repo/-/merge_requests/N`, `/-/issues/N`) are accepted by `/swarm pr-review`, `pr-feedback`, `pr subscribe/unsubscribe`, `ci-monitor`, publication recording, and issue ingestion, with self-hosted instance hosts derived from the remote or `forge.base_url` (config `forge: { provider, base_url }`, default `auto`; ambiguous remotes fail closed). Every URL-security control (HTTPS-only, private/localhost rejection, IDN protection, credential stripping) applies identically to GitLab. The `glab` binary resolves through the same hardened resolver contract as `gh` (`OPENCODE_SWARM_GLAB_BINARY` env override). Honest capability reporting: GitLab does not synthesize GitHub's `statusCheckRollup`/`reviewDecision`/`mergeStateStatus` — those surface an explicit unavailable result instead of a fabricated value, and glab-backed live MR polling is tracked as follow-up issue [#2882](https://github.com/ZaxbyHub/opencode-swarm/issues/2882).
48
49
  - 🖥️ **PR Monitor** — GitHub PR subscription and background polling via `gh` CLI; delivers real-time CI, review, and merge status updates via the AutomationEventBus (FR-001, opt-in via `pr_monitor.enabled: true`). Subscribe with `/swarm pr subscribe <pr-url|owner/repo#N|N>`; unsubscribe with `/swarm pr unsubscribe <pr-url|owner/repo#N|N>`; check status with `/swarm pr status`. With `auto_pr_feedback: true`, CI failures and merge conflicts mechanically activate PR_FEEDBACK only when no other workflow owns the session; otherwise they are durably queued for a later round.
49
50
  - 🌐 **13 full language profiles** (TypeScript, JavaScript, Python, Go, Rust, Java, Kotlin, C/C++, C#, Ruby, Swift, Dart, PHP) with **tree-sitter parse validation across 20 grammars** (adds CSS, Bash, PowerShell, INI, Regex — and `.tsx` / `.c` aliases) — extending: see [docs/adding-a-language.md](docs/adding-a-language.md)
50
51
  - 🛡️ **Built-in security** — SAST, secrets scanning, dependency audit per task
@@ -1077,7 +1078,11 @@ unchanged — on the default path that is the phase header line, and on the
1077
1078
  scoring path the phase and current‑task context candidates. The full plan text
1078
1079
  is never injected in its place. When the cursor exceeds `max_tokens` and the
1079
1080
  compact rebuild kicks in, lookahead is reduced to one task and earlier phases
1080
- collapse to one‑line summaries.
1081
+ collapse to one‑line summaries. A phase marked `[BLOCKED]` is surfaced as a
1082
+ one‑line `## Phase N [BLOCKED]` summary in both renders (issue #2841); its
1083
+ summary is reserved ahead of generic budget truncation, so it is never
1084
+ silently dropped within the configured `max_tokens` (only when even the
1085
+ summary cannot fit the bound does the bound win, as for every section).
1081
1086
 
1082
1087
  ## Tool Output Truncation (v6.13)
1083
1088
 
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Bounded reader for the durable PR_REVIEW trigger-evaluation receipt
3
+ * (issue #2840).
4
+ *
5
+ * Contract: given the gate state's `prReviewTriggerEvalPath`, this module
6
+ * performs the exact bounded read the candidate-inventory pass has always
7
+ * done (path validation, file-type + byte-cap check, JSON parse, strict
8
+ * receipt parse) and returns the parsed receipt. When the path is unset the
9
+ * reader returns `{ noReceipt: true }` WITHOUT touching the filesystem — a
10
+ * run that never wrote a trigger-eval receipt (pre-#2836 runs, runs without
11
+ * micro triggers) must not read, and must not be treated as degraded. A set
12
+ * path whose file is missing, oversized, or unparseable throws BLOCKED —
13
+ * mirroring the inventory pass: corruption of a receipt the workflow claims
14
+ * to have written must fail closed, never silently downgrade a degraded
15
+ * review to an APPROVEable one.
16
+ *
17
+ * Kept in its own module (not the pure schema module
18
+ * `pr-review-trigger-contract.ts`, not the gate) so both
19
+ * `src/hooks/pr-workflow-gate.ts` and `src/pr-review/completion.ts` can
20
+ * share it without an import cycle.
21
+ */
22
+ import { parsePrReviewTriggerReceipt } from './pr-review-trigger-contract.js';
23
+ export type PrReviewTriggerReceiptRead = {
24
+ noReceipt: true;
25
+ } | {
26
+ receipt: ReturnType<typeof parsePrReviewTriggerReceipt>;
27
+ };
28
+ export declare function readPrReviewTriggerReceiptForGate(directory: string, triggerEvalPath: string | null | undefined): PrReviewTriggerReceiptRead;
29
+ /**
30
+ * True when the durable trigger-eval receipt discloses at least one coverage
31
+ * degradation (dead family or coverage-quality). Issue #2840: such a review
32
+ * is DEGRADED_DISCLOSED and its verdict matrix must never include APPROVE.
33
+ * Unset path ⇒ false (no receipt was ever written for this run).
34
+ */
35
+ export declare function prReviewReceiptHasCoverageDegradations(directory: string, triggerEvalPath: string | null | undefined): boolean;
@@ -162,6 +162,15 @@ export interface PrSubscriptionRecord {
162
162
  /** e.g. "owner/repo". */
163
163
  repoFullName: string;
164
164
  prUrl: string;
165
+ /**
166
+ * #2733: the configured forge declaration this prUrl was validated
167
+ * against (present only for generic self-hosted GitLab hosts). Persisted
168
+ * with the record so reload validation is config-free.
169
+ */
170
+ forge?: {
171
+ provider: 'gitlab';
172
+ host: string;
173
+ };
165
174
  headRefOid?: string;
166
175
  /** Epoch ms — last time the poller checked this PR. */
167
176
  lastCheckedAt: number;
@@ -194,6 +203,15 @@ export interface SubscribeInput {
194
203
  prNumber: number;
195
204
  repoFullName: string;
196
205
  prUrl: string;
206
+ /**
207
+ * #2733: the configured forge declaration this prUrl was validated
208
+ * against (present only for generic self-hosted GitLab hosts). Persisted
209
+ * with the record so reload validation is config-free.
210
+ */
211
+ forge?: {
212
+ provider: 'gitlab';
213
+ host: string;
214
+ };
197
215
  /** Max active subscriptions allowed (for limit enforcement). */
198
216
  maxSubscriptions?: number;
199
217
  }
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Durable twin of the Stage B dispatch-generation bindings (issue #2829).
3
+ *
4
+ * `stageBDispatchGenerationsByCallID` (src/hooks/delegation-gate.ts) is a
5
+ * closure-local `Map<callID, Map<taskId, generation>>` written at dispatch
6
+ * time and read at settlement time; a plugin reload or host restart between
7
+ * the two loses it and every post-restart foreground settlement arrives
8
+ * `unbound` and is dropped fail-closed (issue #2817). This store is the
9
+ * durable twin: `rememberStageBDispatchGenerations` persists the binding at
10
+ * dispatch, and the settlement path reconstructs it lazily — feeding the
11
+ * EXISTING `expectedGeneration` fence (`transitionTaskWorkflowEvidence`), so
12
+ * a stale binding dies on `TASK_WORKFLOW_GENERATION_MISMATCH` exactly as an
13
+ * in-process stale one would (AGENTS.md invariant 9: never the reverse).
14
+ *
15
+ * Layout: `.swarm/stage-b-dispatch-bindings/<sha256(sessionID).slice(0,24)>/
16
+ * <callID>.json` — the scope-persistence path convention (hashed owner,
17
+ * scope-persistence.ts:327-330); the raw sessionID never touches the path.
18
+ * Writes are `atomicWriteSwarmFileSync` (temp-then-rename; a crash leaves
19
+ * either the old complete record or no new one — the crash-window rule).
20
+ * Reads are fail-closed: ANY anomaly (missing, oversized, unparsable,
21
+ * wrong-version, wrong identity, TTL-stale) yields `null`, which keeps
22
+ * today's unbound drop. No lockfile: single writer per (sessionID, callID),
23
+ * and last-write-wins is the correct semantics (a re-dispatch under the same
24
+ * callID replaces the binding).
25
+ */
26
+ export declare const STAGE_B_BINDING_SCHEMA_VERSION = 1;
27
+ export declare const STAGE_B_BINDINGS_DIR = "stage-b-dispatch-bindings";
28
+ /** Mirrors the in-memory per-callID cap (delegation-gate.ts MAX_PENDING_CODER_CHANGE_CONTEXTS). */
29
+ export declare const MAX_STAGE_B_BINDING_FILES_PER_SESSION_DIR = 128;
30
+ /** Independently bounded session-dir ceiling: 128 × 128 × ~256 B ≈ 4 MB worst case. */
31
+ export declare const MAX_STAGE_B_BINDING_SESSION_DIRS = 128;
32
+ export declare const STAGE_B_BINDING_MAX_BYTES: number;
33
+ export declare const STAGE_B_BINDING_TTL_MS: number;
34
+ /** Cross-session sweep cadence: the per-write cost stays bounded to the owning session dir. */
35
+ export declare const STAGE_B_BINDING_SWEEP_INTERVAL_MS = 60000;
36
+ /**
37
+ * Explicit bound for the process-global sweep throttle (AGENTS.md invariant
38
+ * 8): one timestamp per distinct project root, FIFO-evicted past this many —
39
+ * realistic processes see a handful of roots, but the cap must be explicit.
40
+ */
41
+ export declare const MAX_STAGE_B_SWEEP_THROTTLE_ROOTS = 32;
42
+ export interface StageBDispatchBinding {
43
+ taskId: string;
44
+ generation: number;
45
+ }
46
+ interface PersistedStageBBindings {
47
+ schemaVersion: number;
48
+ sessionID: string;
49
+ callID: string;
50
+ recordedAt: number;
51
+ bindings: StageBDispatchBinding[];
52
+ }
53
+ /** Path safety never depends on the raw sessionID (the path is always the hash); this rejects pathological inputs only. */
54
+ export declare function isRecordableSessionId(sessionID: string | undefined | null): sessionID is string;
55
+ /** Single safe path segment only (final-critic round-1 finding 1): a callID containing a separator would nest directories that escape both the cap and TTL pruning — reject it outright, exactly like a non-recordable sessionID. */
56
+ export declare function isRecordableCallId(callID: string | undefined | null): callID is string;
57
+ /**
58
+ * Public single source of the per-session directory name (PR review finding:
59
+ * reset paths hand-rolled this derivation — any drift would silently purge the
60
+ * wrong subtree). `_internals.sessionDirName` aliases this for tests.
61
+ */
62
+ export declare function stageBSessionDirName(sessionID: string): string;
63
+ declare function recordPath(directory: string, sessionID: string, callID: string): string;
64
+ /**
65
+ * Persist the binding durably at dispatch time. NON-FATAL by design: the
66
+ * in-memory map remains the primary fence; the durable twin only ADDS restart
67
+ * recovery, so a transient fs failure degrades to today's behavior (logged,
68
+ * debug-gated) instead of failing a working dispatch. `nowMs` is injectable
69
+ * for tests.
70
+ */
71
+ export declare function recordStageBDispatchBindings(directory: string, entry: {
72
+ sessionID: string;
73
+ callID: string;
74
+ bindings: ReadonlyArray<StageBDispatchBinding>;
75
+ }, options?: {
76
+ nowMs?: () => number;
77
+ forceSweep?: boolean;
78
+ }): boolean;
79
+ /**
80
+ * Validated read for the settlement path. Returns the record ONLY when every
81
+ * check passes (version, identity, size, parse, TTL); any anomaly → null
82
+ * (fail-closed to today's unbound drop — a partially-written record never
83
+ * validates). The per-task lookup mirrors the in-memory shape:
84
+ * `record.bindings.find((b) => b.taskId === taskId)?.generation`; a malformed
85
+ * per-task entry is not-present for that task without invalidating the rest.
86
+ */
87
+ export declare function readStageBDispatchBindings(directory: string, sessionID: string, callID: string, options?: {
88
+ nowMs?: () => number;
89
+ }): PersistedStageBBindings | null;
90
+ /** Settlement/cleanup eviction: unlink the record; missing is a no-op. */
91
+ export declare function deleteStageBDispatchBindings(directory: string, sessionID: string, callID: string): void;
92
+ /**
93
+ * Bound the store: per-session-dir file cap (mirrors the in-memory callID
94
+ * cap) + cross-session-dir cap (LRU by newest record) + TTL staleness.
95
+ * Called opportunistically after each record; never throws into the caller.
96
+ */
97
+ /**
98
+ * Cross-session sweep: TTL prune every session dir + the 128-dir LRU
99
+ * ceiling. Throttled to STAGE_B_BINDING_SWEEP_INTERVAL_MS per process
100
+ * (review finding 3: the per-dispatch path stays bounded to the owning
101
+ * session's directory). Never throws into the caller.
102
+ */
103
+ export declare function pruneStore(directory: string, nowMs: number): void;
104
+ /** TTL + per-session file-cap prune of ONE session directory (the per-write path). */
105
+ export declare function pruneSessionDir(directory: string, sessionID: string, nowMs: number): {
106
+ dirPath: string;
107
+ newest: number;
108
+ } | null;
109
+ export declare const _internals: {
110
+ recordPath: typeof recordPath;
111
+ sessionDirName: typeof stageBSessionDirName;
112
+ pruneStore: typeof pruneStore;
113
+ pruneSessionDir: typeof pruneSessionDir;
114
+ };
115
+ export {};
@@ -1,27 +1,27 @@
1
1
  // @bun
2
- import"./index-bktc2g9n.js";
2
+ import"./index-7jt24hpz.js";
3
3
  import"./index-frcemc0b.js";
4
4
  import"./index-0725jpp7.js";
5
5
  import {
6
6
  appendCoreEventSync
7
- } from "./index-7rzgdcvc.js";
7
+ } from "./index-373880cv.js";
8
8
  import {
9
9
  derivePlanIdentityHash
10
10
  } from "./index-7pmbnjvj.js";
11
- import"./index-yx5z4200.js";
11
+ import"./index-xgdypzch.js";
12
12
  import"./index-w6w6ny06.js";
13
13
  import"./index-mc72pk74.js";
14
14
  import"./index-c1ggtmpm.js";
15
- import"./index-bntwj2tp.js";
15
+ import"./index-yj7etak0.js";
16
16
  import"./index-gx2vp8gx.js";
17
17
  import {
18
18
  loadPluginConfigWithMeta
19
- } from "./index-kxacpqwf.js";
19
+ } from "./index-ekyg4p8b.js";
20
20
  import {
21
21
  init_git_executable,
22
22
  resolveGitExecutable
23
23
  } from "./index-zxdawwc7.js";
24
- import"./index-0pvvktht.js";
24
+ import"./index-rr1dggfe.js";
25
25
  import"./index-48jvqqfa.js";
26
26
  import"./index-bk5tah7q.js";
27
27
  import"./index-gknz3bv1.js";
@@ -153,7 +153,7 @@ async function maybeSaveAutoCheckpoint(directory, plan) {
153
153
  generation += 1;
154
154
  label = buildAutoCheckpointLabel(plan, completedCount, generation);
155
155
  }
156
- const { saveCheckpointRecord } = await import("./checkpoint-zjtcn0tx.js");
156
+ const { saveCheckpointRecord } = await import("./checkpoint-qm05wdbh.js");
157
157
  const result = await saveCheckpointRecord(label, directory);
158
158
  if (result.success) {
159
159
  emitAutoSavedEvent(directory, {
@@ -3,27 +3,27 @@ import {
3
3
  _internals,
4
4
  checkpoint,
5
5
  saveCheckpointRecord
6
- } from "./index-hx4jkj05.js";
7
- import"./index-gx03v1y5.js";
6
+ } from "./index-nhw5rt5x.js";
7
+ import"./index-pppjg0ct.js";
8
8
  import"./index-6b295cas.js";
9
9
  import"./index-9nyqt3kb.js";
10
- import"./index-denfahc5.js";
10
+ import"./index-2b3bgm20.js";
11
11
  import"./index-zsrtt42s.js";
12
- import"./index-50q314wd.js";
12
+ import"./index-zt3taseq.js";
13
13
  import"./index-g4fs6z4e.js";
14
- import"./index-dftztz4y.js";
14
+ import"./index-afmyp3kt.js";
15
15
  import"./index-2s7dvzff.js";
16
- import"./index-bktc2g9n.js";
16
+ import"./index-7jt24hpz.js";
17
17
  import"./index-frcemc0b.js";
18
18
  import"./index-0725jpp7.js";
19
- import"./index-a7y29h92.js";
20
- import"./index-7rzgdcvc.js";
21
- import"./index-cftva3pa.js";
22
- import"./index-pwcbtbhd.js";
19
+ import"./index-dryhmaft.js";
20
+ import"./index-373880cv.js";
21
+ import"./index-nen885g8.js";
22
+ import"./index-74yxwf8y.js";
23
23
  import"./index-ry16d01s.js";
24
24
  import"./index-rdm3px0g.js";
25
25
  import"./index-7pmbnjvj.js";
26
- import"./index-yx5z4200.js";
26
+ import"./index-xgdypzch.js";
27
27
  import"./index-6cjpmvpa.js";
28
28
  import"./index-t7hmqgjy.js";
29
29
  import"./index-w6w6ny06.js";
@@ -31,11 +31,11 @@ import"./index-mc72pk74.js";
31
31
  import"./index-c1ggtmpm.js";
32
32
  import"./index-ejhxgyvm.js";
33
33
  import"./index-7g4c7s5r.js";
34
- import"./index-bntwj2tp.js";
34
+ import"./index-yj7etak0.js";
35
35
  import"./index-gx2vp8gx.js";
36
- import"./index-kxacpqwf.js";
36
+ import"./index-ekyg4p8b.js";
37
37
  import"./index-zxdawwc7.js";
38
- import"./index-0pvvktht.js";
38
+ import"./index-rr1dggfe.js";
39
39
  import"./index-48jvqqfa.js";
40
40
  import"./index-bk5tah7q.js";
41
41
  import"./index-gknz3bv1.js";
@@ -14,17 +14,17 @@ import {
14
14
  releaseCoderDispatchOwnership,
15
15
  settleCoderDispatch,
16
16
  transferCoderSettlementToBackground
17
- } from "./index-naxrpyb0.js";
18
- import"./index-m1pqenq9.js";
19
- import"./index-yydv4jfy.js";
20
- import"./index-m8342y3n.js";
21
- import"./index-7n1pfpnj.js";
17
+ } from "./index-ek5gvpvm.js";
18
+ import"./index-s68z4a39.js";
19
+ import"./index-vqz0avr4.js";
20
+ import"./index-cnbpht7m.js";
21
+ import"./index-2c6e1p7j.js";
22
22
  import"./index-g4fs6z4e.js";
23
- import"./index-dftztz4y.js";
23
+ import"./index-afmyp3kt.js";
24
24
  import"./index-2s7dvzff.js";
25
- import"./index-7rzgdcvc.js";
26
- import"./index-yx5z4200.js";
27
- import"./index-2y9b45jj.js";
25
+ import"./index-373880cv.js";
26
+ import"./index-xgdypzch.js";
27
+ import"./index-6sffjy74.js";
28
28
  import"./index-6cjpmvpa.js";
29
29
  import"./index-t7hmqgjy.js";
30
30
  import"./index-w6w6ny06.js";
@@ -32,7 +32,7 @@ import"./index-mc72pk74.js";
32
32
  import"./index-c1ggtmpm.js";
33
33
  import"./index-ejhxgyvm.js";
34
34
  import"./index-7g4c7s5r.js";
35
- import"./index-bntwj2tp.js";
35
+ import"./index-yj7etak0.js";
36
36
  import"./index-zxdawwc7.js";
37
37
  import"./index-48jvqqfa.js";
38
38
  import"./index-gknz3bv1.js";
@@ -16,11 +16,11 @@ import {
16
16
  shouldRunOnStartup,
17
17
  writeBackupArtifact,
18
18
  writeDoctorArtifact
19
- } from "./index-wxr5me67.js";
19
+ } from "./index-9h93zjm3.js";
20
20
  import"./index-6b295cas.js";
21
21
  import"./index-ry16d01s.js";
22
22
  import"./index-c1ggtmpm.js";
23
- import"./index-0pvvktht.js";
23
+ import"./index-rr1dggfe.js";
24
24
  import"./index-48jvqqfa.js";
25
25
  import"./index-bk5tah7q.js";
26
26
  import"./index-gknz3bv1.js";
@@ -14,12 +14,12 @@ import {
14
14
  resolveWorktreeBaseDir,
15
15
  shortenWorktreePath,
16
16
  writeLaneProfileToDiskReal
17
- } from "./index-7n1pfpnj.js";
18
- import"./index-dftztz4y.js";
17
+ } from "./index-2c6e1p7j.js";
18
+ import"./index-afmyp3kt.js";
19
19
  import"./index-2s7dvzff.js";
20
20
  import"./index-mc72pk74.js";
21
21
  import"./index-c1ggtmpm.js";
22
- import"./index-bntwj2tp.js";
22
+ import"./index-yj7etak0.js";
23
23
  import"./index-zxdawwc7.js";
24
24
  import"./index-48jvqqfa.js";
25
25
  import"./index-zpsr8rpc.js";
@@ -5,11 +5,11 @@ import {
5
5
  authorizeCuration,
6
6
  buildConfigFingerprintInput,
7
7
  readCohortConfigFingerprint
8
- } from "./index-fxf3zhtq.js";
8
+ } from "./index-8nsjefpc.js";
9
9
  import"./index-rtry5xyf.js";
10
10
  import"./index-vzm6zre7.js";
11
- import"./index-4g4sr4ah.js";
12
- import"./index-2y9b45jj.js";
11
+ import"./index-zxck9sr7.js";
12
+ import"./index-6sffjy74.js";
13
13
  import"./index-6cjpmvpa.js";
14
14
  import"./index-t7hmqgjy.js";
15
15
  import"./index-w6w6ny06.js";
@@ -17,7 +17,7 @@ import"./index-mc72pk74.js";
17
17
  import"./index-c1ggtmpm.js";
18
18
  import"./index-ejhxgyvm.js";
19
19
  import"./index-7g4c7s5r.js";
20
- import"./index-bntwj2tp.js";
20
+ import"./index-yj7etak0.js";
21
21
  import"./index-gknz3bv1.js";
22
22
  import"./index-zpsr8rpc.js";
23
23
  import"./index-zgwm4ryv.js";
@@ -14,61 +14,61 @@ import {
14
14
  runCuratorInit,
15
15
  runCuratorPhase,
16
16
  writeCuratorSummary
17
- } from "./index-pak3x772.js";
18
- import"./index-dky6qwrk.js";
19
- import"./index-wxr5me67.js";
20
- import"./index-4v60grax.js";
17
+ } from "./index-hgfkcb1q.js";
18
+ import"./index-ss6b8jpz.js";
19
+ import"./index-9h93zjm3.js";
20
+ import"./index-pa6fzbms.js";
21
21
  import"./index-7bxssqaf.js";
22
- import"./index-mfqge140.js";
23
- import"./index-jtg0zsnx.js";
22
+ import"./index-1fc5aj26.js";
23
+ import"./index-62akgg9d.js";
24
24
  import"./index-txdagbh7.js";
25
- import"./index-pef8ay7c.js";
25
+ import"./index-smwybqka.js";
26
26
  import"./index-rdec0y3z.js";
27
- import"./index-ww747mdg.js";
28
- import"./index-naxrpyb0.js";
29
- import"./index-e708d35g.js";
30
- import"./index-y0534tfs.js";
31
- import"./index-m1pqenq9.js";
32
- import"./index-tyzmjw2s.js";
27
+ import"./index-s7va6n84.js";
28
+ import"./index-ek5gvpvm.js";
29
+ import"./index-dz5cbkrm.js";
30
+ import"./index-5n08z6qj.js";
31
+ import"./index-s68z4a39.js";
32
+ import"./index-cp2nerjd.js";
33
33
  import"./index-cjapb4hy.js";
34
- import"./index-yydv4jfy.js";
34
+ import"./index-vqz0avr4.js";
35
35
  import"./index-pt7h91zc.js";
36
36
  import"./index-q7sjgr1y.js";
37
- import"./index-hx4jkj05.js";
38
- import"./index-gx03v1y5.js";
37
+ import"./index-nhw5rt5x.js";
38
+ import"./index-pppjg0ct.js";
39
39
  import"./index-6b295cas.js";
40
40
  import"./index-9nyqt3kb.js";
41
- import"./index-denfahc5.js";
41
+ import"./index-2b3bgm20.js";
42
42
  import"./index-zsrtt42s.js";
43
- import"./index-50q314wd.js";
44
- import"./index-m8342y3n.js";
45
- import"./index-7n1pfpnj.js";
43
+ import"./index-zt3taseq.js";
44
+ import"./index-cnbpht7m.js";
45
+ import"./index-2c6e1p7j.js";
46
46
  import"./index-g4fs6z4e.js";
47
- import"./index-cyn2cb6k.js";
48
- import"./index-48we80k1.js";
49
- import"./index-dftztz4y.js";
47
+ import"./index-nw16apxs.js";
48
+ import"./index-ppj5bjaq.js";
49
+ import"./index-afmyp3kt.js";
50
50
  import"./index-2s7dvzff.js";
51
- import"./index-0zjg4kt5.js";
52
- import"./index-fxf3zhtq.js";
51
+ import"./index-ycqsnfd1.js";
52
+ import"./index-8nsjefpc.js";
53
53
  import"./index-rtry5xyf.js";
54
- import"./index-bktc2g9n.js";
54
+ import"./index-7jt24hpz.js";
55
55
  import"./index-frcemc0b.js";
56
56
  import"./index-0725jpp7.js";
57
- import"./index-sfsydeh8.js";
58
- import"./index-a7y29h92.js";
59
- import"./index-7rzgdcvc.js";
60
- import"./index-7r3pkgma.js";
61
- import"./index-cftva3pa.js";
62
- import"./index-pwcbtbhd.js";
57
+ import"./index-6wqv8f7d.js";
58
+ import"./index-dryhmaft.js";
59
+ import"./index-373880cv.js";
60
+ import"./index-9g61bfj9.js";
61
+ import"./index-nen885g8.js";
62
+ import"./index-74yxwf8y.js";
63
63
  import"./index-ry16d01s.js";
64
64
  import"./index-rdm3px0g.js";
65
65
  import"./index-7pmbnjvj.js";
66
- import"./index-yx5z4200.js";
67
- import"./index-y8gxcmnj.js";
66
+ import"./index-xgdypzch.js";
67
+ import"./index-7n3h39h9.js";
68
68
  import"./index-vzm6zre7.js";
69
69
  import"./index-ae75rja9.js";
70
- import"./index-4g4sr4ah.js";
71
- import"./index-2y9b45jj.js";
70
+ import"./index-zxck9sr7.js";
71
+ import"./index-6sffjy74.js";
72
72
  import"./index-6cjpmvpa.js";
73
73
  import"./index-t7hmqgjy.js";
74
74
  import"./index-w6w6ny06.js";
@@ -76,11 +76,11 @@ import"./index-mc72pk74.js";
76
76
  import"./index-c1ggtmpm.js";
77
77
  import"./index-ejhxgyvm.js";
78
78
  import"./index-7g4c7s5r.js";
79
- import"./index-bntwj2tp.js";
79
+ import"./index-yj7etak0.js";
80
80
  import"./index-gx2vp8gx.js";
81
- import"./index-kxacpqwf.js";
81
+ import"./index-ekyg4p8b.js";
82
82
  import"./index-zxdawwc7.js";
83
- import"./index-0pvvktht.js";
83
+ import"./index-rr1dggfe.js";
84
84
  import"./index-48jvqqfa.js";
85
85
  import"./index-bk5tah7q.js";
86
86
  import"./index-gknz3bv1.js";
@@ -5,23 +5,23 @@ import {
5
5
  readPriorDriftReports,
6
6
  runDeterministicDriftCheck,
7
7
  writeDriftReport
8
- } from "./index-ww747mdg.js";
9
- import"./index-denfahc5.js";
10
- import"./index-50q314wd.js";
11
- import"./index-dftztz4y.js";
8
+ } from "./index-s7va6n84.js";
9
+ import"./index-2b3bgm20.js";
10
+ import"./index-zt3taseq.js";
11
+ import"./index-afmyp3kt.js";
12
12
  import"./index-2s7dvzff.js";
13
13
  import"./index-0725jpp7.js";
14
- import"./index-pwcbtbhd.js";
14
+ import"./index-74yxwf8y.js";
15
15
  import"./index-ry16d01s.js";
16
16
  import"./index-rdm3px0g.js";
17
17
  import"./index-mc72pk74.js";
18
18
  import"./index-c1ggtmpm.js";
19
19
  import"./index-ejhxgyvm.js";
20
20
  import"./index-7g4c7s5r.js";
21
- import"./index-bntwj2tp.js";
22
- import"./index-kxacpqwf.js";
21
+ import"./index-yj7etak0.js";
22
+ import"./index-ekyg4p8b.js";
23
23
  import"./index-zxdawwc7.js";
24
- import"./index-0pvvktht.js";
24
+ import"./index-rr1dggfe.js";
25
25
  import"./index-48jvqqfa.js";
26
26
  import"./index-bk5tah7q.js";
27
27
  import"./index-gknz3bv1.js";
@@ -0,0 +1,81 @@
1
+ // @bun
2
+ import {
3
+ createCuratorLLMDelegate
4
+ } from "./index-hgfkcb1q.js";
5
+ import"./index-ss6b8jpz.js";
6
+ import"./index-9h93zjm3.js";
7
+ import"./index-pa6fzbms.js";
8
+ import"./index-7bxssqaf.js";
9
+ import"./index-1fc5aj26.js";
10
+ import"./index-62akgg9d.js";
11
+ import"./index-txdagbh7.js";
12
+ import"./index-smwybqka.js";
13
+ import"./index-rdec0y3z.js";
14
+ import"./index-s7va6n84.js";
15
+ import"./index-ek5gvpvm.js";
16
+ import"./index-dz5cbkrm.js";
17
+ import"./index-5n08z6qj.js";
18
+ import"./index-s68z4a39.js";
19
+ import"./index-cp2nerjd.js";
20
+ import"./index-cjapb4hy.js";
21
+ import"./index-vqz0avr4.js";
22
+ import"./index-pt7h91zc.js";
23
+ import"./index-q7sjgr1y.js";
24
+ import"./index-nhw5rt5x.js";
25
+ import"./index-pppjg0ct.js";
26
+ import"./index-6b295cas.js";
27
+ import"./index-9nyqt3kb.js";
28
+ import"./index-2b3bgm20.js";
29
+ import"./index-zsrtt42s.js";
30
+ import"./index-zt3taseq.js";
31
+ import"./index-cnbpht7m.js";
32
+ import"./index-2c6e1p7j.js";
33
+ import"./index-g4fs6z4e.js";
34
+ import"./index-nw16apxs.js";
35
+ import"./index-ppj5bjaq.js";
36
+ import"./index-afmyp3kt.js";
37
+ import"./index-2s7dvzff.js";
38
+ import"./index-ycqsnfd1.js";
39
+ import"./index-8nsjefpc.js";
40
+ import"./index-rtry5xyf.js";
41
+ import"./index-7jt24hpz.js";
42
+ import"./index-frcemc0b.js";
43
+ import"./index-0725jpp7.js";
44
+ import"./index-6wqv8f7d.js";
45
+ import"./index-dryhmaft.js";
46
+ import"./index-373880cv.js";
47
+ import"./index-9g61bfj9.js";
48
+ import"./index-nen885g8.js";
49
+ import"./index-74yxwf8y.js";
50
+ import"./index-ry16d01s.js";
51
+ import"./index-rdm3px0g.js";
52
+ import"./index-7pmbnjvj.js";
53
+ import"./index-xgdypzch.js";
54
+ import"./index-7n3h39h9.js";
55
+ import"./index-vzm6zre7.js";
56
+ import"./index-ae75rja9.js";
57
+ import"./index-zxck9sr7.js";
58
+ import"./index-6sffjy74.js";
59
+ import"./index-6cjpmvpa.js";
60
+ import"./index-t7hmqgjy.js";
61
+ import"./index-w6w6ny06.js";
62
+ import"./index-mc72pk74.js";
63
+ import"./index-c1ggtmpm.js";
64
+ import"./index-ejhxgyvm.js";
65
+ import"./index-7g4c7s5r.js";
66
+ import"./index-yj7etak0.js";
67
+ import"./index-gx2vp8gx.js";
68
+ import"./index-ekyg4p8b.js";
69
+ import"./index-zxdawwc7.js";
70
+ import"./index-rr1dggfe.js";
71
+ import"./index-48jvqqfa.js";
72
+ import"./index-bk5tah7q.js";
73
+ import"./index-gknz3bv1.js";
74
+ import"./index-zpsr8rpc.js";
75
+ import"./index-wvghb3x6.js";
76
+ import"./index-9rwhas09.js";
77
+ import"./index-zgwm4ryv.js";
78
+ import"./index-a76rekgs.js";
79
+ export {
80
+ createCuratorLLMDelegate
81
+ };