opencode-swarm 7.200.9 → 7.200.10

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 (113) hide show
  1. package/.opencode/skills/ci-fix-monitor/SKILL.md +49 -0
  2. package/.opencode/skills/swarm-pr-review/references/lane-output-recoverability.md +11 -2
  3. package/binaries/win32-arm64/swarm-sandbox-runner.exe +0 -0
  4. package/binaries/win32-x64/swarm-sandbox-runner.exe +0 -0
  5. package/dist/background/completion-observer.d.ts +2 -1
  6. package/dist/background/pending-delegations.d.ts +9 -1
  7. package/dist/background/pr-review-contract.d.ts +8 -0
  8. package/dist/cli/{attest-task-79gp34gf.js → attest-task-yx2t832n.js} +78 -76
  9. package/dist/cli/{auto-checkpoint-kt9mr7ma.js → auto-checkpoint-15mvj9zm.js} +12 -12
  10. package/dist/cli/{capability-probe-dwqn2609.js → capability-probe-qjndmx6z.js} +1 -1
  11. package/dist/cli/{checkpoint-e7t1zbz2.js → checkpoint-65whgvwa.js} +23 -23
  12. package/dist/cli/{coder-settlement-rehndcey.js → coder-settlement-sdg1he8p.js} +14 -13
  13. package/dist/cli/{config-doctor-hcemxnra.js → config-doctor-4af2p2y4.js} +19 -19
  14. package/dist/cli/{core-k8mvhsty.js → core-8swqc6kw.js} +6 -3
  15. package/dist/cli/{curation-policy-gy868ec3.js → curation-policy-1a23ftnv.js} +6 -6
  16. package/dist/cli/{curator-ayenbz0y.js → curator-6ze04fz3.js} +53 -52
  17. package/dist/cli/{curator-drift-fwzrv9tw.js → curator-drift-ktf137da.js} +10 -10
  18. package/dist/cli/curator-llm-factory-7vq4rgg7.js +83 -0
  19. package/dist/cli/{doctor-knowledge-receipt-phase-id-jdy6651j.js → doctor-knowledge-receipt-phase-id-0smwq3ar.js} +10 -10
  20. package/dist/cli/{evidence-summary-service-4jm1hd1r.js → evidence-summary-service-3bhq2gef.js} +26 -25
  21. package/dist/cli/{gate-evidence-anef2bqv.js → gate-evidence-gcv0xgfc.js} +10 -9
  22. package/dist/cli/guardrail-explain-9t3mvm92.js +84 -0
  23. package/dist/cli/{guardrail-log-pv3bq9hj.js → guardrail-log-ehgpan5n.js} +8 -8
  24. package/dist/cli/{guardrail-reset-k8b9yrec.js → guardrail-reset-q7m265wy.js} +53 -52
  25. package/dist/cli/{hive-promoter-zqscx6pb.js → hive-promoter-857ranjf.js} +53 -52
  26. package/dist/cli/{index-4krkevgc.js → index-001tkp0j.js} +1 -1
  27. package/dist/cli/{index-y16v2q1x.js → index-06sj5bjh.js} +5 -5
  28. package/dist/cli/{index-hh87yny7.js → index-2dey2mtg.js} +6 -6
  29. package/dist/cli/{index-9ws7m02r.js → index-3h5ztpn5.js} +2 -2
  30. package/dist/cli/{index-7c4gckzq.js → index-43zgg04r.js} +5 -5
  31. package/dist/cli/{index-casbh4y7.js → index-4dvqvn4k.js} +12905 -12414
  32. package/dist/cli/{index-6q2s7r67.js → index-60m7qnds.js} +8 -8
  33. package/dist/cli/{index-zy943kpp.js → index-66b4f2qd.js} +18 -13
  34. package/dist/cli/{index-c2k7q723.js → index-6cppzd9c.js} +1 -1
  35. package/dist/cli/{index-tvdn9gr0.js → index-6e7jxxys.js} +15 -15
  36. package/dist/cli/{index-ss8nfrbb.js → index-6ehx0pj4.js} +15 -15
  37. package/dist/cli/{index-yyrnkc3a.js → index-6m551cng.js} +2 -2
  38. package/dist/cli/{index-4fr3r8k5.js → index-8c6zshfj.js} +1 -1
  39. package/dist/cli/{index-8srvdpw6.js → index-8xtdxy91.js} +2 -2
  40. package/dist/cli/{index-mn75z39t.js → index-9qy3tzt5.js} +1 -1
  41. package/dist/cli/{index-x3rxa3sh.js → index-bt3pxs7r.js} +6 -6
  42. package/dist/cli/{index-4tpzdegx.js → index-c34tgnwm.js} +7 -7
  43. package/dist/cli/{index-y7c4hqcj.js → index-ck7jpn0y.js} +1 -1
  44. package/dist/cli/{index-p2dst45x.js → index-ckq78kq1.js} +1 -1
  45. package/dist/cli/{index-8mrentmw.js → index-dp6hy23p.js} +58 -53
  46. package/dist/cli/{index-4fkxdnc7.js → index-erp7fk72.js} +1 -1
  47. package/dist/cli/{index-2c4hjeea.js → index-ev46f132.js} +8 -8
  48. package/dist/cli/{index-hhq5f82z.js → index-fbn2mv67.js} +6 -6
  49. package/dist/cli/{index-qawbxp81.js → index-ffm3d4cn.js} +17 -17
  50. package/dist/cli/{index-f8nb470m.js → index-gsnj3a0h.js} +4 -4
  51. package/dist/cli/{index-hzy6n59p.js → index-h9qhy8r6.js} +6 -6
  52. package/dist/cli/{index-tecp3a77.js → index-kd1n3ne2.js} +9 -9
  53. package/dist/cli/{index-qw2wfz92.js → index-kxxy7zq4.js} +18 -20
  54. package/dist/cli/{index-czsx86m5.js → index-mamw83wm.js} +53 -52
  55. package/dist/cli/{index-2k5348b6.js → index-mx34b7bm.js} +58 -57
  56. package/dist/cli/{index-94s844qn.js → index-nv8tx9v4.js} +4 -4
  57. package/dist/cli/{index-q8vfw61p.js → index-pjrx4jkq.js} +1 -1
  58. package/dist/cli/{index-mhd6kdzr.js → index-qyj4383m.js} +1 -1
  59. package/dist/cli/{index-4ya4krts.js → index-r3wyt8za.js} +611 -1376
  60. package/dist/cli/{index-2x015vjy.js → index-rck7v4r4.js} +1 -1
  61. package/dist/cli/{index-vtpt8yns.js → index-rjsqf4hv.js} +2 -2
  62. package/dist/cli/{index-9jty56xr.js → index-rnm6c33a.js} +5 -5
  63. package/dist/cli/{index-bk8r4m9j.js → index-rpvp88js.js} +2 -2
  64. package/dist/cli/{index-v839c9mv.js → index-tggyracy.js} +1 -1
  65. package/dist/cli/{index-kxp43wbw.js → index-tm6nwe43.js} +29 -29
  66. package/dist/cli/{index-xhxbv7mz.js → index-vajbtn3v.js} +11 -11
  67. package/dist/cli/{index-rdyfrdcp.js → index-vm3j8fvn.js} +201 -33
  68. package/dist/cli/{index-08jd4gz2.js → index-vqknke9n.js} +121 -40
  69. package/dist/cli/{index-4ph7ad0b.js → index-vx1j2t5p.js} +2 -2
  70. package/dist/cli/{index-7h22y3ew.js → index-w0afnznk.js} +2 -2
  71. package/dist/cli/{index-02vgzrpg.js → index-ww5ne0g6.js} +7 -7
  72. package/dist/cli/index-xkavxqf2.js +1330 -0
  73. package/dist/cli/{index-xh50xsgf.js → index-ywwazz81.js} +8 -8
  74. package/dist/cli/{index-6901y99d.js → index-zmp1k0mb.js} +2 -2
  75. package/dist/cli/index.js +57 -56
  76. package/dist/cli/{knowledge-escalator-m4b4q218.js → knowledge-escalator-6p7m6gkc.js} +18 -18
  77. package/dist/cli/{knowledge-events-wwg0cc7m.js → knowledge-events-w3ep12sq.js} +15 -15
  78. package/dist/cli/{knowledge-link-13t3nfrz.js → knowledge-link-r7e2t5c1.js} +5 -5
  79. package/dist/cli/{knowledge-store-07fwtdzy.js → knowledge-store-g4cpw0hz.js} +7 -7
  80. package/dist/cli/{knowledge-validator-8492vmn3.js → knowledge-validator-zhy6mgxv.js} +9 -9
  81. package/dist/cli/{mcp-b1wyrebx.js → mcp-j1dy60mx.js} +1 -1
  82. package/dist/cli/{model-preflight-315wr8nt.js → model-preflight-962y2z1d.js} +56 -55
  83. package/dist/cli/{pending-delegations-tpa7wpny.js → pending-delegations-erjwa1y6.js} +14 -14
  84. package/dist/cli/{pr-subscriptions-ev2bkbrz.js → pr-subscriptions-7fcawjg9.js} +13 -13
  85. package/dist/cli/{pr-workflow-gate-3cg64r61.js → pr-workflow-gate-j8ee9c6g.js} +53 -52
  86. package/dist/cli/{runner-q1g9atrv.js → runner-s4422dq4.js} +6 -6
  87. package/dist/cli/{scan-cursor-3pfx6mbh.js → scan-cursor-msz8j44s.js} +8 -8
  88. package/dist/cli/{schema-km0fywpx.js → schema-kep9t01t.js} +2 -2
  89. package/dist/cli/{scope-persistence-xctbs0aj.js → scope-persistence-tx71g0ac.js} +18 -18
  90. package/dist/cli/{server-d1mcxa8s.js → server-6enk6sfw.js} +70 -69
  91. package/dist/cli/{skill-generator-tce30v8g.js → skill-generator-p9fkx1g3.js} +20 -20
  92. package/dist/cli/{snapshot-coordination-init-t7vfaqhw.js → snapshot-coordination-init-kgftbdmq.js} +53 -52
  93. package/dist/cli/{speckit-checkoff-tcn1dqt0.js → speckit-checkoff-jfdwsy5n.js} +5 -5
  94. package/dist/cli/{telemetry-cr8q16wk.js → telemetry-j7zr1dht.js} +1 -1
  95. package/dist/cli/workflow-wal-file-xvvwcxr1.js +32 -0
  96. package/dist/cli/{workspace-snapshot-7hws89e9.js → workspace-snapshot-ksdspd74.js} +3 -3
  97. package/dist/cli/{worktree-collision-ownership-5jb0p5aa.js → worktree-collision-ownership-hac3t2xv.js} +15 -15
  98. package/dist/cli/{worktree-isolation-cxg8fgba.js → worktree-isolation-tjvxcsr9.js} +53 -52
  99. package/dist/hooks/delegation-gate/worktree-isolation.d.ts +3 -0
  100. package/dist/hooks/shell-write-detect.d.ts +10 -0
  101. package/dist/index.js +686 -684
  102. package/dist/memory/redaction.d.ts +13 -3
  103. package/dist/pr-review/legacy-transcript-adapter.d.ts +15 -4
  104. package/dist/sandbox/macos/sandbox-exec-executor.d.ts +24 -0
  105. package/dist/workflow/coder-settlement.d.ts +5 -0
  106. package/dist/worktree/core.d.ts +3 -0
  107. package/dist/worktree/merge.d.ts +15 -1
  108. package/dist/worktree/ownership.d.ts +3 -0
  109. package/dist/worktree/settlement-artifact-lifecycle.d.ts +32 -0
  110. package/dist/worktree/settlement-source-recovery.d.ts +12 -0
  111. package/package.json +1 -1
  112. package/dist/cli/curator-llm-factory-kja1c81k.js +0 -82
  113. package/dist/cli/guardrail-explain-agaet7r5.js +0 -83
@@ -9,9 +9,13 @@ export interface SecretFinding {
9
9
  * cohort-root open. This is honest about what it measures (the regex pattern
10
10
  * count + the durable-rejection toggles) — it is NOT a content hash of stored
11
11
  * records. Bump the salt constant when the redaction contract changes
12
- * meaningfully (done for #1466: PII detection settings joined the policy).
12
+ * meaningfully (done for #1466: PII detection settings joined the policy;
13
+ * done for #3382: fixed-length credential families match embedded
14
+ * (non-word-boundary) shapes and the AWS-secret arms now run before the bare
15
+ * access-key arm, so durable-secret rejection decisions differ between
16
+ * members on opposite sides of the change).
13
17
  */
14
- export declare const REDACTION_POLICY_SALT = 2;
18
+ export declare const REDACTION_POLICY_SALT = 3;
15
19
  /**
16
20
  * #1466: redaction-policy input. `detectPii`/`rejectDurablePii`/`piiDetector`
17
21
  * are optional so non-memory callers (e.g. the consensus miner, which applies
@@ -49,6 +53,12 @@ export interface MemoryCohortFingerprintInput {
49
53
  * digest for an unchanged input is a version bump so legacy files surface as
50
54
  * "re-run `/swarm memory link`" instead of a false config-mismatch throw.
51
55
  *
56
+ * Version 3 (#3382): again no change to canonicalization, hashing, or
57
+ * truncation — bumped because `redaction_policy_version` changed for
58
+ * unchanged user config (REDACTION_POLICY_SALT 2→3 with the embedded-shape
59
+ * detection and the AWS-secret arm reorder). Same remedy: legacy files
60
+ * surface as "re-run `/swarm memory link`".
61
+ *
52
62
  * BUMP THIS whenever a change would alter the digest for an unchanged input —
53
63
  * e.g. a different hash, a different truncation length, a change to
54
64
  * `stableCanonicalStringify`'s output for a reachable input, or a change to the
@@ -56,7 +66,7 @@ export interface MemoryCohortFingerprintInput {
56
66
  * comparing fingerprints, so a bump surfaces as "re-run `/swarm memory link`"
57
67
  * instead of being misreported as a real provider/embedding config mismatch.
58
68
  */
59
- export declare const FINGERPRINT_ALGORITHM_VERSION = 2;
69
+ export declare const FINGERPRINT_ALGORITHM_VERSION = 3;
60
70
  /**
61
71
  * #2062 F-012 (R3 fix): the algorithm version implied by a persisted cohort
62
72
  * config that has NO `algorithm_version` field. Every file written before the
@@ -241,9 +241,20 @@ export interface IndexedVerdictRows {
241
241
  * grammar noise (typically a Stage-B task row or an echoed format line) —
242
242
  * they carry no authenticable verdict, so they are quarantined out of the
243
243
  * exact-set count instead of voiding every valid sibling row. Identifiers
244
- * and arity only; never row prose. A legal-arity row naming an unassigned
245
- * ID is NOT quarantined — that is the spoofing class and still voids the
246
- * lane.
244
+ * and arity only; never row prose.
245
+ *
246
+ * Issue #3357 (second arm): a row that ARRIVED over its legal arity was
247
+ * tail-merged back to exactly the legal count (`recoveredOverflow`), so
248
+ * the post-parse-arity discriminator above can never see it — the #3310
249
+ * headline root cause survived in exactly that shape. When the caller
250
+ * supplies the assigned-id set, such a recoveredOverflow row whose
251
+ * post-merge id is UNASSIGNED is quarantined on its arrival arity
252
+ * (rawFieldCount) instead of being admitted to `markerRows`: over-arrival
253
+ * is by construction non-format-conformant (a spoofer copying the injected
254
+ * contract card emits exactly the legal arity), so it is grammar noise,
255
+ * not spoofing. The spoofing floor is unchanged: a row that arrived at
256
+ * EXACTLY the legal arity (no tail-merge) naming an unassigned ID is NOT
257
+ * quarantined — that is the spoofing class and still voids the lane.
247
258
  */
248
259
  quarantined: Array<{
249
260
  marker: '[REVIEWED]' | '[CRITIC]';
@@ -251,7 +262,7 @@ export interface IndexedVerdictRows {
251
262
  arity: number;
252
263
  }>;
253
264
  }
254
- export declare function indexVerdictRows(text: string, marker: '[REVIEWED]' | '[CRITIC]'): IndexedVerdictRows;
265
+ export declare function indexVerdictRows(text: string, marker: '[REVIEWED]' | '[CRITIC]', assignedIds?: ReadonlySet<string>): IndexedVerdictRows;
255
266
  export declare function validateReviewerVerdictFields(fields: string[]): string[] | null;
256
267
  /**
257
268
  * Digest of the FULL canonical reviewer row, not the classification/severity
@@ -18,6 +18,29 @@ import { type SandboxExecutor } from '../executor';
18
18
  declare function resolveSandboxExecBinary(): string;
19
19
  /** Resolve the probe's target command: absolute base-OS path, bare-name fallback. */
20
20
  declare function resolveProbeTargetBinary(): string;
21
+ /** The one filesystem call realpathOrSelf needs; injectable for tests. */
22
+ interface ResolveFs {
23
+ realpath(p: string): string;
24
+ }
25
+ /**
26
+ * Return the kernel-resolved form of a path under one of the macOS system
27
+ * links (`/tmp`, `/var`, `/etc` -> `/private/...`) for embedding in an SBPL
28
+ * profile. Seatbelt matches `subpath` predicates against the kernel-resolved
29
+ * path, so the unresolved form of such a path never matches and its allow
30
+ * line is inert.
31
+ *
32
+ * Fail closed by construction: the result is the INPUT STRING with the leading
33
+ * system prefix swapped (`/var/x` -> `/private/var/x`); the filesystem is
34
+ * consulted only to confirm that this host's `/var` really is the link to
35
+ * `/private/var`. No other symlink is ever followed, so a link created inside
36
+ * a project can neither change the result nor widen the profile to its
37
+ * target, and there is no check-then-resolve window to race. Any other path
38
+ * (another prefix, a host where the link is absent, an error) is returned
39
+ * unchanged: an already-resolved path matches as it always did, while a path
40
+ * under some other symlink stays unresolved, Seatbelt does not match it, and
41
+ * its allow line is inert (writes denied, as before).
42
+ */
43
+ declare function realpathOrSelf(p: string, fsx?: ResolveFs): string;
21
44
  /**
22
45
  * Build the SBPL profile used ONLY for availability probing.
23
46
  *
@@ -67,6 +90,7 @@ export declare const _internals: {
67
90
  resetProbeMemo: typeof resetProbeMemo;
68
91
  buildSandboxProfile: typeof buildSandboxProfile;
69
92
  buildProbeProfile: typeof buildProbeProfile;
93
+ realpathOrSelf: typeof realpathOrSelf;
70
94
  buildEnvOverridePrefix: typeof buildEnvOverridePrefix;
71
95
  resolveSandboxExecBinary: typeof resolveSandboxExecBinary;
72
96
  resolveProbeTargetBinary: typeof resolveProbeTargetBinary;
@@ -2,6 +2,8 @@ import type { BackgroundTaskChangeContext, BackgroundWorktreeDescriptor } from '
2
2
  import { type TaskEvidence } from '../gate-evidence.js';
3
3
  import { removeWorktreeProvisioningOwner } from '../hooks/delegation-gate/worktree-provisioning-owner.js';
4
4
  import type { MergeOperationProvenance } from '../worktree/merge.js';
5
+ import { withSettlementArtifactLifecycle } from '../worktree/settlement-artifact-lifecycle.js';
6
+ import { validateSettlementLane } from '../worktree/settlement-source-recovery.js';
5
7
  import type { CoderSettlementWal } from './workflow-wal-schema.js';
6
8
  export interface CoderSettlementResult {
7
9
  evidence: TaskEvidence;
@@ -193,6 +195,8 @@ export declare function recoverStaleCoderSettlements(directory: string, options?
193
195
  }>;
194
196
  export declare const _internals: {
195
197
  liveDispatches: Set<string>;
198
+ withSettlementArtifactLifecycle: typeof withSettlementArtifactLifecycle;
199
+ validateSettlementLane: typeof validateSettlementLane;
196
200
  removeWorktreeProvisioningOwner: typeof removeWorktreeProvisioningOwner;
197
201
  /**
198
202
  * Test seam for the lane-branch existence probe. Production reads it here,
@@ -203,5 +207,6 @@ export declare const _internals: {
203
207
  */
204
208
  branchExists: typeof probeBranchExists;
205
209
  recoverCoderSettlement: typeof recoverCoderSettlement;
210
+ historicalOrphanAdvisoryAt: Map<string, number>;
206
211
  };
207
212
  export {};
@@ -13,6 +13,7 @@ import * as fsPromises from 'node:fs/promises';
13
13
  import { clearLiveLaneOwner } from '../parallel/lane-owners';
14
14
  import { bunSpawn } from '../utils/bun-compat';
15
15
  import { resolveGitExecutable } from '../utils/git-executable.js';
16
+ import { assertSettlementArtifactsRemovable, withSettlementArtifactLifecycle } from './settlement-artifact-lifecycle';
16
17
  import type { WorktreeHandle, WorktreeOptions, WorktreeProvisionResult } from './types';
17
18
  /**
18
19
  * Test-only dependency-injection seam. Production code calls
@@ -23,6 +24,8 @@ import type { WorktreeHandle, WorktreeOptions, WorktreeProvisionResult } from '.
23
24
  * local object is file-scoped and trivially restorable via `afterEach`.
24
25
  */
25
26
  export declare const _internals: {
27
+ withSettlementArtifactLifecycle: typeof withSettlementArtifactLifecycle;
28
+ assertSettlementArtifactsRemovable: typeof assertSettlementArtifactsRemovable;
26
29
  bunSpawn: typeof bunSpawn;
27
30
  /**
28
31
  * Issue #2527 F3: clear the durable live-lane-owner record when this
@@ -11,6 +11,7 @@
11
11
  */
12
12
  import { bunSpawn } from '../utils/bun-compat';
13
13
  import { resolveGitExecutable } from '../utils/git-executable.js';
14
+ import { assertSettlementArtifactsRemovable, withSettlementArtifactLifecycle } from './settlement-artifact-lifecycle';
14
15
  import type { MergeStrategy } from './types';
15
16
  /**
16
17
  * Test-only dependency-injection seam. Production code calls
@@ -21,6 +22,8 @@ import type { MergeStrategy } from './types';
21
22
  * local object is file-scoped and trivially restorable via `afterEach`.
22
23
  */
23
24
  export declare const _internals: {
25
+ withSettlementArtifactLifecycle: typeof withSettlementArtifactLifecycle;
26
+ assertSettlementArtifactsRemovable: typeof assertSettlementArtifactsRemovable;
24
27
  bunSpawn: typeof bunSpawn;
25
28
  /** Test seam for process.platform — allows non-Windows CIs to exercise Windows paths. */
26
29
  platform: string;
@@ -297,8 +300,19 @@ commitMessage?: string): Promise<MergeSuccess | MergeConflict | MergeFailure>;
297
300
  * operate on mutable branch refs, verifies that the captured lane ancestry is
298
301
  * coherent, and fails closed if the current primary checkout no longer
299
302
  * descends from the captured target head.
303
+ * Explicit landing messages retain the ordinary committed-merge policy;
304
+ * callers that omit options keep the existing plain Git merge behavior.
300
305
  */
301
- export declare function recoverMergeBackFromImmutableCoordinates(primaryDir: string, coordinates: ImmutableMergeRecoveryCoordinates): Promise<ImmutableMergeRecoveryResult>;
306
+ export declare function recoverMergeBackFromImmutableCoordinates(primaryDir: string, coordinates: ImmutableMergeRecoveryCoordinates, options?: Pick<DirtyMergeOptions, 'landingCommitMessage'> & {
307
+ /**
308
+ * Land a `'merge'` recovery via the #2508 squash-unstaged shape (changes
309
+ * applied unstaged, no merge commit, HEAD does not move) instead of
310
+ * `git merge --no-edit`. `attemptMergeBackFromDirty` sets it whenever the
311
+ * caller did not opt into `commitLanding`, so the retarget path lands in
312
+ * the same shape as the normal path. Ignored for `rebase`/`cherry-pick`.
313
+ */
314
+ landUnstaged?: boolean;
315
+ }): Promise<ImmutableMergeRecoveryResult>;
302
316
  /**
303
317
  * Detect whether a previously-started merge-back already landed on the target.
304
318
  *
@@ -33,6 +33,7 @@
33
33
  import * as fs from 'node:fs';
34
34
  import { resolveWorktreeRepoOwnership } from '../config/lane-context';
35
35
  import { isPathUnderSwarmWorktreeBase, removeWorktree } from './core';
36
+ import { assertSettlementArtifactsRemovable, withSettlementArtifactLifecycle } from './settlement-artifact-lifecycle';
36
37
  export type OwnedRemovalOutcome = {
37
38
  status: 'removed';
38
39
  } | {
@@ -44,6 +45,8 @@ export type OwnedRemovalOutcome = {
44
45
  };
45
46
  export type GitMarkerProbe = 'gitless' | 'present' | 'uncertain';
46
47
  export declare const _internals: {
48
+ withSettlementArtifactLifecycle: typeof withSettlementArtifactLifecycle;
49
+ assertSettlementArtifactsRemovable: typeof assertSettlementArtifactsRemovable;
47
50
  resolveWorktreeRepoOwnership: typeof resolveWorktreeRepoOwnership;
48
51
  isPathUnderSwarmWorktreeBase: typeof isPathUnderSwarmWorktreeBase;
49
52
  removeWorktree: typeof removeWorktree;
@@ -0,0 +1,32 @@
1
+ import { lstat, opendir, realpath } from 'node:fs/promises';
2
+ import { tryAcquireLock } from '../parallel/file-locks.js';
3
+ import { assertProjectRoot } from '../utils/project-boundary.js';
4
+ import type { CoderSettlementWal } from '../workflow/workflow-wal-schema.js';
5
+ declare function readWal(filePath: string, taskId: string): Promise<CoderSettlementWal | null>;
6
+ declare function canonicalizeArtifact(filePath: string): Promise<string>;
7
+ export declare const _internals: {
8
+ tryAcquireLock: typeof tryAcquireLock;
9
+ opendir: typeof opendir;
10
+ lstat: typeof lstat;
11
+ realpath: typeof realpath;
12
+ readWal: typeof readWal;
13
+ canonicalize: typeof canonicalizeArtifact;
14
+ assertProjectRoot: typeof assertProjectRoot;
15
+ };
16
+ /**
17
+ * Serialize isolated dispatch publication against destructive lane admission.
18
+ * Lock order is task/evidence -> lifecycle. The callback must never acquire a
19
+ * task/evidence lock or recursively enter this non-reentrant lifecycle lock.
20
+ */
21
+ export declare function withSettlementArtifactLifecycle<T>(directory: string, operation: () => Promise<T>): Promise<T>;
22
+ export interface SettlementArtifactTarget {
23
+ path?: string;
24
+ branch?: string;
25
+ }
26
+ /**
27
+ * Fail closed on an incomplete inventory. Call only while holding lifecycle
28
+ * admission, and retain that admission until the actual destructive operation
29
+ * finishes; an advisory scan alone cannot authorize a later deletion.
30
+ */
31
+ export declare function assertSettlementArtifactsRemovable(directory: string, target: SettlementArtifactTarget): Promise<void>;
32
+ export {};
@@ -0,0 +1,12 @@
1
+ import { bunSpawn } from '../utils/bun-compat';
2
+ import { resolveGitExecutable } from '../utils/git-executable.js';
3
+ export declare const _internals: {
4
+ bunSpawn: typeof bunSpawn;
5
+ resolveGitExecutable: typeof resolveGitExecutable;
6
+ };
7
+ export declare function probeSettlementSource(directory: string, oid: string): Promise<'present' | 'absent'>;
8
+ export declare function settlementBackupRef(oid: string): string;
9
+ export declare function preserveSettlementSource(directory: string, oid: string): Promise<string>;
10
+ export declare function restoreSettlementBranch(directory: string, branch: string, oid: string): Promise<boolean>;
11
+ export declare function releaseSettlementSource(directory: string, oid: string): Promise<void>;
12
+ export declare function validateSettlementLane(directory: string, branchName: string, expectedHead: string): Promise<void>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-swarm",
3
- "version": "7.200.9",
3
+ "version": "7.200.10",
4
4
  "description": "Architect-centric agentic swarm plugin for OpenCode - hub-and-spoke orchestration with SME consultation, code generation, and QA review",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,82 +0,0 @@
1
- // @bun
2
- import {
3
- createCuratorLLMDelegate
4
- } from "./index-casbh4y7.js";
5
- import"./index-p2dst45x.js";
6
- import"./index-hhq5f82z.js";
7
- import"./index-qw2wfz92.js";
8
- import"./index-xh50xsgf.js";
9
- import"./index-4ph7ad0b.js";
10
- import"./index-axqyjreb.js";
11
- import"./index-txdagbh7.js";
12
- import"./index-hzy6n59p.js";
13
- import"./index-x3rxa3sh.js";
14
- import"./index-rdec0y3z.js";
15
- import"./index-9jty56xr.js";
16
- import"./index-08jd4gz2.js";
17
- import"./index-6q2s7r67.js";
18
- import"./index-bk8r4m9j.js";
19
- import"./index-tecp3a77.js";
20
- import"./index-x5jwegqw.js";
21
- import"./index-7h22y3ew.js";
22
- import"./index-zy943kpp.js";
23
- import"./index-pt7h91zc.js";
24
- import"./index-q7sjgr1y.js";
25
- import"./index-qawbxp81.js";
26
- import"./index-kxp43wbw.js";
27
- import"./index-6b295cas.js";
28
- import"./index-9nyqt3kb.js";
29
- import"./index-hh87yny7.js";
30
- import"./index-697mg68b.js";
31
- import"./index-8mrentmw.js";
32
- import"./index-7c4gckzq.js";
33
- import"./index-4ya4krts.js";
34
- import"./index-rdyfrdcp.js";
35
- import"./index-spggmr30.js";
36
- import"./index-f8nb470m.js";
37
- import"./index-ss8nfrbb.js";
38
- import"./index-m9zzj4ee.js";
39
- import"./index-4krkevgc.js";
40
- import"./index-94s844qn.js";
41
- import"./index-mhd6kdzr.js";
42
- import"./index-rtry5xyf.js";
43
- import"./index-9ws7m02r.js";
44
- import"./index-g22dps7x.js";
45
- import"./index-0725jpp7.js";
46
- import"./index-2c4hjeea.js";
47
- import"./index-v839c9mv.js";
48
- import"./index-tvdn9gr0.js";
49
- import"./index-2x015vjy.js";
50
- import"./index-y7c4hqcj.js";
51
- import"./index-ry16d01s.js";
52
- import"./index-rdm3px0g.js";
53
- import"./index-vtpt8yns.js";
54
- import"./index-7pmbnjvj.js";
55
- import"./index-8srvdpw6.js";
56
- import"./index-9rwhas09.js";
57
- import"./index-xhxbv7mz.js";
58
- import"./index-vzm6zre7.js";
59
- import"./index-ae75rja9.js";
60
- import"./index-4fkxdnc7.js";
61
- import"./index-yyrnkc3a.js";
62
- import"./index-q8vfw61p.js";
63
- import"./index-t7hmqgjy.js";
64
- import"./index-c2k7q723.js";
65
- import"./index-te9hq2f4.js";
66
- import"./index-ejhxgyvm.js";
67
- import"./index-7g4c7s5r.js";
68
- import"./index-mn75z39t.js";
69
- import"./index-3t46mez1.js";
70
- import"./index-02vgzrpg.js";
71
- import"./index-sp2cxpaq.js";
72
- import"./index-qbxk2rn6.js";
73
- import"./index-zgwm4ryv.js";
74
- import"./index-y16v2q1x.js";
75
- import"./index-xfzkq1k4.js";
76
- import"./index-bk5tah7q.js";
77
- import"./index-gknz3bv1.js";
78
- import"./index-zpsr8rpc.js";
79
- import"./index-a76rekgs.js";
80
- export {
81
- createCuratorLLMDelegate
82
- };
@@ -1,83 +0,0 @@
1
- // @bun
2
- import {
3
- handleGuardrailExplain
4
- } from "./index-6901y99d.js";
5
- import"./index-casbh4y7.js";
6
- import"./index-p2dst45x.js";
7
- import"./index-hhq5f82z.js";
8
- import"./index-qw2wfz92.js";
9
- import"./index-xh50xsgf.js";
10
- import"./index-4ph7ad0b.js";
11
- import"./index-axqyjreb.js";
12
- import"./index-txdagbh7.js";
13
- import"./index-hzy6n59p.js";
14
- import"./index-x3rxa3sh.js";
15
- import"./index-rdec0y3z.js";
16
- import"./index-9jty56xr.js";
17
- import"./index-08jd4gz2.js";
18
- import"./index-6q2s7r67.js";
19
- import"./index-bk8r4m9j.js";
20
- import"./index-tecp3a77.js";
21
- import"./index-x5jwegqw.js";
22
- import"./index-7h22y3ew.js";
23
- import"./index-zy943kpp.js";
24
- import"./index-pt7h91zc.js";
25
- import"./index-q7sjgr1y.js";
26
- import"./index-qawbxp81.js";
27
- import"./index-kxp43wbw.js";
28
- import"./index-6b295cas.js";
29
- import"./index-9nyqt3kb.js";
30
- import"./index-hh87yny7.js";
31
- import"./index-697mg68b.js";
32
- import"./index-8mrentmw.js";
33
- import"./index-7c4gckzq.js";
34
- import"./index-4ya4krts.js";
35
- import"./index-rdyfrdcp.js";
36
- import"./index-spggmr30.js";
37
- import"./index-f8nb470m.js";
38
- import"./index-ss8nfrbb.js";
39
- import"./index-m9zzj4ee.js";
40
- import"./index-4krkevgc.js";
41
- import"./index-94s844qn.js";
42
- import"./index-mhd6kdzr.js";
43
- import"./index-rtry5xyf.js";
44
- import"./index-9ws7m02r.js";
45
- import"./index-g22dps7x.js";
46
- import"./index-0725jpp7.js";
47
- import"./index-2c4hjeea.js";
48
- import"./index-v839c9mv.js";
49
- import"./index-tvdn9gr0.js";
50
- import"./index-2x015vjy.js";
51
- import"./index-y7c4hqcj.js";
52
- import"./index-ry16d01s.js";
53
- import"./index-rdm3px0g.js";
54
- import"./index-vtpt8yns.js";
55
- import"./index-7pmbnjvj.js";
56
- import"./index-8srvdpw6.js";
57
- import"./index-9rwhas09.js";
58
- import"./index-xhxbv7mz.js";
59
- import"./index-vzm6zre7.js";
60
- import"./index-ae75rja9.js";
61
- import"./index-4fkxdnc7.js";
62
- import"./index-yyrnkc3a.js";
63
- import"./index-q8vfw61p.js";
64
- import"./index-t7hmqgjy.js";
65
- import"./index-c2k7q723.js";
66
- import"./index-te9hq2f4.js";
67
- import"./index-ejhxgyvm.js";
68
- import"./index-7g4c7s5r.js";
69
- import"./index-mn75z39t.js";
70
- import"./index-3t46mez1.js";
71
- import"./index-02vgzrpg.js";
72
- import"./index-sp2cxpaq.js";
73
- import"./index-qbxk2rn6.js";
74
- import"./index-zgwm4ryv.js";
75
- import"./index-y16v2q1x.js";
76
- import"./index-xfzkq1k4.js";
77
- import"./index-bk5tah7q.js";
78
- import"./index-gknz3bv1.js";
79
- import"./index-zpsr8rpc.js";
80
- import"./index-a76rekgs.js";
81
- export {
82
- handleGuardrailExplain
83
- };