@euqns/nudge-mcp 1.17.0 → 1.19.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 +35 -0
- package/dist/engines/claude.js +21 -9
- package/dist/engines/claude.js.map +1 -1
- package/dist/engines/claudeModels.js +122 -0
- package/dist/engines/claudeModels.js.map +1 -0
- package/dist/engines/claudeModels.test.js +67 -0
- package/dist/engines/claudeModels.test.js.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/dist/service.js +423 -0
- package/dist/service.js.map +1 -0
- package/dist/service.test.js +111 -0
- package/dist/service.test.js.map +1 -0
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -75,6 +75,11 @@ cursor-agent login
|
|
|
75
75
|
npx -y @euqns/nudge-mcp@latest agent
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
+
To have the companion come back on its own after a reboot, install it as a login
|
|
79
|
+
service from the same directory: `nudge-mcp service install agent --no-open`
|
|
80
|
+
(see *Survive reboots* below; `--no-open` keeps it from opening a browser tab at
|
|
81
|
+
every login — the pairing URL is in `~/.nudge/logs/com.nudge.agent.log`).
|
|
82
|
+
|
|
78
83
|
The companion checks Codex, Claude Code, and Cursor independently, starts when at
|
|
79
84
|
least one has a valid subscription login, and reports which CLIs are ready. One
|
|
80
85
|
pairing exposes every ready provider, so each chat can choose its own agent and
|
|
@@ -173,6 +178,36 @@ upgrade in place) it stops claiming jobs, lets in-flight jobs finish on the code
|
|
|
173
178
|
they started with, then restarts and re-registers under the same machine id.
|
|
174
179
|
Opt out with `--no-auto-restart`.
|
|
175
180
|
|
|
181
|
+
### Survive reboots: run it as a login service
|
|
182
|
+
|
|
183
|
+
A runner started from a terminal dies with that terminal, so a reboot takes the
|
|
184
|
+
machine off the board until someone relaunches it. Install it as a per-user
|
|
185
|
+
service instead — the OS starts it at login and brings it back after a crash:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
npm install -g @euqns/nudge-mcp # a stable install path; npx's cache may be pruned
|
|
189
|
+
cd /path/to/checkout
|
|
190
|
+
nudge-mcp service install runner --convex-url https://<deployment>.convex.cloud \
|
|
191
|
+
--token nrun_... --concurrency 8 --cwd . --save
|
|
192
|
+
nudge-mcp service status # installed / running (pid) per service
|
|
193
|
+
nudge-mcp service uninstall runner # stop it and remove the service
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
Everything after `runner` is passed to the runner unchanged; a relative `--cwd`
|
|
197
|
+
is pinned to the directory you ran the command in. On macOS this writes
|
|
198
|
+
`~/Library/LaunchAgents/com.nudge.runner.plist` (mode 0600, since it can carry
|
|
199
|
+
the token) and loads it with `launchctl`; logs go to `~/.nudge/logs/`. On Linux
|
|
200
|
+
it writes `~/.config/systemd/user/nudge-runner.service` and enables it with
|
|
201
|
+
`systemctl --user`; run `loginctl enable-linger $USER` if it should start at
|
|
202
|
+
boot before anyone logs in. The service runs the same node binary and installed
|
|
203
|
+
copy you invoked, with your current `PATH` baked in so `git`, `gh`, `claude`,
|
|
204
|
+
`codex`, and `cursor-agent` resolve exactly as they do in your shell. Once a
|
|
205
|
+
runner is a service, the auto-restart above still handles rebuilds; the service
|
|
206
|
+
manager handles reboots. `--instance <name>` installs a second, separately
|
|
207
|
+
managed service. Add `--dry-run` to print the service file without installing.
|
|
208
|
+
Windows has no equivalent here yet — the command prints the Task Scheduler
|
|
209
|
+
action to use instead.
|
|
210
|
+
|
|
176
211
|
During the work turn, `get_card`, `update_card`, `add_comment`, and subtask
|
|
177
212
|
completion use the job's board-scoped runner token. They are limited to the
|
|
178
213
|
active task and its direct subtasks, so task management does not depend on a
|
package/dist/engines/claude.js
CHANGED
|
@@ -10,13 +10,11 @@ import { readFileSync } from "node:fs";
|
|
|
10
10
|
import os from "node:os";
|
|
11
11
|
import path from "node:path";
|
|
12
12
|
import readline from "node:readline";
|
|
13
|
+
import { listClaudeModels, resolveClaudeCliPath } from "./claudeModels.js";
|
|
13
14
|
import { claudeMcpConfig } from "./isolation.js";
|
|
14
15
|
const CLI = process.platform === "win32" ? "claude.cmd" : "claude";
|
|
15
16
|
// A wedged CLI must never hang runner startup — every startup probe is bounded.
|
|
16
17
|
const PROBE_TIMEOUT_MS = 10_000;
|
|
17
|
-
// Aliases `claude --model` accepts. Reported so the board's model picker can
|
|
18
|
-
// offer what this machine actually runs instead of a hard-coded frontend list.
|
|
19
|
-
const CLAUDE_MODELS = ["opus", "sonnet", "haiku"];
|
|
20
18
|
// Is this machine signed in to Claude Code?
|
|
21
19
|
//
|
|
22
20
|
// `claude --version` answers "installed", not "usable" — an unauthenticated CLI
|
|
@@ -126,7 +124,10 @@ function describeEvent(event) {
|
|
|
126
124
|
const type = event.type;
|
|
127
125
|
if (type === "system" && event.subtype === "init") {
|
|
128
126
|
const cwd = typeof event.cwd === "string" ? event.cwd : "";
|
|
129
|
-
|
|
127
|
+
// The CLI resolves the alias before the first turn, so this is the one
|
|
128
|
+
// place the log can name the model that is actually about to run.
|
|
129
|
+
const model = typeof event.model === "string" ? ` on ${event.model}` : "";
|
|
130
|
+
return `Claude Code session started${model} in ${cwd}`;
|
|
130
131
|
}
|
|
131
132
|
if (type === "assistant" || type === "user") {
|
|
132
133
|
const message = event.message;
|
|
@@ -199,13 +200,15 @@ export class ClaudeEngine {
|
|
|
199
200
|
capabilities: { version: version || undefined, authenticated: false },
|
|
200
201
|
};
|
|
201
202
|
}
|
|
203
|
+
const cliPath = resolveClaudeCliPath(CLI);
|
|
204
|
+
const models = listClaudeModels(cliPath);
|
|
202
205
|
return {
|
|
203
206
|
available: true,
|
|
204
207
|
detail: version,
|
|
205
208
|
capabilities: {
|
|
206
209
|
version: version || undefined,
|
|
207
210
|
authenticated: true,
|
|
208
|
-
models
|
|
211
|
+
models,
|
|
209
212
|
modes: ["default", "plan", "bypassPermissions"],
|
|
210
213
|
resume: helpText.includes("--resume"),
|
|
211
214
|
},
|
|
@@ -239,6 +242,11 @@ export class ClaudeEngine {
|
|
|
239
242
|
if (options.threadId)
|
|
240
243
|
args.push("--resume", options.threadId);
|
|
241
244
|
let result = null;
|
|
245
|
+
// What the CLI resolved `--model` to. An alias ("fable") and the empty
|
|
246
|
+
// "agent default" both only become a real model name here, so this is what
|
|
247
|
+
// the card has to show — reporting the request back would just echo the
|
|
248
|
+
// question.
|
|
249
|
+
let resolvedModel;
|
|
242
250
|
const { stderr, code } = await runClaude(args, {
|
|
243
251
|
prompt: options.prompt,
|
|
244
252
|
cwd: options.cwd,
|
|
@@ -259,10 +267,13 @@ export class ClaudeEngine {
|
|
|
259
267
|
// The init event carries the session id at the START of the turn —
|
|
260
268
|
// surface it immediately so an aborted turn (steer) stays resumable.
|
|
261
269
|
// The terminal result event never arrives on an abort.
|
|
262
|
-
if (event.type === "system" &&
|
|
263
|
-
event.
|
|
264
|
-
|
|
265
|
-
|
|
270
|
+
if (event.type === "system" && event.subtype === "init") {
|
|
271
|
+
if (typeof event.session_id === "string") {
|
|
272
|
+
options.onThreadId?.(event.session_id);
|
|
273
|
+
}
|
|
274
|
+
if (typeof event.model === "string" && event.model) {
|
|
275
|
+
resolvedModel = event.model;
|
|
276
|
+
}
|
|
266
277
|
}
|
|
267
278
|
const text = describeEvent(event);
|
|
268
279
|
if (text)
|
|
@@ -281,6 +292,7 @@ export class ClaudeEngine {
|
|
|
281
292
|
return {
|
|
282
293
|
summary: typeof final.result === "string" ? final.result : "",
|
|
283
294
|
threadId: final.session_id,
|
|
295
|
+
resolvedModel,
|
|
284
296
|
usage,
|
|
285
297
|
costUsd: final.total_cost_usd,
|
|
286
298
|
// Claude Code computes the figure itself, so this is measured, not modelled.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/engines/claude.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,uEAAuE;AACvE,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,iCAAiC;AAEjC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAUjD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;AAEnE,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/engines/claude.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,EAAE;AACF,uEAAuE;AACvE,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,iCAAiC;AAEjC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAUjD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;AAEnE,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,4CAA4C;AAC5C,EAAE;AACF,gFAAgF;AAChF,0EAA0E;AAC1E,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,2EAA2E;AAC3E,2CAA2C;AAC3C,SAAS,gBAAgB;IACvB,wEAAwE;IACxE,2EAA2E;IAC3E,+CAA+C;IAC/C,KAAK,MAAM,GAAG,IAAI;QAChB,mBAAmB;QACnB,sBAAsB;QACtB,yBAAyB;QACzB,yBAAyB;QACzB,wBAAwB;KACzB,EAAE,CAAC;QACF,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;IACpC,CAAC;IACD,MAAM,OAAO,GAA8B;QACzC,qEAAqE;QACrE,4EAA4E;QAC5E,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC;QAC5E,4CAA4C;QAC5C;YACE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,mBAAmB,CAAC;YACvD,CAAC,eAAe,EAAE,aAAa,CAAC;SACjC;QACD,kEAAkE;QAClE;YACE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,eAAe,CAAC;YACnD,CAAC,cAAc,EAAE,gBAAgB,EAAE,qBAAqB,CAAC;SAC1D;KACF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAGnD,CAAC;YACF,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAAE,OAAO,IAAI,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;QACnD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAmBD,SAAS,SAAS,CAAC,KAA4B;IAC7C,OAAO;QACL,WAAW,EAAE,KAAK,EAAE,YAAY,IAAI,CAAC;QACrC,YAAY,EAAE,KAAK,EAAE,aAAa,IAAI,CAAC;QACvC,iBAAiB,EAAE,KAAK,EAAE,uBAAuB;QACjD,mBAAmB,EAAE,KAAK,EAAE,2BAA2B;KACxD,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,0DAA0D;AAC1D,SAAS,SAAS,CAChB,IAAc,EACd,OAKC,EACD,MAA+B;IAE/B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE;YAC7B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxC,CAAC,CAAC;QAEH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,QAAQ,CAAC,eAAe,CAAC;gBACrC,KAAK,EAAE,KAAK,CAAC,MAAM;gBACnB,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,CAAC,IAAI,EAAE;oBAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,yDAAyD;YACzD,MAAM,GAAG,GAAG,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAElE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC1B,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3B,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACrD,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,0EAA0E;AAC1E,6EAA6E;AAC7E,gEAAgE;AAChE,SAAS,aAAa,CAAC,KAA8B;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,IAAI,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,uEAAuE;QACvE,kEAAkE;QAClE,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,OAAO,8BAA8B,KAAK,OAAO,GAAG,EAAE,CAAC;IACzD,CAAC;IACD,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,OAA8C,CAAC;QACrE,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,GAA8B,CAAC;YAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjF,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACrE,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC1D,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACnD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;SAC7D,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;SACvE,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,SAAS,MAAM,CAAC,OAAgB;IAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,OAAO;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,KAAK,GAAG,CAA4B,CAAC;QAC3C,OAAO,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,OAAO,YAAY;IACd,EAAE,GAAG,QAAiB,CAAC;IACvB,WAAW,GAAG,aAAa,CAAC;IAErC,yEAAyE;IACzE,wEAAwE;IACxE,6EAA6E;IAC7E,uEAAuE;IACvE,KAAK,CAAC,MAAM;QAKV,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE;YAC3C,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;QAC9D,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE;YACtC,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,OAAO,EAAE,gBAAgB;SAC1B,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,EAAE,KAAK,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAC;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,GAAG,OAAO,qDAAqD;gBACvE,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE;aACtE,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,OAAO;YACf,YAAY,EAAE;gBACZ,OAAO,EAAE,OAAO,IAAI,SAAS;gBAC7B,aAAa,EAAE,IAAI;gBACnB,MAAM;gBACN,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,CAAC;gBAC/C,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC;aACtC;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAmB;QAC/B,MAAM,IAAI,GAAG;YACX,IAAI;YACJ,iBAAiB;YACjB,aAAa;YACb,2DAA2D;YAC3D,WAAW;YACX,mBAAmB;YACnB,mBAAmB;YACnB,oEAAoE;YACpE,sEAAsE;YACtE,yEAAyE;YACzE,4CAA4C;YAC5C,cAAc;YACd,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC;YAC5B,qBAAqB;SACtB,CAAC;QACF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CACP,mBAAmB,EACnB,MAAM,EACN,OAAO,EACP,cAAc,EACd,MAAM,CACP,CAAC;QACJ,CAAC;QACD,IAAI,OAAO,CAAC,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,OAAO,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,2EAA2E;QAC3E,IAAI,OAAO,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE9D,IAAI,MAAM,GAAwB,IAAI,CAAC;QACvC,uEAAuE;QACvE,2EAA2E;QAC3E,wEAAwE;QACxE,YAAY;QACZ,IAAI,aAAiC,CAAC;QAEtC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,SAAS,CACtC,IAAI,EACJ;YACE,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,EACD,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,KAA8B,CAAC;YACnC,IAAI,CAAC;gBACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;YACtD,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,GAAG,KAAqB,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,mEAAmE;YACnE,qEAAqE;YACrE,uDAAuD;YACvD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBACxD,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;oBACzC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACzC,CAAC;gBACD,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBACnD,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;gBAC9B,CAAC;YACH,CAAC;YACD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YAClC,IAAI,IAAI;gBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,mCAAmC,IAAI,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CACzE,CAAC;QACJ,CAAC;QAED,yEAAyE;QACzE,kDAAkD;QAClD,MAAM,KAAK,GAAG,MAAsB,CAAC;QACrC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CACT,OAAO,EACP,mBAAmB,KAAK,CAAC,WAAW,SAAS,KAAK,CAAC,YAAY,kBAAkB,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CACnH,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YAC7D,QAAQ,EAAE,KAAK,CAAC,UAAU;YAC1B,aAAa;YACb,KAAK;YACL,OAAO,EAAE,KAAK,CAAC,cAAc;YAC7B,6EAA6E;YAC7E,SAAS,EAAE,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU;YAC3E,KAAK,EAAE,KAAK,CAAC,QAAQ;gBACnB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,0BAA0B,CAAC;gBAC/C,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
export const CLAUDE_ALIASES = ["fable", "opus", "sonnet", "haiku"];
|
|
6
|
+
const PINNED_ID = /^claude-(?:fable|opus|sonnet|haiku)-[a-z0-9][a-z0-9.-]*$/i;
|
|
7
|
+
export function isClaudePinnedModelId(id) {
|
|
8
|
+
if (!PINNED_ID.test(id))
|
|
9
|
+
return false;
|
|
10
|
+
if (/\d{6,}/.test(id))
|
|
11
|
+
return false;
|
|
12
|
+
if (/-v\d+$/i.test(id))
|
|
13
|
+
return false;
|
|
14
|
+
if (id.length > 40)
|
|
15
|
+
return false;
|
|
16
|
+
for (const part of id.split("-").slice(2)) {
|
|
17
|
+
if (/^\d+$/.test(part) && Number(part) >= 20)
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
export function parseClaudeModelIds(text) {
|
|
23
|
+
const found = [];
|
|
24
|
+
const re = /\bclaude-(?:fable|opus|sonnet|haiku)(?:-[a-z0-9][a-z0-9.-]*)?\b/gi;
|
|
25
|
+
for (const match of text.matchAll(re)) {
|
|
26
|
+
const id = match[0].toLowerCase();
|
|
27
|
+
if (!isClaudePinnedModelId(id))
|
|
28
|
+
continue;
|
|
29
|
+
if (!found.includes(id))
|
|
30
|
+
found.push(id);
|
|
31
|
+
}
|
|
32
|
+
return found.sort();
|
|
33
|
+
}
|
|
34
|
+
function extractModelIdsFromCatalog(value) {
|
|
35
|
+
const ids = [];
|
|
36
|
+
const visit = (node) => {
|
|
37
|
+
if (typeof node === "string") {
|
|
38
|
+
const id = node.replace(/\[1m\]$/i, "").trim().toLowerCase();
|
|
39
|
+
if (isClaudePinnedModelId(id) && !ids.includes(id))
|
|
40
|
+
ids.push(id);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (!node || typeof node !== "object")
|
|
44
|
+
return;
|
|
45
|
+
if (Array.isArray(node)) {
|
|
46
|
+
for (const item of node)
|
|
47
|
+
visit(item);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
const record = node;
|
|
51
|
+
for (const key of ["model", "id", "value", "modelId"]) {
|
|
52
|
+
if (key in record)
|
|
53
|
+
visit(record[key]);
|
|
54
|
+
}
|
|
55
|
+
for (const child of Object.values(record))
|
|
56
|
+
visit(child);
|
|
57
|
+
};
|
|
58
|
+
visit(value);
|
|
59
|
+
return ids;
|
|
60
|
+
}
|
|
61
|
+
function catalogCacheDir(homeDir) {
|
|
62
|
+
const home = homeDir ?? process.env.HOME ?? process.env.USERPROFILE ?? os.homedir();
|
|
63
|
+
return path.join(home, ".claude", "cache", "model-catalog");
|
|
64
|
+
}
|
|
65
|
+
function readCatalogCache(homeDir) {
|
|
66
|
+
const base = catalogCacheDir(homeDir);
|
|
67
|
+
for (const file of ["published-floor.json", "masked-ids.json"]) {
|
|
68
|
+
try {
|
|
69
|
+
const parsed = JSON.parse(fs.readFileSync(path.join(base, file), "utf8"));
|
|
70
|
+
const ids = extractModelIdsFromCatalog(parsed);
|
|
71
|
+
if (ids.length)
|
|
72
|
+
return ids;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Missing or unreadable — try the next file.
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return [];
|
|
79
|
+
}
|
|
80
|
+
function discoverFromBinary(cliPath) {
|
|
81
|
+
const probe = spawnSync("strings", [cliPath], {
|
|
82
|
+
encoding: "utf8",
|
|
83
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
84
|
+
timeout: 10_000,
|
|
85
|
+
});
|
|
86
|
+
if (!probe.error && probe.status === 0) {
|
|
87
|
+
return parseClaudeModelIds(probe.stdout ?? "");
|
|
88
|
+
}
|
|
89
|
+
try {
|
|
90
|
+
return parseClaudeModelIds(fs.readFileSync(cliPath).toString("latin1"));
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export function resolveClaudeCliPath(cli) {
|
|
97
|
+
try {
|
|
98
|
+
const which = spawnSync(process.platform === "win32" ? "where" : "which", [cli], {
|
|
99
|
+
encoding: "utf8",
|
|
100
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
101
|
+
timeout: 5_000,
|
|
102
|
+
});
|
|
103
|
+
const candidate = (which.stdout ?? "").trim().split(/\r?\n/)[0]?.trim();
|
|
104
|
+
if (!candidate)
|
|
105
|
+
return undefined;
|
|
106
|
+
return fs.realpathSync(candidate);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
export function listClaudeModels(cliPath, homeDir) {
|
|
113
|
+
const pinned = new Set();
|
|
114
|
+
for (const id of readCatalogCache(homeDir))
|
|
115
|
+
pinned.add(id);
|
|
116
|
+
if (cliPath) {
|
|
117
|
+
for (const id of discoverFromBinary(cliPath))
|
|
118
|
+
pinned.add(id);
|
|
119
|
+
}
|
|
120
|
+
return [...CLAUDE_ALIASES, ...[...pinned].sort()];
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=claudeModels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeModels.js","sourceRoot":"","sources":["../../src/engines/claudeModels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import test from "node:test";
|
|
6
|
+
import { isClaudePinnedModelId, listClaudeModels, parseClaudeModelIds, resolveClaudeCliPath, } from "./claudeModels.js";
|
|
7
|
+
const FIXTURE = `
|
|
8
|
+
fable opus sonnet haiku
|
|
9
|
+
claude-fable-5-1 claude-fable-5 claude-fable-5-mythos-5
|
|
10
|
+
claude-opus-5 claude-sonnet-5 claude-haiku-4-5
|
|
11
|
+
claude-sonnet-4-5-20250929 claude-opus-4-5-20251101-v1
|
|
12
|
+
`;
|
|
13
|
+
test("parseClaudeModelIds keeps short pinned names and drops dated API ids", () => {
|
|
14
|
+
assert.deepEqual(parseClaudeModelIds(FIXTURE), [
|
|
15
|
+
"claude-fable-5",
|
|
16
|
+
"claude-fable-5-1",
|
|
17
|
+
"claude-fable-5-mythos-5",
|
|
18
|
+
"claude-haiku-4-5",
|
|
19
|
+
"claude-opus-5",
|
|
20
|
+
"claude-sonnet-5",
|
|
21
|
+
]);
|
|
22
|
+
});
|
|
23
|
+
test("isClaudePinnedModelId rejects bare family stems and aliases", () => {
|
|
24
|
+
assert.equal(isClaudePinnedModelId("fable"), false);
|
|
25
|
+
assert.equal(isClaudePinnedModelId("claude-fable"), false);
|
|
26
|
+
assert.equal(isClaudePinnedModelId("claude-fable-5-1"), true);
|
|
27
|
+
});
|
|
28
|
+
test("listClaudeModels always leads with family aliases", () => {
|
|
29
|
+
const models = listClaudeModels();
|
|
30
|
+
assert.deepEqual(models.slice(0, 4), ["fable", "opus", "sonnet", "haiku"]);
|
|
31
|
+
});
|
|
32
|
+
test("listClaudeModels discovers pinned ids from the installed CLI binary", () => {
|
|
33
|
+
const cliPath = resolveClaudeCliPath(process.platform === "win32" ? "claude.cmd" : "claude");
|
|
34
|
+
if (!cliPath)
|
|
35
|
+
return;
|
|
36
|
+
const models = listClaudeModels(cliPath);
|
|
37
|
+
assert.ok(models.includes("fable"));
|
|
38
|
+
assert.ok(models.some((id) => id.startsWith("claude-")), "installed Claude should report at least one pinned model id");
|
|
39
|
+
});
|
|
40
|
+
test("listClaudeModels reads pinned ids from a catalog cache file", () => {
|
|
41
|
+
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "claude-catalog-"));
|
|
42
|
+
const catalogDir = path.join(dir, ".claude", "cache", "model-catalog");
|
|
43
|
+
fs.mkdirSync(catalogDir, { recursive: true });
|
|
44
|
+
fs.writeFileSync(path.join(catalogDir, "published-floor.json"), JSON.stringify({
|
|
45
|
+
models: [{ model: "claude-fable-9" }, { model: "claude-opus-6" }],
|
|
46
|
+
}));
|
|
47
|
+
const home = process.env.HOME;
|
|
48
|
+
process.env.HOME = dir;
|
|
49
|
+
try {
|
|
50
|
+
assert.deepEqual(listClaudeModels(undefined, dir), [
|
|
51
|
+
"fable",
|
|
52
|
+
"opus",
|
|
53
|
+
"sonnet",
|
|
54
|
+
"haiku",
|
|
55
|
+
"claude-fable-9",
|
|
56
|
+
"claude-opus-6",
|
|
57
|
+
]);
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
if (home === undefined)
|
|
61
|
+
delete process.env.HOME;
|
|
62
|
+
else
|
|
63
|
+
process.env.HOME = home;
|
|
64
|
+
fs.rmSync(dir, { recursive: true, force: true });
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=claudeModels.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeModels.test.js","sourceRoot":"","sources":["../../src/engines/claudeModels.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,OAAO,GAAG;;;;;CAKf,CAAC;AAEF,IAAI,CAAC,sEAAsE,EAAE,GAAG,EAAE;IAChF,MAAM,CAAC,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE;QAC7C,gBAAgB;QAChB,kBAAkB;QAClB,yBAAyB;QACzB,kBAAkB;QAClB,eAAe;QACf,iBAAiB;KAClB,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6DAA6D,EAAE,GAAG,EAAE;IACvE,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3D,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC7D,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;IAC/E,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7F,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IACpC,MAAM,CAAC,EAAE,CACP,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAC7C,6DAA6D,CAC9D,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6DAA6D,EAAE,GAAG,EAAE;IACvE,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IACvE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,sBAAsB,CAAC,EAC7C,IAAI,CAAC,SAAS,CAAC;QACb,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;KAClE,CAAC,CACH,CAAC;IACF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE;YACjD,OAAO;YACP,MAAM;YACN,QAAQ;YACR,OAAO;YACP,gBAAgB;YAChB,eAAe;SAChB,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;;YAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAC7B,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;AACH,CAAC,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -25,6 +25,7 @@ import { runnerCardCall } from "./runner-card-tools.js";
|
|
|
25
25
|
import { NUDGE_MCP_VERSION } from "./version.js";
|
|
26
26
|
import { structuredResultForTool } from "./entity-results.js";
|
|
27
27
|
import { runSetup } from "./setup.js";
|
|
28
|
+
import { runService } from "./service.js";
|
|
28
29
|
import { listCiWorkflows, runCiWorkflow, } from "./ci-workflows.js";
|
|
29
30
|
// ---- entrypoint dispatch --------------------------------------------------
|
|
30
31
|
const subcommand = process.argv[2];
|
|
@@ -50,6 +51,18 @@ if (subcommand === "setup") {
|
|
|
50
51
|
process.exit(1);
|
|
51
52
|
}
|
|
52
53
|
}
|
|
54
|
+
// Install/remove the runner or agent as a login service (launchd / systemd
|
|
55
|
+
// --user) so a reboot brings it back without anyone reopening a terminal.
|
|
56
|
+
if (subcommand === "service") {
|
|
57
|
+
try {
|
|
58
|
+
await runService(process.argv.slice(3));
|
|
59
|
+
process.exit(0);
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
console.error("[nudge-mcp service] failed:", err instanceof Error ? err.message : err);
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
53
66
|
// The companion's browser pairing embeds a bearer token. Minted in the
|
|
54
67
|
// supervisor and handed down through env, it stays the same across respawns —
|
|
55
68
|
// which is what lets an already-paired browser keep talking to a restarted
|
|
@@ -99,6 +112,11 @@ if (subcommand === "--help" || subcommand === "-h" || subcommand === "help") {
|
|
|
99
112
|
" nudge-mcp agent Start Nudge Agent with every signed-in coding CLI.",
|
|
100
113
|
" nudge-mcp codex [options] Alias for agent with Codex preferred.",
|
|
101
114
|
" nudge-mcp runner [options] Start a self-hosted runner for a board.",
|
|
115
|
+
" nudge-mcp service install runner|agent [options]",
|
|
116
|
+
" Start the runner/agent at login and keep it alive",
|
|
117
|
+
" (launchd on macOS, systemd --user on Linux).",
|
|
118
|
+
" nudge-mcp service uninstall runner|agent Remove that login service.",
|
|
119
|
+
" nudge-mcp service status Show which login services are installed/running.",
|
|
102
120
|
" nudge-mcp Start the MCP stdio server (default).",
|
|
103
121
|
"",
|
|
104
122
|
"Runner options:",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/service.js
ADDED
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
// Run the runner or the agent companion as a login service.
|
|
2
|
+
//
|
|
3
|
+
// Both long-lived subcommands die with the terminal that started them, so a
|
|
4
|
+
// reboot (or a closed laptop lid followed by a logout) silently takes the
|
|
5
|
+
// machine off the board until someone remembers to relaunch it. This installs
|
|
6
|
+
// the current invocation as a per-user service the OS starts at login and
|
|
7
|
+
// brings back after a crash:
|
|
8
|
+
//
|
|
9
|
+
// macOS → ~/Library/LaunchAgents/com.nudge.<runner|agent>.plist (launchd)
|
|
10
|
+
// Linux → ~/.config/systemd/user/nudge-<runner|agent>.service (systemd --user)
|
|
11
|
+
//
|
|
12
|
+
// The service runs THIS node binary and THIS installed copy of nudge-mcp, with
|
|
13
|
+
// the caller's PATH baked in — launchd and systemd start user services with a
|
|
14
|
+
// bare PATH, and the runner needs `git`, `gh`, `claude`, `codex` and friends to
|
|
15
|
+
// be findable. The in-process supervisor (runner-restart.ts) still handles
|
|
16
|
+
// rebuilds; the OS service manager handles reboots and crashes.
|
|
17
|
+
//
|
|
18
|
+
// Windows has no user-level equivalent this code can write safely, so it gets
|
|
19
|
+
// an actionable message instead of a half-working Task Scheduler entry.
|
|
20
|
+
import { execFile } from "node:child_process";
|
|
21
|
+
import fs from "node:fs/promises";
|
|
22
|
+
import os from "node:os";
|
|
23
|
+
import path from "node:path";
|
|
24
|
+
import { promisify } from "node:util";
|
|
25
|
+
import { CREDENTIALS_DIR } from "./credentials.js";
|
|
26
|
+
const execFileAsync = promisify(execFile);
|
|
27
|
+
export const SERVICE_KINDS = ["runner", "agent"];
|
|
28
|
+
export const LOG_DIR = path.join(CREDENTIALS_DIR, "logs");
|
|
29
|
+
/** Only [a-z0-9-] survive; anything else becomes a dash. `--instance "Mac 2"` → `mac-2`. */
|
|
30
|
+
export function sanitizeInstance(raw) {
|
|
31
|
+
return raw
|
|
32
|
+
.toLowerCase()
|
|
33
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
34
|
+
.replace(/^-+|-+$/g, "");
|
|
35
|
+
}
|
|
36
|
+
export function serviceLabel(kind, instance) {
|
|
37
|
+
const suffix = instance ? sanitizeInstance(instance) : "";
|
|
38
|
+
return suffix ? `com.nudge.${kind}.${suffix}` : `com.nudge.${kind}`;
|
|
39
|
+
}
|
|
40
|
+
/** systemd unit names can't start with the reverse-DNS prefix comfortably;
|
|
41
|
+
* `com.nudge.runner` → `nudge-runner`, `com.nudge.runner.mac-2` → `nudge-runner-mac-2`. */
|
|
42
|
+
export function unitName(label) {
|
|
43
|
+
return label.replace(/^com\.nudge\./, "nudge-").replace(/\./g, "-");
|
|
44
|
+
}
|
|
45
|
+
/** Value of `--flag VALUE` or `--flag=VALUE` in argv, or null. */
|
|
46
|
+
export function findFlag(argv, flag) {
|
|
47
|
+
for (let i = 0; i < argv.length; i++) {
|
|
48
|
+
if (argv[i] === flag)
|
|
49
|
+
return argv[i + 1] ?? null;
|
|
50
|
+
if (argv[i].startsWith(`${flag}=`))
|
|
51
|
+
return argv[i].slice(flag.length + 1);
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Rewrite `--cwd X` to an absolute path. The service has no notion of "the
|
|
57
|
+
* directory I typed the install command in", so a relative `--cwd .` pasted
|
|
58
|
+
* from the board dialog must be pinned to where the user actually stood.
|
|
59
|
+
*/
|
|
60
|
+
export function absolutizeCwd(argv, base) {
|
|
61
|
+
const out = [];
|
|
62
|
+
for (let i = 0; i < argv.length; i++) {
|
|
63
|
+
const arg = argv[i];
|
|
64
|
+
if (arg === "--cwd") {
|
|
65
|
+
const value = argv[i + 1];
|
|
66
|
+
out.push(arg);
|
|
67
|
+
if (value !== undefined) {
|
|
68
|
+
out.push(path.resolve(base, value));
|
|
69
|
+
i++;
|
|
70
|
+
}
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (arg.startsWith("--cwd=")) {
|
|
74
|
+
out.push(`--cwd=${path.resolve(base, arg.slice("--cwd=".length))}`);
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
out.push(arg);
|
|
78
|
+
}
|
|
79
|
+
return out;
|
|
80
|
+
}
|
|
81
|
+
/** `npx -y @euqns/nudge-mcp` runs out of a cache that npm may prune — a
|
|
82
|
+
* service pointing there would break the next time the cache is cleaned. */
|
|
83
|
+
export function isNpxCachePath(entry) {
|
|
84
|
+
return /[\\/]_npx[\\/]/.test(entry);
|
|
85
|
+
}
|
|
86
|
+
const COMMON_NUDGE_ENV = [
|
|
87
|
+
"NUDGE_APP_URL",
|
|
88
|
+
"NUDGE_CONVEX_URL",
|
|
89
|
+
"NUDGE_PRICING",
|
|
90
|
+
"NUDGE_TOKEN",
|
|
91
|
+
];
|
|
92
|
+
/** The environment a login service needs: the caller's PATH (so agent CLIs
|
|
93
|
+
* resolve), HOME, LANG, and stable user-supplied Nudge overrides. Runner-job
|
|
94
|
+
* variables are deliberately not copied: this command may itself be invoked
|
|
95
|
+
* by a runner, and persisting that job's id or supervisor marker would make
|
|
96
|
+
* the service resume with stale, privileged task context after reboot. */
|
|
97
|
+
export function serviceEnv(kind, source = process.env) {
|
|
98
|
+
const env = {};
|
|
99
|
+
for (const key of ["PATH", "HOME", "LANG", "LC_ALL"]) {
|
|
100
|
+
const value = source[key];
|
|
101
|
+
if (value)
|
|
102
|
+
env[key] = value;
|
|
103
|
+
}
|
|
104
|
+
const nudgeKeys = kind === "runner"
|
|
105
|
+
? [...COMMON_NUDGE_ENV, "NUDGE_RUNNER_TOKEN"]
|
|
106
|
+
: COMMON_NUDGE_ENV;
|
|
107
|
+
for (const key of nudgeKeys) {
|
|
108
|
+
const value = source[key];
|
|
109
|
+
if (value)
|
|
110
|
+
env[key] = value;
|
|
111
|
+
}
|
|
112
|
+
return env;
|
|
113
|
+
}
|
|
114
|
+
export function buildSpec(kind, argv, ctx) {
|
|
115
|
+
// Flags pass through untouched (including `--save`: re-writing runner.json
|
|
116
|
+
// with the same values at every start is idempotent), except that a
|
|
117
|
+
// relative --cwd is pinned to where the install command was typed.
|
|
118
|
+
const args = absolutizeCwd(argv, ctx.cwd);
|
|
119
|
+
const label = serviceLabel(kind, kind === "runner" ? findFlag(args, "--instance") : null);
|
|
120
|
+
const cwd = findFlag(args, "--cwd") ?? ctx.cwd;
|
|
121
|
+
return {
|
|
122
|
+
kind,
|
|
123
|
+
label,
|
|
124
|
+
node: ctx.node,
|
|
125
|
+
entry: ctx.entry,
|
|
126
|
+
args,
|
|
127
|
+
cwd,
|
|
128
|
+
env: serviceEnv(kind, ctx.env),
|
|
129
|
+
logPath: path.join(LOG_DIR, `${label}.log`),
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
// ---- file renderers -------------------------------------------------------
|
|
133
|
+
function xml(s) {
|
|
134
|
+
return s
|
|
135
|
+
.replace(/&/g, "&")
|
|
136
|
+
.replace(/</g, "<")
|
|
137
|
+
.replace(/>/g, ">")
|
|
138
|
+
.replace(/"/g, """);
|
|
139
|
+
}
|
|
140
|
+
export function renderLaunchdPlist(spec) {
|
|
141
|
+
const programArgs = [spec.node, spec.entry, spec.kind, ...spec.args]
|
|
142
|
+
.map((a) => ` <string>${xml(a)}</string>`)
|
|
143
|
+
.join("\n");
|
|
144
|
+
const envEntries = Object.entries(spec.env)
|
|
145
|
+
.map(([k, v]) => ` <key>${xml(k)}</key>\n <string>${xml(v)}</string>`)
|
|
146
|
+
.join("\n");
|
|
147
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
148
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
149
|
+
<plist version="1.0">
|
|
150
|
+
<dict>
|
|
151
|
+
<key>Label</key>
|
|
152
|
+
<string>${xml(spec.label)}</string>
|
|
153
|
+
<key>ProgramArguments</key>
|
|
154
|
+
<array>
|
|
155
|
+
${programArgs}
|
|
156
|
+
</array>
|
|
157
|
+
<key>WorkingDirectory</key>
|
|
158
|
+
<string>${xml(spec.cwd)}</string>
|
|
159
|
+
<key>EnvironmentVariables</key>
|
|
160
|
+
<dict>
|
|
161
|
+
${envEntries}
|
|
162
|
+
</dict>
|
|
163
|
+
<key>RunAtLoad</key>
|
|
164
|
+
<true/>
|
|
165
|
+
<key>KeepAlive</key>
|
|
166
|
+
<dict>
|
|
167
|
+
<key>SuccessfulExit</key>
|
|
168
|
+
<false/>
|
|
169
|
+
</dict>
|
|
170
|
+
<key>ThrottleInterval</key>
|
|
171
|
+
<integer>10</integer>
|
|
172
|
+
<key>ExitTimeOut</key>
|
|
173
|
+
<integer>120</integer>
|
|
174
|
+
<key>StandardOutPath</key>
|
|
175
|
+
<string>${xml(spec.logPath)}</string>
|
|
176
|
+
<key>StandardErrorPath</key>
|
|
177
|
+
<string>${xml(spec.logPath)}</string>
|
|
178
|
+
</dict>
|
|
179
|
+
</plist>
|
|
180
|
+
`;
|
|
181
|
+
}
|
|
182
|
+
/** systemd's quoting: double-quote every word, backslash-escape `\\` and `"`. */
|
|
183
|
+
export function systemdQuote(word) {
|
|
184
|
+
return `"${word.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
|
|
185
|
+
}
|
|
186
|
+
export function renderSystemdUnit(spec) {
|
|
187
|
+
const exec = [spec.node, spec.entry, spec.kind, ...spec.args]
|
|
188
|
+
.map(systemdQuote)
|
|
189
|
+
.join(" ");
|
|
190
|
+
const env = Object.entries(spec.env)
|
|
191
|
+
.map(([k, v]) => `Environment=${systemdQuote(`${k}=${v}`)}`)
|
|
192
|
+
.join("\n");
|
|
193
|
+
const description = spec.kind === "runner" ? "Nudge self-hosted runner" : "Nudge Agent companion";
|
|
194
|
+
return `[Unit]
|
|
195
|
+
Description=${description} (${spec.label})
|
|
196
|
+
After=network-online.target
|
|
197
|
+
Wants=network-online.target
|
|
198
|
+
|
|
199
|
+
[Service]
|
|
200
|
+
Type=simple
|
|
201
|
+
ExecStart=${exec}
|
|
202
|
+
WorkingDirectory=${spec.cwd}
|
|
203
|
+
${env}
|
|
204
|
+
Restart=on-failure
|
|
205
|
+
RestartSec=10
|
|
206
|
+
KillSignal=SIGTERM
|
|
207
|
+
TimeoutStopSec=120
|
|
208
|
+
|
|
209
|
+
[Install]
|
|
210
|
+
WantedBy=default.target
|
|
211
|
+
`;
|
|
212
|
+
}
|
|
213
|
+
// ---- platform paths -------------------------------------------------------
|
|
214
|
+
export function launchdPlistPath(label, home = os.homedir()) {
|
|
215
|
+
return path.join(home, "Library", "LaunchAgents", `${label}.plist`);
|
|
216
|
+
}
|
|
217
|
+
export function systemdUnitPath(label, home = os.homedir()) {
|
|
218
|
+
return path.join(home, ".config", "systemd", "user", `${unitName(label)}.service`);
|
|
219
|
+
}
|
|
220
|
+
async function writePrivate(file, content) {
|
|
221
|
+
await fs.mkdir(path.dirname(file), { recursive: true });
|
|
222
|
+
// The file may carry a runner token — keep it to the owner, same as
|
|
223
|
+
// ~/.nudge/runner.json. mode only applies on create, hence the chmod.
|
|
224
|
+
await fs.writeFile(file, content, { mode: 0o600 });
|
|
225
|
+
await fs.chmod(file, 0o600);
|
|
226
|
+
}
|
|
227
|
+
async function run(cmd, args, opts) {
|
|
228
|
+
try {
|
|
229
|
+
const { stdout } = await execFileAsync(cmd, args, { encoding: "utf8" });
|
|
230
|
+
return stdout;
|
|
231
|
+
}
|
|
232
|
+
catch (err) {
|
|
233
|
+
if (opts?.ignoreFailure)
|
|
234
|
+
return "";
|
|
235
|
+
const e = err;
|
|
236
|
+
if (e.code === "ENOENT") {
|
|
237
|
+
throw new Error(`\`${cmd}\` is not available on this machine.`);
|
|
238
|
+
}
|
|
239
|
+
const detail = (e.stderr ?? e.message ?? "").trim();
|
|
240
|
+
throw new Error(`\`${cmd} ${args.join(" ")}\` failed${detail ? `: ${detail}` : ""}`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// ---- launchd (macOS) ------------------------------------------------------
|
|
244
|
+
const gui = () => `gui/${process.getuid?.() ?? 501}`;
|
|
245
|
+
async function launchdInstall(spec) {
|
|
246
|
+
const plist = launchdPlistPath(spec.label);
|
|
247
|
+
await fs.mkdir(LOG_DIR, { recursive: true, mode: 0o700 });
|
|
248
|
+
await writePrivate(plist, renderLaunchdPlist(spec));
|
|
249
|
+
// Replace rather than layer: bootstrapping a label that's already loaded
|
|
250
|
+
// fails, and a stale definition would keep the old flags.
|
|
251
|
+
await run("launchctl", ["bootout", `${gui()}/${spec.label}`], { ignoreFailure: true });
|
|
252
|
+
await run("launchctl", ["bootstrap", gui(), plist]);
|
|
253
|
+
return plist;
|
|
254
|
+
}
|
|
255
|
+
async function launchdUninstall(label) {
|
|
256
|
+
const plist = launchdPlistPath(label);
|
|
257
|
+
await run("launchctl", ["bootout", `${gui()}/${label}`], { ignoreFailure: true });
|
|
258
|
+
try {
|
|
259
|
+
await fs.unlink(plist);
|
|
260
|
+
return true;
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
if (err.code === "ENOENT")
|
|
264
|
+
return false;
|
|
265
|
+
throw err;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async function launchdStatus(label) {
|
|
269
|
+
const plist = launchdPlistPath(label);
|
|
270
|
+
const installed = await fs.access(plist).then(() => true, () => false);
|
|
271
|
+
if (!installed)
|
|
272
|
+
return "not installed";
|
|
273
|
+
const out = await run("launchctl", ["print", `${gui()}/${label}`], { ignoreFailure: true });
|
|
274
|
+
const pid = /^\s*pid = (\d+)/m.exec(out)?.[1];
|
|
275
|
+
const state = /^\s*state = (\w+)/m.exec(out)?.[1];
|
|
276
|
+
if (pid)
|
|
277
|
+
return `running (pid ${pid})`;
|
|
278
|
+
if (state)
|
|
279
|
+
return state;
|
|
280
|
+
return out ? "loaded" : "installed but not loaded (log in again, or run `nudge-mcp service install` once more)";
|
|
281
|
+
}
|
|
282
|
+
// ---- systemd --user (Linux) -----------------------------------------------
|
|
283
|
+
async function systemdInstall(spec) {
|
|
284
|
+
const unit = systemdUnitPath(spec.label);
|
|
285
|
+
await writePrivate(unit, renderSystemdUnit(spec));
|
|
286
|
+
await run("systemctl", ["--user", "daemon-reload"]);
|
|
287
|
+
await run("systemctl", ["--user", "enable", "--now", path.basename(unit)]);
|
|
288
|
+
return unit;
|
|
289
|
+
}
|
|
290
|
+
async function systemdUninstall(label) {
|
|
291
|
+
const unit = systemdUnitPath(label);
|
|
292
|
+
await run("systemctl", ["--user", "disable", "--now", path.basename(unit)], {
|
|
293
|
+
ignoreFailure: true,
|
|
294
|
+
});
|
|
295
|
+
let removed = true;
|
|
296
|
+
try {
|
|
297
|
+
await fs.unlink(unit);
|
|
298
|
+
}
|
|
299
|
+
catch (err) {
|
|
300
|
+
if (err.code !== "ENOENT")
|
|
301
|
+
throw err;
|
|
302
|
+
removed = false;
|
|
303
|
+
}
|
|
304
|
+
await run("systemctl", ["--user", "daemon-reload"], { ignoreFailure: true });
|
|
305
|
+
return removed;
|
|
306
|
+
}
|
|
307
|
+
async function systemdStatus(label) {
|
|
308
|
+
const unit = systemdUnitPath(label);
|
|
309
|
+
const installed = await fs.access(unit).then(() => true, () => false);
|
|
310
|
+
if (!installed)
|
|
311
|
+
return "not installed";
|
|
312
|
+
const out = await run("systemctl", ["--user", "is-active", path.basename(unit)], {
|
|
313
|
+
ignoreFailure: true,
|
|
314
|
+
});
|
|
315
|
+
return out.trim() || "inactive";
|
|
316
|
+
}
|
|
317
|
+
// ---- CLI ------------------------------------------------------------------
|
|
318
|
+
export const SERVICE_USAGE = [
|
|
319
|
+
"Usage:",
|
|
320
|
+
" nudge-mcp service install runner [runner options] Start the runner at login and keep it alive.",
|
|
321
|
+
" nudge-mcp service install agent [agent options] Same for the Nudge Agent companion.",
|
|
322
|
+
" nudge-mcp service uninstall runner|agent [--instance NAME]",
|
|
323
|
+
" nudge-mcp service status",
|
|
324
|
+
"",
|
|
325
|
+
"Options after the kind are passed to the runner/agent unchanged (a relative",
|
|
326
|
+
"--cwd is pinned to the current directory). Add --dry-run to print the service",
|
|
327
|
+
"file without installing it. macOS uses a launchd LaunchAgent, Linux a systemd",
|
|
328
|
+
"--user unit; both restart the process after a crash and at every login.",
|
|
329
|
+
].join("\n");
|
|
330
|
+
function unsupported() {
|
|
331
|
+
throw new Error([
|
|
332
|
+
`Login services are supported on macOS (launchd) and Linux (systemd --user); this is ${process.platform}.`,
|
|
333
|
+
"On Windows, create a Task Scheduler task that runs at log-on with the action:",
|
|
334
|
+
` "${process.execPath}" "${process.argv[1]}" runner`,
|
|
335
|
+
"and set it to restart on failure.",
|
|
336
|
+
].join("\n"));
|
|
337
|
+
}
|
|
338
|
+
function parseKind(raw) {
|
|
339
|
+
if (raw === "runner" || raw === "agent")
|
|
340
|
+
return raw;
|
|
341
|
+
throw new Error(`Expected "runner" or "agent" after the service action, got ${raw ? `"${raw}"` : "nothing"}.\n\n${SERVICE_USAGE}`);
|
|
342
|
+
}
|
|
343
|
+
export async function runService(argv) {
|
|
344
|
+
const action = argv[0];
|
|
345
|
+
const platform = process.platform;
|
|
346
|
+
if (action === "status") {
|
|
347
|
+
if (platform !== "darwin" && platform !== "linux")
|
|
348
|
+
unsupported();
|
|
349
|
+
const rows = [];
|
|
350
|
+
for (const kind of SERVICE_KINDS) {
|
|
351
|
+
const label = serviceLabel(kind);
|
|
352
|
+
const status = platform === "darwin" ? await launchdStatus(label) : await systemdStatus(label);
|
|
353
|
+
rows.push(` ${kind.padEnd(7)} ${label.padEnd(20)} ${status}`);
|
|
354
|
+
}
|
|
355
|
+
console.log(["Nudge login services:", ...rows].join("\n"));
|
|
356
|
+
if (platform === "darwin")
|
|
357
|
+
console.log(`\nLogs: ${LOG_DIR}/<label>.log`);
|
|
358
|
+
else
|
|
359
|
+
console.log("\nLogs: journalctl --user -u nudge-runner -f");
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
if (action === "uninstall") {
|
|
363
|
+
const kind = parseKind(argv[1]);
|
|
364
|
+
const label = serviceLabel(kind, findFlag(argv.slice(2), "--instance"));
|
|
365
|
+
if (platform !== "darwin" && platform !== "linux")
|
|
366
|
+
unsupported();
|
|
367
|
+
const removed = platform === "darwin" ? await launchdUninstall(label) : await systemdUninstall(label);
|
|
368
|
+
console.log(removed
|
|
369
|
+
? `Removed ${label}. The ${kind} no longer starts at login; a running instance was stopped.`
|
|
370
|
+
: `${label} was not installed.`);
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
if (action === "install") {
|
|
374
|
+
const kind = parseKind(argv[1]);
|
|
375
|
+
const rest = argv.slice(2);
|
|
376
|
+
const dryRun = rest.includes("--dry-run");
|
|
377
|
+
const passthrough = rest.filter((a) => a !== "--dry-run");
|
|
378
|
+
const entry = await fs.realpath(process.argv[1]);
|
|
379
|
+
const spec = buildSpec(kind, passthrough, {
|
|
380
|
+
node: process.execPath,
|
|
381
|
+
entry,
|
|
382
|
+
cwd: process.cwd(),
|
|
383
|
+
});
|
|
384
|
+
if (platform !== "darwin" && platform !== "linux")
|
|
385
|
+
unsupported();
|
|
386
|
+
const rendered = platform === "darwin" ? renderLaunchdPlist(spec) : renderSystemdUnit(spec);
|
|
387
|
+
const target = platform === "darwin" ? launchdPlistPath(spec.label) : systemdUnitPath(spec.label);
|
|
388
|
+
if (dryRun) {
|
|
389
|
+
console.log(`# ${target}\n${rendered}`);
|
|
390
|
+
return;
|
|
391
|
+
}
|
|
392
|
+
if (isNpxCachePath(entry)) {
|
|
393
|
+
console.warn([
|
|
394
|
+
`[nudge-mcp service] warning: this copy lives in npm's npx cache (${entry}).`,
|
|
395
|
+
" npm may prune it, which would break the service on a later boot.",
|
|
396
|
+
" Prefer: npm install -g @euqns/nudge-mcp && nudge-mcp service install " + kind,
|
|
397
|
+
].join("\n"));
|
|
398
|
+
}
|
|
399
|
+
const written = platform === "darwin" ? await launchdInstall(spec) : await systemdInstall(spec);
|
|
400
|
+
const lines = [
|
|
401
|
+
`Installed ${spec.label} → ${written}`,
|
|
402
|
+
` Runs: ${[spec.kind, ...spec.args].join(" ")}`,
|
|
403
|
+
` Directory: ${spec.cwd}`,
|
|
404
|
+
" Starts at login and restarts after a crash. It is starting now.",
|
|
405
|
+
];
|
|
406
|
+
if (platform === "darwin") {
|
|
407
|
+
lines.push(` Logs: ${spec.logPath}`);
|
|
408
|
+
lines.push(` Stop: launchctl bootout ${gui()}/${spec.label}`);
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
lines.push(` Logs: journalctl --user -u ${unitName(spec.label)} -f`);
|
|
412
|
+
lines.push(` Boot: loginctl enable-linger ${os.userInfo().username} # start before anyone logs in`);
|
|
413
|
+
}
|
|
414
|
+
if (kind === "agent" && !passthrough.includes("--no-open")) {
|
|
415
|
+
lines.push(" Note: the companion opens its pairing page in the browser at every login; add --no-open to skip that.");
|
|
416
|
+
}
|
|
417
|
+
lines.push(` Remove: nudge-mcp service uninstall ${kind}`);
|
|
418
|
+
console.log(lines.join("\n"));
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
throw new Error(SERVICE_USAGE);
|
|
422
|
+
}
|
|
423
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { absolutizeCwd, buildSpec, findFlag, isNpxCachePath, renderLaunchdPlist, renderSystemdUnit, sanitizeInstance, serviceEnv, serviceLabel, systemdQuote, unitName, } from "./service.js";
|
|
5
|
+
const ctx = {
|
|
6
|
+
node: "/usr/local/bin/node",
|
|
7
|
+
entry: "/usr/local/lib/node_modules/@euqns/nudge-mcp/dist/index.js",
|
|
8
|
+
cwd: "/Users/dev/checkout",
|
|
9
|
+
env: { PATH: "/opt/homebrew/bin:/usr/bin", HOME: "/Users/dev", SECRET: "x" },
|
|
10
|
+
};
|
|
11
|
+
test("labels: one per kind, instances get a sanitized suffix", () => {
|
|
12
|
+
assert.equal(serviceLabel("runner"), "com.nudge.runner");
|
|
13
|
+
assert.equal(serviceLabel("agent"), "com.nudge.agent");
|
|
14
|
+
assert.equal(serviceLabel("runner", "Mac Mini #2"), "com.nudge.runner.mac-mini-2");
|
|
15
|
+
assert.equal(sanitizeInstance("--weird--"), "weird");
|
|
16
|
+
assert.equal(unitName("com.nudge.runner"), "nudge-runner");
|
|
17
|
+
assert.equal(unitName("com.nudge.runner.mac-2"), "nudge-runner-mac-2");
|
|
18
|
+
});
|
|
19
|
+
test("findFlag reads both `--flag value` and `--flag=value`", () => {
|
|
20
|
+
assert.equal(findFlag(["--cwd", "/a", "--name", "x"], "--cwd"), "/a");
|
|
21
|
+
assert.equal(findFlag(["--cwd=/b"], "--cwd"), "/b");
|
|
22
|
+
assert.equal(findFlag(["--name", "x"], "--cwd"), null);
|
|
23
|
+
assert.equal(findFlag(["--cwd"], "--cwd"), null);
|
|
24
|
+
});
|
|
25
|
+
test("a relative --cwd pasted from the board is pinned to the install directory", () => {
|
|
26
|
+
assert.deepEqual(absolutizeCwd(["--cwd", ".", "--save"], "/Users/dev/repo"), [
|
|
27
|
+
"--cwd",
|
|
28
|
+
"/Users/dev/repo",
|
|
29
|
+
"--save",
|
|
30
|
+
]);
|
|
31
|
+
assert.deepEqual(absolutizeCwd(["--cwd=../other"], "/Users/dev/repo"), [
|
|
32
|
+
"--cwd=/Users/dev/other",
|
|
33
|
+
]);
|
|
34
|
+
// Absolute paths and unrelated flags pass through unchanged.
|
|
35
|
+
assert.deepEqual(absolutizeCwd(["--cwd", "/x", "--concurrency", "4"], "/y"), [
|
|
36
|
+
"--cwd",
|
|
37
|
+
"/x",
|
|
38
|
+
"--concurrency",
|
|
39
|
+
"4",
|
|
40
|
+
]);
|
|
41
|
+
});
|
|
42
|
+
test("npx cache copies are recognised so the install can warn", () => {
|
|
43
|
+
assert.equal(isNpxCachePath("/Users/dev/.npm/_npx/abc123/node_modules/@euqns/nudge-mcp/dist/index.js"), true);
|
|
44
|
+
assert.equal(isNpxCachePath("C:\\Users\\dev\\AppData\\Local\\npm-cache\\_npx\\abc\\index.js"), true);
|
|
45
|
+
assert.equal(isNpxCachePath(ctx.entry), false);
|
|
46
|
+
});
|
|
47
|
+
test("service env carries shell basics and stable Nudge config only", () => {
|
|
48
|
+
const source = {
|
|
49
|
+
PATH: "/a:/b",
|
|
50
|
+
HOME: "/h",
|
|
51
|
+
NUDGE_CONVEX_URL: "https://x.convex.cloud",
|
|
52
|
+
NUDGE_TOKEN: "user-token",
|
|
53
|
+
NUDGE_RUNNER_TOKEN: "runner-token",
|
|
54
|
+
NUDGE_RUNNER_JOB: "stale-job",
|
|
55
|
+
NUDGE_RUNNER_ID: "stale-runner",
|
|
56
|
+
NUDGE_RUNNER_SUPERVISED: "1",
|
|
57
|
+
NUDGE_COMPANION_TOKEN: "stale-companion-token",
|
|
58
|
+
AWS_SECRET: "nope",
|
|
59
|
+
EMPTY: "",
|
|
60
|
+
};
|
|
61
|
+
assert.deepEqual(serviceEnv("runner", source), {
|
|
62
|
+
PATH: "/a:/b",
|
|
63
|
+
HOME: "/h",
|
|
64
|
+
NUDGE_CONVEX_URL: "https://x.convex.cloud",
|
|
65
|
+
NUDGE_TOKEN: "user-token",
|
|
66
|
+
NUDGE_RUNNER_TOKEN: "runner-token",
|
|
67
|
+
});
|
|
68
|
+
assert.deepEqual(serviceEnv("agent", source), {
|
|
69
|
+
PATH: "/a:/b",
|
|
70
|
+
HOME: "/h",
|
|
71
|
+
NUDGE_CONVEX_URL: "https://x.convex.cloud",
|
|
72
|
+
NUDGE_TOKEN: "user-token",
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
test("buildSpec: runner spec uses the --cwd as working directory, keeps flags verbatim", () => {
|
|
76
|
+
const spec = buildSpec("runner", ["--token", "nrun_1", "--cwd", ".", "--concurrency", "8", "--save"], ctx);
|
|
77
|
+
assert.equal(spec.label, "com.nudge.runner");
|
|
78
|
+
assert.equal(spec.cwd, ctx.cwd);
|
|
79
|
+
assert.deepEqual(spec.args, ["--token", "nrun_1", "--cwd", ctx.cwd, "--concurrency", "8", "--save"]);
|
|
80
|
+
assert.equal(spec.env.SECRET, undefined);
|
|
81
|
+
assert.equal(path.basename(spec.logPath), "com.nudge.runner.log");
|
|
82
|
+
});
|
|
83
|
+
test("buildSpec: --instance yields a second, distinct label; the agent never gets one", () => {
|
|
84
|
+
assert.equal(buildSpec("runner", ["--instance", "two"], ctx).label, "com.nudge.runner.two");
|
|
85
|
+
assert.equal(buildSpec("agent", ["--instance", "two"], ctx).label, "com.nudge.agent");
|
|
86
|
+
});
|
|
87
|
+
test("launchd plist: runs this node + this entry, at login, restarts only after failure", () => {
|
|
88
|
+
const spec = buildSpec("runner", ["--token", "a<b&c", "--cwd", "."], ctx);
|
|
89
|
+
const plist = renderLaunchdPlist(spec);
|
|
90
|
+
assert.match(plist, /<key>Label<\/key>\s*<string>com\.nudge\.runner<\/string>/);
|
|
91
|
+
assert.match(plist, new RegExp(`<string>${ctx.node}</string>\\s*<string>${ctx.entry.replace(/\//g, "\\/")}</string>\\s*<string>runner</string>`));
|
|
92
|
+
// Special characters are XML-escaped, never left raw.
|
|
93
|
+
assert.ok(plist.includes("<string>a<b&c</string>"));
|
|
94
|
+
assert.ok(!plist.includes("a<b&c"));
|
|
95
|
+
assert.match(plist, /<key>RunAtLoad<\/key>\s*<true\/>/);
|
|
96
|
+
assert.match(plist, /<key>KeepAlive<\/key>\s*<dict>\s*<key>SuccessfulExit<\/key>\s*<false\/>/);
|
|
97
|
+
assert.match(plist, /<key>WorkingDirectory<\/key>\s*<string>\/Users\/dev\/checkout<\/string>/);
|
|
98
|
+
assert.match(plist, /<key>PATH<\/key>\s*<string>\/opt\/homebrew\/bin:\/usr\/bin<\/string>/);
|
|
99
|
+
assert.ok(!plist.includes("SECRET"));
|
|
100
|
+
});
|
|
101
|
+
test("systemd unit: quoted ExecStart, on-failure restart, enabled for the user session", () => {
|
|
102
|
+
const spec = buildSpec("agent", ["--cwd", "/srv/repo", "--no-open"], ctx);
|
|
103
|
+
const unit = renderSystemdUnit(spec);
|
|
104
|
+
assert.ok(unit.includes(`ExecStart="${ctx.node}" "${ctx.entry}" "agent" "--cwd" "/srv/repo" "--no-open"`));
|
|
105
|
+
assert.ok(unit.includes("WorkingDirectory=/srv/repo"));
|
|
106
|
+
assert.ok(unit.includes('Environment="PATH=/opt/homebrew/bin:/usr/bin"'));
|
|
107
|
+
assert.ok(unit.includes("Restart=on-failure"));
|
|
108
|
+
assert.ok(unit.includes("WantedBy=default.target"));
|
|
109
|
+
assert.equal(systemdQuote('say "hi" \\ there'), '"say \\"hi\\" \\\\ there"');
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=service.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.test.js","sourceRoot":"","sources":["../src/service.test.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.
|
|
8
|
+
export const NUDGE_MCP_VERSION = "1.19.0";
|
|
9
9
|
//# sourceMappingURL=version.js.map
|