chat-recall 0.7.10 → 0.7.11

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.
@@ -80,6 +80,14 @@ export interface UpdateDeps {
80
80
  platform?: NodeJS.Platform;
81
81
  /** Version actually on disk after the install — the post-condition check. */
82
82
  verify?: () => string | null;
83
+ /** True once this process is shutting down: nothing is installed or restarted after that. */
84
+ stopping?: () => boolean;
85
+ /** Version on disk before the install, read once the lock is held. */
86
+ onDisk?: () => string | null;
87
+ /** Take the machine-wide update lock, or null when another process holds it. */
88
+ acquireLock?: () => {
89
+ release(): void;
90
+ } | null;
83
91
  }
84
92
  export interface UpdateResult {
85
93
  updated: boolean;
@@ -131,6 +139,19 @@ export interface NpmLocation {
131
139
  * npm spawns. A bare `npm` from PATH is the last candidate.
132
140
  */
133
141
  export declare function resolveNpm(loc: NpmLocation): NpmCommand;
142
+ /**
143
+ * The command that restarts the watch service, per platform.
144
+ *
145
+ * Linux passes --no-block: queue the restart and return. The watch daemon runs
146
+ * this from inside the service, and a blocking `systemctl restart` waits for
147
+ * the stop phase, which waits for this process, whose event loop the wait
148
+ * blocks. systemd then killed it at TimeoutStopSec and the next start counted
149
+ * a crash.
150
+ */
151
+ export declare function restartCommand(platform: NodeJS.Platform): {
152
+ cmd: string;
153
+ shell?: string;
154
+ } | null;
134
155
  type UpdateState = {
135
156
  target?: string;
136
157
  failures?: number;
@@ -142,6 +163,16 @@ export declare function hasGivenUpOn(target: string, st?: UpdateState): boolean;
142
163
  export declare function noteUpdateFailure(target: string): number;
143
164
  /** A successful install clears the brake. */
144
165
  export declare function clearUpdateFailures(): void;
166
+ /** The reason an update gives when its process began to shut down under it. */
167
+ export declare const STOPPING_REASON = "not installed: this process is shutting down";
168
+ /** The reason an update gives when another process holds the update lock. */
169
+ export declare const LOCKED_REASON = "another process is installing an update";
170
+ /**
171
+ * Stop this process from installing or restarting anything from now on. The
172
+ * watch daemon calls it when it begins to shut down: an update that started
173
+ * then ran `systemctl restart` against the unit that was stopping it.
174
+ */
175
+ export declare function stopAutoUpdates(): void;
145
176
  export declare function runAutoUpdate(base: string, authHeaders: Record<string, string>, ownVersion: string, deps?: Partial<UpdateDeps>): Promise<UpdateResult>;
146
177
  export {};
147
178
  //# sourceMappingURL=auto-update.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auto-update.d.ts","sourceRoot":"","sources":["../src/auto-update.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,UAAU;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;CAAE;AAChE,MAAM,WAAW,IAAI;IAAG,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CAAE;AAEpE,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAInG;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,EAAE,UAAU,MAAM,WAC4C,CAAC;AAEtG,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI3D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAUhD;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAMjH;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,SAAW,EAAE,GAAG,SAAa,GAAG,MAAM,CAyB3E;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,YAAY;IAAG,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;CAAE;AAE/F,sEAAsE;AACtE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAkDjG;AASD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,SAAS,SAAkB,GAAG,MAAM,GAAG,IAAI,CAWxE;AAmDD,MAAM,WAAW,UAAU;IACzB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,kFAAkF;IAClF,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,mFAAmF;IACnF,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CAChC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,WAAW,GAAG,UAAU,CAsBvD;AAoDD,KAAK,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,wBAAgB,eAAe,IAAI,WAAW,CAG7C;AAUD,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAE,WAA+B,GAAG,OAAO,CAEzF;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAKxD;AAED,6CAA6C;AAC7C,wBAAgB,mBAAmB,IAAI,IAAI,CAA0B;AASrE,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GACzB,OAAO,CAAC,YAAY,CAAC,CAwFvB"}
1
+ {"version":3,"file":"auto-update.d.ts","sourceRoot":"","sources":["../src/auto-update.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,7 @@ import { writeFileSync, mkdtempSync, rmSync, readdirSync, statSync, mkdirSync }
22
22
  import { join, dirname, sep, posix as pathPosix, win32 as pathWin32 } from 'node:path';
23
23
  import { tmpdir, homedir } from 'node:os';
24
24
  import { createHash } from 'node:crypto';
25
+ import { acquireIndexLock } from '@chat-recall/engine/core/index-lock.js';
25
26
  /** semver-ish compare: -1 (a<b), 0 (a==b), 1 (a>b). Ignores prerelease tags. */
26
27
  export function compareVersions(a, b) {
27
28
  const pa = String(a).split('-')[0].split('.').map((n) => parseInt(n, 10) || 0);
@@ -192,6 +193,10 @@ export async function executeAutoUpdate(plan, deps) {
192
193
  catch { /* best effort */ } };
193
194
  const tgz = join(dir, 'chat-recall.tgz');
194
195
  writeFileSync(tgz, buf);
196
+ if (deps.stopping?.()) {
197
+ discardStaging();
198
+ return { updated: false, reason: STOPPING_REASON };
199
+ }
195
200
  try {
196
201
  deps.install(tgz);
197
202
  }
@@ -218,10 +223,14 @@ export async function executeAutoUpdate(plan, deps) {
218
223
  + `npm install -g ${plan.url}`,
219
224
  };
220
225
  }
221
- try {
222
- deps.restart(deps.platform ?? process.platform);
226
+ // A process that is shutting down leaves the restart to the service
227
+ // manager, which is already stopping it; the new bundle runs on the next start.
228
+ if (!deps.stopping?.()) {
229
+ try {
230
+ deps.restart(deps.platform ?? process.platform);
231
+ }
232
+ catch { /* daemon will pick up new bin on its next natural restart */ }
223
233
  }
224
- catch { /* daemon will pick up new bin on its next natural restart */ }
225
234
  return { updated: true, reason: `updated ${plan.from} → ${plan.to}`, from: plan.from, to: plan.to };
226
235
  }
227
236
  /* ── real side effects (defaults) ─────────────────────────────────── */
@@ -354,13 +363,33 @@ function realInstall(tgz) {
354
363
  npmInstall(npm, ['install', '-g', '--prefix', join(homedir(), '.local'), tgz]);
355
364
  }
356
365
  }
357
- function realRestart(platform) {
366
+ function acquireUpdateLock() {
367
+ // A live holder is never preempted; a dead one is taken over after the
368
+ // helper's short grace. 10 minutes covers a slow download and npm install.
369
+ return acquireIndexLock({ kind: 'auto-update', file: '.update.lock', staleAfterMs: 10 * 60_000 });
370
+ }
371
+ /**
372
+ * The command that restarts the watch service, per platform.
373
+ *
374
+ * Linux passes --no-block: queue the restart and return. The watch daemon runs
375
+ * this from inside the service, and a blocking `systemctl restart` waits for
376
+ * the stop phase, which waits for this process, whose event loop the wait
377
+ * blocks. systemd then killed it at TimeoutStopSec and the next start counted
378
+ * a crash.
379
+ */
380
+ export function restartCommand(platform) {
358
381
  if (platform === 'linux')
359
- execSync('systemctl --user restart chat-recall-watch.service', { stdio: 'ignore' });
360
- else if (platform === 'darwin')
361
- execSync('launchctl kickstart -k gui/$(id -u)/com.chat-recall.watch', { stdio: 'ignore', shell: '/bin/bash' });
362
- else if (platform === 'win32')
363
- execSync('schtasks /End /TN chat-recall-watch & schtasks /Run /TN chat-recall-watch', { stdio: 'ignore' });
382
+ return { cmd: 'systemctl --user --no-block restart chat-recall-watch.service' };
383
+ if (platform === 'darwin')
384
+ return { cmd: 'launchctl kickstart -k gui/$(id -u)/com.chat-recall.watch', shell: '/bin/bash' };
385
+ if (platform === 'win32')
386
+ return { cmd: 'schtasks /End /TN chat-recall-watch & schtasks /Run /TN chat-recall-watch' };
387
+ return null;
388
+ }
389
+ function realRestart(platform) {
390
+ const c = restartCommand(platform);
391
+ if (c)
392
+ execSync(c.cmd, { stdio: 'ignore', ...(c.shell ? { shell: c.shell } : {}) });
364
393
  }
365
394
  /**
366
395
  * Give up on a target version that keeps failing to install.
@@ -428,6 +457,17 @@ export function clearUpdateFailures() { writeUpdateState({}); }
428
457
  */
429
458
  /** Servers already told "this device will not self-update", per process. */
430
459
  const reportedStandingSkip = new Set();
460
+ /** The reason an update gives when its process began to shut down under it. */
461
+ export const STOPPING_REASON = 'not installed: this process is shutting down';
462
+ /** The reason an update gives when another process holds the update lock. */
463
+ export const LOCKED_REASON = 'another process is installing an update';
464
+ let stopRequested = false;
465
+ /**
466
+ * Stop this process from installing or restarting anything from now on. The
467
+ * watch daemon calls it when it begins to shut down: an update that started
468
+ * then ran `systemctl restart` against the unit that was stopping it.
469
+ */
470
+ export function stopAutoUpdates() { stopRequested = true; }
431
471
  export async function runAutoUpdate(base, authHeaders, ownVersion, deps) {
432
472
  let caps;
433
473
  try {
@@ -486,12 +526,38 @@ export async function runAutoUpdate(base, authHeaders, ownVersion, deps) {
486
526
  if (target && hasGivenUpOn(target)) {
487
527
  return { updated: false, reason: `gave up installing ${plan.to} after ${GIVE_UP_AFTER} failed attempts — run \`npm install -g chat-recall\` by hand` };
488
528
  }
489
- const result = await executeAutoUpdate(plan, {
490
- download: deps?.download ?? realDownload,
491
- install: deps?.install ?? realInstall,
492
- restart: deps?.restart ?? realRestart,
493
- platform: deps?.platform,
494
- });
529
+ const stopping = deps?.stopping ?? (() => stopRequested);
530
+ if (stopping())
531
+ return { updated: false, reason: STOPPING_REASON };
532
+ // One installer per machine. The watch daemon, an MCP daemon and a CLI
533
+ // command each run this after a sync, and two of them installed the same
534
+ // release at once: one restarted the service, and the other then restarted it
535
+ // again from inside the stopping daemon.
536
+ const lock = (deps?.acquireLock ?? acquireUpdateLock)();
537
+ if (!lock)
538
+ return { updated: false, reason: LOCKED_REASON };
539
+ let result;
540
+ try {
541
+ // The version on disk may have changed while this process waited: the
542
+ // process that held the lock installed it, and restarted the service.
543
+ const onDisk = (deps?.onDisk ?? installedVersion)();
544
+ if (onDisk && plan.to && compareVersions(onDisk, plan.to) >= 0) {
545
+ return { updated: false, reason: `already current: ${onDisk} is on disk` };
546
+ }
547
+ result = await executeAutoUpdate(plan, {
548
+ download: deps?.download ?? realDownload,
549
+ install: deps?.install ?? realInstall,
550
+ restart: deps?.restart ?? realRestart,
551
+ platform: deps?.platform,
552
+ verify: deps?.verify,
553
+ stopping,
554
+ });
555
+ }
556
+ finally {
557
+ lock.release();
558
+ }
559
+ if (result.reason === STOPPING_REASON)
560
+ return result;
495
561
  // A self-update that KEEPS failing is the worst failure mode this system has:
496
562
  // the machine silently runs an old collector forever, and the only trace was a
497
563
  // reason string that two of the three call sites threw away
@@ -1 +1 @@
1
- {"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../src/auto-update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../src/auto-update.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -18646,7 +18646,7 @@ var init_sync_fields = __esm({
18646
18646
  import { existsSync as existsSync39, mkdirSync as mkdirSync7, openSync as openSync8, writeFileSync as writeFileSync6, readFileSync as readFileSync30, rmSync as rmSync4, statSync as statSync35, closeSync as closeSync8 } from "fs";
18647
18647
  import { dirname as dirname16, join as join39 } from "path";
18648
18648
  function acquireIndexLock(opts) {
18649
- const lockPath = lockFilePath();
18649
+ const lockPath = lockFilePath(opts.file);
18650
18650
  mkdirSync7(dirname16(lockPath), { recursive: true });
18651
18651
  if (existsSync39(lockPath)) {
18652
18652
  if (!stealStaleLock(lockPath, opts.staleAfterMs ?? 10 * 6e4)) {
@@ -18688,8 +18688,8 @@ function acquireIndexLock(opts) {
18688
18688
  }
18689
18689
  };
18690
18690
  }
18691
- function lockFilePath() {
18692
- return join39(getIndexDir(), ".compact.lock");
18691
+ function lockFilePath(file = ".compact.lock") {
18692
+ return join39(getIndexDir(), file);
18693
18693
  }
18694
18694
  function stealStaleLock(lockPath, staleAfterMs) {
18695
18695
  try {
@@ -18765,7 +18765,7 @@ var init_http = __esm({
18765
18765
  CLI_VERSION = JSON.parse(readFileSync31(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
18766
18766
  } catch {
18767
18767
  try {
18768
- if (true) CLI_VERSION = "0.7.10";
18768
+ if (true) CLI_VERSION = "0.7.11";
18769
18769
  } catch {
18770
18770
  }
18771
18771
  }
@@ -19263,7 +19263,7 @@ var init_telemetry = __esm({
19263
19263
  init_sync_client();
19264
19264
  cliVersion2 = () => {
19265
19265
  try {
19266
- return true ? "0.7.10" : "dev";
19266
+ return true ? "0.7.11" : "dev";
19267
19267
  } catch {
19268
19268
  return "dev";
19269
19269
  }
@@ -19631,6 +19631,8 @@ var init_client_events = __esm({
19631
19631
  // src/auto-update.ts
19632
19632
  var auto_update_exports = {};
19633
19633
  __export(auto_update_exports, {
19634
+ LOCKED_REASON: () => LOCKED_REASON,
19635
+ STOPPING_REASON: () => STOPPING_REASON,
19634
19636
  clearUpdateFailures: () => clearUpdateFailures,
19635
19637
  compareVersions: () => compareVersions,
19636
19638
  executeAutoUpdate: () => executeAutoUpdate,
@@ -19642,8 +19644,10 @@ __export(auto_update_exports, {
19642
19644
  planAutoUpdate: () => planAutoUpdate,
19643
19645
  readUpdateState: () => readUpdateState,
19644
19646
  resolveNpm: () => resolveNpm,
19647
+ restartCommand: () => restartCommand,
19645
19648
  runAutoUpdate: () => runAutoUpdate,
19646
19649
  runningPrefix: () => runningPrefix,
19650
+ stopAutoUpdates: () => stopAutoUpdates,
19647
19651
  sweepStaleStaging: () => sweepStaleStaging,
19648
19652
  tarballUrl: () => tarballUrl
19649
19653
  });
@@ -19739,6 +19743,10 @@ async function executeAutoUpdate(plan, deps) {
19739
19743
  };
19740
19744
  const tgz = join41(dir, "chat-recall.tgz");
19741
19745
  writeFileSync8(tgz, buf);
19746
+ if (deps.stopping?.()) {
19747
+ discardStaging();
19748
+ return { updated: false, reason: STOPPING_REASON };
19749
+ }
19742
19750
  try {
19743
19751
  deps.install(tgz);
19744
19752
  } catch (e) {
@@ -19753,9 +19761,11 @@ async function executeAutoUpdate(plan, deps) {
19753
19761
  reason: `install reported success but ${landed} is still on disk (wanted ${plan.to}) \u2014 the package that runs is not the one npm wrote. Reinstall by hand: npm install -g ${plan.url}`
19754
19762
  };
19755
19763
  }
19756
- try {
19757
- deps.restart(deps.platform ?? process.platform);
19758
- } catch {
19764
+ if (!deps.stopping?.()) {
19765
+ try {
19766
+ deps.restart(deps.platform ?? process.platform);
19767
+ } catch {
19768
+ }
19759
19769
  }
19760
19770
  return { updated: true, reason: `updated ${plan.from} \u2192 ${plan.to}`, from: plan.from, to: plan.to };
19761
19771
  }
@@ -19814,10 +19824,18 @@ function realInstall(tgz) {
19814
19824
  npmInstall(npm, ["install", "-g", "--prefix", join41(homedir15(), ".local"), tgz]);
19815
19825
  }
19816
19826
  }
19827
+ function acquireUpdateLock() {
19828
+ return acquireIndexLock({ kind: "auto-update", file: ".update.lock", staleAfterMs: 10 * 6e4 });
19829
+ }
19830
+ function restartCommand(platform2) {
19831
+ if (platform2 === "linux") return { cmd: "systemctl --user --no-block restart chat-recall-watch.service" };
19832
+ if (platform2 === "darwin") return { cmd: "launchctl kickstart -k gui/$(id -u)/com.chat-recall.watch", shell: "/bin/bash" };
19833
+ if (platform2 === "win32") return { cmd: "schtasks /End /TN chat-recall-watch & schtasks /Run /TN chat-recall-watch" };
19834
+ return null;
19835
+ }
19817
19836
  function realRestart(platform2) {
19818
- if (platform2 === "linux") execSync2("systemctl --user restart chat-recall-watch.service", { stdio: "ignore" });
19819
- else if (platform2 === "darwin") execSync2("launchctl kickstart -k gui/$(id -u)/com.chat-recall.watch", { stdio: "ignore", shell: "/bin/bash" });
19820
- else if (platform2 === "win32") execSync2("schtasks /End /TN chat-recall-watch & schtasks /Run /TN chat-recall-watch", { stdio: "ignore" });
19837
+ const c = restartCommand(platform2);
19838
+ if (c) execSync2(c.cmd, { stdio: "ignore", ...c.shell ? { shell: c.shell } : {} });
19821
19839
  }
19822
19840
  function updateStatePath() {
19823
19841
  const dir = process.env.CHAT_RECALL_DATA_DIR || join41(homedir15(), ".chat-recall");
@@ -19850,6 +19868,9 @@ function noteUpdateFailure(target) {
19850
19868
  function clearUpdateFailures() {
19851
19869
  writeUpdateState({});
19852
19870
  }
19871
+ function stopAutoUpdates() {
19872
+ stopRequested = true;
19873
+ }
19853
19874
  async function runAutoUpdate(base3, authHeaders, ownVersion3, deps) {
19854
19875
  let caps;
19855
19876
  try {
@@ -19876,12 +19897,28 @@ async function runAutoUpdate(base3, authHeaders, ownVersion3, deps) {
19876
19897
  if (target && hasGivenUpOn(target)) {
19877
19898
  return { updated: false, reason: `gave up installing ${plan.to} after ${GIVE_UP_AFTER} failed attempts \u2014 run \`npm install -g chat-recall\` by hand` };
19878
19899
  }
19879
- const result = await executeAutoUpdate(plan, {
19880
- download: deps?.download ?? realDownload,
19881
- install: deps?.install ?? realInstall,
19882
- restart: deps?.restart ?? realRestart,
19883
- platform: deps?.platform
19884
- });
19900
+ const stopping = deps?.stopping ?? (() => stopRequested);
19901
+ if (stopping()) return { updated: false, reason: STOPPING_REASON };
19902
+ const lock = (deps?.acquireLock ?? acquireUpdateLock)();
19903
+ if (!lock) return { updated: false, reason: LOCKED_REASON };
19904
+ let result;
19905
+ try {
19906
+ const onDisk = (deps?.onDisk ?? installedVersion)();
19907
+ if (onDisk && plan.to && compareVersions(onDisk, plan.to) >= 0) {
19908
+ return { updated: false, reason: `already current: ${onDisk} is on disk` };
19909
+ }
19910
+ result = await executeAutoUpdate(plan, {
19911
+ download: deps?.download ?? realDownload,
19912
+ install: deps?.install ?? realInstall,
19913
+ restart: deps?.restart ?? realRestart,
19914
+ platform: deps?.platform,
19915
+ verify: deps?.verify,
19916
+ stopping
19917
+ });
19918
+ } finally {
19919
+ lock.release();
19920
+ }
19921
+ if (result.reason === STOPPING_REASON) return result;
19885
19922
  if (!result.updated) {
19886
19923
  const failures = target ? noteUpdateFailure(target) : 1;
19887
19924
  if (failures <= GIVE_UP_AFTER) {
@@ -19897,14 +19934,18 @@ async function runAutoUpdate(base3, authHeaders, ownVersion3, deps) {
19897
19934
  }
19898
19935
  return result;
19899
19936
  }
19900
- var tarballUrl, GIVE_UP_AFTER, reportedStandingSkip;
19937
+ var tarballUrl, GIVE_UP_AFTER, reportedStandingSkip, STOPPING_REASON, LOCKED_REASON, stopRequested;
19901
19938
  var init_auto_update = __esm({
19902
19939
  "src/auto-update.ts"() {
19903
19940
  "use strict";
19904
19941
  init_http();
19942
+ init_index_lock();
19905
19943
  tarballUrl = (base3, version2) => `${base3.replace(/\/+$/, "")}/install/${version2 ? `chat-recall-${version2}.tgz` : "chat-recall.tgz"}`;
19906
19944
  GIVE_UP_AFTER = 3;
19907
19945
  reportedStandingSkip = /* @__PURE__ */ new Set();
19946
+ STOPPING_REASON = "not installed: this process is shutting down";
19947
+ LOCKED_REASON = "another process is installing an update";
19948
+ stopRequested = false;
19908
19949
  }
19909
19950
  });
19910
19951
 
@@ -21603,7 +21644,7 @@ var init_sync_client = __esm({
21603
21644
  ownVersion = JSON.parse(readFileSync35(join42(dir, "../package.json"), "utf-8")).version || ownVersion;
21604
21645
  } catch {
21605
21646
  try {
21606
- if (true) ownVersion = "0.7.10";
21647
+ if (true) ownVersion = "0.7.11";
21607
21648
  } catch {
21608
21649
  }
21609
21650
  }
@@ -25765,7 +25806,7 @@ var init_intent_drain = __esm({
25765
25806
  ownVersion2 = JSON.parse(readFileSync45(join56(dir, "../package.json"), "utf-8")).version || ownVersion2;
25766
25807
  } catch {
25767
25808
  try {
25768
- if (true) ownVersion2 = "0.7.10";
25809
+ if (true) ownVersion2 = "0.7.11";
25769
25810
  } catch {
25770
25811
  }
25771
25812
  }
package/dist/mcp-relay.js CHANGED
@@ -192,7 +192,7 @@ function bridge(input, output, sock, exit, opts = {}) {
192
192
  }
193
193
 
194
194
  // src/mcp-relay.ts
195
- var VERSION = true ? "0.7.10" : "0.0.0";
195
+ var VERSION = true ? "0.7.11" : "0.0.0";
196
196
  var SERVER_URL = new URL("./mcp.js", import.meta.url);
197
197
  var SERVER_PATH = fileURLToPath(SERVER_URL);
198
198
  var START_TIMEOUT_MS = 15e3;
package/dist/mcp.js CHANGED
@@ -19564,7 +19564,7 @@ var init_sync_fields = __esm({
19564
19564
  import { existsSync as existsSync43, mkdirSync as mkdirSync11, openSync as openSync9, writeFileSync as writeFileSync8, readFileSync as readFileSync35, rmSync as rmSync4, statSync as statSync40, closeSync as closeSync9 } from "fs";
19565
19565
  import { dirname as dirname18, join as join47 } from "path";
19566
19566
  function acquireIndexLock(opts) {
19567
- const lockPath = lockFilePath();
19567
+ const lockPath = lockFilePath(opts.file);
19568
19568
  mkdirSync11(dirname18(lockPath), { recursive: true });
19569
19569
  if (existsSync43(lockPath)) {
19570
19570
  if (!stealStaleLock(lockPath, opts.staleAfterMs ?? 10 * 6e4)) {
@@ -19606,8 +19606,8 @@ function acquireIndexLock(opts) {
19606
19606
  }
19607
19607
  };
19608
19608
  }
19609
- function lockFilePath() {
19610
- return join47(getIndexDir(), ".compact.lock");
19609
+ function lockFilePath(file = ".compact.lock") {
19610
+ return join47(getIndexDir(), file);
19611
19611
  }
19612
19612
  function stealStaleLock(lockPath, staleAfterMs) {
19613
19613
  try {
@@ -19677,7 +19677,7 @@ var init_http = __esm({
19677
19677
  CLI_VERSION = JSON.parse(readFileSync36(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
19678
19678
  } catch {
19679
19679
  try {
19680
- if (true) CLI_VERSION = "0.7.10";
19680
+ if (true) CLI_VERSION = "0.7.11";
19681
19681
  } catch {
19682
19682
  }
19683
19683
  }
@@ -20175,7 +20175,7 @@ var init_telemetry = __esm({
20175
20175
  init_sync_client();
20176
20176
  cliVersion2 = () => {
20177
20177
  try {
20178
- return true ? "0.7.10" : "dev";
20178
+ return true ? "0.7.11" : "dev";
20179
20179
  } catch {
20180
20180
  return "dev";
20181
20181
  }
@@ -20325,6 +20325,8 @@ var init_server_probe = __esm({
20325
20325
  // src/auto-update.ts
20326
20326
  var auto_update_exports = {};
20327
20327
  __export(auto_update_exports, {
20328
+ LOCKED_REASON: () => LOCKED_REASON,
20329
+ STOPPING_REASON: () => STOPPING_REASON,
20328
20330
  clearUpdateFailures: () => clearUpdateFailures,
20329
20331
  compareVersions: () => compareVersions,
20330
20332
  executeAutoUpdate: () => executeAutoUpdate,
@@ -20336,8 +20338,10 @@ __export(auto_update_exports, {
20336
20338
  planAutoUpdate: () => planAutoUpdate,
20337
20339
  readUpdateState: () => readUpdateState,
20338
20340
  resolveNpm: () => resolveNpm,
20341
+ restartCommand: () => restartCommand,
20339
20342
  runAutoUpdate: () => runAutoUpdate,
20340
20343
  runningPrefix: () => runningPrefix,
20344
+ stopAutoUpdates: () => stopAutoUpdates,
20341
20345
  sweepStaleStaging: () => sweepStaleStaging,
20342
20346
  tarballUrl: () => tarballUrl
20343
20347
  });
@@ -20433,6 +20437,10 @@ async function executeAutoUpdate(plan, deps) {
20433
20437
  };
20434
20438
  const tgz = join48(dir, "chat-recall.tgz");
20435
20439
  writeFileSync9(tgz, buf);
20440
+ if (deps.stopping?.()) {
20441
+ discardStaging();
20442
+ return { updated: false, reason: STOPPING_REASON };
20443
+ }
20436
20444
  try {
20437
20445
  deps.install(tgz);
20438
20446
  } catch (e) {
@@ -20447,9 +20455,11 @@ async function executeAutoUpdate(plan, deps) {
20447
20455
  reason: `install reported success but ${landed} is still on disk (wanted ${plan.to}) \u2014 the package that runs is not the one npm wrote. Reinstall by hand: npm install -g ${plan.url}`
20448
20456
  };
20449
20457
  }
20450
- try {
20451
- deps.restart(deps.platform ?? process.platform);
20452
- } catch {
20458
+ if (!deps.stopping?.()) {
20459
+ try {
20460
+ deps.restart(deps.platform ?? process.platform);
20461
+ } catch {
20462
+ }
20453
20463
  }
20454
20464
  return { updated: true, reason: `updated ${plan.from} \u2192 ${plan.to}`, from: plan.from, to: plan.to };
20455
20465
  }
@@ -20508,10 +20518,18 @@ function realInstall(tgz) {
20508
20518
  npmInstall(npm, ["install", "-g", "--prefix", join48(homedir17(), ".local"), tgz]);
20509
20519
  }
20510
20520
  }
20521
+ function acquireUpdateLock() {
20522
+ return acquireIndexLock({ kind: "auto-update", file: ".update.lock", staleAfterMs: 10 * 6e4 });
20523
+ }
20524
+ function restartCommand(platform2) {
20525
+ if (platform2 === "linux") return { cmd: "systemctl --user --no-block restart chat-recall-watch.service" };
20526
+ if (platform2 === "darwin") return { cmd: "launchctl kickstart -k gui/$(id -u)/com.chat-recall.watch", shell: "/bin/bash" };
20527
+ if (platform2 === "win32") return { cmd: "schtasks /End /TN chat-recall-watch & schtasks /Run /TN chat-recall-watch" };
20528
+ return null;
20529
+ }
20511
20530
  function realRestart(platform2) {
20512
- if (platform2 === "linux") execSync4("systemctl --user restart chat-recall-watch.service", { stdio: "ignore" });
20513
- else if (platform2 === "darwin") execSync4("launchctl kickstart -k gui/$(id -u)/com.chat-recall.watch", { stdio: "ignore", shell: "/bin/bash" });
20514
- else if (platform2 === "win32") execSync4("schtasks /End /TN chat-recall-watch & schtasks /Run /TN chat-recall-watch", { stdio: "ignore" });
20531
+ const c = restartCommand(platform2);
20532
+ if (c) execSync4(c.cmd, { stdio: "ignore", ...c.shell ? { shell: c.shell } : {} });
20515
20533
  }
20516
20534
  function updateStatePath() {
20517
20535
  const dir = process.env.CHAT_RECALL_DATA_DIR || join48(homedir17(), ".chat-recall");
@@ -20544,6 +20562,9 @@ function noteUpdateFailure(target) {
20544
20562
  function clearUpdateFailures() {
20545
20563
  writeUpdateState({});
20546
20564
  }
20565
+ function stopAutoUpdates() {
20566
+ stopRequested = true;
20567
+ }
20547
20568
  async function runAutoUpdate(base, authHeaders, ownVersion2, deps) {
20548
20569
  let caps;
20549
20570
  try {
@@ -20570,12 +20591,28 @@ async function runAutoUpdate(base, authHeaders, ownVersion2, deps) {
20570
20591
  if (target && hasGivenUpOn(target)) {
20571
20592
  return { updated: false, reason: `gave up installing ${plan.to} after ${GIVE_UP_AFTER} failed attempts \u2014 run \`npm install -g chat-recall\` by hand` };
20572
20593
  }
20573
- const result = await executeAutoUpdate(plan, {
20574
- download: deps?.download ?? realDownload,
20575
- install: deps?.install ?? realInstall,
20576
- restart: deps?.restart ?? realRestart,
20577
- platform: deps?.platform
20578
- });
20594
+ const stopping = deps?.stopping ?? (() => stopRequested);
20595
+ if (stopping()) return { updated: false, reason: STOPPING_REASON };
20596
+ const lock = (deps?.acquireLock ?? acquireUpdateLock)();
20597
+ if (!lock) return { updated: false, reason: LOCKED_REASON };
20598
+ let result;
20599
+ try {
20600
+ const onDisk = (deps?.onDisk ?? installedVersion)();
20601
+ if (onDisk && plan.to && compareVersions(onDisk, plan.to) >= 0) {
20602
+ return { updated: false, reason: `already current: ${onDisk} is on disk` };
20603
+ }
20604
+ result = await executeAutoUpdate(plan, {
20605
+ download: deps?.download ?? realDownload,
20606
+ install: deps?.install ?? realInstall,
20607
+ restart: deps?.restart ?? realRestart,
20608
+ platform: deps?.platform,
20609
+ verify: deps?.verify,
20610
+ stopping
20611
+ });
20612
+ } finally {
20613
+ lock.release();
20614
+ }
20615
+ if (result.reason === STOPPING_REASON) return result;
20579
20616
  if (!result.updated) {
20580
20617
  const failures = target ? noteUpdateFailure(target) : 1;
20581
20618
  if (failures <= GIVE_UP_AFTER) {
@@ -20591,14 +20628,18 @@ async function runAutoUpdate(base, authHeaders, ownVersion2, deps) {
20591
20628
  }
20592
20629
  return result;
20593
20630
  }
20594
- var tarballUrl, GIVE_UP_AFTER, reportedStandingSkip;
20631
+ var tarballUrl, GIVE_UP_AFTER, reportedStandingSkip, STOPPING_REASON, LOCKED_REASON, stopRequested;
20595
20632
  var init_auto_update = __esm({
20596
20633
  "src/auto-update.ts"() {
20597
20634
  "use strict";
20598
20635
  init_http();
20636
+ init_index_lock();
20599
20637
  tarballUrl = (base, version2) => `${base.replace(/\/+$/, "")}/install/${version2 ? `chat-recall-${version2}.tgz` : "chat-recall.tgz"}`;
20600
20638
  GIVE_UP_AFTER = 3;
20601
20639
  reportedStandingSkip = /* @__PURE__ */ new Set();
20640
+ STOPPING_REASON = "not installed: this process is shutting down";
20641
+ LOCKED_REASON = "another process is installing an update";
20642
+ stopRequested = false;
20602
20643
  }
20603
20644
  });
20604
20645
 
@@ -22297,7 +22338,7 @@ var init_sync_client = __esm({
22297
22338
  ownVersion = JSON.parse(readFileSync38(join49(dir, "../package.json"), "utf-8")).version || ownVersion;
22298
22339
  } catch {
22299
22340
  try {
22300
- if (true) ownVersion = "0.7.10";
22341
+ if (true) ownVersion = "0.7.11";
22301
22342
  } catch {
22302
22343
  }
22303
22344
  }
@@ -29246,7 +29287,7 @@ function installCrashGuards() {
29246
29287
  reportClientEvent2("mcp_crash", { message: err.stack || err.message });
29247
29288
  });
29248
29289
  }
29249
- var RELAY_VERSION = true ? "0.7.10" : "0.0.0";
29290
+ var RELAY_VERSION = true ? "0.7.11" : "0.0.0";
29250
29291
  function daemonIdleSecs() {
29251
29292
  const raw = process.env.CHAT_RECALL_DAEMON_IDLE_SECS;
29252
29293
  if (raw === void 0) return 900;
package/dist/watch.js CHANGED
@@ -18202,7 +18202,7 @@ var init_sync_fields = __esm({
18202
18202
  import { existsSync as existsSync39, mkdirSync as mkdirSync8, openSync as openSync8, writeFileSync as writeFileSync7, readFileSync as readFileSync31, rmSync as rmSync4, statSync as statSync35, closeSync as closeSync8 } from "fs";
18203
18203
  import { dirname as dirname17, join as join40 } from "path";
18204
18204
  function acquireIndexLock(opts) {
18205
- const lockPath = lockFilePath();
18205
+ const lockPath = lockFilePath(opts.file);
18206
18206
  mkdirSync8(dirname17(lockPath), { recursive: true });
18207
18207
  if (existsSync39(lockPath)) {
18208
18208
  if (!stealStaleLock(lockPath, opts.staleAfterMs ?? 10 * 6e4)) {
@@ -18244,8 +18244,8 @@ function acquireIndexLock(opts) {
18244
18244
  }
18245
18245
  };
18246
18246
  }
18247
- function lockFilePath() {
18248
- return join40(getIndexDir(), ".compact.lock");
18247
+ function lockFilePath(file = ".compact.lock") {
18248
+ return join40(getIndexDir(), file);
18249
18249
  }
18250
18250
  function stealStaleLock(lockPath, staleAfterMs) {
18251
18251
  try {
@@ -18312,7 +18312,7 @@ var init_http = __esm({
18312
18312
  CLI_VERSION = JSON.parse(readFileSync32(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
18313
18313
  } catch {
18314
18314
  try {
18315
- if (true) CLI_VERSION = "0.7.10";
18315
+ if (true) CLI_VERSION = "0.7.11";
18316
18316
  } catch {
18317
18317
  }
18318
18318
  }
@@ -18806,7 +18806,7 @@ var init_telemetry = __esm({
18806
18806
  init_sync_client();
18807
18807
  cliVersion = () => {
18808
18808
  try {
18809
- return true ? "0.7.10" : "dev";
18809
+ return true ? "0.7.11" : "dev";
18810
18810
  } catch {
18811
18811
  return "dev";
18812
18812
  }
@@ -19021,6 +19021,8 @@ var init_client_events = __esm({
19021
19021
  // src/auto-update.ts
19022
19022
  var auto_update_exports = {};
19023
19023
  __export(auto_update_exports, {
19024
+ LOCKED_REASON: () => LOCKED_REASON,
19025
+ STOPPING_REASON: () => STOPPING_REASON,
19024
19026
  clearUpdateFailures: () => clearUpdateFailures,
19025
19027
  compareVersions: () => compareVersions,
19026
19028
  executeAutoUpdate: () => executeAutoUpdate,
@@ -19032,8 +19034,10 @@ __export(auto_update_exports, {
19032
19034
  planAutoUpdate: () => planAutoUpdate,
19033
19035
  readUpdateState: () => readUpdateState,
19034
19036
  resolveNpm: () => resolveNpm,
19037
+ restartCommand: () => restartCommand,
19035
19038
  runAutoUpdate: () => runAutoUpdate,
19036
19039
  runningPrefix: () => runningPrefix,
19040
+ stopAutoUpdates: () => stopAutoUpdates,
19037
19041
  sweepStaleStaging: () => sweepStaleStaging,
19038
19042
  tarballUrl: () => tarballUrl
19039
19043
  });
@@ -19129,6 +19133,10 @@ async function executeAutoUpdate(plan, deps) {
19129
19133
  };
19130
19134
  const tgz = join41(dir, "chat-recall.tgz");
19131
19135
  writeFileSync8(tgz, buf);
19136
+ if (deps.stopping?.()) {
19137
+ discardStaging();
19138
+ return { updated: false, reason: STOPPING_REASON };
19139
+ }
19132
19140
  try {
19133
19141
  deps.install(tgz);
19134
19142
  } catch (e) {
@@ -19143,9 +19151,11 @@ async function executeAutoUpdate(plan, deps) {
19143
19151
  reason: `install reported success but ${landed} is still on disk (wanted ${plan.to}) \u2014 the package that runs is not the one npm wrote. Reinstall by hand: npm install -g ${plan.url}`
19144
19152
  };
19145
19153
  }
19146
- try {
19147
- deps.restart(deps.platform ?? process.platform);
19148
- } catch {
19154
+ if (!deps.stopping?.()) {
19155
+ try {
19156
+ deps.restart(deps.platform ?? process.platform);
19157
+ } catch {
19158
+ }
19149
19159
  }
19150
19160
  return { updated: true, reason: `updated ${plan.from} \u2192 ${plan.to}`, from: plan.from, to: plan.to };
19151
19161
  }
@@ -19204,10 +19214,18 @@ function realInstall(tgz) {
19204
19214
  npmInstall(npm, ["install", "-g", "--prefix", join41(homedir15(), ".local"), tgz]);
19205
19215
  }
19206
19216
  }
19217
+ function acquireUpdateLock() {
19218
+ return acquireIndexLock({ kind: "auto-update", file: ".update.lock", staleAfterMs: 10 * 6e4 });
19219
+ }
19220
+ function restartCommand(platform2) {
19221
+ if (platform2 === "linux") return { cmd: "systemctl --user --no-block restart chat-recall-watch.service" };
19222
+ if (platform2 === "darwin") return { cmd: "launchctl kickstart -k gui/$(id -u)/com.chat-recall.watch", shell: "/bin/bash" };
19223
+ if (platform2 === "win32") return { cmd: "schtasks /End /TN chat-recall-watch & schtasks /Run /TN chat-recall-watch" };
19224
+ return null;
19225
+ }
19207
19226
  function realRestart(platform2) {
19208
- if (platform2 === "linux") execSync2("systemctl --user restart chat-recall-watch.service", { stdio: "ignore" });
19209
- else if (platform2 === "darwin") execSync2("launchctl kickstart -k gui/$(id -u)/com.chat-recall.watch", { stdio: "ignore", shell: "/bin/bash" });
19210
- else if (platform2 === "win32") execSync2("schtasks /End /TN chat-recall-watch & schtasks /Run /TN chat-recall-watch", { stdio: "ignore" });
19227
+ const c = restartCommand(platform2);
19228
+ if (c) execSync2(c.cmd, { stdio: "ignore", ...c.shell ? { shell: c.shell } : {} });
19211
19229
  }
19212
19230
  function updateStatePath() {
19213
19231
  const dir = process.env.CHAT_RECALL_DATA_DIR || join41(homedir15(), ".chat-recall");
@@ -19240,6 +19258,9 @@ function noteUpdateFailure(target) {
19240
19258
  function clearUpdateFailures() {
19241
19259
  writeUpdateState({});
19242
19260
  }
19261
+ function stopAutoUpdates() {
19262
+ stopRequested = true;
19263
+ }
19243
19264
  async function runAutoUpdate(base2, authHeaders, ownVersion3, deps) {
19244
19265
  let caps;
19245
19266
  try {
@@ -19266,12 +19287,28 @@ async function runAutoUpdate(base2, authHeaders, ownVersion3, deps) {
19266
19287
  if (target && hasGivenUpOn(target)) {
19267
19288
  return { updated: false, reason: `gave up installing ${plan.to} after ${GIVE_UP_AFTER} failed attempts \u2014 run \`npm install -g chat-recall\` by hand` };
19268
19289
  }
19269
- const result = await executeAutoUpdate(plan, {
19270
- download: deps?.download ?? realDownload,
19271
- install: deps?.install ?? realInstall,
19272
- restart: deps?.restart ?? realRestart,
19273
- platform: deps?.platform
19274
- });
19290
+ const stopping = deps?.stopping ?? (() => stopRequested);
19291
+ if (stopping()) return { updated: false, reason: STOPPING_REASON };
19292
+ const lock = (deps?.acquireLock ?? acquireUpdateLock)();
19293
+ if (!lock) return { updated: false, reason: LOCKED_REASON };
19294
+ let result;
19295
+ try {
19296
+ const onDisk = (deps?.onDisk ?? installedVersion)();
19297
+ if (onDisk && plan.to && compareVersions(onDisk, plan.to) >= 0) {
19298
+ return { updated: false, reason: `already current: ${onDisk} is on disk` };
19299
+ }
19300
+ result = await executeAutoUpdate(plan, {
19301
+ download: deps?.download ?? realDownload,
19302
+ install: deps?.install ?? realInstall,
19303
+ restart: deps?.restart ?? realRestart,
19304
+ platform: deps?.platform,
19305
+ verify: deps?.verify,
19306
+ stopping
19307
+ });
19308
+ } finally {
19309
+ lock.release();
19310
+ }
19311
+ if (result.reason === STOPPING_REASON) return result;
19275
19312
  if (!result.updated) {
19276
19313
  const failures = target ? noteUpdateFailure(target) : 1;
19277
19314
  if (failures <= GIVE_UP_AFTER) {
@@ -19287,14 +19324,18 @@ async function runAutoUpdate(base2, authHeaders, ownVersion3, deps) {
19287
19324
  }
19288
19325
  return result;
19289
19326
  }
19290
- var tarballUrl, GIVE_UP_AFTER, reportedStandingSkip;
19327
+ var tarballUrl, GIVE_UP_AFTER, reportedStandingSkip, STOPPING_REASON, LOCKED_REASON, stopRequested;
19291
19328
  var init_auto_update = __esm({
19292
19329
  "src/auto-update.ts"() {
19293
19330
  "use strict";
19294
19331
  init_http();
19332
+ init_index_lock();
19295
19333
  tarballUrl = (base2, version) => `${base2.replace(/\/+$/, "")}/install/${version ? `chat-recall-${version}.tgz` : "chat-recall.tgz"}`;
19296
19334
  GIVE_UP_AFTER = 3;
19297
19335
  reportedStandingSkip = /* @__PURE__ */ new Set();
19336
+ STOPPING_REASON = "not installed: this process is shutting down";
19337
+ LOCKED_REASON = "another process is installing an update";
19338
+ stopRequested = false;
19298
19339
  }
19299
19340
  });
19300
19341
 
@@ -20898,7 +20939,7 @@ var init_sync_client = __esm({
20898
20939
  ownVersion = JSON.parse(readFileSync35(join42(dir, "../package.json"), "utf-8")).version || ownVersion;
20899
20940
  } catch {
20900
20941
  try {
20901
- if (true) ownVersion = "0.7.10";
20942
+ if (true) ownVersion = "0.7.11";
20902
20943
  } catch {
20903
20944
  }
20904
20945
  }
@@ -24035,7 +24076,7 @@ try {
24035
24076
  ownVersion2 = JSON.parse(readFileSync39(join48(dir, "../package.json"), "utf-8")).version || ownVersion2;
24036
24077
  } catch {
24037
24078
  try {
24038
- if (true) ownVersion2 = "0.7.10";
24079
+ if (true) ownVersion2 = "0.7.11";
24039
24080
  } catch {
24040
24081
  }
24041
24082
  }
@@ -24420,7 +24461,7 @@ async function runCollectorMigration(opts) {
24420
24461
  init_sync_ledger();
24421
24462
  init_collector_health();
24422
24463
  import { existsSync as existsSync50, readFileSync as readFileSync45, statSync as statSync45 } from "fs";
24423
- var CLI_VERSION3 = true ? "0.7.10" : "0.0.0";
24464
+ var CLI_VERSION3 = true ? "0.7.11" : "0.0.0";
24424
24465
  var DEBOUNCE_MS = 5e3;
24425
24466
  var PLANS_DIR = claudeBackend.plansDir();
24426
24467
  var TASKS_DIR = claudeBackend.tasksDir();
@@ -24976,6 +25017,7 @@ if (CODE_INDEX_ON) setTimeout(() => {
24976
25017
  }, 15e4);
24977
25018
  function shutdown(signal) {
24978
25019
  daemonLog.info(`Received ${signal}, shutting down...`);
25020
+ stopAutoUpdates();
24979
25021
  try {
24980
25022
  flushLedger();
24981
25023
  } catch (e) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chat-recall",
3
- "version": "0.7.10",
3
+ "version": "0.7.11",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/munhq/chat-recall.git"