chat-recall 0.5.24 → 0.5.26
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.
- package/dist/auto-update.d.ts +10 -0
- package/dist/auto-update.d.ts.map +1 -1
- package/dist/auto-update.js +66 -3
- package/dist/auto-update.js.map +1 -1
- package/dist/cli.js +32 -11
- package/dist/mcp.js +29 -8
- package/dist/watch.js +36 -15
- package/package.json +1 -1
package/dist/auto-update.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/auto-update.js
CHANGED
|
@@ -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
|
-
|
|
131
|
-
|
|
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
|
}
|
package/dist/auto-update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"auto-update.js","sourceRoot":"","sources":["../src/auto-update.ts"],"names":[],"mappings":"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"}
|
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:
|
|
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() +
|
|
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
|
|
6663
|
-
const candidate = join5(currentPath, joinedSegments.join(
|
|
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.
|
|
19733
|
+
if (true) CLI_VERSION = "0.5.26";
|
|
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.
|
|
20245
|
+
return true ? "0.5.26" : "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.
|
|
22241
|
+
if (true) ownVersion = "0.5.26";
|
|
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
|
|
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(
|
|
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.
|
|
25895
|
+
if (true) ownVersion2 = "0.5.26";
|
|
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:
|
|
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() +
|
|
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
|
|
7048
|
-
const candidate = join6(currentPath, joinedSegments.join(
|
|
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.
|
|
20636
|
+
if (true) CLI_VERSION = "0.5.26";
|
|
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.
|
|
21148
|
+
return true ? "0.5.26" : "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.
|
|
22977
|
+
if (true) ownVersion = "0.5.26";
|
|
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:
|
|
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() +
|
|
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
|
|
6517
|
-
const candidate = join5(currentPath, joinedSegments.join(
|
|
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.
|
|
19216
|
+
if (true) CLI_VERSION = "0.5.26";
|
|
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.
|
|
19724
|
+
return true ? "0.5.26" : "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.
|
|
21589
|
+
if (true) ownVersion = "0.5.26";
|
|
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
|
|
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(
|
|
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
|
|
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.
|
|
24377
|
+
if (true) ownVersion2 = "0.5.26";
|
|
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.
|
|
24721
|
+
var CLI_VERSION3 = true ? "0.5.26" : "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(
|
|
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 ===
|
|
25134
|
+
if (resolved === sep4 || resolved === homedir20() || dirname25(resolved) === resolved) return false;
|
|
25114
25135
|
} catch {
|
|
25115
25136
|
return false;
|
|
25116
25137
|
}
|