chat-recall 0.5.24 → 0.5.25

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.
@@ -46,6 +46,8 @@ export interface UpdateDeps {
46
46
  install: (tgzPath: string) => void;
47
47
  restart: (platform: NodeJS.Platform) => void;
48
48
  platform?: NodeJS.Platform;
49
+ /** Version actually on disk after the install — the post-condition check. */
50
+ verify?: () => string | null;
49
51
  }
50
52
  export interface UpdateResult {
51
53
  updated: boolean;
@@ -55,6 +57,14 @@ export interface UpdateResult {
55
57
  }
56
58
  /** Execute a plan: download → checksum-verify → install → restart. */
57
59
  export declare function executeAutoUpdate(plan: UpdatePlan, deps: UpdateDeps): Promise<UpdateResult>;
60
+ /**
61
+ * The npm prefix the RUNNING copy was installed into.
62
+ *
63
+ * `<prefix>/lib/node_modules/chat-recall/dist/auto-update.js` → `<prefix>`.
64
+ * Returns null when this file is not inside a node_modules tree (a source
65
+ * checkout, a bundled binary), where there is nothing to reinstall over.
66
+ */
67
+ export declare function runningPrefix(moduleUrl?: string): string | null;
58
68
  /**
59
69
  * Full flow for one logged-in server. Best-effort — any failure returns a
60
70
  * reason and never throws into the daemon loop.
@@ -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,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,WAA0D,CAAC;AAElG,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,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,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;CAC5B;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,CAcjG;AAqBD;;;GAGG;AACH,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,CAkDvB"}
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,eAAO,MAAM,UAAU,GAAI,MAAM,MAAM,WAA0D,CAAC;AAElG,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,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,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,CAkCjG;AASD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,SAAS,SAAkB,GAAG,MAAM,GAAG,IAAI,CAWxE;AAuCD;;;GAGG;AACH,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,CAkDvB"}
@@ -19,7 +19,7 @@ import { readFileSync } from 'node:fs';
19
19
  import { fileURLToPath } from 'node:url';
20
20
  import { fetchWithTimeout } from './http.js';
21
21
  import { writeFileSync, mkdtempSync } from 'node:fs';
22
- import { join, dirname } from 'node:path';
22
+ import { join, dirname, sep } from 'node:path';
23
23
  import { tmpdir } from 'node:os';
24
24
  import { createHash } from 'node:crypto';
25
25
  /** semver-ish compare: -1 (a<b), 0 (a==b), 1 (a>b). Ignores prerelease tags. */
@@ -113,6 +113,24 @@ export async function executeAutoUpdate(plan, deps) {
113
113
  catch (e) {
114
114
  return { updated: false, reason: `install failed: ${e instanceof Error ? e.message : e}` };
115
115
  }
116
+ // VERIFY THE BYTES ON DISK, because "npm exited 0" is not "the user now runs
117
+ // the new version". This reported `updated 0.5.18 → 0.5.24` on every sync for
118
+ // six releases while the copy on PATH never changed — npm had succeeded into a
119
+ // different prefix (see realInstall). An unverified success is the worst
120
+ // possible outcome: it silences the update notice too, so nothing ever
121
+ // complains again.
122
+ //
123
+ // `verify` is injectable so a test can drive both outcomes; the default reads
124
+ // the manifest of the package THIS file was loaded from.
125
+ const landed = (deps.verify ?? installedVersion)();
126
+ if (landed && plan.to && compareVersions(landed, plan.to) < 0) {
127
+ return {
128
+ updated: false,
129
+ reason: `install reported success but ${landed} is still on disk (wanted ${plan.to}) — `
130
+ + 'the package that runs is not the one npm wrote. Reinstall by hand: '
131
+ + `npm install -g ${plan.url}`,
132
+ };
133
+ }
116
134
  try {
117
135
  deps.restart(deps.platform ?? process.platform);
118
136
  }
@@ -126,9 +144,54 @@ async function realDownload(url) {
126
144
  throw new Error(`HTTP ${res.status}`);
127
145
  return Buffer.from(await res.arrayBuffer());
128
146
  }
147
+ /**
148
+ * The npm prefix the RUNNING copy was installed into.
149
+ *
150
+ * `<prefix>/lib/node_modules/chat-recall/dist/auto-update.js` → `<prefix>`.
151
+ * Returns null when this file is not inside a node_modules tree (a source
152
+ * checkout, a bundled binary), where there is nothing to reinstall over.
153
+ */
154
+ export function runningPrefix(moduleUrl = import.meta.url) {
155
+ const here = fileURLToPath(moduleUrl);
156
+ const marker = `${sep}node_modules${sep}`;
157
+ const at = here.lastIndexOf(marker);
158
+ if (at === -1)
159
+ return null;
160
+ // <prefix>/lib/node_modules/... → strip the trailing `/lib` too, because that
161
+ // is what `npm --prefix` expects.
162
+ const beforeNodeModules = here.slice(0, at);
163
+ return beforeNodeModules.endsWith(`${sep}lib`)
164
+ ? beforeNodeModules.slice(0, -4)
165
+ : beforeNodeModules;
166
+ }
167
+ /**
168
+ * Install the new tarball OVER THE COPY THAT IS RUNNING.
169
+ *
170
+ * ── The silent no-op this fixes ───────────────────────────────────────────
171
+ * This was `npm install -g`, with a `--prefix ~/.local` fallback only if that
172
+ * THREW. On a machine with nvm, plain `npm install -g` succeeds — into nvm's
173
+ * prefix — so the fallback never ran, and a CLI living in `~/.local` (which is
174
+ * where install.sh puts it whenever the global prefix is not writable, i.e.
175
+ * exactly the population the fallback exists for) was never replaced. Measured
176
+ * on a real machine:
177
+ *
178
+ * ~/.nvm/versions/node/v23.9.0/lib/node_modules/chat-recall 0.5.24 (not on PATH)
179
+ * ~/.local/lib/node_modules/chat-recall 0.5.18 (on PATH)
180
+ *
181
+ * The updater reported `✓ updated 0.5.18 → 0.5.24` truthfully — it HAD installed
182
+ * 0.5.24 — while every command kept running 0.5.18, and it did so again on every
183
+ * sync, for every release. A self-updater that installs somewhere the user never
184
+ * runs is worse than none: it reports success forever.
185
+ *
186
+ * So target the prefix this file was loaded from, and fall back to npm's own
187
+ * global only when that cannot be determined.
188
+ */
129
189
  function realInstall(tgz) {
130
- // Prefer a global install; fall back to a user prefix when global isn't
131
- // writable (same policy as install.sh).
190
+ const prefix = runningPrefix();
191
+ if (prefix) {
192
+ execSync(`npm install -g --prefix "${prefix}" "${tgz}"`, { stdio: 'ignore' });
193
+ return;
194
+ }
132
195
  try {
133
196
  execSync(`npm install -g "${tgz}"`, { stdio: 'ignore' });
134
197
  }
@@ -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":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,CAAS;IAClD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAA4B,EAAE,IAAwB;IACxF,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACrE,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,0BAA0B,CAAC;AAElG,wEAAwE;AACxE,MAAM,UAAU,OAAO,CAAC,CAAS,EAAE,CAAgB;IACjD,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,OAAO,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,uEAAuE;QACvE,2EAA2E;QAC3E,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC;QACpE,OAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC,OAAO,IAAI,IAAI,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAWD,4DAA4D;AAC5D,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAU,EAAE,UAAkB,EAAE,IAAwB;IACnG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;IAC9G,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,IAAI,CAAC,OAAO,IAAI,GAAG,GAAG,EAAE,CAAC;IACxI,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,wBAAwB,UAAU,cAAc,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;IACpJ,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,GAAG,CAAC,OAAO,UAAU,UAAU,EAAE,EAAE,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;AAC7J,CAAC;AAaD,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAgB,EAAE,IAAgB;IACxE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IAC9F,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QAAC,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAAC,CAAC;IAC1G,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3D,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,+BAA+B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,qBAAqB,EAAE,CAAC;IACnK,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IACzC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC;QAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAAC,CAAC;IAC1B,OAAO,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAAC,CAAC;IAEzG,6EAA6E;IAC7E,8EAA8E;IAC9E,+EAA+E;IAC/E,yEAAyE;IACzE,uEAAuE;IACvE,mBAAmB;IACnB,EAAE;IACF,8EAA8E;IAC9E,yDAAyD;IACzD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,gBAAgB,CAAC,EAAE,CAAC;IACnD,IAAI,MAAM,IAAI,IAAI,CAAC,EAAE,IAAI,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9D,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,gCAAgC,MAAM,6BAA6B,IAAI,CAAC,EAAE,MAAM;kBACpF,qEAAqE;kBACrE,kBAAkB,IAAI,CAAC,GAAG,EAAE;SACjC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,6DAA6D,CAAC,CAAC;IAChI,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;AACtG,CAAC;AAED,yEAAyE;AAEzE,KAAK,UAAU,YAAY,CAAC,GAAW;IACrC,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9C,CAAC;AACD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;IACvD,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,GAAG,GAAG,eAAe,GAAG,EAAE,CAAC;IAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,EAAE,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3B,8EAA8E;IAC9E,kCAAkC;IAClC,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,OAAO,iBAAiB,CAAC,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC;QAC5C,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,iBAAiB,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAC;IAC/B,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC,4BAA4B,MAAM,MAAM,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9E,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QAAC,QAAQ,CAAC,mBAAmB,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,CAAC;IACjE,MAAM,CAAC;QAAC,QAAQ,CAAC,4BAA4B,OAAO,CAAC,GAAG,CAAC,IAAI,aAAa,GAAG,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,CAAC;AAC3G,CAAC;AACD,SAAS,WAAW,CAAC,QAAyB;IAC5C,IAAI,QAAQ,KAAK,OAAO;QAAE,QAAQ,CAAC,oDAAoD,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;SACzG,IAAI,QAAQ,KAAK,QAAQ;QAAE,QAAQ,CAAC,2DAA2D,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;SAC1I,IAAI,QAAQ,KAAK,OAAO;QAAE,QAAQ,CAAC,2EAA2E,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC5I,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,WAAmC,EACnC,UAAkB,EAClB,IAA0B;IAE1B,IAAI,IAAU,CAAC;IACf,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,mBAAmB,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAC7G,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;QAClF,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAS,CAAC;IACpC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAAC,CAAC;IAErH,+EAA+E;IAC/E,4BAA4B;IAC5B,EAAE;IACF,4EAA4E;IAC5E,8EAA8E;IAC9E,6EAA6E;IAC7E,4EAA4E;IAC5E,4EAA4E;IAC5E,8EAA8E;IAC9E,gFAAgF;IAChF,+DAA+D;IAC/D,EAAE;IACF,6EAA6E;IAC7E,8EAA8E;IAC9E,0EAA0E;IAC1E,wEAAwE;IACxE,8CAA8C;IAC9C,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAE7D,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAC3F,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE;QAC3C,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,YAAY;QACxC,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,WAAW;QACrC,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,WAAW;QACrC,QAAQ,EAAE,IAAI,EAAE,QAAQ;KACzB,CAAC,CAAC;IAEH,8EAA8E;IAC9E,+EAA+E;IAC/E,4DAA4D;IAC5D,yEAAyE;IACzE,wEAAwE;IACxE,0EAA0E;IAC1E,kEAAkE;IAClE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACjE,iBAAiB,CAAC,oBAAoB,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtG,CAAC;QAAC,MAAM,CAAC,CAAC,8BAA8B,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/cli.js CHANGED
@@ -2480,7 +2480,7 @@ var require_transport = __commonJS({
2480
2480
  "use strict";
2481
2481
  var { createRequire: createRequire3 } = __require("module");
2482
2482
  var getCallers = require_caller();
2483
- var { join: join61, isAbsolute: isAbsolute4, sep: sep3 } = __require("node:path");
2483
+ var { join: join61, isAbsolute: isAbsolute4, sep: sep4 } = __require("node:path");
2484
2484
  var sleep2 = require_atomic_sleep();
2485
2485
  var onExit = require_on_exit_leak_free();
2486
2486
  var ThreadStream = require_thread_stream();
@@ -2588,7 +2588,7 @@ var require_transport = __commonJS({
2588
2588
  let fixTarget2;
2589
2589
  for (const filePath of callers) {
2590
2590
  try {
2591
- const context3 = filePath === "node:repl" ? process.cwd() + sep3 : filePath;
2591
+ const context3 = filePath === "node:repl" ? process.cwd() + sep4 : filePath;
2592
2592
  fixTarget2 = createRequire3(context3).resolve(origin);
2593
2593
  break;
2594
2594
  } catch (err) {
@@ -6659,8 +6659,8 @@ function decodeDirName(dirName) {
6659
6659
  }
6660
6660
  for (let len = 2; len <= segments.length - i; len++) {
6661
6661
  const joinedSegments = segments.slice(i, i + len);
6662
- for (const sep3 of ["-", "_", "."]) {
6663
- const candidate = join5(currentPath, joinedSegments.join(sep3));
6662
+ for (const sep4 of ["-", "_", "."]) {
6663
+ const candidate = join5(currentPath, joinedSegments.join(sep4));
6664
6664
  if (existsSync5(candidate)) {
6665
6665
  currentPath = candidate;
6666
6666
  i += len;
@@ -19730,7 +19730,7 @@ var init_http = __esm({
19730
19730
  CLI_VERSION = JSON.parse(readFileSync33(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
19731
19731
  } catch {
19732
19732
  try {
19733
- if (true) CLI_VERSION = "0.5.24";
19733
+ if (true) CLI_VERSION = "0.5.25";
19734
19734
  } catch {
19735
19735
  }
19736
19736
  }
@@ -20242,7 +20242,7 @@ var init_telemetry = __esm({
20242
20242
  init_sync_client();
20243
20243
  cliVersion2 = () => {
20244
20244
  try {
20245
- return true ? "0.5.24" : "dev";
20245
+ return true ? "0.5.25" : "dev";
20246
20246
  } catch {
20247
20247
  return "dev";
20248
20248
  }
@@ -20566,13 +20566,14 @@ __export(auto_update_exports, {
20566
20566
  newerOf: () => newerOf,
20567
20567
  planAutoUpdate: () => planAutoUpdate,
20568
20568
  runAutoUpdate: () => runAutoUpdate,
20569
+ runningPrefix: () => runningPrefix,
20569
20570
  tarballUrl: () => tarballUrl
20570
20571
  });
20571
20572
  import { execSync as execSync2 } from "node:child_process";
20572
20573
  import { readFileSync as readFileSync36 } from "node:fs";
20573
20574
  import { fileURLToPath as fileURLToPath2 } from "node:url";
20574
20575
  import { writeFileSync as writeFileSync8, mkdtempSync as mkdtempSync3 } from "node:fs";
20575
- import { join as join43, dirname as dirname18 } from "node:path";
20576
+ import { join as join43, dirname as dirname18, sep as sep2 } from "node:path";
20576
20577
  import { tmpdir as tmpdir2 } from "node:os";
20577
20578
  import { createHash as createHash12 } from "node:crypto";
20578
20579
  function compareVersions(a, b) {
@@ -20628,6 +20629,13 @@ async function executeAutoUpdate(plan, deps) {
20628
20629
  } catch (e) {
20629
20630
  return { updated: false, reason: `install failed: ${e instanceof Error ? e.message : e}` };
20630
20631
  }
20632
+ const landed = (deps.verify ?? installedVersion)();
20633
+ if (landed && plan.to && compareVersions(landed, plan.to) < 0) {
20634
+ return {
20635
+ updated: false,
20636
+ 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}`
20637
+ };
20638
+ }
20631
20639
  try {
20632
20640
  deps.restart(deps.platform ?? process.platform);
20633
20641
  } catch {
@@ -20639,7 +20647,20 @@ async function realDownload(url) {
20639
20647
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
20640
20648
  return Buffer.from(await res.arrayBuffer());
20641
20649
  }
20650
+ function runningPrefix(moduleUrl = import.meta.url) {
20651
+ const here = fileURLToPath2(moduleUrl);
20652
+ const marker = `${sep2}node_modules${sep2}`;
20653
+ const at = here.lastIndexOf(marker);
20654
+ if (at === -1) return null;
20655
+ const beforeNodeModules = here.slice(0, at);
20656
+ return beforeNodeModules.endsWith(`${sep2}lib`) ? beforeNodeModules.slice(0, -4) : beforeNodeModules;
20657
+ }
20642
20658
  function realInstall(tgz) {
20659
+ const prefix = runningPrefix();
20660
+ if (prefix) {
20661
+ execSync2(`npm install -g --prefix "${prefix}" "${tgz}"`, { stdio: "ignore" });
20662
+ return;
20663
+ }
20643
20664
  try {
20644
20665
  execSync2(`npm install -g "${tgz}"`, { stdio: "ignore" });
20645
20666
  } catch {
@@ -22217,7 +22238,7 @@ var init_sync_client = __esm({
22217
22238
  ownVersion = JSON.parse(readFileSync37(join44(dir, "../package.json"), "utf-8")).version || ownVersion;
22218
22239
  } catch {
22219
22240
  try {
22220
- if (true) ownVersion = "0.5.24";
22241
+ if (true) ownVersion = "0.5.25";
22221
22242
  } catch {
22222
22243
  }
22223
22244
  }
@@ -22332,7 +22353,7 @@ var init_update_notice = __esm({
22332
22353
 
22333
22354
  // ../engine/dist/core/which.js
22334
22355
  import { existsSync as existsSync43, statSync as statSync39, accessSync, constants } from "node:fs";
22335
- import { join as join46, isAbsolute as isAbsolute2, delimiter as delimiter2, sep as sep2 } from "node:path";
22356
+ import { join as join46, isAbsolute as isAbsolute2, delimiter as delimiter2, sep as sep3 } from "node:path";
22336
22357
  function executable(p) {
22337
22358
  try {
22338
22359
  if (!statSync39(p).isFile())
@@ -22360,7 +22381,7 @@ function candidates(name) {
22360
22381
  function resolveOnPath(name) {
22361
22382
  if (!name)
22362
22383
  return null;
22363
- if (name.includes("/") || isWindows && name.includes(sep2) || isAbsolute2(name)) {
22384
+ if (name.includes("/") || isWindows && name.includes(sep3) || isAbsolute2(name)) {
22364
22385
  for (const c of candidates(name))
22365
22386
  if (executable(c))
22366
22387
  return c;
@@ -25871,7 +25892,7 @@ var init_intent_drain = __esm({
25871
25892
  ownVersion2 = JSON.parse(readFileSync46(join55(dir, "../package.json"), "utf-8")).version || ownVersion2;
25872
25893
  } catch {
25873
25894
  try {
25874
- if (true) ownVersion2 = "0.5.24";
25895
+ if (true) ownVersion2 = "0.5.25";
25875
25896
  } catch {
25876
25897
  }
25877
25898
  }
package/dist/mcp.js CHANGED
@@ -2480,7 +2480,7 @@ var require_transport = __commonJS({
2480
2480
  "use strict";
2481
2481
  var { createRequire: createRequire3 } = __require("module");
2482
2482
  var getCallers = require_caller();
2483
- var { join: join53, isAbsolute: isAbsolute3, sep: sep3 } = __require("node:path");
2483
+ var { join: join53, isAbsolute: isAbsolute3, sep: sep4 } = __require("node:path");
2484
2484
  var sleep = require_atomic_sleep();
2485
2485
  var onExit = require_on_exit_leak_free();
2486
2486
  var ThreadStream = require_thread_stream();
@@ -2588,7 +2588,7 @@ var require_transport = __commonJS({
2588
2588
  let fixTarget2;
2589
2589
  for (const filePath of callers) {
2590
2590
  try {
2591
- const context = filePath === "node:repl" ? process.cwd() + sep3 : filePath;
2591
+ const context = filePath === "node:repl" ? process.cwd() + sep4 : filePath;
2592
2592
  fixTarget2 = createRequire3(context).resolve(origin);
2593
2593
  break;
2594
2594
  } catch (err) {
@@ -7044,8 +7044,8 @@ function decodeDirName(dirName) {
7044
7044
  }
7045
7045
  for (let len = 2; len <= segments.length - i; len++) {
7046
7046
  const joinedSegments = segments.slice(i, i + len);
7047
- for (const sep3 of ["-", "_", "."]) {
7048
- const candidate = join6(currentPath, joinedSegments.join(sep3));
7047
+ for (const sep4 of ["-", "_", "."]) {
7048
+ const candidate = join6(currentPath, joinedSegments.join(sep4));
7049
7049
  if (existsSync6(candidate)) {
7050
7050
  currentPath = candidate;
7051
7051
  i += len;
@@ -20633,7 +20633,7 @@ var init_http = __esm({
20633
20633
  CLI_VERSION = JSON.parse(readFileSync37(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
20634
20634
  } catch {
20635
20635
  try {
20636
- if (true) CLI_VERSION = "0.5.24";
20636
+ if (true) CLI_VERSION = "0.5.25";
20637
20637
  } catch {
20638
20638
  }
20639
20639
  }
@@ -21145,7 +21145,7 @@ var init_telemetry = __esm({
21145
21145
  init_sync_client();
21146
21146
  cliVersion2 = () => {
21147
21147
  try {
21148
- return true ? "0.5.24" : "dev";
21148
+ return true ? "0.5.25" : "dev";
21149
21149
  } catch {
21150
21150
  return "dev";
21151
21151
  }
@@ -21302,13 +21302,14 @@ __export(auto_update_exports, {
21302
21302
  newerOf: () => newerOf,
21303
21303
  planAutoUpdate: () => planAutoUpdate,
21304
21304
  runAutoUpdate: () => runAutoUpdate,
21305
+ runningPrefix: () => runningPrefix,
21305
21306
  tarballUrl: () => tarballUrl
21306
21307
  });
21307
21308
  import { execSync as execSync4 } from "node:child_process";
21308
21309
  import { readFileSync as readFileSync38 } from "node:fs";
21309
21310
  import { fileURLToPath as fileURLToPath2 } from "node:url";
21310
21311
  import { writeFileSync as writeFileSync9, mkdtempSync as mkdtempSync3 } from "node:fs";
21311
- import { join as join48, dirname as dirname18 } from "node:path";
21312
+ import { join as join48, dirname as dirname18, sep as sep3 } from "node:path";
21312
21313
  import { tmpdir as tmpdir2 } from "node:os";
21313
21314
  import { createHash as createHash13 } from "node:crypto";
21314
21315
  function compareVersions(a, b) {
@@ -21364,6 +21365,13 @@ async function executeAutoUpdate(plan, deps) {
21364
21365
  } catch (e) {
21365
21366
  return { updated: false, reason: `install failed: ${e instanceof Error ? e.message : e}` };
21366
21367
  }
21368
+ const landed = (deps.verify ?? installedVersion)();
21369
+ if (landed && plan.to && compareVersions(landed, plan.to) < 0) {
21370
+ return {
21371
+ updated: false,
21372
+ 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}`
21373
+ };
21374
+ }
21367
21375
  try {
21368
21376
  deps.restart(deps.platform ?? process.platform);
21369
21377
  } catch {
@@ -21375,7 +21383,20 @@ async function realDownload(url) {
21375
21383
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
21376
21384
  return Buffer.from(await res.arrayBuffer());
21377
21385
  }
21386
+ function runningPrefix(moduleUrl = import.meta.url) {
21387
+ const here = fileURLToPath2(moduleUrl);
21388
+ const marker = `${sep3}node_modules${sep3}`;
21389
+ const at = here.lastIndexOf(marker);
21390
+ if (at === -1) return null;
21391
+ const beforeNodeModules = here.slice(0, at);
21392
+ return beforeNodeModules.endsWith(`${sep3}lib`) ? beforeNodeModules.slice(0, -4) : beforeNodeModules;
21393
+ }
21378
21394
  function realInstall(tgz) {
21395
+ const prefix = runningPrefix();
21396
+ if (prefix) {
21397
+ execSync4(`npm install -g --prefix "${prefix}" "${tgz}"`, { stdio: "ignore" });
21398
+ return;
21399
+ }
21379
21400
  try {
21380
21401
  execSync4(`npm install -g "${tgz}"`, { stdio: "ignore" });
21381
21402
  } catch {
@@ -22953,7 +22974,7 @@ var init_sync_client = __esm({
22953
22974
  ownVersion = JSON.parse(readFileSync39(join49(dir, "../package.json"), "utf-8")).version || ownVersion;
22954
22975
  } catch {
22955
22976
  try {
22956
- if (true) ownVersion = "0.5.24";
22977
+ if (true) ownVersion = "0.5.25";
22957
22978
  } catch {
22958
22979
  }
22959
22980
  }
package/dist/watch.js CHANGED
@@ -2587,7 +2587,7 @@ var require_transport = __commonJS({
2587
2587
  "use strict";
2588
2588
  var { createRequire: createRequire3 } = __require("module");
2589
2589
  var getCallers = require_caller();
2590
- var { join: join56, isAbsolute: isAbsolute4, sep: sep4 } = __require("node:path");
2590
+ var { join: join56, isAbsolute: isAbsolute4, sep: sep5 } = __require("node:path");
2591
2591
  var sleep = require_atomic_sleep();
2592
2592
  var onExit = require_on_exit_leak_free();
2593
2593
  var ThreadStream = require_thread_stream();
@@ -2695,7 +2695,7 @@ var require_transport = __commonJS({
2695
2695
  let fixTarget2;
2696
2696
  for (const filePath of callers) {
2697
2697
  try {
2698
- const context = filePath === "node:repl" ? process.cwd() + sep4 : filePath;
2698
+ const context = filePath === "node:repl" ? process.cwd() + sep5 : filePath;
2699
2699
  fixTarget2 = createRequire3(context).resolve(origin);
2700
2700
  break;
2701
2701
  } catch (err) {
@@ -6513,8 +6513,8 @@ function decodeDirName(dirName) {
6513
6513
  }
6514
6514
  for (let len = 2; len <= segments.length - i; len++) {
6515
6515
  const joinedSegments = segments.slice(i, i + len);
6516
- for (const sep4 of ["-", "_", "."]) {
6517
- const candidate = join5(currentPath, joinedSegments.join(sep4));
6516
+ for (const sep5 of ["-", "_", "."]) {
6517
+ const candidate = join5(currentPath, joinedSegments.join(sep5));
6518
6518
  if (existsSync5(candidate)) {
6519
6519
  currentPath = candidate;
6520
6520
  i += len;
@@ -19213,7 +19213,7 @@ var init_http = __esm({
19213
19213
  CLI_VERSION = JSON.parse(readFileSync33(new URL("../package.json", import.meta.url), "utf-8")).version || CLI_VERSION;
19214
19214
  } catch {
19215
19215
  try {
19216
- if (true) CLI_VERSION = "0.5.24";
19216
+ if (true) CLI_VERSION = "0.5.25";
19217
19217
  } catch {
19218
19218
  }
19219
19219
  }
@@ -19721,7 +19721,7 @@ var init_telemetry = __esm({
19721
19721
  init_sync_client();
19722
19722
  cliVersion = () => {
19723
19723
  try {
19724
- return true ? "0.5.24" : "dev";
19724
+ return true ? "0.5.25" : "dev";
19725
19725
  } catch {
19726
19726
  return "dev";
19727
19727
  }
@@ -19997,13 +19997,14 @@ __export(auto_update_exports, {
19997
19997
  newerOf: () => newerOf,
19998
19998
  planAutoUpdate: () => planAutoUpdate,
19999
19999
  runAutoUpdate: () => runAutoUpdate,
20000
+ runningPrefix: () => runningPrefix,
20000
20001
  tarballUrl: () => tarballUrl
20001
20002
  });
20002
20003
  import { execSync as execSync2 } from "node:child_process";
20003
20004
  import { readFileSync as readFileSync36 } from "node:fs";
20004
20005
  import { fileURLToPath as fileURLToPath2 } from "node:url";
20005
20006
  import { writeFileSync as writeFileSync8, mkdtempSync as mkdtempSync3 } from "node:fs";
20006
- import { join as join43, dirname as dirname18 } from "node:path";
20007
+ import { join as join43, dirname as dirname18, sep as sep2 } from "node:path";
20007
20008
  import { tmpdir as tmpdir2 } from "node:os";
20008
20009
  import { createHash as createHash11 } from "node:crypto";
20009
20010
  function compareVersions(a, b) {
@@ -20059,6 +20060,13 @@ async function executeAutoUpdate(plan, deps) {
20059
20060
  } catch (e) {
20060
20061
  return { updated: false, reason: `install failed: ${e instanceof Error ? e.message : e}` };
20061
20062
  }
20063
+ const landed = (deps.verify ?? installedVersion)();
20064
+ if (landed && plan.to && compareVersions(landed, plan.to) < 0) {
20065
+ return {
20066
+ updated: false,
20067
+ 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}`
20068
+ };
20069
+ }
20062
20070
  try {
20063
20071
  deps.restart(deps.platform ?? process.platform);
20064
20072
  } catch {
@@ -20070,7 +20078,20 @@ async function realDownload(url) {
20070
20078
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
20071
20079
  return Buffer.from(await res.arrayBuffer());
20072
20080
  }
20081
+ function runningPrefix(moduleUrl = import.meta.url) {
20082
+ const here = fileURLToPath2(moduleUrl);
20083
+ const marker = `${sep2}node_modules${sep2}`;
20084
+ const at = here.lastIndexOf(marker);
20085
+ if (at === -1) return null;
20086
+ const beforeNodeModules = here.slice(0, at);
20087
+ return beforeNodeModules.endsWith(`${sep2}lib`) ? beforeNodeModules.slice(0, -4) : beforeNodeModules;
20088
+ }
20073
20089
  function realInstall(tgz) {
20090
+ const prefix = runningPrefix();
20091
+ if (prefix) {
20092
+ execSync2(`npm install -g --prefix "${prefix}" "${tgz}"`, { stdio: "ignore" });
20093
+ return;
20094
+ }
20074
20095
  try {
20075
20096
  execSync2(`npm install -g "${tgz}"`, { stdio: "ignore" });
20076
20097
  } catch {
@@ -21565,7 +21586,7 @@ var init_sync_client = __esm({
21565
21586
  ownVersion = JSON.parse(readFileSync37(join44(dir, "../package.json"), "utf-8")).version || ownVersion;
21566
21587
  } catch {
21567
21588
  try {
21568
- if (true) ownVersion = "0.5.24";
21589
+ if (true) ownVersion = "0.5.25";
21569
21590
  } catch {
21570
21591
  }
21571
21592
  }
@@ -22165,7 +22186,7 @@ var init_toolkit_sync = __esm({
22165
22186
 
22166
22187
  // ../engine/dist/core/which.js
22167
22188
  import { existsSync as existsSync45, statSync as statSync40, accessSync, constants } from "node:fs";
22168
- import { join as join48, isAbsolute as isAbsolute2, delimiter as delimiter2, sep as sep2 } from "node:path";
22189
+ import { join as join48, isAbsolute as isAbsolute2, delimiter as delimiter2, sep as sep3 } from "node:path";
22169
22190
  function executable(p) {
22170
22191
  try {
22171
22192
  if (!statSync40(p).isFile())
@@ -22193,7 +22214,7 @@ function candidates(name) {
22193
22214
  function resolveOnPath(name) {
22194
22215
  if (!name)
22195
22216
  return null;
22196
- if (name.includes("/") || isWindows && name.includes(sep2) || isAbsolute2(name)) {
22217
+ if (name.includes("/") || isWindows && name.includes(sep3) || isAbsolute2(name)) {
22197
22218
  for (const c of candidates(name))
22198
22219
  if (executable(c))
22199
22220
  return c;
@@ -24068,7 +24089,7 @@ init_settings();
24068
24089
  init_sync_client();
24069
24090
  init_http();
24070
24091
  import chokidar from "chokidar";
24071
- import { dirname as dirname25, basename as basename27, join as join55, resolve as resolve2, sep as sep3 } from "path";
24092
+ import { dirname as dirname25, basename as basename27, join as join55, resolve as resolve2, sep as sep4 } from "path";
24072
24093
  import { homedir as homedir20 } from "os";
24073
24094
 
24074
24095
  // src/intent-drain.ts
@@ -24353,7 +24374,7 @@ try {
24353
24374
  ownVersion2 = JSON.parse(readFileSync41(join50(dir, "../package.json"), "utf-8")).version || ownVersion2;
24354
24375
  } catch {
24355
24376
  try {
24356
- if (true) ownVersion2 = "0.5.24";
24377
+ if (true) ownVersion2 = "0.5.25";
24357
24378
  } catch {
24358
24379
  }
24359
24380
  }
@@ -24697,7 +24718,7 @@ async function runCollectorMigration(opts) {
24697
24718
  init_sync_ledger();
24698
24719
  init_collector_health();
24699
24720
  import { existsSync as existsSync50, readFileSync as readFileSync46 } from "fs";
24700
- var CLI_VERSION3 = true ? "0.5.24" : "0.0.0";
24721
+ var CLI_VERSION3 = true ? "0.5.25" : "0.0.0";
24701
24722
  var DEBOUNCE_MS = 5e3;
24702
24723
  var CLAUDE_DIR = claudeBackend.projectsDir();
24703
24724
  var PLANS_DIR = claudeBackend.plansDir();
@@ -25090,7 +25111,7 @@ function discoverWorkspaces() {
25090
25111
  }
25091
25112
  }).filter(([p]) => isCodeWorkspace(p)).sort((a, b) => b[1] - a[1]);
25092
25113
  const roots = candidates2.map(([p]) => p);
25093
- const notAnAncestor = ([p]) => !roots.some((other) => other !== p && other.startsWith(p.endsWith(sep3) ? p : p + sep3));
25114
+ const notAnAncestor = ([p]) => !roots.some((other) => other !== p && other.startsWith(p.endsWith(sep4) ? p : p + sep4));
25094
25115
  return candidates2.filter(notAnAncestor).slice(0, CODE_INDEX_MAX).map(([p]) => p);
25095
25116
  }
25096
25117
  var WORKSPACE_MARKERS = [
@@ -25110,7 +25131,7 @@ var WORKSPACE_MARKERS = [
25110
25131
  function isCodeWorkspace(p) {
25111
25132
  try {
25112
25133
  const resolved = resolve2(p);
25113
- if (resolved === sep3 || resolved === homedir20() || dirname25(resolved) === resolved) return false;
25134
+ if (resolved === sep4 || resolved === homedir20() || dirname25(resolved) === resolved) return false;
25114
25135
  } catch {
25115
25136
  return false;
25116
25137
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chat-recall",
3
- "version": "0.5.24",
3
+ "version": "0.5.25",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/munhq/chat-recall.git"