@euqns/nudge-mcp 1.35.0 → 1.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -244,6 +244,15 @@ checks or installs are logged and retried at the next five-minute check. Set
244
244
  `NUDGE_RUNNER_AUTO_UPDATE=0` in the runner's environment to disable release
245
245
  checks. Local checkouts and npx installs are not automatically upgraded.
246
246
 
247
+ Runners sharing an npm prefix serialize updates with a process lock outside
248
+ the package directory. The winner installs into a staging directory and checks
249
+ the real CLI, its imports, package version and bundled Codex executable before
250
+ activation. Waiting runners reuse that verified version. Failed installs leave
251
+ the running package intact; failed activation restores the previous build.
252
+ The previous package is retained beside the installation as
253
+ `.nudge-mcp-previous` until the next successful activation. Restart watchers and
254
+ supervisors wait for a complete, unlocked installation before loading it.
255
+
247
256
  A running runner picks up new builds by itself. The process supervises a child
248
257
  that watches its own installed code; when `dist/` changes (a rebuild, or an npm
249
258
  upgrade in place) it stops claiming jobs, lets in-flight jobs finish on the code
@@ -0,0 +1,173 @@
1
+ // Shared by updaters and supervisors. All coordination files live OUTSIDE the
2
+ // package npm replaces, and a restart requires an executable, complete build.
3
+ import { execFile } from "node:child_process";
4
+ import { randomUUID } from "node:crypto";
5
+ import fs from "node:fs/promises";
6
+ import path from "node:path";
7
+ import { setTimeout as sleep } from "node:timers/promises";
8
+ import { promisify } from "node:util";
9
+ const execFileAsync = promisify(execFile);
10
+ export function globalPackageDirectory(prefix) {
11
+ return path.join(prefix, ...(process.platform === "win32" ? [] : ["lib"]), "node_modules", "@euqns", "nudge-mcp");
12
+ }
13
+ export function installationLockDirectory(packageDir) {
14
+ return path.join(path.dirname(packageDir), ".nudge-mcp-update.lock");
15
+ }
16
+ const codeOf = (error) => error.code;
17
+ async function removeEmptyLock(directory) {
18
+ try {
19
+ await fs.rmdir(directory);
20
+ }
21
+ catch (error) {
22
+ if (!["ENOENT", "ENOTEMPTY", "EEXIST"].includes(codeOf(error) ?? ""))
23
+ throw error;
24
+ }
25
+ }
26
+ // Unlink only the dead owner's uniquely named file, then rmdir (never a
27
+ // recursive rm). Two stale-lock recoverers cannot delete a new owner's lock.
28
+ async function reclaimAbandonedLock(directory) {
29
+ let names;
30
+ try {
31
+ names = await fs.readdir(directory);
32
+ }
33
+ catch (error) {
34
+ if (codeOf(error) === "ENOENT")
35
+ return;
36
+ throw error;
37
+ }
38
+ if (names.length === 0) {
39
+ const stat = await fs.stat(directory).catch(() => null);
40
+ // Allow the mkdir winner time to publish its owner, including on slow disks.
41
+ if (stat && Date.now() - stat.mtimeMs > 30_000)
42
+ await removeEmptyLock(directory);
43
+ return;
44
+ }
45
+ for (const name of names) {
46
+ const pid = Number(/^(\d+)-[\da-f-]+\.lock$/.exec(name)?.[1]);
47
+ if (!Number.isSafeInteger(pid) || pid <= 0)
48
+ continue;
49
+ try {
50
+ process.kill(pid, 0);
51
+ continue;
52
+ }
53
+ catch (error) {
54
+ if (codeOf(error) !== "ESRCH")
55
+ continue;
56
+ }
57
+ try {
58
+ await fs.unlink(path.join(directory, name));
59
+ await removeEmptyLock(directory);
60
+ }
61
+ catch (error) {
62
+ if (codeOf(error) !== "ENOENT")
63
+ throw error;
64
+ }
65
+ }
66
+ }
67
+ export async function installationUpdateInProgress(packageDir) {
68
+ const directory = installationLockDirectory(packageDir);
69
+ await reclaimAbandonedLock(directory);
70
+ try {
71
+ await fs.access(directory);
72
+ return true;
73
+ }
74
+ catch (error) {
75
+ if (codeOf(error) === "ENOENT")
76
+ return false;
77
+ throw error;
78
+ }
79
+ }
80
+ export async function acquireInstallationLock(packageDir, options = {}) {
81
+ // Canonicalize the parent so alternate symlinks to one prefix share a lock.
82
+ await fs.mkdir(path.dirname(packageDir), { recursive: true });
83
+ const parent = await fs.realpath(path.dirname(packageDir));
84
+ const directory = installationLockDirectory(path.join(parent, path.basename(packageDir)));
85
+ const owner = path.join(directory, `${process.pid}-${randomUUID()}.lock`);
86
+ const deadline = Date.now() + (options.timeoutMs ?? 12 * 60_000);
87
+ for (;;) {
88
+ try {
89
+ await fs.mkdir(directory, { mode: 0o700 });
90
+ try {
91
+ await fs.writeFile(owner, "", { flag: "wx", mode: 0o600 });
92
+ // A process can be suspended between mkdir and write. If its empty
93
+ // directory was reclaimed, only one published owner may proceed.
94
+ const owners = await fs.readdir(directory);
95
+ if (owners.length !== 1 || owners[0] !== path.basename(owner)) {
96
+ await fs.unlink(owner).catch(() => undefined);
97
+ throw Object.assign(new Error("Update lock ownership changed"), { code: "EEXIST" });
98
+ }
99
+ }
100
+ catch (error) {
101
+ await removeEmptyLock(directory);
102
+ throw error;
103
+ }
104
+ return async () => {
105
+ try {
106
+ await fs.unlink(owner);
107
+ await removeEmptyLock(directory);
108
+ }
109
+ catch (error) {
110
+ if (codeOf(error) !== "ENOENT")
111
+ throw error;
112
+ }
113
+ };
114
+ }
115
+ catch (error) {
116
+ if (codeOf(error) !== "EEXIST")
117
+ throw error;
118
+ }
119
+ await reclaimAbandonedLock(directory);
120
+ if (Date.now() >= deadline)
121
+ throw new Error("Timed out waiting for another Nudge package update to finish.");
122
+ await sleep(options.retryMs ?? 250);
123
+ }
124
+ }
125
+ export async function installedPackageVersion(packageDir) {
126
+ const pkg = JSON.parse(await fs.readFile(path.join(packageDir, "package.json"), "utf8"));
127
+ if (pkg.name !== "@euqns/nudge-mcp" || typeof pkg.version !== "string" || !pkg.version) {
128
+ throw new Error("The installed Nudge package has no valid version.");
129
+ }
130
+ return pkg.version;
131
+ }
132
+ // A fresh process catches missing transitive imports that the current runner
133
+ // has already cached. --help loads the real CLI without connecting to Convex or
134
+ // starting jobs. Constructing the SDK also verifies its bundled native binary.
135
+ const VERIFY_SCRIPT = `
136
+ import fs from 'node:fs';
137
+ import path from 'node:path';
138
+ import { createRequire } from 'node:module';
139
+ import { pathToFileURL } from 'node:url';
140
+ import { execFileSync } from 'node:child_process';
141
+ const root = process.argv[1];
142
+ const pkg = JSON.parse(fs.readFileSync(path.join(root, 'package.json'), 'utf8'));
143
+ const { NUDGE_MCP_VERSION } = await import(pathToFileURL(path.join(root, 'dist/version.js')).href);
144
+ if (NUDGE_MCP_VERSION !== pkg.version) throw new Error('Package and executable versions disagree');
145
+ execFileSync(process.execPath, [path.join(root, 'dist/index.js'), '--help'], { timeout: 15000, stdio: 'pipe' });
146
+ if (pkg.dependencies?.['@openai/codex-sdk']) {
147
+ const require = createRequire(path.join(root, 'package.json'));
148
+ const { Codex } = await import('@openai/codex-sdk');
149
+ new Codex();
150
+ const cliPackage = require.resolve('@openai/codex/package.json');
151
+ const cli = JSON.parse(fs.readFileSync(cliPackage, 'utf8'));
152
+ execFileSync(process.execPath, [path.join(path.dirname(cliPackage), cli.bin.codex), '--version'], { timeout: 15000, stdio: 'pipe' });
153
+ }
154
+ `;
155
+ export async function verifyInstalledPackage(packageDir) {
156
+ const version = await installedPackageVersion(packageDir);
157
+ await execFileAsync(process.execPath, ["--input-type=module", "-e", VERIFY_SCRIPT, packageDir], {
158
+ cwd: packageDir, encoding: "utf8", timeout: 35_000, maxBuffer: 256 * 1024,
159
+ });
160
+ return version;
161
+ }
162
+ export async function canRestartInstalledPackage(packageDir) {
163
+ try {
164
+ if (await installationUpdateInProgress(packageDir))
165
+ return false;
166
+ await verifyInstalledPackage(packageDir);
167
+ return !(await installationUpdateInProgress(packageDir));
168
+ }
169
+ catch {
170
+ return false;
171
+ }
172
+ }
173
+ //# sourceMappingURL=runner-installation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner-installation.js","sourceRoot":"","sources":["../src/runner-installation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+ import fs from "node:fs/promises";
4
+ import os from "node:os";
5
+ import path from "node:path";
6
+ import { acquireInstallationLock, verifyInstalledPackage } from "./runner-installation.js";
7
+ test("verification uses the installed SDK's ESM import and checks its bundled CLI", async (t) => {
8
+ const root = await fs.mkdtemp(path.join(os.tmpdir(), "nudge-sdk-verification-"));
9
+ t.after(() => fs.rm(root, { recursive: true, force: true }));
10
+ const sdk = path.join(root, "node_modules/@openai/codex-sdk");
11
+ const cli = path.join(root, "node_modules/@openai/codex");
12
+ for (const directory of [path.join(root, "dist"), sdk, cli])
13
+ await fs.mkdir(directory, { recursive: true });
14
+ await fs.writeFile(path.join(root, "package.json"), JSON.stringify({ name: "@euqns/nudge-mcp", version: "1.35.1", type: "module", dependencies: { "@openai/codex-sdk": "0.153.4" } }));
15
+ await fs.writeFile(path.join(root, "dist/index.js"), "import '@openai/codex-sdk';");
16
+ await fs.writeFile(path.join(root, "dist/version.js"), 'export const NUDGE_MCP_VERSION = "1.35.1";');
17
+ // The real SDK exposes only an import condition, not require/package.json.
18
+ await fs.writeFile(path.join(sdk, "package.json"), JSON.stringify({ type: "module", exports: { ".": { import: "./index.js" } } }));
19
+ await fs.writeFile(path.join(sdk, "index.js"), "export class Codex {}");
20
+ await fs.writeFile(path.join(cli, "package.json"), JSON.stringify({ type: "module", bin: { codex: "codex.js" } }));
21
+ await fs.writeFile(path.join(cli, "codex.js"), "console.log('codex-cli 0.153.4');");
22
+ assert.equal(await verifyInstalledPackage(root), "1.35.1");
23
+ await fs.rm(path.join(cli, "codex.js"));
24
+ await assert.rejects(verifyInstalledPackage(root));
25
+ });
26
+ test("a live updater's lock cannot be stolen by another caller", async (t) => {
27
+ const parent = await fs.mkdtemp(path.join(os.tmpdir(), "nudge-live-lock-"));
28
+ t.after(() => fs.rm(parent, { recursive: true, force: true }));
29
+ const packageDir = path.join(parent, "nudge-mcp");
30
+ const release = await acquireInstallationLock(packageDir);
31
+ t.after(release);
32
+ await assert.rejects(acquireInstallationLock(packageDir, { timeoutMs: 30, retryMs: 5 }), /Timed out/);
33
+ await release();
34
+ await (await acquireInstallationLock(packageDir))();
35
+ });
36
+ //# sourceMappingURL=runner-installation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner-installation.test.js","sourceRoot":"","sources":["../src/runner-installation.test.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,9 @@ import { spawn } from "node:child_process";
20
20
  import fs from "node:fs";
21
21
  import path from "node:path";
22
22
  import { fileURLToPath } from "node:url";
23
+ import { setTimeout as sleep } from "node:timers/promises";
24
+ import { canRestartInstalledPackage } from "./runner-installation.js";
25
+ import { installedGlobalPrefix } from "./install-context.js";
23
26
  /** BSD EX_TEMPFAIL — the child's "respawn me" signal, distinct from crash (1)
24
27
  * and clean stop (0). */
25
28
  export const RESTART_EXIT_CODE = 75;
@@ -44,17 +47,34 @@ export function isCodeFile(name) {
44
47
  export function watchRunnerBuild(onChange, opts) {
45
48
  const dir = opts?.dir ?? path.dirname(fileURLToPath(import.meta.url));
46
49
  const quietMs = opts?.quietMs ?? 3_000;
50
+ const packageDir = path.dirname(dir);
51
+ const ready = opts?.ready ?? (() => canRestartInstalledPackage(packageDir));
47
52
  let timer = null;
48
53
  let fired = false;
54
+ let closed = false;
55
+ let generation = 0;
56
+ const check = async () => {
57
+ const observed = generation;
58
+ const healthy = await ready().catch(() => false);
59
+ if (closed || fired || observed !== generation)
60
+ return;
61
+ if (!healthy) {
62
+ // A failed npm install or another process still installing must never
63
+ // force this healthy, already-loaded process into a restart loop.
64
+ timer = setTimeout(() => void check(), quietMs);
65
+ timer.unref();
66
+ return;
67
+ }
68
+ fired = true;
69
+ onChange();
70
+ };
49
71
  const trigger = (file) => {
50
- if (fired || (file !== null && !isCodeFile(path.basename(file))))
72
+ if (closed || fired || (file !== null && !isCodeFile(path.basename(file))))
51
73
  return;
74
+ generation++;
52
75
  if (timer)
53
76
  clearTimeout(timer);
54
- timer = setTimeout(() => {
55
- fired = true;
56
- onChange();
57
- }, quietMs);
77
+ timer = setTimeout(() => void check(), quietMs);
58
78
  timer.unref();
59
79
  };
60
80
  let watcher;
@@ -66,10 +86,18 @@ export function watchRunnerBuild(onChange, opts) {
66
86
  // directory still catches index.js/runner.js, which every build touches.
67
87
  watcher = fs.watch(dir, (_event, file) => trigger(file));
68
88
  }
89
+ // npm/our updater can replace the entire package directory. The dist watch
90
+ // then follows the old inode, so also observe replacement of its parent.
91
+ const parentWatcher = fs.watch(path.dirname(packageDir), (_event, file) => {
92
+ if (file === null || file.toString() === path.basename(packageDir))
93
+ trigger(null);
94
+ });
69
95
  return () => {
96
+ closed = true;
70
97
  if (timer)
71
98
  clearTimeout(timer);
72
99
  watcher.close();
100
+ parentWatcher.close();
73
101
  };
74
102
  }
75
103
  /**
@@ -112,6 +140,16 @@ export async function supervise(subcommand, argv, extraEnv) {
112
140
  process.off("SIGINT", onInt);
113
141
  process.off("SIGTERM", onTerm);
114
142
  if (code === RESTART_EXIT_CODE && !shuttingDown) {
143
+ if (installedGlobalPrefix(fileURLToPath(import.meta.url))) {
144
+ const packageDir = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
145
+ let waiting = false;
146
+ while (!(await canRestartInstalledPackage(packageDir))) {
147
+ if (!waiting)
148
+ console.log(`[${subcommand}] waiting for a complete package installation before restarting…`);
149
+ waiting = true;
150
+ await sleep(1_000);
151
+ }
152
+ }
115
153
  console.log(`[${subcommand}] ⟳ restarting with the updated build…`);
116
154
  respawns += 1;
117
155
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"runner-restart.js","sourceRoot":"","sources":["../src/runner-restart.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner-restart.js","sourceRoot":"","sources":["../src/runner-restart.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import fs from "node:fs/promises";
4
4
  import os from "node:os";
5
5
  import path from "node:path";
6
6
  import { setTimeout as sleep } from "node:timers/promises";
7
+ import { acquireInstallationLock } from "./runner-installation.js";
7
8
  import { RESTART_EXIT_CODE, isCodeFile, watchRunnerBuild, } from "./runner-restart.js";
8
9
  test("restart exit code is distinct from crash and clean exit", () => {
9
10
  assert.notEqual(RESTART_EXIT_CODE, 0);
@@ -22,7 +23,7 @@ test("only real code files count as an update", () => {
22
23
  test("a burst of build writes fires onChange once, after the tree goes quiet", async () => {
23
24
  const dir = await fs.mkdtemp(path.join(os.tmpdir(), "nudge-restart-"));
24
25
  let fired = 0;
25
- const unwatch = watchRunnerBuild(() => fired++, { dir, quietMs: 60 });
26
+ const unwatch = watchRunnerBuild(() => fired++, { dir, quietMs: 60, ready: async () => true });
26
27
  try {
27
28
  await fs.writeFile(path.join(dir, "a.js"), "1");
28
29
  await sleep(20);
@@ -44,7 +45,7 @@ test("a burst of build writes fires onChange once, after the tree goes quiet", a
44
45
  test("non-code churn never fires", async () => {
45
46
  const dir = await fs.mkdtemp(path.join(os.tmpdir(), "nudge-restart-"));
46
47
  let fired = 0;
47
- const unwatch = watchRunnerBuild(() => fired++, { dir, quietMs: 40 });
48
+ const unwatch = watchRunnerBuild(() => fired++, { dir, quietMs: 40, ready: async () => true });
48
49
  try {
49
50
  await fs.writeFile(path.join(dir, "runner.js.map"), "{}");
50
51
  await fs.writeFile(path.join(dir, "types.d.ts"), "");
@@ -56,4 +57,62 @@ test("non-code churn never fires", async () => {
56
57
  await fs.rm(dir, { recursive: true, force: true });
57
58
  }
58
59
  });
60
+ async function buildFixture(root) {
61
+ await fs.mkdir(path.join(root, "dist"), { recursive: true });
62
+ await fs.writeFile(path.join(root, "package.json"), JSON.stringify({ name: "@euqns/nudge-mcp", version: "1.35.0", type: "module" }));
63
+ await fs.writeFile(path.join(root, "dist/version.js"), 'export const NUDGE_MCP_VERSION = "1.35.0";');
64
+ await fs.writeFile(path.join(root, "dist/index.js"), "import './runtime.js';");
65
+ await fs.writeFile(path.join(root, "dist/runtime.js"), "");
66
+ }
67
+ async function until(check) {
68
+ const deadline = Date.now() + 5_000;
69
+ while (!check() && Date.now() < deadline)
70
+ await sleep(20);
71
+ assert.ok(check(), "expected the verified build to become restartable");
72
+ }
73
+ test("a sibling updater can replace the package without restarting consumers until it releases the lock", async (t) => {
74
+ const parent = await fs.mkdtemp(path.join(os.tmpdir(), "nudge-replacement-"));
75
+ t.after(() => fs.rm(parent, { recursive: true, force: true }));
76
+ const root = path.join(parent, "nudge-mcp");
77
+ await buildFixture(root);
78
+ let fired = 0;
79
+ const unwatch = watchRunnerBuild(() => fired++, { dir: path.join(root, "dist"), quietMs: 30 });
80
+ t.after(unwatch);
81
+ const release = await acquireInstallationLock(root);
82
+ t.after(release);
83
+ await fs.rename(root, path.join(parent, "previous"));
84
+ await buildFixture(root);
85
+ await sleep(250);
86
+ assert.equal(fired, 0);
87
+ await release();
88
+ await until(() => fired === 1);
89
+ });
90
+ test("a partial install keeps the loaded process running and retries when dependencies return", async (t) => {
91
+ const parent = await fs.mkdtemp(path.join(os.tmpdir(), "nudge-partial-"));
92
+ t.after(() => fs.rm(parent, { recursive: true, force: true }));
93
+ const root = path.join(parent, "nudge-mcp");
94
+ await buildFixture(root);
95
+ let fired = 0;
96
+ const unwatch = watchRunnerBuild(() => fired++, { dir: path.join(root, "dist"), quietMs: 30 });
97
+ t.after(unwatch);
98
+ await fs.rm(path.join(root, "dist/runtime.js"));
99
+ await sleep(250);
100
+ assert.equal(fired, 0);
101
+ await fs.writeFile(path.join(root, "dist/runtime.js"), "");
102
+ await until(() => fired === 1);
103
+ });
104
+ test("closing a watcher cancels an in-flight readiness check", async (t) => {
105
+ const dir = await fs.mkdtemp(path.join(os.tmpdir(), "nudge-watcher-close-"));
106
+ t.after(() => fs.rm(dir, { recursive: true, force: true }));
107
+ let fired = 0, checking = false;
108
+ let complete;
109
+ const readiness = new Promise((resolve) => { complete = resolve; });
110
+ const unwatch = watchRunnerBuild(() => fired++, { dir, quietMs: 10, ready: () => { checking = true; return readiness; } });
111
+ await fs.writeFile(path.join(dir, "index.js"), "");
112
+ await until(() => checking);
113
+ unwatch();
114
+ complete(true);
115
+ await sleep(30);
116
+ assert.equal(fired, 0);
117
+ });
59
118
  //# sourceMappingURL=runner-restart.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner-restart.test.js","sourceRoot":"","sources":["../src/runner-restart.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner-restart.test.js","sourceRoot":"","sources":["../src/runner-restart.test.ts"],"names":[],"mappings":"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"}
@@ -14,7 +14,10 @@
14
14
  import { execFile } from "node:child_process";
15
15
  import { promisify } from "node:util";
16
16
  import { fileURLToPath } from "node:url";
17
+ import fs from "node:fs/promises";
18
+ import path from "node:path";
17
19
  import { installedGlobalPrefix } from "./install-context.js";
20
+ import { acquireInstallationLock, globalPackageDirectory, installedPackageVersion, verifyInstalledPackage, } from "./runner-installation.js";
18
21
  const execFileAsync = promisify(execFile);
19
22
  export const NUDGE_MCP_PACKAGE = "@euqns/nudge-mcp";
20
23
  /** A version string npm will accept as a spec — bare semver or a dist-tag. */
@@ -105,27 +108,69 @@ export async function performSelfUpdate(plan, deps = {}) {
105
108
  }
106
109
  const run = deps.run ?? defaultRun;
107
110
  let output = "";
111
+ let release;
112
+ let staging;
108
113
  try {
109
- const installed = await run("npm", plan.args);
114
+ const prefix = plan.prefix ?? (await run("npm", ["prefix", "--global"])).stdout.trim();
115
+ if (!path.isAbsolute(prefix))
116
+ throw new Error("Could not resolve npm's absolute global prefix.");
117
+ const packageDir = globalPackageDirectory(prefix);
118
+ release = await acquireInstallationLock(packageDir);
119
+ const previous = path.join(path.dirname(packageDir), ".nudge-mcp-previous");
120
+ // Recover the short rename window if the previous updater was killed.
121
+ if (!(await fs.stat(packageDir).catch(() => null)) && await fs.stat(previous).catch(() => null)) {
122
+ await fs.rename(previous, packageDir);
123
+ }
124
+ const target = normalizeTargetVersion(plan.spec.slice(`${NUDGE_MCP_PACKAGE}@`.length));
125
+ const current = await installedPackageVersion(packageDir).catch(() => null);
126
+ const exactTarget = /^\d+\.\d+\.\d+(?:[-+][\w.-]+)?$/.test(target);
127
+ if (current && exactTarget && (current === target || newerStableVersion(target, current))) {
128
+ try {
129
+ await verifyInstalledPackage(packageDir);
130
+ return { ok: true, installedVersion: current, output: `Already installed ${current}; reused the verified build.` };
131
+ }
132
+ catch {
133
+ // A broken install of the requested version still needs repairing.
134
+ }
135
+ }
136
+ // npm never writes into the running package. Keep staging on the same
137
+ // filesystem so activation uses renames, with the previous build retained.
138
+ staging = await fs.mkdtemp(path.join(path.dirname(packageDir), ".nudge-mcp-stage-"));
139
+ const installed = await run("npm", ["install", "-g", "--prefix", staging, plan.spec]);
110
140
  output = tailOutput(`${installed.stdout}\n${installed.stderr}`);
141
+ const candidate = globalPackageDirectory(staging);
142
+ const version = await verifyInstalledPackage(candidate);
143
+ if (exactTarget && version !== target)
144
+ throw new Error(`Expected Nudge ${target}, but npm installed ${version}.`);
145
+ if (current && newerStableVersion(version, current))
146
+ throw new Error(`Refusing to downgrade Nudge ${current} to ${version}.`);
147
+ await fs.rm(previous, { recursive: true, force: true });
148
+ const hadPrevious = !!(await fs.stat(packageDir).catch(() => null));
149
+ if (hadPrevious)
150
+ await fs.rename(packageDir, previous);
151
+ try {
152
+ await fs.rename(candidate, packageDir);
153
+ await verifyInstalledPackage(packageDir);
154
+ }
155
+ catch (error) {
156
+ await fs.rm(packageDir, { recursive: true, force: true });
157
+ if (hadPrevious)
158
+ await fs.rename(previous, packageDir);
159
+ throw error;
160
+ }
161
+ return { ok: true, installedVersion: version, output };
111
162
  }
112
163
  catch (err) {
113
164
  const e = err;
114
165
  const detail = tailOutput(`${e.stdout ?? ""}\n${e.stderr ?? ""}`) || e.message;
115
- return { ok: false, error: `npm ${plan.args.join(" ")} failed: ${detail}`, output: detail };
116
- }
117
- let installedVersion = null;
118
- try {
119
- const ls = await run("npm", ["ls", "-g", ...(plan.prefix ? ["--prefix", plan.prefix] : []), NUDGE_MCP_PACKAGE, "--json", "--depth=0"]);
120
- installedVersion = parseInstalledVersion(ls.stdout);
166
+ return { ok: false, error: `Nudge update failed: ${detail}`, output: detail };
121
167
  }
122
- catch (err) {
123
- // `npm ls` exits non-zero for peer warnings while still printing the tree;
124
- // the JSON on stdout is what matters.
125
- const e = err;
126
- installedVersion = e.stdout ? parseInstalledVersion(e.stdout) : null;
168
+ finally {
169
+ // Cleanup must not mask the install result or strand the shared lock.
170
+ if (staging)
171
+ await fs.rm(staging, { recursive: true, force: true }).catch(() => undefined);
172
+ await release?.().catch(() => undefined);
127
173
  }
128
- return { ok: true, installedVersion, output };
129
174
  }
130
175
  /** Only adopt newer stable releases; never downgrade a locally newer build. */
131
176
  export function newerStableVersion(current, candidate) {
@@ -1 +1 @@
1
- {"version":3,"file":"runner-update.js","sourceRoot":"","sources":["../src/runner-update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner-update.js","sourceRoot":"","sources":["../src/runner-update.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,33 @@
1
1
  import assert from "node:assert/strict";
2
2
  import test from "node:test";
3
+ import fs from "node:fs/promises";
4
+ import os from "node:os";
5
+ import path from "node:path";
6
+ import { setTimeout as sleep } from "node:timers/promises";
7
+ import { spawn } from "node:child_process";
8
+ import { globalPackageDirectory, installationLockDirectory } from "./runner-installation.js";
3
9
  import { checkLatestRelease, newerStableVersion, NUDGE_MCP_PACKAGE, normalizeTargetVersion, parseInstalledVersion, performSelfUpdate, planSelfUpdate, tailOutput, } from "./runner-update.js";
10
+ async function fixture(directory, version, broken = false) {
11
+ await fs.mkdir(path.join(directory, "dist"), { recursive: true });
12
+ await fs.writeFile(path.join(directory, "package.json"), JSON.stringify({ name: NUDGE_MCP_PACKAGE, version, type: "module" }));
13
+ await fs.writeFile(path.join(directory, "dist/version.js"), `export const NUDGE_MCP_VERSION = ${JSON.stringify(version)};`);
14
+ await fs.writeFile(path.join(directory, "dist/index.js"), "import './runtime.js';");
15
+ if (!broken)
16
+ await fs.writeFile(path.join(directory, "dist/runtime.js"), "export const ready = true;");
17
+ }
18
+ async function installation(t) {
19
+ const prefix = await fs.mkdtemp(path.join(os.tmpdir(), "nudge-update-test-"));
20
+ t.after(() => fs.rm(prefix, { recursive: true, force: true }));
21
+ const directory = globalPackageDirectory(prefix);
22
+ await fixture(directory, "1.34.0");
23
+ return { prefix, directory, plan: planSelfUpdate({ source: "global" }, "1.35.0", prefix) };
24
+ }
25
+ async function installCandidate(args, version = "1.35.0", broken = false) {
26
+ assert.equal(args[0], "install");
27
+ const prefix = args[args.indexOf("--prefix") + 1];
28
+ await fixture(globalPackageDirectory(prefix), version, broken);
29
+ return { stdout: "changed 1 package", stderr: "" };
30
+ }
4
31
  test("target version defaults to latest and drops a leading v", () => {
5
32
  assert.equal(normalizeTargetVersion(undefined), "latest");
6
33
  assert.equal(normalizeTargetVersion(" "), "latest");
@@ -41,48 +68,6 @@ test("tailOutput keeps only the last non-empty lines", () => {
41
68
  const tail = tailOutput(text, 3);
42
69
  assert.equal(tail, "line 17\nline 18\nline 19");
43
70
  });
44
- test("performSelfUpdate runs install then verifies with npm ls", async () => {
45
- const calls = [];
46
- const result = await performSelfUpdate(planSelfUpdate({ source: "global", npmGlobalPrefixWritable: true }, "1.28.0"), {
47
- run: async (cmd, args) => {
48
- calls.push([cmd, ...args]);
49
- if (args[0] === "ls") {
50
- return {
51
- stdout: JSON.stringify({ dependencies: { [NUDGE_MCP_PACKAGE]: { version: "1.28.0" } } }),
52
- stderr: "",
53
- };
54
- }
55
- return { stdout: "changed 1 package", stderr: "" };
56
- },
57
- });
58
- assert.deepEqual(result, { ok: true, installedVersion: "1.28.0", output: "changed 1 package" });
59
- assert.deepEqual(calls, [
60
- ["npm", "install", "-g", `${NUDGE_MCP_PACKAGE}@1.28.0`],
61
- ["npm", "ls", "-g", NUDGE_MCP_PACKAGE, "--json", "--depth=0"],
62
- ]);
63
- });
64
- test("a failed install is reported, never thrown", async () => {
65
- const result = await performSelfUpdate(planSelfUpdate({ source: "global", npmGlobalPrefixWritable: true }, "latest"), {
66
- run: async () => {
67
- const err = Object.assign(new Error("exit 1"), {
68
- stdout: "",
69
- stderr: "npm ERR! code EACCES\nnpm ERR! permission denied",
70
- });
71
- throw err;
72
- },
73
- });
74
- assert.equal(result.ok, false);
75
- assert.match(result.error, /EACCES/);
76
- });
77
- test("an unsupported plan short-circuits with its reason", async () => {
78
- const result = await performSelfUpdate(planSelfUpdate({ source: "npx" }, null), {
79
- run: async () => {
80
- throw new Error("must not be called");
81
- },
82
- });
83
- assert.equal(result.ok, false);
84
- assert.match(result.error, /npx/);
85
- });
86
71
  test("automatic updates only choose newer stable releases", async () => {
87
72
  assert.equal(newerStableVersion("1.9.0", "1.10.0"), true);
88
73
  for (const candidate of ["1.9.0", "1.8.9", "1.10.0-beta.1", "garbage"]) {
@@ -92,15 +77,130 @@ test("automatic updates only choose newer stable releases", async () => {
92
77
  assert.equal(await checkLatestRelease("1.10.0", async () => ({ stdout: '"1.9.0"', stderr: "" })), null);
93
78
  await assert.rejects(checkLatestRelease("1.9.0", async () => { throw new Error("offline"); }), /offline/);
94
79
  });
95
- test("updates and verifies the runner prefix even when npm defaults elsewhere", async () => {
96
- const plan = planSelfUpdate({ source: "global", npmGlobalPrefixWritable: true }, "1.32.0", "/Users/me/.local");
97
- const calls = [];
98
- await performSelfUpdate(plan, { run: async (_cmd, args) => {
99
- calls.push(args);
100
- return { stdout: '{"dependencies":{"@euqns/nudge-mcp":{"version":"1.32.0"}}}', stderr: "" };
80
+ test("stages and verifies the complete CLI before replacing the live prefix", async (t) => {
81
+ const { prefix, directory, plan } = await installation(t);
82
+ const result = await performSelfUpdate(plan, { run: async (_cmd, args) => {
83
+ assert.notEqual(args[args.indexOf("--prefix") + 1], prefix);
84
+ assert.equal(JSON.parse(await fs.readFile(path.join(directory, "package.json"), "utf8")).version, "1.34.0");
85
+ return installCandidate(args);
101
86
  } });
102
- assert.equal(calls.length, 2);
103
- for (const args of calls)
104
- assert.equal(args[args.indexOf("--prefix") + 1], "/Users/me/.local");
87
+ assert.deepEqual(result, { ok: true, installedVersion: "1.35.0", output: "changed 1 package" });
88
+ assert.equal(JSON.parse(await fs.readFile(path.join(directory, "package.json"), "utf8")).version, "1.35.0");
89
+ assert.equal(JSON.parse(await fs.readFile(path.join(path.dirname(directory), ".nudge-mcp-previous/package.json"), "utf8")).version, "1.34.0");
90
+ });
91
+ test("an unverified installation must not report success or alter the old build", async (t) => {
92
+ const { directory, plan } = await installation(t);
93
+ const result = await performSelfUpdate(plan, { run: async () => ({ stdout: "changed 1 package", stderr: "" }) });
94
+ assert.equal(result.ok, false);
95
+ assert.equal(JSON.parse(await fs.readFile(path.join(directory, "package.json"), "utf8")).version, "1.34.0");
96
+ assert.deepEqual((await fs.readdir(path.dirname(directory))).sort(), ["nudge-mcp"]);
97
+ });
98
+ test("missing transitive imports and wrong versions preserve the working package", async (t) => {
99
+ const { directory, plan } = await installation(t);
100
+ for (const [version, broken] of [["1.35.0", true], ["1.34.0", false]]) {
101
+ const result = await performSelfUpdate(plan, { run: (_cmd, args) => installCandidate(args, version, broken) });
102
+ assert.equal(result.ok, false);
103
+ assert.equal(JSON.parse(await fs.readFile(path.join(directory, "package.json"), "utf8")).version, "1.34.0");
104
+ }
105
+ });
106
+ test("failed npm installs release the lock and preserve the live tree", async (t) => {
107
+ const { directory, plan } = await installation(t);
108
+ const result = await performSelfUpdate(plan, { run: async () => { throw new Error("EEXIST"); } });
109
+ assert.equal(result.ok, false);
110
+ assert.match(!result.ok ? result.error : "", /EEXIST/);
111
+ await assert.rejects(fs.access(installationLockDirectory(directory)), { code: "ENOENT" });
112
+ assert.equal(JSON.parse(await fs.readFile(path.join(directory, "package.json"), "utf8")).version, "1.34.0");
113
+ });
114
+ test("an activation failure rolls back to the previous executable build", async (t) => {
115
+ const { directory, plan } = await installation(t);
116
+ const result = await performSelfUpdate(plan, { run: async (_cmd, args) => {
117
+ const result = await installCandidate(args);
118
+ const candidate = globalPackageDirectory(args[args.indexOf("--prefix") + 1]);
119
+ // Pass staged validation, then fail after relocation into the live path.
120
+ await fs.writeFile(path.join(candidate, "dist/index.js"), "if (!import.meta.url.includes('.nudge-mcp-stage-')) process.exit(1);");
121
+ return result;
122
+ } });
123
+ assert.equal(result.ok, false);
124
+ assert.equal(JSON.parse(await fs.readFile(path.join(directory, "package.json"), "utf8")).version, "1.34.0");
125
+ await fs.access(path.join(directory, "dist/runtime.js"));
126
+ });
127
+ test("runners sharing a prefix never install concurrently and reuse the winner", async (t) => {
128
+ const { plan } = await installation(t);
129
+ let installing = 0, peak = 0, installs = 0;
130
+ const run = async (_cmd, args) => {
131
+ installs++;
132
+ peak = Math.max(peak, ++installing);
133
+ await sleep(60);
134
+ const result = await installCandidate(args);
135
+ installing--;
136
+ return result;
137
+ };
138
+ const results = await Promise.all(Array.from({ length: 4 }, () => performSelfUpdate(plan, { run })));
139
+ assert.equal(peak, 1);
140
+ assert.equal(installs, 1);
141
+ for (const result of results)
142
+ assert.equal(result.ok && result.installedVersion, "1.35.0");
143
+ });
144
+ test("separate OS processes share the update lock", { timeout: 15_000 }, async (t) => {
145
+ const { prefix, plan } = await installation(t);
146
+ const log = path.join(prefix, "installs.log");
147
+ const source = `
148
+ import fs from 'node:fs/promises';
149
+ import path from 'node:path';
150
+ import { performSelfUpdate } from ${JSON.stringify(new URL("./runner-update.ts", import.meta.url).href)};
151
+ import { globalPackageDirectory } from ${JSON.stringify(new URL("./runner-installation.ts", import.meta.url).href)};
152
+ process.send('ready');
153
+ await new Promise(resolve => process.once('message', resolve));
154
+ const result = await performSelfUpdate(${JSON.stringify(plan)}, {run: async (_cmd, args) => {
155
+ await fs.appendFile(${JSON.stringify(log)}, 'install\\n');
156
+ await new Promise(resolve => setTimeout(resolve, 100));
157
+ const root = globalPackageDirectory(args[args.indexOf('--prefix') + 1]);
158
+ await fs.mkdir(path.join(root, 'dist'), {recursive: true});
159
+ await fs.writeFile(path.join(root, 'package.json'), JSON.stringify({name:'@euqns/nudge-mcp',version:'1.35.0',type:'module'}));
160
+ await fs.writeFile(path.join(root, 'dist/index.js'), '');
161
+ await fs.writeFile(path.join(root, 'dist/version.js'), 'export const NUDGE_MCP_VERSION = "1.35.0";');
162
+ return {stdout:'installed',stderr:''};
163
+ }});
164
+ process.send(result);
165
+ process.disconnect();
166
+ `;
167
+ const children = Array.from({ length: 4 }, () => spawn(process.execPath, ["--import", "tsx", "--input-type=module", "-e", source], { stdio: ["ignore", "ignore", "pipe", "ipc"] }));
168
+ t.after(() => children.forEach((child) => { if (child.exitCode === null)
169
+ child.kill(); }));
170
+ const finished = children.map((child) => new Promise((resolve, reject) => {
171
+ let result = {};
172
+ let stderr = "";
173
+ child.stderr.on("data", (chunk) => { stderr += chunk; });
174
+ child.on("message", (message) => { if (message !== "ready")
175
+ result = message; });
176
+ child.on("error", reject);
177
+ child.on("exit", (code) => code === 0 && result.ok ? resolve() : reject(new Error(stderr || JSON.stringify(result))));
178
+ }));
179
+ await Promise.all(children.map((child) => new Promise((resolve) => child.once("message", () => resolve()))));
180
+ children.forEach((child) => child.send("start"));
181
+ await Promise.all(finished);
182
+ assert.equal(await fs.readFile(log, "utf8"), "install\n");
183
+ });
184
+ test("repairs a broken install even when its version already matches", async (t) => {
185
+ const { directory, plan } = await installation(t);
186
+ await fixture(directory, "1.35.0");
187
+ await fs.rm(path.join(directory, "dist/runtime.js"));
188
+ const result = await performSelfUpdate(plan, { run: (_cmd, args) => installCandidate(args) });
189
+ assert.equal(result.ok, true);
190
+ await fs.access(path.join(directory, "dist/runtime.js"));
191
+ });
192
+ test("a killed updater's activation gap is recovered before another install", async (t) => {
193
+ const { directory, plan } = await installation(t);
194
+ await fs.rename(directory, path.join(path.dirname(directory), ".nudge-mcp-previous"));
195
+ const lock = installationLockDirectory(directory);
196
+ await fs.mkdir(lock);
197
+ await fs.writeFile(path.join(lock, "2147483647-00000000-0000-0000-0000-000000000000.lock"), "");
198
+ const result = await performSelfUpdate(plan, { run: async () => { throw new Error("network unavailable"); } });
199
+ assert.equal(result.ok, false);
200
+ assert.equal(JSON.parse(await fs.readFile(path.join(directory, "package.json"), "utf8")).version, "1.34.0");
201
+ });
202
+ test("an unsupported plan never invokes npm", async () => {
203
+ const result = await performSelfUpdate({ kind: "unsupported", reason: "local checkout" }, { run: async () => { throw new Error("must not run"); } });
204
+ assert.equal(result.ok, false);
105
205
  });
106
206
  //# sourceMappingURL=runner-update.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner-update.test.js","sourceRoot":"","sources":["../src/runner-update.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner-update.test.js","sourceRoot":"","sources":["../src/runner-update.test.ts"],"names":[],"mappings":"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"}
package/dist/runner.js CHANGED
@@ -1274,9 +1274,9 @@ Optional output files: write a JSON array to ${artifactManifest} with entries {"
1274
1274
  void checkForWork();
1275
1275
  return;
1276
1276
  }
1277
- console.log(`[runner] ⬆ idle — running npm ${plan.args.join(" ")}`);
1277
+ console.log(`[runner] ⬆ idle — staging and verifying ${plan.spec} before replacing the installed build.`);
1278
1278
  await reportUpdate(request.requestedAt, "updating", {
1279
- message: `Running npm ${plan.args.join(" ")}.`,
1279
+ message: `Staging and verifying ${plan.spec} before replacing the installed build.`,
1280
1280
  });
1281
1281
  const outcome = await performSelfUpdate(plan);
1282
1282
  if (stopped)
@@ -1290,7 +1290,7 @@ Optional output files: write a JSON array to ${artifactManifest} with entries {"
1290
1290
  void checkForWork();
1291
1291
  return;
1292
1292
  }
1293
- const installed = outcome.installedVersion ?? "unknown";
1293
+ const installed = outcome.installedVersion;
1294
1294
  console.log(`[runner] ✓ installed ${installed} (was ${NUDGE_MCP_VERSION}); restarting.`);
1295
1295
  await reportUpdate(request.requestedAt, "restarting", {
1296
1296
  toVersion: outcome.installedVersion ?? undefined,
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/dist/version.js CHANGED
@@ -5,5 +5,5 @@
5
5
  // reported the same number, which made "why is my runner not starting?"
6
6
  // needlessly hard to diagnose. `npm run mcp:bump -- <release>` keeps this,
7
7
  // package.json, and package-lock.json synchronized.
8
- export const NUDGE_MCP_VERSION = "1.35.0";
8
+ export const NUDGE_MCP_VERSION = "1.36.0";
9
9
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@euqns/nudge-mcp",
3
- "version": "1.35.0",
3
+ "version": "1.36.0",
4
4
  "type": "module",
5
5
  "description": "Model Context Protocol server for the Nudge board (the in-house Trello).",
6
6
  "repository": {