@sentropic/h2a 0.97.11 → 0.98.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/.codex-plugin/plugin.json +1 -1
  3. package/dist/bin.js +5 -1
  4. package/dist/bin.js.map +1 -1
  5. package/dist/cli-command-map.d.ts.map +1 -1
  6. package/dist/cli-command-map.js +2 -1
  7. package/dist/cli-command-map.js.map +1 -1
  8. package/dist/cli-contract.js +1 -1
  9. package/dist/cli-contract.js.map +1 -1
  10. package/dist/cli.d.ts +1 -1
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +35 -10
  13. package/dist/cli.js.map +1 -1
  14. package/dist/index.d.ts +4 -2
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +3 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/runtime/cluster-mesh-messaging.d.ts +21 -0
  19. package/dist/runtime/cluster-mesh-messaging.d.ts.map +1 -0
  20. package/dist/runtime/cluster-mesh-messaging.js +129 -0
  21. package/dist/runtime/cluster-mesh-messaging.js.map +1 -0
  22. package/dist/runtime/identity/readers.d.ts.map +1 -1
  23. package/dist/runtime/identity/readers.js +25 -2
  24. package/dist/runtime/identity/readers.js.map +1 -1
  25. package/dist/runtime/local-files/succession-lock.d.ts +105 -17
  26. package/dist/runtime/local-files/succession-lock.d.ts.map +1 -1
  27. package/dist/runtime/local-files/succession-lock.js +320 -108
  28. package/dist/runtime/local-files/succession-lock.js.map +1 -1
  29. package/dist/runtime/mcp/agent-launch.d.ts +6 -3
  30. package/dist/runtime/mcp/agent-launch.d.ts.map +1 -1
  31. package/dist/runtime/mcp/agent-launch.js +146 -4
  32. package/dist/runtime/mcp/agent-launch.js.map +1 -1
  33. package/dist/runtime/mcp/handlers.d.ts +7 -2
  34. package/dist/runtime/mcp/handlers.d.ts.map +1 -1
  35. package/dist/runtime/mcp/handlers.js +9 -4
  36. package/dist/runtime/mcp/handlers.js.map +1 -1
  37. package/dist/runtime/mcp/identity-state.d.ts +5 -4
  38. package/dist/runtime/mcp/identity-state.d.ts.map +1 -1
  39. package/dist/runtime/mcp/identity-state.js +43 -4
  40. package/dist/runtime/mcp/identity-state.js.map +1 -1
  41. package/dist/runtime/mcp/server.d.ts +6 -2
  42. package/dist/runtime/mcp/server.d.ts.map +1 -1
  43. package/dist/runtime/mcp/server.js +6 -4
  44. package/dist/runtime/mcp/server.js.map +1 -1
  45. package/dist/runtime/mcp/stdio.d.ts +5 -1
  46. package/dist/runtime/mcp/stdio.d.ts.map +1 -1
  47. package/dist/runtime/mcp/stdio.js +117 -24
  48. package/dist/runtime/mcp/stdio.js.map +1 -1
  49. package/dist/runtime/mcp/tools.d.ts.map +1 -1
  50. package/dist/runtime/mcp/tools.js +4 -3
  51. package/dist/runtime/mcp/tools.js.map +1 -1
  52. package/dist/runtime/mcp-central.js +2 -2
  53. package/dist/runtime/mcp-central.js.map +1 -1
  54. package/dist/runtime/mcp-http/hosted-mcp-server.d.ts.map +1 -1
  55. package/dist/runtime/mcp-http/hosted-mcp-server.js +3 -0
  56. package/dist/runtime/mcp-http/hosted-mcp-server.js.map +1 -1
  57. package/dist/runtime/send.d.ts +11 -5
  58. package/dist/runtime/send.d.ts.map +1 -1
  59. package/dist/runtime/send.js +30 -4
  60. package/dist/runtime/send.js.map +1 -1
  61. package/dist/runtime/upgrade/index.d.ts +5 -5
  62. package/dist/runtime/upgrade/index.d.ts.map +1 -1
  63. package/dist/runtime/upgrade/index.js +16 -13
  64. package/dist/runtime/upgrade/index.js.map +1 -1
  65. package/focus-app/client/_app/immutable/chunks/zL3j6erO.js +2 -0
  66. package/focus-app/client/_app/immutable/chunks/zL3j6erO.js.br +0 -0
  67. package/focus-app/client/_app/immutable/chunks/zL3j6erO.js.gz +0 -0
  68. package/focus-app/client/_app/immutable/entry/{app.D_yfk55R.js → app.Dfo3Ymae.js} +2 -2
  69. package/focus-app/client/_app/immutable/entry/app.Dfo3Ymae.js.br +0 -0
  70. package/focus-app/client/_app/immutable/entry/app.Dfo3Ymae.js.gz +0 -0
  71. package/focus-app/client/_app/immutable/entry/start.BSQLtKUn.js +1 -0
  72. package/focus-app/client/_app/immutable/entry/start.BSQLtKUn.js.br +0 -0
  73. package/focus-app/client/_app/immutable/entry/start.BSQLtKUn.js.gz +0 -0
  74. package/focus-app/client/_app/immutable/nodes/{1.Jo1uWTw0.js → 1.B83XRsuv.js} +1 -1
  75. package/focus-app/client/_app/immutable/nodes/1.B83XRsuv.js.br +0 -0
  76. package/focus-app/client/_app/immutable/nodes/1.B83XRsuv.js.gz +0 -0
  77. package/focus-app/client/_app/version.json +1 -1
  78. package/focus-app/client/_app/version.json.br +1 -1
  79. package/focus-app/client/_app/version.json.gz +0 -0
  80. package/focus-app/h2a-focus.json +61 -61
  81. package/focus-app/handler.js +8 -8
  82. package/focus-app/index.js +8 -8
  83. package/focus-app/server/chunks/chunks/{AppShell.js-BoWxjmfr.js → AppShell.js-DT15_EBV.js} +2 -2
  84. package/focus-app/server/chunks/chunks/{AppShell.js-BoWxjmfr.js.map → AppShell.js-DT15_EBV.js.map} +1 -1
  85. package/focus-app/server/chunks/chunks/{exports.js-D45A8dcc.js → exports.js-BrfiJlPR.js} +3 -3
  86. package/focus-app/server/chunks/chunks/{exports.js-D45A8dcc.js.map → exports.js-BrfiJlPR.js.map} +1 -1
  87. package/focus-app/server/chunks/chunks/{index.js-e3L5MwfB.js → index.js-BY6_68Zf.js} +2 -2
  88. package/focus-app/server/chunks/chunks/{index.js-e3L5MwfB.js.map → index.js-BY6_68Zf.js.map} +1 -1
  89. package/focus-app/server/chunks/chunks/{internal.js-DAV-A6NO.js → internal.js-BDHE9Kn1.js} +3 -3
  90. package/focus-app/server/chunks/chunks/{internal.js-DAV-A6NO.js.map → internal.js-BDHE9Kn1.js.map} +1 -1
  91. package/focus-app/server/chunks/chunks/{root.js-CEypm32A.js → root.js-CZyc7gzj.js} +2 -2
  92. package/focus-app/server/chunks/chunks/{root.js-CEypm32A.js.map → root.js-CZyc7gzj.js.map} +1 -1
  93. package/focus-app/server/chunks/chunks/{utils.js-Bzpr6vQU.js → utils.js-DBwpgn00.js} +178 -51
  94. package/focus-app/server/chunks/chunks/utils.js-DBwpgn00.js.map +1 -0
  95. package/focus-app/server/chunks/entries/endpoints/api/actions/launch/{_server.ts.js-Cah_Ivgw.js → _server.ts.js-H2iyKDJx.js} +2 -2
  96. package/focus-app/server/chunks/entries/endpoints/api/actions/launch/{_server.ts.js-Cah_Ivgw.js.map → _server.ts.js-H2iyKDJx.js.map} +1 -1
  97. package/focus-app/server/chunks/entries/endpoints/api/decisions/inject/{_server.ts.js-DW5wvcgH.js → _server.ts.js-BuR515Qd.js} +2 -2
  98. package/focus-app/server/chunks/entries/endpoints/api/decisions/inject/{_server.ts.js-DW5wvcgH.js.map → _server.ts.js-BuR515Qd.js.map} +1 -1
  99. package/focus-app/server/chunks/entries/endpoints/api/dossiers/agent-memory/include/{_server.ts.js-C2jIx8Jr.js → _server.ts.js-Cs32vOYa.js} +2 -2
  100. package/focus-app/server/chunks/entries/endpoints/api/dossiers/agent-memory/include/{_server.ts.js-C2jIx8Jr.js.map → _server.ts.js-Cs32vOYa.js.map} +1 -1
  101. package/focus-app/server/chunks/entries/endpoints/api/h2a/targets/{_server.ts.js-BkAMLcHu.js → _server.ts.js-DbEqL92p.js} +2 -2
  102. package/focus-app/server/chunks/entries/endpoints/api/h2a/targets/{_server.ts.js-BkAMLcHu.js.map → _server.ts.js-DbEqL92p.js.map} +1 -1
  103. package/focus-app/server/chunks/entries/fallbacks/{error.svelte.js-BWuS92Wk.js → error.svelte.js-BzO57FOz.js} +5 -5
  104. package/focus-app/server/chunks/entries/fallbacks/{error.svelte.js-BWuS92Wk.js.map → error.svelte.js-BzO57FOz.js.map} +1 -1
  105. package/focus-app/server/chunks/entries/pages/{_layout.svelte.js-CKspI0Bw.js → _layout.svelte.js-BHXu1zZ0.js} +3 -3
  106. package/focus-app/server/chunks/entries/pages/{_layout.svelte.js-CKspI0Bw.js.map → _layout.svelte.js-BHXu1zZ0.js.map} +1 -1
  107. package/focus-app/server/chunks/entries/pages/{_page.svelte.js-B8EWZmZj.js → _page.svelte.js-DgcoCR_G.js} +4 -4
  108. package/focus-app/server/chunks/entries/pages/{_page.svelte.js-B8EWZmZj.js.map → _page.svelte.js-DgcoCR_G.js.map} +1 -1
  109. package/focus-app/server/chunks/entries/pages/dossier/agent-memory/{_page.svelte.js-BZvcKeya.js → _page.svelte.js-D8qUTYi2.js} +4 -4
  110. package/focus-app/server/chunks/entries/pages/dossier/agent-memory/{_page.svelte.js-BZvcKeya.js.map → _page.svelte.js-D8qUTYi2.js.map} +1 -1
  111. package/focus-app/server/chunks/{handler-BCBpURX0.js → handler-BidpBSFZ.js} +4 -4
  112. package/focus-app/server/chunks/{handler-BCBpURX0.js.map → handler-BidpBSFZ.js.map} +1 -1
  113. package/focus-app/server/chunks/{index.js-CZWB6FqQ.js → index.js-BNQ-AMZE.js} +5 -5
  114. package/focus-app/server/chunks/{index.js-CZWB6FqQ.js.map → index.js-BNQ-AMZE.js.map} +1 -1
  115. package/focus-app/server/chunks/{manifest.js-C2CyTiUe.js → manifest.js-CAtvBIjA.js} +10 -10
  116. package/focus-app/server/chunks/{manifest.js-C2CyTiUe.js.map → manifest.js-CAtvBIjA.js.map} +1 -1
  117. package/focus-app/server/chunks/nodes/{0.js-Cp9RMJ1x.js → 0.js-DyONiS9Y.js} +2 -2
  118. package/focus-app/server/chunks/nodes/{0.js-Cp9RMJ1x.js.map → 0.js-DyONiS9Y.js.map} +1 -1
  119. package/focus-app/server/chunks/nodes/1.js-C16cgDY2.js +9 -0
  120. package/focus-app/server/chunks/nodes/{1.js-DMWmTj0d.js.map → 1.js-C16cgDY2.js.map} +1 -1
  121. package/focus-app/server/chunks/nodes/{2.js-Dv8Q6LQc.js → 2.js-C16ONuI7.js} +2 -2
  122. package/focus-app/server/chunks/nodes/{2.js-Dv8Q6LQc.js.map → 2.js-C16ONuI7.js.map} +1 -1
  123. package/focus-app/server/chunks/nodes/{3.js-DJH-zOae.js → 3.js-DIZzznQP.js} +2 -2
  124. package/focus-app/server/chunks/nodes/{3.js-DJH-zOae.js.map → 3.js-DIZzznQP.js.map} +1 -1
  125. package/package.json +4 -4
  126. package/focus-app/client/_app/immutable/chunks/BgBtu3IQ.js +0 -2
  127. package/focus-app/client/_app/immutable/chunks/BgBtu3IQ.js.br +0 -0
  128. package/focus-app/client/_app/immutable/chunks/BgBtu3IQ.js.gz +0 -0
  129. package/focus-app/client/_app/immutable/entry/app.D_yfk55R.js.br +0 -0
  130. package/focus-app/client/_app/immutable/entry/app.D_yfk55R.js.gz +0 -0
  131. package/focus-app/client/_app/immutable/entry/start.CoQWYNTs.js +0 -1
  132. package/focus-app/client/_app/immutable/entry/start.CoQWYNTs.js.br +0 -2
  133. package/focus-app/client/_app/immutable/entry/start.CoQWYNTs.js.gz +0 -0
  134. package/focus-app/client/_app/immutable/nodes/1.Jo1uWTw0.js.br +0 -4
  135. package/focus-app/client/_app/immutable/nodes/1.Jo1uWTw0.js.gz +0 -0
  136. package/focus-app/server/chunks/chunks/utils.js-Bzpr6vQU.js.map +0 -1
  137. package/focus-app/server/chunks/nodes/1.js-DMWmTj0d.js +0 -9
@@ -2,7 +2,8 @@
2
2
  * Succession lock (v4) — single-machine succession protocol.
3
3
  *
4
4
  * Extracted from `runtime/upgrade/index.ts` (Lot 4, step 1: neutral
5
- * intra-package move — zero behaviour change). This is the shared lock primitive
5
+ * intra-package move). Lot 4 §2 adds fail-closed host and boot provenance before
6
+ * any death proof. This is the shared lock primitive
6
7
  * used by the auto-upgrade prefix lock today, and (later lots) by the identity
7
8
  * binding lock. It is a LEAF: it imports only `node:fs/os/crypto/child_process`
8
9
  * and nothing from the store, so `upgrade/index.ts` and `local-files/locks.ts`
@@ -11,6 +12,7 @@
11
12
  * The full protocol proof-sketch (I1–I7, Lemmas A–C) lives with the code below,
12
13
  * moved unchanged from its original location.
13
14
  */
15
+ import { spawnSync } from "node:child_process";
14
16
  /**
15
17
  * R2 staleness-alert threshold. An upgrade held under the lock completes in seconds to
16
18
  * a few minutes (bounded tarball fetch + stage + atomic swap), so a lock far older than
@@ -32,13 +34,15 @@ export type PrefixLockReason = "busy" | "dead-undecidable" | `error:${string}`;
32
34
  /** Lease on the global prefix. `token` is present only when acquired. */
33
35
  export interface PrefixLockLease {
34
36
  readonly acquired: boolean;
37
+ /** Fresh token check; false after release or any uncertain read. */
38
+ stillHeld(): boolean;
35
39
  release(): void;
36
40
  readonly reason?: PrefixLockReason;
37
41
  /** Winning token; present only when acquired. Never republished (I2). */
38
42
  readonly token?: string;
39
43
  }
40
- /** Observation window for one deterministic-test hook invocation. */
41
- export interface PrefixLockHookContext {
44
+ /** @deprecated Compatibility type only; production never invokes test hooks. */
45
+ export type PrefixLockHookContext = {
42
46
  readonly prefix: string;
43
47
  readonly lockPath: string;
44
48
  /** File the window is about: LOCK for publish/unlink, SUCC(t) after election. */
@@ -49,14 +53,10 @@ export interface PrefixLockHookContext {
49
53
  readonly target?: string;
50
54
  readonly round: number;
51
55
  readonly depth: number;
52
- }
53
- /**
54
- * Critical-section hooks for deterministic tests ONLY. Passed as the 2nd
55
- * argument of `acquirePrefixLock(prefix, hooks)` by the test; never enabled
56
- * via environment or configuration (there is no env/config reader for them),
57
- * and production calls without hooks so every hook is a no-op at zero cost.
58
- */
59
- export interface PrefixLockHooks {
56
+ };
57
+ /** @deprecated Compatibility type only; the legacy argument is ignored at runtime. */
58
+ export type PrefixLockHooks = {
59
+ readonly afterReadFirst?: (ctx: PrefixLockHookContext) => void;
60
60
  /** Just BEFORE the initial publish(LOCK) (round 0) — initial race window. */
61
61
  readonly beforePublishLock?: (ctx: PrefixLockHookContext) => void;
62
62
  /** Just AFTER a publish(SUCC(t)) success, BEFORE retire — unique successor elected. */
@@ -64,9 +64,15 @@ export interface PrefixLockHooks {
64
64
  /** In retire(), around the targeted unlink(LOCK) (removal-to-republish window). */
65
65
  readonly beforeRetireUnlink?: (ctx: PrefixLockHookContext) => void;
66
66
  readonly afterRetireUnlink?: (ctx: PrefixLockHookContext) => void;
67
+ };
68
+ /** Advisory acquisition control. No identity injection or hooks in production. */
69
+ export interface AcquirePrefixLockOptions {
70
+ readonly readFirst?: boolean;
67
71
  }
68
72
  interface LockIdent {
69
73
  readonly host: string;
74
+ /** Missing only on records written before host provenance was recorded. */
75
+ readonly hostKind?: HostKind;
70
76
  readonly boot: string | null;
71
77
  readonly ns: string | null;
72
78
  /** Reader's time namespace; gates proc-sourced start comparisons (B2). */
@@ -75,14 +81,64 @@ interface LockIdent {
75
81
  readonly start: string | null;
76
82
  }
77
83
  interface LockRec extends LockIdent {
84
+ /** v4 records never carry a discriminator; legacy views use `kind: "legacy"`. */
85
+ readonly kind?: never;
78
86
  readonly token: string;
79
87
  readonly target?: string;
88
+ /** Explicit operator assertion; the succession target remains unchanged. */
89
+ readonly operator?: true;
80
90
  /** Diagnostic only, never decides (I7). */
81
91
  readonly at: number;
82
92
  }
93
+ /**
94
+ * Read-only view of the pre-v4 lock written by `local-files/locks.ts`. Its
95
+ * optional metadata is used by identity binding, but it remains deliberately
96
+ * distinct from a v4 `LockRec`: legacy data lacks the machine, boot, namespace,
97
+ * and process-start proof needed to decide death. Its token fingerprints the
98
+ * exact bytes read so a later operator-only break can fence the observed record
99
+ * without rewriting it.
100
+ */
101
+ export interface LegacyLockHolder {
102
+ readonly kind: "legacy";
103
+ readonly token: string;
104
+ readonly pid: number;
105
+ readonly hostname: string;
106
+ readonly startedAt: string;
107
+ readonly protocol?: string;
108
+ readonly fenceEpoch?: string;
109
+ }
110
+ /** A readable v4 record or the separate, always-undecidable legacy view. */
111
+ export type LockHolder = LockRec | LegacyLockHolder;
83
112
  export declare function lockPathFor(prefix: string): string;
84
113
  export declare function errnoOf(e: unknown): string;
85
114
  export declare function safeAtIso(at: number): string;
115
+ export type HostKind = "machine-id" | "weak";
116
+ interface HostIdentity {
117
+ readonly host: string;
118
+ readonly hostKind: HostKind;
119
+ }
120
+ interface HostIdentityDeps {
121
+ readonly platform?: NodeJS.Platform;
122
+ readonly readFile?: (path: string) => string;
123
+ readonly hostname?: () => string;
124
+ readonly ioreg?: () => {
125
+ readonly status: number | null;
126
+ readonly stdout: string | null;
127
+ };
128
+ readonly spawn?: typeof spawnSync;
129
+ }
130
+ /**
131
+ * Reads a machine-scoped host identity. The injected readers make source selection
132
+ * deterministic in tests without consulting process environment variables.
133
+ */
134
+ export declare function readHostId(deps?: HostIdentityDeps): HostIdentity;
135
+ interface BootIdentityDeps {
136
+ readonly platform?: NodeJS.Platform;
137
+ readonly readFile?: (path: string) => string;
138
+ readonly spawn?: typeof spawnSync;
139
+ }
140
+ /** Reads the current boot identity; readers are injectable for platform simulations. */
141
+ export declare function readBootId(deps?: BootIdentityDeps): string | null;
86
142
  export declare function readPidNs(platform?: NodeJS.Platform, readLink?: (p: string) => string): string | null;
87
143
  export declare function readTimeNs(platform?: NodeJS.Platform, readLink?: (p: string) => string): string | null;
88
144
  /**
@@ -91,18 +147,25 @@ export declare function readTimeNs(platform?: NodeJS.Platform, readLink?: (p: st
91
147
  * so a reader using a different source never concludes "dead" from a
92
148
  * format/TZ-fragile comparison (C1).
93
149
  */
94
- export declare function procStartInfo(pid: number, platform?: NodeJS.Platform, mapsToSelf?: () => boolean): {
150
+ export declare function procStartInfo(pid: number, platform?: NodeJS.Platform, mapsToSelf?: () => boolean, spawn?: typeof spawnSync): {
95
151
  state?: string;
96
152
  start?: string;
97
153
  } | undefined;
98
154
  interface SelfIdent extends LockIdent {
155
+ readonly hostKind: HostKind;
99
156
  readonly pid: number;
100
157
  }
101
158
  /** This process's identity, computed once and memoized. */
102
159
  export declare function me(): SelfIdent;
103
160
  export declare function makeLockRec(token: string, target?: string): LockRec;
104
161
  export declare function parseLockRec(raw: unknown): LockRec;
105
- /** opus `read`: ENOENT -> absent, anything else unreadable -> corrupt (I1). */
162
+ /** Legacy tokens fingerprint the exact raw bytes; read errors remain corrupt. */
163
+ export declare function readLockHolder(path: string): LockHolder | "absent" | "corrupt";
164
+ /**
165
+ * v4-only reader retained for existing protocol callers. A readable legacy holder
166
+ * remains `corrupt` here so a caller that was not explicitly upgraded to the
167
+ * distinct legacy view continues to fail closed.
168
+ */
106
169
  export declare function readLockRecord(path: string): LockRec | "absent" | "corrupt";
107
170
  type PublishStatus = {
108
171
  status: "ok";
@@ -150,12 +213,37 @@ interface LivenessInfo {
150
213
  * comparison: a source mismatch or an unknown/differing time namespace both yield a
151
214
  * safe "live" (undatable), and a corrupt "legacy" start yields "undecidable" (C1).
152
215
  */
153
- export declare function classifyLiveness(r: LockRec, self: SelfIdent, deps?: LivenessDeps): LivenessInfo;
154
- export declare function livenessOf(r: LockRec, self: SelfIdent, deps?: LivenessDeps): Liveness;
216
+ export declare function classifyLiveness(r: LockHolder, self: SelfIdent, deps?: LivenessDeps): LivenessInfo;
217
+ export declare function livenessOf(r: LockHolder, self: SelfIdent, deps?: LivenessDeps): Liveness;
155
218
  /** No false positive: true implies certainly dead; any doubt is alive (I3). */
156
219
  export declare function isCertainlyDead(r: LockRec): boolean;
157
- /** opus `acquirePrefixLock`, plus M5 reasons and test-only critical hooks. */
158
- export declare function acquirePrefixLock(prefix: string, hooks?: PrefixLockHooks): PrefixLockLease;
220
+ export interface BreakLockAsOperatorOptions {
221
+ readonly expectToken: string;
222
+ /** Explicit assertion for an undecidable holder; never authorizes a live one. */
223
+ readonly assertDead?: boolean;
224
+ }
225
+ export type OperatorBreakReason = "invalid-token" | "absent" | "corrupt" | "token-mismatch" | "live" | "assert-dead-required" | "busy" | "dead-undecidable" | `error:${string}`;
226
+ export interface OperatorBreakResult {
227
+ readonly broken: boolean;
228
+ readonly reason?: OperatorBreakReason;
229
+ readonly token?: string;
230
+ readonly pid?: number;
231
+ /** Number of legacy records encountered in this operation. */
232
+ readonly legacyRecords: 0 | 1;
233
+ readonly diagnostic?: {
234
+ readonly code: "legacy-record";
235
+ readonly command: string;
236
+ };
237
+ }
238
+ /**
239
+ * Token-fenced escape hatch, using the same one-shot SUCC election as acquisition.
240
+ * It never owns or republishes LOCK and never sends a destructive process signal.
241
+ * An automatic successor already elected for g excludes the operator. After g is
242
+ * removed, a pending automatic retire sees absence and may publish a fresh LOCK.
243
+ */
244
+ export declare function breakLockAsOperator(lockPath: string, options: BreakLockAsOperatorOptions): OperatorBreakResult;
245
+ /** Production acquisition. Extra JavaScript arguments cannot inject dependencies. */
246
+ export declare function acquirePrefixLock(prefix: string, options?: AcquirePrefixLockOptions): PrefixLockLease;
159
247
  /** True when the path is older than the threshold; false when unstated. */
160
248
  export declare function isOlderThan(path: string, now: number, maxAgeMs: number): boolean;
161
249
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"succession-lock.d.ts","sourceRoot":"","sources":["../../../src/runtime/local-files/succession-lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"succession-lock.d.ts","sourceRoot":"","sources":["../../../src/runtime/local-files/succession-lock.ts"],"names":[],"mappings":"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"}