@euqns/nudge-mcp 1.27.0 → 1.30.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 +32 -15
- package/dist/codex-companion.js +44 -6
- package/dist/codex-companion.js.map +1 -1
- package/dist/companion-pairing.js +144 -0
- package/dist/companion-pairing.js.map +1 -0
- package/dist/companion-pairing.test.js +120 -0
- package/dist/companion-pairing.test.js.map +1 -0
- package/dist/credentials.js +0 -9
- package/dist/credentials.js.map +1 -1
- package/dist/engines/claude.js.map +1 -1
- package/dist/engines/codex.js +7 -3
- package/dist/engines/codex.js.map +1 -1
- package/dist/engines/codex.test.js +13 -1
- package/dist/engines/codex.test.js.map +1 -1
- package/dist/engines/pricing.js +4 -1
- package/dist/engines/pricing.js.map +1 -1
- package/dist/engines/pricing.test.js +16 -0
- package/dist/engines/pricing.test.js.map +1 -0
- package/dist/index.js +106 -15
- package/dist/index.js.map +1 -1
- package/dist/runner-update.js +128 -0
- package/dist/runner-update.js.map +1 -0
- package/dist/runner-update.test.js +86 -0
- package/dist/runner-update.test.js.map +1 -0
- package/dist/runner.js +108 -2
- package/dist/runner.js.map +1 -1
- package/dist/runner.test.js +3 -3
- package/dist/runner.test.js.map +1 -1
- package/dist/service-state.js.map +1 -1
- package/dist/service.js +30 -5
- package/dist/service.js.map +1 -1
- package/dist/service.test.js +42 -0
- package/dist/service.test.js.map +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import test from "node:test";
|
|
6
|
+
import { COMPANION_PORT_ENV, COMPANION_TOKEN_ENV, deleteStoredPairing, isValidCompanionToken, mintCompanionToken, pairingEnv, pairingFilePath, preferredPortFromEnv, readStoredPairing, resolveCompanionPairing, writeStoredPairing, } from "./companion-pairing.js";
|
|
7
|
+
const LABEL = "com.nudge.agent";
|
|
8
|
+
async function withDir(run) {
|
|
9
|
+
const dir = await fs.mkdtemp(path.join(os.tmpdir(), "nudge-pairing-"));
|
|
10
|
+
try {
|
|
11
|
+
await run(dir);
|
|
12
|
+
}
|
|
13
|
+
finally {
|
|
14
|
+
await fs.rm(dir, { recursive: true, force: true });
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
test("a service reuses the same token and port across independent process starts", async () => {
|
|
18
|
+
await withDir(async (dir) => {
|
|
19
|
+
// First start: nothing stored, mint. The companion persists after listening.
|
|
20
|
+
const first = await resolveCompanionPairing(LABEL, dir);
|
|
21
|
+
assert.equal(first.restored, false);
|
|
22
|
+
assert.equal(first.port, null);
|
|
23
|
+
assert.ok(isValidCompanionToken(first.token));
|
|
24
|
+
await writeStoredPairing(LABEL, { token: first.token, port: 47653, createdAt: 1 }, dir);
|
|
25
|
+
// Second start — a brand-new process (crash restart, logout, reboot):
|
|
26
|
+
// the browser's saved pairing (token + port) is still what it gets.
|
|
27
|
+
const second = await resolveCompanionPairing(LABEL, dir);
|
|
28
|
+
assert.deepEqual(second, { token: first.token, port: 47653, restored: true });
|
|
29
|
+
assert.deepEqual(pairingEnv(second), {
|
|
30
|
+
[COMPANION_TOKEN_ENV]: first.token,
|
|
31
|
+
[COMPANION_PORT_ENV]: "47653",
|
|
32
|
+
});
|
|
33
|
+
assert.equal(preferredPortFromEnv(pairingEnv(second)), 47653);
|
|
34
|
+
// A companion started by hand has no label and never reads the file.
|
|
35
|
+
const manual = await resolveCompanionPairing(null, dir);
|
|
36
|
+
assert.notEqual(manual.token, first.token);
|
|
37
|
+
assert.equal(manual.restored, false);
|
|
38
|
+
assert.deepEqual(pairingEnv(manual), { [COMPANION_TOKEN_ENV]: manual.token });
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
test("stored pairings are owner-only and written atomically", async () => {
|
|
42
|
+
await withDir(async (dir) => {
|
|
43
|
+
const file = await writeStoredPairing(LABEL, { token: mintCompanionToken(), port: 5000, createdAt: 2 }, dir);
|
|
44
|
+
assert.equal(file, pairingFilePath(LABEL, dir));
|
|
45
|
+
if (process.platform !== "win32") {
|
|
46
|
+
assert.equal((await fs.stat(file)).mode & 0o777, 0o600);
|
|
47
|
+
assert.equal((await fs.stat(dir)).mode & 0o777, 0o700);
|
|
48
|
+
}
|
|
49
|
+
assert.deepEqual(await fs.readdir(dir), [`${LABEL}.json`]);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
test("malformed or unsafe stored pairings are ignored so a fresh token is minted", async (t) => {
|
|
53
|
+
await withDir(async (dir) => {
|
|
54
|
+
const file = pairingFilePath(LABEL, dir);
|
|
55
|
+
await fs.mkdir(dir, { recursive: true });
|
|
56
|
+
const cases = [
|
|
57
|
+
["not json", "{nope"],
|
|
58
|
+
["short token", JSON.stringify({ token: "abc", port: 47653 })],
|
|
59
|
+
["token with odd characters", JSON.stringify({ token: "a b".padEnd(40, "!"), port: 47653 })],
|
|
60
|
+
["privileged port", JSON.stringify({ token: "a".repeat(40), port: 80 })],
|
|
61
|
+
["port out of range", JSON.stringify({ token: "a".repeat(40), port: 70000 })],
|
|
62
|
+
["port as string", JSON.stringify({ token: "a".repeat(40), port: "47653" })],
|
|
63
|
+
];
|
|
64
|
+
for (const [name, body] of cases) {
|
|
65
|
+
await fs.writeFile(file, body, { mode: 0o600 });
|
|
66
|
+
await fs.chmod(file, 0o600);
|
|
67
|
+
assert.equal(await readStoredPairing(LABEL, dir), null, name);
|
|
68
|
+
const resolved = await resolveCompanionPairing(LABEL, dir);
|
|
69
|
+
assert.equal(resolved.restored, false, name);
|
|
70
|
+
}
|
|
71
|
+
// Missing file: nothing to restore, no throw.
|
|
72
|
+
await fs.rm(file);
|
|
73
|
+
assert.equal(await readStoredPairing(LABEL, dir), null);
|
|
74
|
+
if (process.platform === "win32")
|
|
75
|
+
return;
|
|
76
|
+
// World- or group-readable: the secret may have leaked, do not reuse it.
|
|
77
|
+
await fs.writeFile(file, JSON.stringify({ token: "b".repeat(40), port: 47653 }), { mode: 0o644 });
|
|
78
|
+
await fs.chmod(file, 0o644);
|
|
79
|
+
assert.equal(await readStoredPairing(LABEL, dir), null);
|
|
80
|
+
await fs.chmod(file, 0o600);
|
|
81
|
+
assert.equal((await readStoredPairing(LABEL, dir))?.token, "b".repeat(40));
|
|
82
|
+
// A symlink is never followed, even to an otherwise valid file.
|
|
83
|
+
const target = path.join(dir, "elsewhere.json");
|
|
84
|
+
await fs.writeFile(target, JSON.stringify({ token: "c".repeat(40), port: 47653 }), { mode: 0o600 });
|
|
85
|
+
await fs.rm(file);
|
|
86
|
+
try {
|
|
87
|
+
await fs.symlink(target, file);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
t.diagnostic("symlinks unavailable here; skipping the symlink case");
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
assert.equal(await readStoredPairing(LABEL, dir), null);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
test("writing refuses to persist a malformed pairing", async () => {
|
|
97
|
+
await withDir(async (dir) => {
|
|
98
|
+
await assert.rejects(writeStoredPairing(LABEL, { token: "short", port: 47653, createdAt: 0 }, dir));
|
|
99
|
+
await assert.rejects(writeStoredPairing(LABEL, { token: "a".repeat(40), port: 22, createdAt: 0 }, dir));
|
|
100
|
+
assert.equal(await readStoredPairing(LABEL, dir), null);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
test("revoking a pairing means the next start mints a different token", async () => {
|
|
104
|
+
await withDir(async (dir) => {
|
|
105
|
+
const token = mintCompanionToken();
|
|
106
|
+
await writeStoredPairing(LABEL, { token, port: 47653, createdAt: 3 }, dir);
|
|
107
|
+
assert.equal(await deleteStoredPairing(LABEL, dir), true);
|
|
108
|
+
assert.equal(await deleteStoredPairing(LABEL, dir), false);
|
|
109
|
+
const next = await resolveCompanionPairing(LABEL, dir);
|
|
110
|
+
assert.notEqual(next.token, token);
|
|
111
|
+
assert.equal(next.restored, false);
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
test("the preferred port from env is ignored when it is not a sane loopback port", () => {
|
|
115
|
+
assert.equal(preferredPortFromEnv({}), null);
|
|
116
|
+
assert.equal(preferredPortFromEnv({ [COMPANION_PORT_ENV]: "abc" }), null);
|
|
117
|
+
assert.equal(preferredPortFromEnv({ [COMPANION_PORT_ENV]: "80" }), null);
|
|
118
|
+
assert.equal(preferredPortFromEnv({ [COMPANION_PORT_ENV]: "47653" }), 47653);
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=companion-pairing.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-pairing.test.js","sourceRoot":"","sources":["../src/companion-pairing.test.ts"],"names":[],"mappings":"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"}
|
package/dist/credentials.js
CHANGED
|
@@ -33,15 +33,6 @@ export async function writeCredentials(creds) {
|
|
|
33
33
|
});
|
|
34
34
|
await fs.chmod(CREDENTIALS_PATH, 0o600);
|
|
35
35
|
}
|
|
36
|
-
export async function deleteCredentials() {
|
|
37
|
-
try {
|
|
38
|
-
await fs.unlink(CREDENTIALS_PATH);
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
41
|
-
if (err.code !== "ENOENT")
|
|
42
|
-
throw err;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
36
|
export const RUNNER_CONFIG_PATH = path.join(CREDENTIALS_DIR, "runner.json");
|
|
46
37
|
export const MACHINE_ID_PATH = path.join(CREDENTIALS_DIR, "machine.json");
|
|
47
38
|
// This machine's stable identity, minted once and kept forever.
|
package/dist/credentials.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAC3E,0BAA0B;AAE1B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QACvD,IACE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAChC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EACpC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;IAC9D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAkB;IACvD,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,wEAAwE;IACxE,yEAAyE;IACzE,2BAA2B;IAC3B,MAAM,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QACnE,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,2EAA2E;AAC3E,0BAA0B;AAE1B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AAE1E,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;QACvD,IACE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAChC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EACpC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;IAC9D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAkB;IACvD,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,wEAAwE;IACxE,yEAAyE;IACzE,2BAA2B;IAC3B,MAAM,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QACnE,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,MAAM,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;AAC1C,CAAC;AAoBD,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;AAE1E,gEAAgE;AAChE,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,6EAA6E;AAC7E,wEAAwE;AACxE,wEAAwE;AACxE,iDAAiD;AACjD,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,CAEnE,CAAC;QACF,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YAC7D,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,GAAG,CAAC;IAClE,CAAC;IACD,2EAA2E;IAC3E,6DAA6D;IAC7D,MAAM,SAAS,GAAG,CAAC,MAAM,gBAAgB,EAAE,CAAC,EAAE,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;IAC/E,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,MAAM,EAAE,CAAC,SAAS,CAChB,eAAe,EACf,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EACtC,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;IACF,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACvC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC,CACrB,CAAC;QAC3B,IACE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAChC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;YACpC,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EACpC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAsB,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAClE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAoB;IAC1D,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,MAAM,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QACtE,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,MAAM,EAAE,CAAC,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -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,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/engines/claude.ts"],"names":[],"mappings":"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"}
|
package/dist/engines/codex.js
CHANGED
|
@@ -12,7 +12,11 @@ import { emptyUsage, } from "./types.js";
|
|
|
12
12
|
const PROBE_TIMEOUT_MS = 10_000;
|
|
13
13
|
// Models `codex -m` accepts, newest first. Reported at startup so the board's
|
|
14
14
|
// model picker reflects what this machine can actually run.
|
|
15
|
-
const CODEX_MODELS = [
|
|
15
|
+
export const CODEX_MODELS = [
|
|
16
|
+
"gpt-6-astra",
|
|
17
|
+
"gpt-5.6-sol",
|
|
18
|
+
"gpt-5.6-luna",
|
|
19
|
+
];
|
|
16
20
|
export function codexNetworkAccessEnabled(options) {
|
|
17
21
|
return !options.readOnly && (options.networkAccess === true || options.openPr === true);
|
|
18
22
|
}
|
|
@@ -27,7 +31,7 @@ export function codexSandboxMode(options) {
|
|
|
27
31
|
? "danger-full-access"
|
|
28
32
|
: "workspace-write";
|
|
29
33
|
}
|
|
30
|
-
function
|
|
34
|
+
export function codexThreadOptions(options, mode, fallback) {
|
|
31
35
|
return {
|
|
32
36
|
sandboxMode: mode,
|
|
33
37
|
// Headless by design — nothing here can answer an approval prompt.
|
|
@@ -151,7 +155,7 @@ export class CodexEngine {
|
|
|
151
155
|
async execute(options) {
|
|
152
156
|
await this.prepare(options);
|
|
153
157
|
const opts = {
|
|
154
|
-
...
|
|
158
|
+
...codexThreadOptions(options, codexSandboxMode(options), this.home),
|
|
155
159
|
};
|
|
156
160
|
const usage = emptyUsage();
|
|
157
161
|
let summary = "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/engines/codex.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,6EAA6E;AAC7E,yEAAyE;AAEzE,OAAO,EACL,KAAK,GAKN,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GAExB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAkB,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,UAAU,
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/engines/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import assert from "node:assert/strict";
|
|
2
2
|
import { describe, it } from "node:test";
|
|
3
|
-
import { codexNetworkAccessEnabled, codexSandboxMode, } from "./codex.js";
|
|
3
|
+
import { CODEX_MODELS, codexNetworkAccessEnabled, codexSandboxMode, codexThreadOptions, } from "./codex.js";
|
|
4
|
+
describe("Codex models", () => {
|
|
5
|
+
it("advertises GPT-6 Astra first while retaining GPT-5.6 models", () => {
|
|
6
|
+
assert.deepEqual(CODEX_MODELS, [
|
|
7
|
+
"gpt-6-astra",
|
|
8
|
+
"gpt-5.6-sol",
|
|
9
|
+
"gpt-5.6-luna",
|
|
10
|
+
]);
|
|
11
|
+
});
|
|
12
|
+
it("passes the canonical GPT-6 Astra id to the SDK thread", () => {
|
|
13
|
+
assert.equal(codexThreadOptions({ cwd: "/checkout", model: "gpt-6-astra", effort: "high" }, "workspace-write").model, "gpt-6-astra");
|
|
14
|
+
});
|
|
15
|
+
});
|
|
4
16
|
describe("codexSandboxMode", () => {
|
|
5
17
|
it("gives repository-action jobs access to Git metadata", () => {
|
|
6
18
|
assert.equal(codexSandboxMode({ networkAccess: true, openPr: false, readOnly: false }), "danger-full-access");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.test.js","sourceRoot":"","sources":["../../src/engines/codex.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EACL,yBAAyB,EACzB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"codex.test.js","sourceRoot":"","sources":["../../src/engines/codex.test.ts"],"names":[],"mappings":"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"}
|
package/dist/engines/pricing.js
CHANGED
|
@@ -10,12 +10,15 @@
|
|
|
10
10
|
// null rather than guessing with a neighbouring model's rate — a wrong number
|
|
11
11
|
// presented as a number is worse than an honest blank.
|
|
12
12
|
//
|
|
13
|
-
// Rates are USD per 1M tokens
|
|
13
|
+
// Rates are USD per 1M tokens. GPT-6 Astra checked 2026-09-04:
|
|
14
|
+
// https://developers.openai.com/api/docs/models/gpt-6-astra
|
|
15
|
+
// Existing GPT-5.6 rates were checked 2026-08-10:
|
|
14
16
|
// https://devtk.ai/en/blog/openai-api-pricing-guide-2026/
|
|
15
17
|
// https://www.aipricing.guru/openai-pricing/
|
|
16
18
|
// Override any of them with NUDGE_PRICING (JSON), e.g.
|
|
17
19
|
// NUDGE_PRICING='{"gpt-5.6-sol":{"input":5,"output":30,"cachedInput":0.5}}'
|
|
18
20
|
const BUILT_IN = {
|
|
21
|
+
"gpt-6-astra": { input: 10.0, output: 50.0, cachedInput: 1.0 },
|
|
19
22
|
"gpt-5.6-sol": { input: 5.0, output: 30.0, cachedInput: 0.5 },
|
|
20
23
|
"gpt-5.6-terra": { input: 2.0, output: 12.0, cachedInput: 0.2 },
|
|
21
24
|
"gpt-5.6-luna": { input: 0.2, output: 1.2, cachedInput: 0.02 },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/engines/pricing.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAChF,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,uDAAuD;AACvD,EAAE;AACF,
|
|
1
|
+
{"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../src/engines/pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
import { estimateCostUsd, rateFor } from "./pricing.js";
|
|
4
|
+
test("uses published GPT-6 Astra rates", () => {
|
|
5
|
+
assert.deepEqual(rateFor("gpt-6-astra"), {
|
|
6
|
+
input: 10,
|
|
7
|
+
output: 50,
|
|
8
|
+
cachedInput: 1,
|
|
9
|
+
});
|
|
10
|
+
assert.equal(estimateCostUsd("gpt-6-astra", {
|
|
11
|
+
inputTokens: 1_000_000,
|
|
12
|
+
cachedInputTokens: 500_000,
|
|
13
|
+
outputTokens: 1_000_000,
|
|
14
|
+
}), 55.5);
|
|
15
|
+
});
|
|
16
|
+
//# sourceMappingURL=pricing.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing.test.js","sourceRoot":"","sources":["../../src/engines/pricing.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAExD,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAC5C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;QACvC,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,WAAW,EAAE,CAAC;KACf,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CACV,eAAe,CAAC,aAAa,EAAE;QAC7B,WAAW,EAAE,SAAS;QACtB,iBAAiB,EAAE,OAAO;QAC1B,YAAY,EAAE,SAAS;KACxB,CAAC,EACF,IAAI,CACL,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -20,8 +20,11 @@ import { CREDENTIALS_PATH, readCredentials } from "./credentials.js";
|
|
|
20
20
|
import { runAgentCompanion, runCodexCompanion } from "./codex-companion.js";
|
|
21
21
|
import { runNudgeRunner } from "./runner.js";
|
|
22
22
|
import { SUPERVISED_ENV, supervise } from "./runner-restart.js";
|
|
23
|
-
import {
|
|
23
|
+
import { pairingEnv, resolveCompanionPairing } from "./companion-pairing.js";
|
|
24
|
+
import { serviceInfoFromEnv } from "./service-state.js";
|
|
24
25
|
import { runnerCardCall } from "./runner-card-tools.js";
|
|
26
|
+
import { detectNudgeInstallContext } from "./install-context.js";
|
|
27
|
+
import { performSelfUpdate, planSelfUpdate } from "./runner-update.js";
|
|
25
28
|
import { NUDGE_MCP_VERSION } from "./version.js";
|
|
26
29
|
import { structuredResultForTool } from "./entity-results.js";
|
|
27
30
|
import { runSetup } from "./setup.js";
|
|
@@ -39,6 +42,10 @@ async function ensureSupervised(name, extraEnv) {
|
|
|
39
42
|
if (process.env[SUPERVISED_ENV] !== "1" && !noAutoRestart) {
|
|
40
43
|
await supervise(name, filtered, extraEnv);
|
|
41
44
|
}
|
|
45
|
+
// Not spawning a child (already the child, or --no-auto-restart): the env
|
|
46
|
+
// the supervisor would have handed down applies to this process instead.
|
|
47
|
+
if (extraEnv)
|
|
48
|
+
Object.assign(process.env, extraEnv);
|
|
42
49
|
return filtered;
|
|
43
50
|
}
|
|
44
51
|
if (subcommand === "setup") {
|
|
@@ -63,15 +70,21 @@ if (subcommand === "service") {
|
|
|
63
70
|
process.exit(1);
|
|
64
71
|
}
|
|
65
72
|
}
|
|
66
|
-
// The companion's browser pairing embeds a bearer token.
|
|
73
|
+
// The companion's browser pairing embeds a bearer token. Resolved in the
|
|
67
74
|
// supervisor and handed down through env, it stays the same across respawns —
|
|
68
75
|
// which is what lets an already-paired browser keep talking to a restarted
|
|
69
|
-
// companion.
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
// companion. Under a login service the pairing is also persisted (owner-only,
|
|
77
|
+
// under ~/.nudge/pairings), so a crash restart, logout or reboot comes back
|
|
78
|
+
// with the same token and port instead of orphaning the browser's saved
|
|
79
|
+
// connection. A companion started by hand keeps a per-run token.
|
|
80
|
+
const companionEnv = async () => {
|
|
81
|
+
if (process.env[SUPERVISED_ENV] === "1")
|
|
82
|
+
return {};
|
|
83
|
+
const service = serviceInfoFromEnv();
|
|
84
|
+
return pairingEnv(await resolveCompanionPairing(service?.label ?? null));
|
|
85
|
+
};
|
|
73
86
|
if (subcommand === "codex") {
|
|
74
|
-
const argv = await ensureSupervised("codex", companionEnv());
|
|
87
|
+
const argv = await ensureSupervised("codex", await companionEnv());
|
|
75
88
|
try {
|
|
76
89
|
await runCodexCompanion(argv);
|
|
77
90
|
process.exit(0);
|
|
@@ -82,7 +95,7 @@ if (subcommand === "codex") {
|
|
|
82
95
|
}
|
|
83
96
|
}
|
|
84
97
|
if (subcommand === "agent") {
|
|
85
|
-
const argv = await ensureSupervised("agent", companionEnv());
|
|
98
|
+
const argv = await ensureSupervised("agent", await companionEnv());
|
|
86
99
|
try {
|
|
87
100
|
await runAgentCompanion(argv);
|
|
88
101
|
process.exit(0);
|
|
@@ -456,6 +469,32 @@ const schemas = {
|
|
|
456
469
|
my_notifications: z.object({
|
|
457
470
|
limit: z.number().int().positive().max(200).optional(),
|
|
458
471
|
}),
|
|
472
|
+
update_runners: z.object({
|
|
473
|
+
mode: z
|
|
474
|
+
.enum(["plan", "apply", "status"])
|
|
475
|
+
.optional()
|
|
476
|
+
.describe("plan (default): preview which runners would update, to which version, and which are skipped and why — no changes. apply: perform the update; REQUIRES confirm: true. status: re-read a previous apply by its requestedAt."),
|
|
477
|
+
confirm: z
|
|
478
|
+
.boolean()
|
|
479
|
+
.optional()
|
|
480
|
+
.describe("Must be true for mode 'apply'. Only set it after the user has seen the plan and explicitly agreed; without it the call returns the plan again."),
|
|
481
|
+
boardId: z
|
|
482
|
+
.string()
|
|
483
|
+
.optional()
|
|
484
|
+
.describe("Limit to one board's runners. Default: every board where the caller is an editor or owner."),
|
|
485
|
+
targetVersion: z
|
|
486
|
+
.string()
|
|
487
|
+
.optional()
|
|
488
|
+
.describe("@euqns/nudge-mcp version or dist-tag to install. Default: the newest published release compatible with this deployment."),
|
|
489
|
+
waitSeconds: z
|
|
490
|
+
.number()
|
|
491
|
+
.optional()
|
|
492
|
+
.describe("How long apply waits for runners to report (default 120, max 240). Runners finish their running jobs first, so long jobs outlast this — use mode 'status' afterwards."),
|
|
493
|
+
requestedAt: z
|
|
494
|
+
.number()
|
|
495
|
+
.optional()
|
|
496
|
+
.describe("For mode 'status': the requestedAt stamp returned by apply."),
|
|
497
|
+
}),
|
|
459
498
|
list_canvases: z.object({ boardId: z.string() }),
|
|
460
499
|
create_canvas: z.object({
|
|
461
500
|
boardId: z.string(),
|
|
@@ -845,6 +884,14 @@ const tools = {
|
|
|
845
884
|
description: "Recent notifications for the current user (assigned/mentioned/commented/moved/updated), newest first.",
|
|
846
885
|
action: "mcp:myNotifications",
|
|
847
886
|
},
|
|
887
|
+
update_runners: {
|
|
888
|
+
description: "Update the Nudge MCP/runner package (@euqns/nudge-mcp) on every active self-hosted runner and gracefully restart them on the new build. " +
|
|
889
|
+
"Default mode 'plan' changes nothing: it lists the target version, the runners that will update, and the runners skipped with the reason and the manual command for each. " +
|
|
890
|
+
"Show that plan to the user and call again with mode 'apply' and confirm: true ONLY after they explicitly agree. " +
|
|
891
|
+
"Each runner keeps its configuration, finishes the jobs it is running on the current build, claims nothing new, updates itself, and restarts; the result reports per-runner success or failure and, for every job that was in flight, whether it finished, is still running, was requeued, or must be rerun/answered by a person. " +
|
|
892
|
+
"If the wait runs out, poll with mode 'status' and the returned requestedAt. When this server runs locally it also updates its own global install afterwards; the MCP client must reconnect to load it.",
|
|
893
|
+
action: "mcp:updateRunners",
|
|
894
|
+
},
|
|
848
895
|
list_canvases: {
|
|
849
896
|
description: "List a board's canvas documents (id, title), oldest first — the first one is the board's default canvas. Call this before canvas node/edge tools to pick which canvas to work on.",
|
|
850
897
|
action: "mcp:listCanvases",
|
|
@@ -930,6 +977,8 @@ const toolRisk = {
|
|
|
930
977
|
list_assignable_users: "read",
|
|
931
978
|
add_board_member: "destructive",
|
|
932
979
|
my_notifications: "read",
|
|
980
|
+
// Restarts machines: approval-worthy even though the server also gates on confirm.
|
|
981
|
+
update_runners: "destructive",
|
|
933
982
|
list_canvases: "read",
|
|
934
983
|
create_canvas: "write",
|
|
935
984
|
list_canvas_nodes: "read",
|
|
@@ -950,11 +999,6 @@ const INTAKE_ALLOWED_TOOLS = new Set([
|
|
|
950
999
|
...Object.keys(toolRisk).filter((name) => toolRisk[name] === "read"),
|
|
951
1000
|
"create_card",
|
|
952
1001
|
]);
|
|
953
|
-
// Convex's makeFunctionReference accepts the "module:function" form directly,
|
|
954
|
-
// so the friendly slug is already the wire format — no translation needed.
|
|
955
|
-
function actionPath(slug) {
|
|
956
|
-
return slug;
|
|
957
|
-
}
|
|
958
1002
|
// ---- ask_human (runner jobs only) -----------------------------------------
|
|
959
1003
|
// The tool that turns a job from a one-shot into a conversation.
|
|
960
1004
|
//
|
|
@@ -1200,6 +1244,50 @@ function withDescription(obj, description) {
|
|
|
1200
1244
|
return { ...obj, description };
|
|
1201
1245
|
return obj;
|
|
1202
1246
|
}
|
|
1247
|
+
// ---- update_runners: this server's own copy -------------------------------
|
|
1248
|
+
// The Convex side updates the RUNNERS; this stdio process is the other half of
|
|
1249
|
+
// "update MCP". After a confirmed apply it updates its own global install so
|
|
1250
|
+
// the next MCP session runs the same version the runners now do. The process
|
|
1251
|
+
// keeps serving on the old code until the client reconnects — Node loaded it
|
|
1252
|
+
// already — so the result says so explicitly. Inside a runner job this is
|
|
1253
|
+
// skipped: the runner on this machine is itself being updated by the request,
|
|
1254
|
+
// and two concurrent `npm install -g` into one prefix would race.
|
|
1255
|
+
async function withLocalMcpUpdate(args, result) {
|
|
1256
|
+
if (typeof result !== "object" || result === null)
|
|
1257
|
+
return result;
|
|
1258
|
+
const r = result;
|
|
1259
|
+
const base = { currentVersion: NUDGE_MCP_VERSION };
|
|
1260
|
+
if (r.mode !== "apply" || args.confirm !== true) {
|
|
1261
|
+
return { ...r, thisMcpServer: { ...base, updated: false, note: "Nothing done in plan/status mode." } };
|
|
1262
|
+
}
|
|
1263
|
+
if (RUNNER_JOB) {
|
|
1264
|
+
return {
|
|
1265
|
+
...r,
|
|
1266
|
+
thisMcpServer: {
|
|
1267
|
+
...base,
|
|
1268
|
+
updated: false,
|
|
1269
|
+
note: "Running inside a runner job; the runner on this machine updates the shared install itself.",
|
|
1270
|
+
},
|
|
1271
|
+
};
|
|
1272
|
+
}
|
|
1273
|
+
const installation = await detectNudgeInstallContext();
|
|
1274
|
+
const plan = planSelfUpdate(installation, r.target?.targetVersion ?? "latest");
|
|
1275
|
+
if (plan.kind === "unsupported") {
|
|
1276
|
+
return { ...r, thisMcpServer: { ...base, updated: false, installation, note: plan.reason } };
|
|
1277
|
+
}
|
|
1278
|
+
const outcome = await performSelfUpdate(plan);
|
|
1279
|
+
return {
|
|
1280
|
+
...r,
|
|
1281
|
+
thisMcpServer: outcome.ok
|
|
1282
|
+
? {
|
|
1283
|
+
...base,
|
|
1284
|
+
updated: true,
|
|
1285
|
+
installedVersion: outcome.installedVersion,
|
|
1286
|
+
note: "Installed. This MCP session still runs the previous code until the client reconnects (restart the MCP server / reload the client).",
|
|
1287
|
+
}
|
|
1288
|
+
: { ...base, updated: false, installation, error: outcome.error },
|
|
1289
|
+
};
|
|
1290
|
+
}
|
|
1203
1291
|
// ---- server wiring --------------------------------------------------------
|
|
1204
1292
|
const server = new Server({
|
|
1205
1293
|
name: "nudge-mcp",
|
|
@@ -1348,9 +1436,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1348
1436
|
if (!parsed.success) {
|
|
1349
1437
|
throw new Error(`Invalid arguments for ${name}: ${JSON.stringify(parsed.error.flatten())}`);
|
|
1350
1438
|
}
|
|
1351
|
-
const result = await action(
|
|
1439
|
+
const result = await action(tools[name].action, parsed.data);
|
|
1352
1440
|
const structured = structuredResultForTool(name, parsed.data, result);
|
|
1353
|
-
const modelResult = structured ??
|
|
1441
|
+
const modelResult = structured ??
|
|
1442
|
+
(name === "update_runners"
|
|
1443
|
+
? await withLocalMcpUpdate(parsed.data, result)
|
|
1444
|
+
: result);
|
|
1354
1445
|
// MCP returns tool results as content arrays. Encode our JSON as a single
|
|
1355
1446
|
// text block — readable by the model and easy to round-trip back. Create
|
|
1356
1447
|
// tools additionally expose structuredContent so first-party clients can
|