@euqns/nudge-mcp 0.6.5 → 0.6.8
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 +21 -3
- package/dist/codex-companion.js +389 -12
- package/dist/codex-companion.js.map +1 -1
- package/dist/codex-companion.test.js +13 -0
- package/dist/codex-companion.test.js.map +1 -0
- package/dist/index.js +1 -1
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -47,9 +47,27 @@ npx -y @euqns/nudge-mcp@latest codex
|
|
|
47
47
|
|
|
48
48
|
The companion does not accept or store an OpenAI API key. The Codex SDK reuses
|
|
49
49
|
the local Codex login under `~/.codex`, so a ChatGPT login uses that user's
|
|
50
|
-
subscription limits.
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
subscription limits. It keeps local filesystem access read-only and allows only
|
|
51
|
+
the exact Nudge origin that launched it. Authorized Nudge MCP tools can still
|
|
52
|
+
update board data.
|
|
53
|
+
|
|
54
|
+
The companion supplies Codex with its own complete Nudge MCP transport, so a
|
|
55
|
+
fresh computer does not need a manual `mcp_servers.nudge` entry in
|
|
56
|
+
`~/.codex/config.toml`. Each computer still needs the one-time
|
|
57
|
+
`npx -y @euqns/nudge-mcp setup` authorization so Nudge can identify that user.
|
|
58
|
+
|
|
59
|
+
The sidecar reads the installed Codex model catalog and subscription rate-limit
|
|
60
|
+
windows from the local Codex app server. Users can change models, choose any
|
|
61
|
+
reasoning effort supported by that model, see the exact remaining percentage
|
|
62
|
+
and reset time exposed by their plan, and inspect the input, output, cache, and
|
|
63
|
+
reasoning-token usage for each completed turn. A model or effort change starts
|
|
64
|
+
a fresh chat; prior chats are kept in browser-local history and resume their
|
|
65
|
+
persisted local Codex thread when reopened.
|
|
66
|
+
|
|
67
|
+
When chat is opened from a board or canvas, Nudge sends the active board id,
|
|
68
|
+
title, source, view, canvas id, and lightweight counts with each prompt. The
|
|
69
|
+
agent therefore has the right board context without asking the user to repeat
|
|
70
|
+
it; board contents are still read through the authorized Nudge MCP tools.
|
|
53
71
|
|
|
54
72
|
Routine Nudge MCP actions are pre-approved because the SDK runs Codex
|
|
55
73
|
headlessly and cannot display a second approval prompt. Destructive or
|
package/dist/codex-companion.js
CHANGED
|
@@ -1,11 +1,225 @@
|
|
|
1
|
-
import { Codex } from "@openai/codex-sdk";
|
|
1
|
+
import { Codex, } from "@openai/codex-sdk";
|
|
2
2
|
import { spawn, spawnSync } from "node:child_process";
|
|
3
3
|
import crypto from "node:crypto";
|
|
4
4
|
import http from "node:http";
|
|
5
|
+
import { createRequire } from "node:module";
|
|
5
6
|
import path from "node:path";
|
|
7
|
+
import readline from "node:readline";
|
|
8
|
+
import { fileURLToPath } from "node:url";
|
|
6
9
|
const DEFAULT_APP_URL = "https://funjitsu-nudge.vercel.app";
|
|
7
10
|
const DEFAULT_PORT = 47653;
|
|
8
11
|
const MAX_BODY_BYTES = 64 * 1024;
|
|
12
|
+
const require = createRequire(import.meta.url);
|
|
13
|
+
const REASONING_EFFORTS = new Set([
|
|
14
|
+
"none",
|
|
15
|
+
"minimal",
|
|
16
|
+
"low",
|
|
17
|
+
"medium",
|
|
18
|
+
"high",
|
|
19
|
+
"xhigh",
|
|
20
|
+
"max",
|
|
21
|
+
"ultra",
|
|
22
|
+
]);
|
|
23
|
+
function reasoningEffort(value) {
|
|
24
|
+
return typeof value === "string" && REASONING_EFFORTS.has(value)
|
|
25
|
+
? value
|
|
26
|
+
: null;
|
|
27
|
+
}
|
|
28
|
+
function codexAppServerCommand() {
|
|
29
|
+
const packageJson = require.resolve("@openai/codex/package.json");
|
|
30
|
+
const bin = path.join(path.dirname(packageJson), "bin", "codex.js");
|
|
31
|
+
return {
|
|
32
|
+
command: process.execPath,
|
|
33
|
+
args: [bin, "app-server", "--stdio", "-c", 'model_provider="openai"'],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
class CodexMetadataClient {
|
|
37
|
+
child = null;
|
|
38
|
+
ready = null;
|
|
39
|
+
nextId = 1;
|
|
40
|
+
pending = new Map();
|
|
41
|
+
stderr = "";
|
|
42
|
+
async ensureReady() {
|
|
43
|
+
if (this.ready)
|
|
44
|
+
return this.ready;
|
|
45
|
+
this.ready = this.start();
|
|
46
|
+
try {
|
|
47
|
+
await this.ready;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
this.ready = null;
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async start() {
|
|
55
|
+
const invocation = codexAppServerCommand();
|
|
56
|
+
const child = spawn(invocation.command, invocation.args, {
|
|
57
|
+
env: subscriptionEnvironment(),
|
|
58
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
59
|
+
});
|
|
60
|
+
this.child = child;
|
|
61
|
+
this.stderr = "";
|
|
62
|
+
const lines = readline.createInterface({ input: child.stdout, crlfDelay: Infinity });
|
|
63
|
+
lines.on("line", (line) => this.handleLine(line));
|
|
64
|
+
child.stderr.on("data", (chunk) => {
|
|
65
|
+
this.stderr = `${this.stderr}${chunk.toString("utf8")}`.slice(-4_000);
|
|
66
|
+
});
|
|
67
|
+
child.once("error", (error) => this.handleExit(error));
|
|
68
|
+
child.once("exit", (code, signal) => {
|
|
69
|
+
const detail = signal ? `signal ${signal}` : `code ${code ?? 1}`;
|
|
70
|
+
this.handleExit(new Error(`Codex app server exited with ${detail}`));
|
|
71
|
+
});
|
|
72
|
+
await this.rawRequest("initialize", {
|
|
73
|
+
clientInfo: {
|
|
74
|
+
name: "nudge-companion",
|
|
75
|
+
title: "Nudge Local Codex",
|
|
76
|
+
version: "0.6.8",
|
|
77
|
+
},
|
|
78
|
+
capabilities: {
|
|
79
|
+
experimentalApi: true,
|
|
80
|
+
requestAttestation: false,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
child.stdin.write(`${JSON.stringify({ method: "initialized" })}\n`);
|
|
84
|
+
}
|
|
85
|
+
handleLine(line) {
|
|
86
|
+
let response;
|
|
87
|
+
try {
|
|
88
|
+
response = JSON.parse(line);
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (typeof response.id !== "number")
|
|
94
|
+
return;
|
|
95
|
+
const pending = this.pending.get(response.id);
|
|
96
|
+
if (!pending)
|
|
97
|
+
return;
|
|
98
|
+
this.pending.delete(response.id);
|
|
99
|
+
clearTimeout(pending.timer);
|
|
100
|
+
if (response.error) {
|
|
101
|
+
pending.reject(new Error(response.error.message ?? "Codex app server request failed"));
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
pending.resolve(response.result);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
handleExit(error) {
|
|
108
|
+
const detail = this.stderr.trim();
|
|
109
|
+
const failure = new Error(detail ? `${error.message}: ${detail}` : error.message);
|
|
110
|
+
for (const pending of this.pending.values()) {
|
|
111
|
+
clearTimeout(pending.timer);
|
|
112
|
+
pending.reject(failure);
|
|
113
|
+
}
|
|
114
|
+
this.pending.clear();
|
|
115
|
+
this.child = null;
|
|
116
|
+
this.ready = null;
|
|
117
|
+
}
|
|
118
|
+
rawRequest(method, params) {
|
|
119
|
+
const child = this.child;
|
|
120
|
+
if (!child?.stdin.writable) {
|
|
121
|
+
return Promise.reject(new Error("Codex app server is unavailable"));
|
|
122
|
+
}
|
|
123
|
+
const id = this.nextId++;
|
|
124
|
+
const payload = params === undefined ? { method, id } : { method, id, params };
|
|
125
|
+
return new Promise((resolve, reject) => {
|
|
126
|
+
const timer = setTimeout(() => {
|
|
127
|
+
this.pending.delete(id);
|
|
128
|
+
reject(new Error(`Codex app server timed out while reading ${method}`));
|
|
129
|
+
}, 8_000);
|
|
130
|
+
this.pending.set(id, { resolve, reject, timer });
|
|
131
|
+
child.stdin.write(`${JSON.stringify(payload)}\n`);
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
async request(method, params) {
|
|
135
|
+
await this.ensureReady();
|
|
136
|
+
return this.rawRequest(method, params);
|
|
137
|
+
}
|
|
138
|
+
async metadata(currentModel, currentEffort) {
|
|
139
|
+
const [modelResult, accountResult, limitsResult] = await Promise.all([
|
|
140
|
+
this.request("model/list", { limit: 100, includeHidden: false }),
|
|
141
|
+
this.request("account/read", { refreshToken: false }),
|
|
142
|
+
this.request("account/rateLimits/read"),
|
|
143
|
+
]);
|
|
144
|
+
const modelData = modelResult;
|
|
145
|
+
const models = (modelData.data ?? [])
|
|
146
|
+
.filter((model) => typeof model.model === "string" && model.model.length > 0)
|
|
147
|
+
.map((model) => ({
|
|
148
|
+
model: model.model,
|
|
149
|
+
displayName: typeof model.displayName === "string" ? model.displayName : model.model,
|
|
150
|
+
description: typeof model.description === "string" ? model.description : "",
|
|
151
|
+
isDefault: model.isDefault === true,
|
|
152
|
+
defaultReasoningEffort: reasoningEffort(model.defaultReasoningEffort) ?? "medium",
|
|
153
|
+
supportedReasoningEfforts: Array.isArray(model.supportedReasoningEfforts)
|
|
154
|
+
? model.supportedReasoningEfforts.flatMap((candidate) => {
|
|
155
|
+
if (!candidate || typeof candidate !== "object")
|
|
156
|
+
return [];
|
|
157
|
+
const entry = candidate;
|
|
158
|
+
const effort = reasoningEffort(entry.reasoningEffort);
|
|
159
|
+
if (!effort)
|
|
160
|
+
return [];
|
|
161
|
+
return [{
|
|
162
|
+
reasoningEffort: effort,
|
|
163
|
+
description: typeof entry.description === "string" ? entry.description : "",
|
|
164
|
+
}];
|
|
165
|
+
})
|
|
166
|
+
: [],
|
|
167
|
+
}));
|
|
168
|
+
const fallbackModel = models.find((model) => model.isDefault) ?? models[0];
|
|
169
|
+
if (!fallbackModel) {
|
|
170
|
+
throw new Error("Codex did not return an available model");
|
|
171
|
+
}
|
|
172
|
+
const account = accountResult;
|
|
173
|
+
const limits = limitsResult;
|
|
174
|
+
const rawRateLimits = limits.rateLimitsByLimitId
|
|
175
|
+
? Object.values(limits.rateLimitsByLimitId)
|
|
176
|
+
: limits.rateLimits
|
|
177
|
+
? [limits.rateLimits]
|
|
178
|
+
: [];
|
|
179
|
+
const sanitizeWindow = (window) => window
|
|
180
|
+
? {
|
|
181
|
+
usedPercent: Math.max(0, Math.min(100, window.usedPercent)),
|
|
182
|
+
windowDurationMins: window.windowDurationMins,
|
|
183
|
+
resetsAt: window.resetsAt,
|
|
184
|
+
}
|
|
185
|
+
: null;
|
|
186
|
+
const rateLimits = rawRateLimits.map((limit) => ({
|
|
187
|
+
limitId: limit.limitId,
|
|
188
|
+
limitName: limit.limitName,
|
|
189
|
+
primary: sanitizeWindow(limit.primary),
|
|
190
|
+
secondary: sanitizeWindow(limit.secondary),
|
|
191
|
+
planType: limit.planType,
|
|
192
|
+
}));
|
|
193
|
+
const selectedModel = currentModel && models.some((model) => model.model === currentModel)
|
|
194
|
+
? models.find((model) => model.model === currentModel)
|
|
195
|
+
: fallbackModel;
|
|
196
|
+
const selectedEffort = selectedModel.supportedReasoningEfforts.some((candidate) => candidate.reasoningEffort === currentEffort)
|
|
197
|
+
? currentEffort
|
|
198
|
+
: selectedModel.defaultReasoningEffort;
|
|
199
|
+
return {
|
|
200
|
+
currentModel: currentModel && models.some((model) => model.model === currentModel)
|
|
201
|
+
? currentModel
|
|
202
|
+
: fallbackModel.model,
|
|
203
|
+
currentReasoningEffort: selectedEffort,
|
|
204
|
+
models,
|
|
205
|
+
planType: account.account?.type === "chatgpt"
|
|
206
|
+
? account.account.planType ?? null
|
|
207
|
+
: null,
|
|
208
|
+
rateLimits,
|
|
209
|
+
updatedAt: Date.now(),
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
stop() {
|
|
213
|
+
for (const pending of this.pending.values()) {
|
|
214
|
+
clearTimeout(pending.timer);
|
|
215
|
+
pending.reject(new Error("Codex companion is shutting down"));
|
|
216
|
+
}
|
|
217
|
+
this.pending.clear();
|
|
218
|
+
this.child?.kill();
|
|
219
|
+
this.child = null;
|
|
220
|
+
this.ready = null;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
9
223
|
function parseArgs(argv) {
|
|
10
224
|
let appUrl = process.env.NUDGE_APP_URL ?? DEFAULT_APP_URL;
|
|
11
225
|
let cwd = process.cwd();
|
|
@@ -117,12 +331,35 @@ function writeJson(res, status, value, headers) {
|
|
|
117
331
|
res.writeHead(status, { ...headers, "Content-Type": "application/json" });
|
|
118
332
|
res.end(JSON.stringify(value));
|
|
119
333
|
}
|
|
120
|
-
function buildPrompt(prompt,
|
|
334
|
+
function buildPrompt(prompt, context) {
|
|
335
|
+
const pathname = typeof context?.pathname === "string" ? context.pathname.slice(0, 500) : undefined;
|
|
121
336
|
const routeContext = pathname
|
|
122
337
|
? `The user opened this chat from the Nudge route ${JSON.stringify(pathname)}.`
|
|
123
338
|
: "The user opened this chat from Nudge.";
|
|
339
|
+
const boardContext = typeof context?.boardId === "string" &&
|
|
340
|
+
typeof context.boardTitle === "string"
|
|
341
|
+
? [
|
|
342
|
+
"The active Nudge board is:",
|
|
343
|
+
JSON.stringify({
|
|
344
|
+
id: context.boardId.slice(0, 200),
|
|
345
|
+
title: context.boardTitle.slice(0, 300),
|
|
346
|
+
source: context.boardSource === "cloud" || context.boardSource === "local"
|
|
347
|
+
? context.boardSource
|
|
348
|
+
: undefined,
|
|
349
|
+
view: typeof context.view === "string" ? context.view.slice(0, 50) : undefined,
|
|
350
|
+
canvasId: typeof context.canvasId === "string"
|
|
351
|
+
? context.canvasId.slice(0, 200)
|
|
352
|
+
: undefined,
|
|
353
|
+
cardId: typeof context.cardId === "string" ? context.cardId.slice(0, 200) : undefined,
|
|
354
|
+
listCount: typeof context.listCount === "number" ? context.listCount : undefined,
|
|
355
|
+
cardCount: typeof context.cardCount === "number" ? context.cardCount : undefined,
|
|
356
|
+
}),
|
|
357
|
+
"Use this exact board id for Nudge MCP calls unless the user names another board.",
|
|
358
|
+
]
|
|
359
|
+
: [];
|
|
124
360
|
return [
|
|
125
361
|
routeContext,
|
|
362
|
+
...boardContext,
|
|
126
363
|
"Use the configured Nudge MCP tools when the request needs board or card data.",
|
|
127
364
|
"Be concise about progress and return a clear final answer for the Nudge chat UI.",
|
|
128
365
|
"The local filesystem is read-only. Nudge MCP tools may update boards when requested; do not claim that local files were changed.",
|
|
@@ -167,11 +404,29 @@ const DESTRUCTIVE_NUDGE_TOOLS = [
|
|
|
167
404
|
"update_card",
|
|
168
405
|
"update_html_node",
|
|
169
406
|
];
|
|
407
|
+
function companionMcpTransport() {
|
|
408
|
+
const companionFile = fileURLToPath(import.meta.url);
|
|
409
|
+
const runningFromTypeScript = companionFile.endsWith(".ts");
|
|
410
|
+
const entrypoint = path.join(path.dirname(companionFile), runningFromTypeScript ? "index.ts" : "index.js");
|
|
411
|
+
return {
|
|
412
|
+
command: process.execPath,
|
|
413
|
+
args: runningFromTypeScript
|
|
414
|
+
? [require.resolve("tsx/cli"), entrypoint]
|
|
415
|
+
: [entrypoint],
|
|
416
|
+
};
|
|
417
|
+
}
|
|
170
418
|
export function companionCodexConfig() {
|
|
419
|
+
const transport = companionMcpTransport();
|
|
171
420
|
return {
|
|
172
421
|
model_provider: "openai",
|
|
173
422
|
mcp_servers: {
|
|
174
423
|
nudge: {
|
|
424
|
+
// Supply the transport ourselves. A companion must work on a fresh
|
|
425
|
+
// computer where Nudge has never been added to ~/.codex/config.toml.
|
|
426
|
+
// The published package runs dist/index.js directly; local development
|
|
427
|
+
// uses the package's own tsx launcher for src/index.ts.
|
|
428
|
+
command: transport.command,
|
|
429
|
+
args: transport.args,
|
|
175
430
|
// The browser prompt is the user's authorization for routine Nudge
|
|
176
431
|
// actions. Headless Codex cannot answer a later MCP approval prompt,
|
|
177
432
|
// so safe tools must be pre-approved or they are silently cancelled.
|
|
@@ -184,6 +439,18 @@ export function companionCodexConfig() {
|
|
|
184
439
|
},
|
|
185
440
|
};
|
|
186
441
|
}
|
|
442
|
+
function companionThreadOptions(cwd, model, effort) {
|
|
443
|
+
return {
|
|
444
|
+
approvalPolicy: "never",
|
|
445
|
+
sandboxMode: "read-only",
|
|
446
|
+
skipGitRepoCheck: true,
|
|
447
|
+
workingDirectory: cwd,
|
|
448
|
+
model: model ?? undefined,
|
|
449
|
+
// The local Codex catalog can expose max/ultra before the SDK declaration
|
|
450
|
+
// catches up. The SDK forwards this value directly to Codex CLI.
|
|
451
|
+
modelReasoningEffort: effort,
|
|
452
|
+
};
|
|
453
|
+
}
|
|
187
454
|
export async function runCodexCompanion(argv) {
|
|
188
455
|
const options = parseArgs(argv);
|
|
189
456
|
const allowedOrigin = new URL(options.appUrl).origin;
|
|
@@ -193,7 +460,10 @@ export async function runCodexCompanion(argv) {
|
|
|
193
460
|
config: companionCodexConfig(),
|
|
194
461
|
env: subscriptionEnvironment(),
|
|
195
462
|
});
|
|
463
|
+
const metadataClient = new CodexMetadataClient();
|
|
196
464
|
let thread = null;
|
|
465
|
+
let selectedModel = null;
|
|
466
|
+
let selectedEffort = null;
|
|
197
467
|
let activeAbort = null;
|
|
198
468
|
const corsHeaders = (origin) => ({
|
|
199
469
|
...(origin === allowedOrigin
|
|
@@ -229,9 +499,80 @@ export async function runCodexCompanion(argv) {
|
|
|
229
499
|
cwd: options.cwd,
|
|
230
500
|
running: activeAbort !== null,
|
|
231
501
|
threadId: thread?.id ?? null,
|
|
502
|
+
model: selectedModel,
|
|
503
|
+
effort: selectedEffort,
|
|
232
504
|
}, headers);
|
|
233
505
|
return;
|
|
234
506
|
}
|
|
507
|
+
if (req.method === "GET" && req.url === "/v1/metadata") {
|
|
508
|
+
try {
|
|
509
|
+
const metadata = await metadataClient.metadata(selectedModel, selectedEffort);
|
|
510
|
+
selectedModel = metadata.currentModel;
|
|
511
|
+
selectedEffort = metadata.currentReasoningEffort;
|
|
512
|
+
writeJson(res, 200, metadata, headers);
|
|
513
|
+
}
|
|
514
|
+
catch (error) {
|
|
515
|
+
writeJson(res, 503, {
|
|
516
|
+
error: error instanceof Error
|
|
517
|
+
? error.message
|
|
518
|
+
: "Codex metadata is unavailable",
|
|
519
|
+
}, headers);
|
|
520
|
+
}
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
if (req.method === "POST" && req.url === "/v1/model") {
|
|
524
|
+
if (activeAbort) {
|
|
525
|
+
writeJson(res, 409, { error: "A Codex turn is still running" }, headers);
|
|
526
|
+
return;
|
|
527
|
+
}
|
|
528
|
+
let parsed;
|
|
529
|
+
try {
|
|
530
|
+
parsed = JSON.parse(await readBody(req));
|
|
531
|
+
}
|
|
532
|
+
catch (error) {
|
|
533
|
+
writeJson(res, 400, { error: error instanceof Error ? error.message : "Invalid JSON" }, headers);
|
|
534
|
+
return;
|
|
535
|
+
}
|
|
536
|
+
const model = typeof parsed.model === "string" ? parsed.model.trim() : "";
|
|
537
|
+
const metadata = await metadataClient.metadata(selectedModel, selectedEffort);
|
|
538
|
+
const modelInfo = metadata.models.find((candidate) => candidate.model === model);
|
|
539
|
+
if (!modelInfo) {
|
|
540
|
+
writeJson(res, 400, { error: "That Codex model is unavailable" }, headers);
|
|
541
|
+
return;
|
|
542
|
+
}
|
|
543
|
+
selectedModel = model;
|
|
544
|
+
selectedEffort = modelInfo.defaultReasoningEffort;
|
|
545
|
+
thread = null;
|
|
546
|
+
writeJson(res, 200, { ok: true, model, effort: selectedEffort }, headers);
|
|
547
|
+
return;
|
|
548
|
+
}
|
|
549
|
+
if (req.method === "POST" && req.url === "/v1/effort") {
|
|
550
|
+
if (activeAbort) {
|
|
551
|
+
writeJson(res, 409, { error: "A Codex turn is still running" }, headers);
|
|
552
|
+
return;
|
|
553
|
+
}
|
|
554
|
+
let parsed;
|
|
555
|
+
try {
|
|
556
|
+
parsed = JSON.parse(await readBody(req));
|
|
557
|
+
}
|
|
558
|
+
catch (error) {
|
|
559
|
+
writeJson(res, 400, { error: error instanceof Error ? error.message : "Invalid JSON" }, headers);
|
|
560
|
+
return;
|
|
561
|
+
}
|
|
562
|
+
const effort = reasoningEffort(parsed.effort);
|
|
563
|
+
const metadata = await metadataClient.metadata(selectedModel, selectedEffort);
|
|
564
|
+
const modelInfo = metadata.models.find((candidate) => candidate.model === metadata.currentModel);
|
|
565
|
+
if (!effort ||
|
|
566
|
+
!modelInfo?.supportedReasoningEfforts.some((candidate) => candidate.reasoningEffort === effort)) {
|
|
567
|
+
writeJson(res, 400, { error: "That reasoning effort is unavailable" }, headers);
|
|
568
|
+
return;
|
|
569
|
+
}
|
|
570
|
+
selectedModel = metadata.currentModel;
|
|
571
|
+
selectedEffort = effort;
|
|
572
|
+
thread = null;
|
|
573
|
+
writeJson(res, 200, { ok: true, model: selectedModel, effort }, headers);
|
|
574
|
+
return;
|
|
575
|
+
}
|
|
235
576
|
if (req.method === "POST" && req.url === "/v1/new") {
|
|
236
577
|
if (activeAbort) {
|
|
237
578
|
writeJson(res, 409, { error: "A Codex turn is still running" }, headers);
|
|
@@ -241,6 +582,49 @@ export async function runCodexCompanion(argv) {
|
|
|
241
582
|
writeJson(res, 200, { ok: true }, headers);
|
|
242
583
|
return;
|
|
243
584
|
}
|
|
585
|
+
if (req.method === "POST" && req.url === "/v1/resume") {
|
|
586
|
+
if (activeAbort) {
|
|
587
|
+
writeJson(res, 409, { error: "A Codex turn is still running" }, headers);
|
|
588
|
+
return;
|
|
589
|
+
}
|
|
590
|
+
let parsed;
|
|
591
|
+
try {
|
|
592
|
+
parsed = JSON.parse(await readBody(req));
|
|
593
|
+
}
|
|
594
|
+
catch (error) {
|
|
595
|
+
writeJson(res, 400, { error: error instanceof Error ? error.message : "Invalid JSON" }, headers);
|
|
596
|
+
return;
|
|
597
|
+
}
|
|
598
|
+
const threadId = typeof parsed.threadId === "string" ? parsed.threadId.trim() : "";
|
|
599
|
+
if (!/^[a-zA-Z0-9-]{10,100}$/.test(threadId)) {
|
|
600
|
+
writeJson(res, 400, { error: "Invalid Codex thread id" }, headers);
|
|
601
|
+
return;
|
|
602
|
+
}
|
|
603
|
+
const requestedModel = typeof parsed.model === "string" ? parsed.model.trim() : "";
|
|
604
|
+
const requestedEffort = reasoningEffort(parsed.effort);
|
|
605
|
+
const metadata = await metadataClient.metadata(selectedModel, selectedEffort);
|
|
606
|
+
if (requestedModel) {
|
|
607
|
+
if (!metadata.models.some((candidate) => candidate.model === requestedModel)) {
|
|
608
|
+
writeJson(res, 400, { error: "That Codex model is unavailable" }, headers);
|
|
609
|
+
return;
|
|
610
|
+
}
|
|
611
|
+
selectedModel = requestedModel;
|
|
612
|
+
}
|
|
613
|
+
const modelInfo = metadata.models.find((candidate) => candidate.model === (selectedModel ?? metadata.currentModel));
|
|
614
|
+
if (parsed.effort !== undefined && !requestedEffort) {
|
|
615
|
+
writeJson(res, 400, { error: "Invalid reasoning effort" }, headers);
|
|
616
|
+
return;
|
|
617
|
+
}
|
|
618
|
+
if (requestedEffort &&
|
|
619
|
+
!modelInfo?.supportedReasoningEfforts.some((candidate) => candidate.reasoningEffort === requestedEffort)) {
|
|
620
|
+
writeJson(res, 400, { error: "That reasoning effort is unavailable" }, headers);
|
|
621
|
+
return;
|
|
622
|
+
}
|
|
623
|
+
selectedEffort = requestedEffort ?? modelInfo?.defaultReasoningEffort ?? null;
|
|
624
|
+
thread = codex.resumeThread(threadId, companionThreadOptions(options.cwd, selectedModel, selectedEffort));
|
|
625
|
+
writeJson(res, 200, { ok: true, threadId, model: selectedModel, effort: selectedEffort }, headers);
|
|
626
|
+
return;
|
|
627
|
+
}
|
|
244
628
|
if (req.method === "POST" && req.url === "/v1/cancel") {
|
|
245
629
|
activeAbort?.abort();
|
|
246
630
|
writeJson(res, 200, { ok: true }, headers);
|
|
@@ -267,15 +651,7 @@ export async function runCodexCompanion(argv) {
|
|
|
267
651
|
writeJson(res, 400, { error: "prompt is required" }, headers);
|
|
268
652
|
return;
|
|
269
653
|
}
|
|
270
|
-
|
|
271
|
-
? parsed.context.pathname.slice(0, 500)
|
|
272
|
-
: undefined;
|
|
273
|
-
thread ??= codex.startThread({
|
|
274
|
-
approvalPolicy: "never",
|
|
275
|
-
sandboxMode: "read-only",
|
|
276
|
-
skipGitRepoCheck: true,
|
|
277
|
-
workingDirectory: options.cwd,
|
|
278
|
-
});
|
|
654
|
+
thread ??= codex.startThread(companionThreadOptions(options.cwd, selectedModel, selectedEffort));
|
|
279
655
|
const abort = new AbortController();
|
|
280
656
|
activeAbort = abort;
|
|
281
657
|
let responseFinished = false;
|
|
@@ -294,7 +670,7 @@ export async function runCodexCompanion(argv) {
|
|
|
294
670
|
};
|
|
295
671
|
try {
|
|
296
672
|
send({ type: "connected", cwd: options.cwd, threadId: thread.id });
|
|
297
|
-
const streamed = await thread.runStreamed(buildPrompt(prompt,
|
|
673
|
+
const streamed = await thread.runStreamed(buildPrompt(prompt, parsed.context), {
|
|
298
674
|
signal: abort.signal,
|
|
299
675
|
});
|
|
300
676
|
for await (const event of streamed.events) {
|
|
@@ -345,6 +721,7 @@ export async function runCodexCompanion(argv) {
|
|
|
345
721
|
await new Promise((resolve) => {
|
|
346
722
|
const shutdown = () => {
|
|
347
723
|
activeAbort?.abort();
|
|
724
|
+
metadataClient.stop();
|
|
348
725
|
server.close(() => resolve());
|
|
349
726
|
};
|
|
350
727
|
process.once("SIGINT", shutdown);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-companion.js","sourceRoot":"","sources":["../src/codex-companion.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex-companion.js","sourceRoot":"","sources":["../src/codex-companion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
import { companionCodexConfig } from "./codex-companion.js";
|
|
4
|
+
test("the companion supplies a complete stdio transport for Nudge MCP", () => {
|
|
5
|
+
const config = companionCodexConfig();
|
|
6
|
+
const nudge = config.mcp_servers.nudge;
|
|
7
|
+
assert.equal(typeof nudge.command, "string");
|
|
8
|
+
assert.equal(nudge.command, process.execPath);
|
|
9
|
+
assert.ok(Array.isArray(nudge.args));
|
|
10
|
+
assert.ok(nudge.args.length > 0);
|
|
11
|
+
assert.match(String(nudge.args.at(-1)), /index\.(?:ts|js)$/);
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=codex-companion.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-companion.test.js","sourceRoot":"","sources":["../src/codex-companion.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,IAAI,CAAC,iEAAiE,EAAE,GAAG,EAAE;IAC3E,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,KAGhC,CAAC;IAEF,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -757,7 +757,7 @@ function withDescription(obj, description) {
|
|
|
757
757
|
// ---- server wiring --------------------------------------------------------
|
|
758
758
|
const server = new Server({
|
|
759
759
|
name: "nudge-mcp",
|
|
760
|
-
version: "0.6.
|
|
760
|
+
version: "0.6.8",
|
|
761
761
|
}, {
|
|
762
762
|
capabilities: {
|
|
763
763
|
tools: {},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@euqns/nudge-mcp",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Model Context Protocol server for the Nudge board (the in-house Trello).",
|
|
6
6
|
"bin": {
|
|
@@ -20,10 +20,12 @@
|
|
|
20
20
|
"build": "tsc -p .",
|
|
21
21
|
"start": "node dist/index.js",
|
|
22
22
|
"dev": "tsx src/index.ts",
|
|
23
|
+
"test": "tsx --test src/codex-companion.test.ts",
|
|
23
24
|
"prepublishOnly": "npm run build"
|
|
24
25
|
},
|
|
25
26
|
"dependencies": {
|
|
26
27
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
28
|
+
"@openai/codex": "0.145.0",
|
|
27
29
|
"@openai/codex-sdk": "^0.145.0",
|
|
28
30
|
"convex": "^1.39.1",
|
|
29
31
|
"zod": "^3.23.8"
|