@indigoai-us/hq-cloud 6.18.12 → 6.18.13

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 (38) hide show
  1. package/dist/bin/sync-runner-watch-loop.d.ts.map +1 -1
  2. package/dist/bin/sync-runner-watch-loop.js +6 -0
  3. package/dist/bin/sync-runner-watch-loop.js.map +1 -1
  4. package/dist/bin/sync-runner-watch-loop.test.js +2 -0
  5. package/dist/bin/sync-runner-watch-loop.test.js.map +1 -1
  6. package/dist/bin/sync-runner.d.ts +18 -2
  7. package/dist/bin/sync-runner.d.ts.map +1 -1
  8. package/dist/bin/sync-runner.js +102 -13
  9. package/dist/bin/sync-runner.js.map +1 -1
  10. package/dist/bin/sync-runner.test.js +108 -1
  11. package/dist/bin/sync-runner.test.js.map +1 -1
  12. package/dist/cli/share.d.ts +2 -0
  13. package/dist/cli/share.d.ts.map +1 -1
  14. package/dist/cli/share.js +19 -0
  15. package/dist/cli/share.js.map +1 -1
  16. package/dist/cli/sync.d.ts +2 -0
  17. package/dist/cli/sync.d.ts.map +1 -1
  18. package/dist/cli/sync.js +39 -2
  19. package/dist/cli/sync.js.map +1 -1
  20. package/dist/lib/exit-codes.d.ts +9 -2
  21. package/dist/lib/exit-codes.d.ts.map +1 -1
  22. package/dist/lib/exit-codes.js +9 -2
  23. package/dist/lib/exit-codes.js.map +1 -1
  24. package/dist/operation-lock.d.ts +43 -10
  25. package/dist/operation-lock.d.ts.map +1 -1
  26. package/dist/operation-lock.js +112 -48
  27. package/dist/operation-lock.js.map +1 -1
  28. package/dist/operation-lock.test.js +205 -116
  29. package/dist/operation-lock.test.js.map +1 -1
  30. package/dist/watch-owner-lease.d.ts +44 -0
  31. package/dist/watch-owner-lease.d.ts.map +1 -0
  32. package/dist/watch-owner-lease.js +368 -0
  33. package/dist/watch-owner-lease.js.map +1 -0
  34. package/dist/watch-owner-lease.test.d.ts +2 -0
  35. package/dist/watch-owner-lease.test.d.ts.map +1 -0
  36. package/dist/watch-owner-lease.test.js +335 -0
  37. package/dist/watch-owner-lease.test.js.map +1 -0
  38. package/package.json +2 -1
@@ -10,16 +10,17 @@
10
10
  * already-admitted worker PIDs to leave. Different HQ roots are independent.
11
11
  * - `reindex` uses a SEPARATE per-root scope ("reindex"), so it is guarded
12
12
  * against other reindexes but is NOT blocked by a held sync/rescue lock.
13
- * This is deliberate: a watch-mode `hq-sync-runner` holds the "operation"
14
- * lock across its entire lifetime, and a shared lock would starve a
13
+ * This is deliberate: a watch-mode `hq-sync-runner` holds the separate
14
+ * "watch-owner" scope across its lifetime, and a shared lock would starve a
15
15
  * standalone `hq reindex` indefinitely (feedback_ed98d810). reindex only
16
16
  * READS the source trees to rebuild derived artifacts (skill wrappers,
17
17
  * overlay mirrors, the workers registry) and is idempotent + re-run after
18
18
  * every sync pass, so decoupling it from the sync writer lock is safe.
19
19
  * See {@link lockPathFor} for how the scope partitions the lock file.
20
- * - The push watcher / watch+event-push runner is EXEMPT: it never calls in
21
- * here, so it neither takes the lock nor is blocked by it (its targeted
22
- * in-process push passes are likewise lock-free).
20
+ * - The watch runner takes the separate "watch-owner" scope through this
21
+ * primitive. It does not take the "operation" scope, so one-shot sync and
22
+ * rescue keep their existing behavior and targeted in-process push passes
23
+ * remain lock-free.
23
24
  *
24
25
  * ## Where the lock lives — and why
25
26
  *
@@ -96,17 +97,20 @@
96
97
  * ## Release
97
98
  *
98
99
  * - Normal exit: the `with*` wrappers release in a `finally`.
99
- * - Signals (SIGINT/SIGTERM): a one-time handler releases every held lock,
100
- * then re-raises the default disposition so exit status is unchanged.
100
+ * - Signals (SIGINT/SIGTERM/SIGHUP): by default a one-time handler releases
101
+ * signal-managed locks, then re-raises the default disposition. A caller
102
+ * with graceful shutdown may exclude its handle and temporarily suppress
103
+ * the re-raise while it drains work and releases locks itself.
101
104
  * - Hard crash (SIGKILL / power loss): nothing runs, but a later gate
102
105
  * contender reclaims dead exclusive owners and dead shared memberships.
103
106
  * - `process.on("exit")`: a final best-effort synchronous unlink.
104
107
  *
105
108
  * ## Escape hatch
106
109
  *
107
- * `HQ_DISABLE_OP_LOCK=1` makes acquisition a no-op (returns a handle whose
108
- * release does nothing). For emergencies and for callers that manage
109
- * exclusion themselves; documented, off by default.
110
+ * `HQ_DISABLE_OP_LOCK=1` makes optional acquisitions a no-op (returns a
111
+ * handle whose release does nothing). Mandatory scoped gates can set
112
+ * `required: true`; watch-owner uses this so the escape hatch cannot permit
113
+ * two live runners for one root.
110
114
  */
111
115
  /** Process exit code used when an operation is refused because the lock is held. */
112
116
  export declare const OPERATION_LOCKED_EXIT = 17;
@@ -124,6 +128,10 @@ export interface LockInfo {
124
128
  hqRoot: string;
125
129
  /** Gate role. Omitted payloads are legacy exclusive mutex holders. */
126
130
  mode?: OperationLockMode;
131
+ /** Optional human-readable owner for long-lived scoped locks. */
132
+ owner?: string;
133
+ /** Version of the package holding the scoped lock. */
134
+ version?: string;
127
135
  }
128
136
  /**
129
137
  * Normal sync processes hold shared membership. Repair and migration callers
@@ -207,6 +215,23 @@ export interface AcquireOptions {
207
215
  scope?: string;
208
216
  /** Override the command-derived gate role for this acquisition. */
209
217
  mode?: OperationLockMode;
218
+ /** Optional status metadata persisted with the lock holder record. */
219
+ owner?: string;
220
+ version?: string;
221
+ /**
222
+ * Override PID-only liveness for a scoped lock. A false result makes the
223
+ * holder stale and eligible for takeover. Unspecified keeps the historical
224
+ * conservative PID check.
225
+ */
226
+ isHolderLive?: (info: LockInfo) => boolean;
227
+ /** Keep mandatory scoped gates active even when HQ_DISABLE_OP_LOCK is set. */
228
+ required?: boolean;
229
+ /**
230
+ * Register this handle with the process-wide signal release/re-raise hook.
231
+ * Callers with their own graceful signal shutdown path may opt out; the
232
+ * process exit hook still performs synchronous best-effort release.
233
+ */
234
+ installSignalHandlers?: boolean;
210
235
  }
211
236
  /**
212
237
  * Default lock scope. `sync` and `rescue` share this one so they stay mutually
@@ -224,6 +249,14 @@ export declare const DEFAULT_LOCK_SCOPE = "operation";
224
249
  * one another; the same scope is a real cross-process mutex.
225
250
  */
226
251
  export declare function lockPathFor(hqRoot: string, scope?: string): string;
252
+ /** Synchronously release this process's operation locks before a hard exit. */
253
+ export declare function releaseHeldOperationLocks(): void;
254
+ /**
255
+ * Keep the process-wide lock signal hook from re-raising signals while a
256
+ * caller with its own graceful shutdown path is active. The caller remains
257
+ * responsible for draining and releasing its locks before restoring the hook.
258
+ */
259
+ export declare function suppressOperationLockSignalReraise(): () => void;
227
260
  /**
228
261
  * If `err` is a permission-class fs error against the lock dir, rethrow it as an
229
262
  * actionable {@link OperationLockUnwritableError}; otherwise rethrow it
@@ -1 +1 @@
1
- {"version":3,"file":"operation-lock.d.ts","sourceRoot":"","sources":["../src/operation-lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operation-lock.d.ts","sourceRoot":"","sources":["../src/operation-lock.ts"],"names":[],"mappings":"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"}
@@ -10,16 +10,17 @@
10
10
  * already-admitted worker PIDs to leave. Different HQ roots are independent.
11
11
  * - `reindex` uses a SEPARATE per-root scope ("reindex"), so it is guarded
12
12
  * against other reindexes but is NOT blocked by a held sync/rescue lock.
13
- * This is deliberate: a watch-mode `hq-sync-runner` holds the "operation"
14
- * lock across its entire lifetime, and a shared lock would starve a
13
+ * This is deliberate: a watch-mode `hq-sync-runner` holds the separate
14
+ * "watch-owner" scope across its lifetime, and a shared lock would starve a
15
15
  * standalone `hq reindex` indefinitely (feedback_ed98d810). reindex only
16
16
  * READS the source trees to rebuild derived artifacts (skill wrappers,
17
17
  * overlay mirrors, the workers registry) and is idempotent + re-run after
18
18
  * every sync pass, so decoupling it from the sync writer lock is safe.
19
19
  * See {@link lockPathFor} for how the scope partitions the lock file.
20
- * - The push watcher / watch+event-push runner is EXEMPT: it never calls in
21
- * here, so it neither takes the lock nor is blocked by it (its targeted
22
- * in-process push passes are likewise lock-free).
20
+ * - The watch runner takes the separate "watch-owner" scope through this
21
+ * primitive. It does not take the "operation" scope, so one-shot sync and
22
+ * rescue keep their existing behavior and targeted in-process push passes
23
+ * remain lock-free.
23
24
  *
24
25
  * ## Where the lock lives — and why
25
26
  *
@@ -96,17 +97,20 @@
96
97
  * ## Release
97
98
  *
98
99
  * - Normal exit: the `with*` wrappers release in a `finally`.
99
- * - Signals (SIGINT/SIGTERM): a one-time handler releases every held lock,
100
- * then re-raises the default disposition so exit status is unchanged.
100
+ * - Signals (SIGINT/SIGTERM/SIGHUP): by default a one-time handler releases
101
+ * signal-managed locks, then re-raises the default disposition. A caller
102
+ * with graceful shutdown may exclude its handle and temporarily suppress
103
+ * the re-raise while it drains work and releases locks itself.
101
104
  * - Hard crash (SIGKILL / power loss): nothing runs, but a later gate
102
105
  * contender reclaims dead exclusive owners and dead shared memberships.
103
106
  * - `process.on("exit")`: a final best-effort synchronous unlink.
104
107
  *
105
108
  * ## Escape hatch
106
109
  *
107
- * `HQ_DISABLE_OP_LOCK=1` makes acquisition a no-op (returns a handle whose
108
- * release does nothing). For emergencies and for callers that manage
109
- * exclusion themselves; documented, off by default.
110
+ * `HQ_DISABLE_OP_LOCK=1` makes optional acquisitions a no-op (returns a
111
+ * handle whose release does nothing). Mandatory scoped gates can set
112
+ * `required: true`; watch-owner uses this so the escape hatch cannot permit
113
+ * two live runners for one root.
110
114
  */
111
115
  import * as crypto from "crypto";
112
116
  import * as fs from "fs";
@@ -218,11 +222,22 @@ function stateDir() {
218
222
  }
219
223
  function canonicalRoot(hqRoot) {
220
224
  const resolved = path.resolve(hqRoot);
221
- try {
222
- return fs.realpathSync.native(resolved);
223
- }
224
- catch {
225
- return resolved;
225
+ let current = resolved;
226
+ const missingSegments = [];
227
+ for (;;) {
228
+ try {
229
+ return path.join(fs.realpathSync.native(current), ...missingSegments.reverse());
230
+ }
231
+ catch (error) {
232
+ const code = error?.code;
233
+ if (code !== "ENOENT" && code !== "ENOTDIR")
234
+ return resolved;
235
+ const parent = path.dirname(current);
236
+ if (parent === current)
237
+ return resolved;
238
+ missingSegments.push(path.basename(current));
239
+ current = parent;
240
+ }
226
241
  }
227
242
  }
228
243
  /**
@@ -264,6 +279,9 @@ function pidAlive(pid) {
264
279
  return true; // EPERM (exists) or unknown → treat as alive
265
280
  }
266
281
  }
282
+ function holderIsLive(info, isHolderLive) {
283
+ return isHolderLive ? isHolderLive(info) : pidAlive(info.pid);
284
+ }
267
285
  function readLockInfo(p) {
268
286
  try {
269
287
  const parsed = JSON.parse(fs.readFileSync(p, "utf8"));
@@ -355,10 +373,34 @@ function initializingLockInfo(p) {
355
373
  };
356
374
  }
357
375
  // ── Process-wide release plumbing ──────────────────────────────────────────
358
- // Track every lock this process currently holds so the signal/exit hooks can
359
- // release all of them. The hooks are installed exactly once.
376
+ // Track every lock for synchronous exit cleanup, and track signal-managed
377
+ // handles separately so graceful owners can keep their own shutdown path.
378
+ // Each hook family is installed exactly once.
360
379
  const heldLocks = new Set();
361
- let hooksInstalled = false;
380
+ const signalManagedLocks = new Set();
381
+ let exitHookInstalled = false;
382
+ let signalHooksInstalled = false;
383
+ let signalReraiseSuppressionDepth = 0;
384
+ /** Synchronously release this process's operation locks before a hard exit. */
385
+ export function releaseHeldOperationLocks() {
386
+ for (const handle of heldLocks)
387
+ handle.release();
388
+ }
389
+ /**
390
+ * Keep the process-wide lock signal hook from re-raising signals while a
391
+ * caller with its own graceful shutdown path is active. The caller remains
392
+ * responsible for draining and releasing its locks before restoring the hook.
393
+ */
394
+ export function suppressOperationLockSignalReraise() {
395
+ signalReraiseSuppressionDepth += 1;
396
+ let restored = false;
397
+ return () => {
398
+ if (restored)
399
+ return;
400
+ restored = true;
401
+ signalReraiseSuppressionDepth -= 1;
402
+ };
403
+ }
362
404
  function unlinkIfOwned(p) {
363
405
  // Only remove a lock whose recorded pid is THIS process — never clobber a
364
406
  // lock another process took over after a (hypothetical) reclaim race.
@@ -372,17 +414,24 @@ function unlinkIfOwned(p) {
372
414
  }
373
415
  }
374
416
  }
375
- function installHooksOnce() {
376
- if (hooksInstalled)
417
+ function installExitHookOnce() {
418
+ if (exitHookInstalled)
377
419
  return;
378
- hooksInstalled = true;
420
+ exitHookInstalled = true;
379
421
  process.on("exit", () => {
380
422
  for (const h of heldLocks)
381
423
  h.release();
382
424
  });
425
+ }
426
+ function installSignalHooksOnce() {
427
+ if (signalHooksInstalled)
428
+ return;
429
+ signalHooksInstalled = true;
383
430
  for (const sig of ["SIGINT", "SIGTERM", "SIGHUP"]) {
384
431
  process.on(sig, () => {
385
- for (const h of heldLocks)
432
+ if (signalReraiseSuppressionDepth > 0)
433
+ return;
434
+ for (const h of signalManagedLocks)
386
435
  h.release();
387
436
  // Re-raise with the default disposition so the exit status is the normal
388
437
  // signal status (and a second Ctrl-C still works). Removing our listener
@@ -392,7 +441,7 @@ function installHooksOnce() {
392
441
  });
393
442
  }
394
443
  }
395
- function makeHandle(p, info) {
444
+ function makeHandle(p, info, installSignalHandlers) {
396
445
  let released = false;
397
446
  const handle = {
398
447
  path: p,
@@ -402,15 +451,20 @@ function makeHandle(p, info) {
402
451
  return;
403
452
  released = true;
404
453
  heldLocks.delete(handle);
454
+ signalManagedLocks.delete(handle);
405
455
  unlinkIfOwned(p);
406
456
  },
407
457
  };
408
458
  heldLocks.add(handle);
409
- installHooksOnce();
459
+ installExitHookOnce();
460
+ if (installSignalHandlers) {
461
+ signalManagedLocks.add(handle);
462
+ installSignalHooksOnce();
463
+ }
410
464
  return handle;
411
465
  }
412
466
  const NOOP_HANDLE_BASE = { release() { } };
413
- /** No-op handle for the `HQ_DISABLE_OP_LOCK=1` escape hatch. */
467
+ /** No-op handle for the optional `HQ_DISABLE_OP_LOCK=1` escape hatch. */
414
468
  function disabledHandle(hqRoot, command) {
415
469
  const info = {
416
470
  pid: process.pid,
@@ -444,7 +498,7 @@ export function rethrowLockCreateError(err, lockDir) {
444
498
  throw err;
445
499
  }
446
500
  /** Build the lock payload + ensure the locks dir exists. */
447
- function prepareLock(hqRoot, command, scope = DEFAULT_LOCK_SCOPE, mode) {
501
+ function prepareLock(hqRoot, command, scope = DEFAULT_LOCK_SCOPE, mode, owner, version) {
448
502
  const p = lockPathFor(hqRoot, scope);
449
503
  const dir = path.dirname(p);
450
504
  try {
@@ -461,6 +515,8 @@ function prepareLock(hqRoot, command, scope = DEFAULT_LOCK_SCOPE, mode) {
461
515
  startedAt: new Date().toISOString(),
462
516
  hqRoot: canonicalRoot(hqRoot),
463
517
  mode,
518
+ ...(owner ? { owner } : {}),
519
+ ...(version ? { version } : {}),
464
520
  };
465
521
  return { p, info, payload: JSON.stringify(info, null, 2) };
466
522
  }
@@ -533,18 +589,18 @@ function publishLockPayload(p, payload) {
533
589
  * reported as busy; empty/torn locks are treated as initializing and left in
534
590
  * place. Throws only on genuinely pathological churn or unexpected fs errors.
535
591
  */
536
- function tryAcquireOnce(p, info, payload) {
592
+ function tryAcquireOnce(p, info, payload, isHolderLive, installSignalHandlers = true) {
537
593
  // Bounded retry: each iteration is one atomic create attempt. EEXIST against
538
594
  // a stale holder reclaims and retries; EEXIST against a live holder reports
539
595
  // it as busy.
540
596
  const MAX_ATTEMPTS = 5;
541
597
  for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
542
598
  if (publishLockPayload(p, payload)) {
543
- return { handle: makeHandle(p, info) };
599
+ return { handle: makeHandle(p, info, installSignalHandlers) };
544
600
  }
545
601
  const holder = readLockInfo(p);
546
602
  if (holder) {
547
- if (pidAlive(holder.pid))
603
+ if (holderIsLive(holder, isHolderLive))
548
604
  return { busy: holder };
549
605
  try {
550
606
  fs.unlinkSync(p);
@@ -619,7 +675,7 @@ function liveSharedMembers(p) {
619
675
  }
620
676
  return members;
621
677
  }
622
- function makeSharedHandle(p, memberPath, info) {
678
+ function makeSharedHandle(p, memberPath, info, installSignalHandlers) {
623
679
  let released = false;
624
680
  const handle = {
625
681
  // Keep the historical path observable for callers and diagnostics. The
@@ -631,6 +687,7 @@ function makeSharedHandle(p, memberPath, info) {
631
687
  return;
632
688
  released = true;
633
689
  heldLocks.delete(handle);
690
+ signalManagedLocks.delete(handle);
634
691
  unlinkIfOwned(memberPath);
635
692
  // Marker cleanup is cosmetic and happens behind the short admission
636
693
  // turnstile. A failed opportunistic cleanup is safe: the next admission
@@ -654,14 +711,18 @@ function makeSharedHandle(p, memberPath, info) {
654
711
  },
655
712
  };
656
713
  heldLocks.add(handle);
657
- installHooksOnce();
714
+ installExitHookOnce();
715
+ if (installSignalHandlers) {
716
+ signalManagedLocks.add(handle);
717
+ installSignalHooksOnce();
718
+ }
658
719
  return handle;
659
720
  }
660
- function tryAcquireShared(p, info, payload) {
721
+ function tryAcquireShared(p, info, payload, installSignalHandlers) {
661
722
  const initialBlocker = existingExclusiveBlocker(p);
662
723
  if (initialBlocker)
663
724
  return { busy: initialBlocker };
664
- const admission = tryAcquireOnce(admissionPathFor(p), info, payload);
725
+ const admission = tryAcquireOnce(admissionPathFor(p), info, payload, undefined, installSignalHandlers);
665
726
  if (!("handle" in admission))
666
727
  return admission;
667
728
  try {
@@ -679,20 +740,20 @@ function tryAcquireShared(p, info, payload) {
679
740
  unlinkIfOwned(memberPath);
680
741
  return { busy: existingExclusiveBlocker(p) ?? initializingLockInfo(p) };
681
742
  }
682
- return { handle: makeSharedHandle(p, memberPath, info) };
743
+ return { handle: makeSharedHandle(p, memberPath, info, installSignalHandlers) };
683
744
  }
684
745
  finally {
685
746
  admission.handle.release();
686
747
  }
687
748
  }
688
- function tryAcquireExclusive(p, info, payload) {
689
- const admission = tryAcquireOnce(admissionPathFor(p), info, payload);
749
+ function tryAcquireExclusive(p, info, payload, isHolderLive, installSignalHandlers = true) {
750
+ const admission = tryAcquireOnce(admissionPathFor(p), info, payload, isHolderLive, installSignalHandlers);
690
751
  if (!("handle" in admission))
691
752
  return admission;
692
753
  try {
693
754
  let marker = readLockInfo(p);
694
755
  if (marker && !isSharedMarker(marker)) {
695
- if (pidAlive(marker.pid))
756
+ if (holderIsLive(marker, isHolderLive))
696
757
  return { busy: marker };
697
758
  try {
698
759
  fs.unlinkSync(p);
@@ -701,8 +762,9 @@ function tryAcquireExclusive(p, info, payload) {
701
762
  /* a contender replaced or reclaimed it; retry through the busy path */
702
763
  }
703
764
  marker = readLockInfo(p);
704
- if (marker && !isSharedMarker(marker))
765
+ if (marker && !isSharedMarker(marker) && holderIsLive(marker, isHolderLive)) {
705
766
  return { busy: marker };
767
+ }
706
768
  }
707
769
  if (!marker && fs.existsSync(p))
708
770
  return { busy: initializingLockInfo(p) };
@@ -713,24 +775,25 @@ function tryAcquireExclusive(p, info, payload) {
713
775
  if (!publishLockPayload(p, payload)) {
714
776
  return { busy: readLockInfo(p) ?? initializingLockInfo(p) };
715
777
  }
716
- return { handle: makeHandle(p, info) };
778
+ return { handle: makeHandle(p, info, installSignalHandlers) };
717
779
  }
718
780
  finally {
719
781
  admission.handle.release();
720
782
  }
721
783
  }
722
- function tryAcquireGate(mode, p, info, payload) {
784
+ function tryAcquireGate(mode, p, info, payload, isHolderLive, installSignalHandlers = true) {
723
785
  return mode === "shared"
724
- ? tryAcquireShared(p, info, payload)
725
- : tryAcquireExclusive(p, info, payload);
786
+ ? tryAcquireShared(p, info, payload, installSignalHandlers)
787
+ : tryAcquireExclusive(p, info, payload, isHolderLive, installSignalHandlers);
726
788
  }
727
789
  /** Acquire the operation gate synchronously. Watch-loop probes always pass a
728
790
  * zero timeout; all wait-capable parent paths use the async counterpart below. */
729
791
  export function acquireOperationLock(hqRoot, command, opts = {}) {
730
- if (process.env.HQ_DISABLE_OP_LOCK === "1")
792
+ if (process.env.HQ_DISABLE_OP_LOCK === "1" && !opts.required) {
731
793
  return disabledHandle(hqRoot, command);
794
+ }
732
795
  const mode = operationMode(command, opts);
733
- const { p, info, payload } = prepareLock(hqRoot, command, opts.scope, mode);
796
+ const { p, info, payload } = prepareLock(hqRoot, command, opts.scope, mode, opts.owner, opts.version);
734
797
  const cfg = resolveWaitConfig(opts);
735
798
  const deadline = cfg.timeoutMs === null ? null : Date.now() + cfg.timeoutMs;
736
799
  let announced = false;
@@ -739,7 +802,7 @@ export function acquireOperationLock(hqRoot, command, opts = {}) {
739
802
  const waiterPath = mode === "exclusive" && cfg.timeoutMs !== 0 ? registerWaiter(p, payload) : null;
740
803
  try {
741
804
  for (;;) {
742
- const res = tryAcquireGate(mode, p, info, payload);
805
+ const res = tryAcquireGate(mode, p, info, payload, opts.isHolderLive, opts.installSignalHandlers !== false);
743
806
  if ("handle" in res)
744
807
  return res.handle;
745
808
  if (remainingMs(deadline) <= 0)
@@ -758,17 +821,18 @@ export function acquireOperationLock(hqRoot, command, opts = {}) {
758
821
  /** Async gate acquisition. This is the only wait-capable path used by the
759
822
  * parent watch loop, so maintenance waits never block watcher heartbeats. */
760
823
  export async function acquireOperationLockAsync(hqRoot, command, opts = {}) {
761
- if (process.env.HQ_DISABLE_OP_LOCK === "1")
824
+ if (process.env.HQ_DISABLE_OP_LOCK === "1" && !opts.required) {
762
825
  return disabledHandle(hqRoot, command);
826
+ }
763
827
  const mode = operationMode(command, opts);
764
- const { p, info, payload } = prepareLock(hqRoot, command, opts.scope, mode);
828
+ const { p, info, payload } = prepareLock(hqRoot, command, opts.scope, mode, opts.owner, opts.version);
765
829
  const cfg = resolveWaitConfig(opts);
766
830
  const deadline = cfg.timeoutMs === null ? null : Date.now() + cfg.timeoutMs;
767
831
  let announced = false;
768
832
  const waiterPath = mode === "exclusive" && cfg.timeoutMs !== 0 ? registerWaiter(p, payload) : null;
769
833
  try {
770
834
  for (;;) {
771
- const res = tryAcquireGate(mode, p, info, payload);
835
+ const res = tryAcquireGate(mode, p, info, payload, opts.isHolderLive, opts.installSignalHandlers !== false);
772
836
  if ("handle" in res)
773
837
  return res.handle;
774
838
  if (remainingMs(deadline) <= 0)
@@ -1 +1 @@
1
- {"version":3,"file":"operation-lock.js","sourceRoot":"","sources":["../src/operation-lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operation-lock.js","sourceRoot":"","sources":["../src/operation-lock.ts"],"names":[],"mappings":"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"}