@essentialai/cogent-bridge 3.19.2 → 3.20.1
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/CHANGELOG.md +46 -0
- package/README.md +7 -0
- package/dist/bin/cogent-codex.d.ts +3 -0
- package/dist/bin/cogent-codex.d.ts.map +1 -0
- package/dist/bin/cogent-codex.js +94 -0
- package/dist/bin/cogent-codex.js.map +1 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -0
- package/dist/config.js.map +1 -1
- package/dist/services/auto-relay.d.ts.map +1 -1
- package/dist/services/auto-relay.js +23 -8
- package/dist/services/auto-relay.js.map +1 -1
- package/dist/services/codex-app-server.d.ts +144 -0
- package/dist/services/codex-app-server.d.ts.map +1 -0
- package/dist/services/codex-app-server.js +398 -0
- package/dist/services/codex-app-server.js.map +1 -0
- package/dist/services/codex-cli.d.ts +8 -0
- package/dist/services/codex-cli.d.ts.map +1 -1
- package/dist/services/codex-cli.js +12 -0
- package/dist/services/codex-cli.js.map +1 -1
- package/dist/services/codex-preflight.d.ts +27 -0
- package/dist/services/codex-preflight.d.ts.map +1 -1
- package/dist/services/codex-preflight.js +55 -0
- package/dist/services/codex-preflight.js.map +1 -1
- package/dist/services/exec-remote.d.ts +3 -1
- package/dist/services/exec-remote.d.ts.map +1 -1
- package/dist/services/exec-remote.js +28 -2
- package/dist/services/exec-remote.js.map +1 -1
- package/dist/startup.d.ts.map +1 -1
- package/dist/startup.js +5 -1
- package/dist/startup.js.map +1 -1
- package/dist/types.d.ts +17 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
- package/server.json +2 -2
|
@@ -0,0 +1,398 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import { spawn } from "node:child_process";
|
|
4
|
+
import WebSocket from "ws";
|
|
5
|
+
import { getConfig } from "../config.js";
|
|
6
|
+
import { codexHomeDir } from "./agent-config.js";
|
|
7
|
+
const defaultWsFactory = (url, opts) => new WebSocket(url, opts);
|
|
8
|
+
/** Control socket for the codex app-server daemon under a given codex home. */
|
|
9
|
+
export function appServerSocketPath(codexHome = codexHomeDir()) {
|
|
10
|
+
return path.join(codexHome, "app-server-control", "app-server-control.sock");
|
|
11
|
+
}
|
|
12
|
+
/** The `ws+unix://<sock>:/rpc` URL the daemon speaks JSON-RPC over. */
|
|
13
|
+
export function rpcUrl(sock) {
|
|
14
|
+
return `ws+unix://${sock}:/rpc`;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Whether the app-server daemon has been ensured in THIS bridge process. The
|
|
18
|
+
* daemon is a long-lived background process, so we start/confirm it once and
|
|
19
|
+
* cache the socket; if it later dies, the ws connect fails → appServerUnavailable
|
|
20
|
+
* → graceful fallback (and the cache is left for the next process). Reset for
|
|
21
|
+
* test isolation. Mirrors the `sandboxOverride` module-cache pattern.
|
|
22
|
+
*/
|
|
23
|
+
let ensuredSock = null;
|
|
24
|
+
export function resetDaemonCache() {
|
|
25
|
+
ensuredSock = null;
|
|
26
|
+
}
|
|
27
|
+
const defaultRun = (cmd, args, env) => new Promise((resolve) => {
|
|
28
|
+
const child = spawn(cmd, args, { env, stdio: ["ignore", "pipe", "pipe"] });
|
|
29
|
+
let stdout = "";
|
|
30
|
+
let stderr = "";
|
|
31
|
+
child.stdout.on("data", (c) => (stdout += c.toString()));
|
|
32
|
+
child.stderr.on("data", (c) => (stderr += c.toString()));
|
|
33
|
+
child.on("error", (err) => resolve({ stdout, stderr: stderr + String(err), code: 127 }));
|
|
34
|
+
child.on("close", (code) => resolve({ stdout, stderr, code }));
|
|
35
|
+
});
|
|
36
|
+
const defaultSocketExists = async (p) => {
|
|
37
|
+
try {
|
|
38
|
+
await fs.stat(p);
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
|
|
46
|
+
/**
|
|
47
|
+
* Ensure the codex app-server daemon is running for `codexHome` and return its
|
|
48
|
+
* control socket. Idempotent (`codex app-server daemon start` is a no-op when the
|
|
49
|
+
* daemon is already up). Throws if the socket never appears — the caller
|
|
50
|
+
* (`execRemote`) catches this and falls back to the `exec-resume` rail.
|
|
51
|
+
*/
|
|
52
|
+
export async function ensureDaemon(codexHome = codexHomeDir(), deps = {}) {
|
|
53
|
+
if (ensuredSock)
|
|
54
|
+
return ensuredSock;
|
|
55
|
+
const run = deps.run ?? defaultRun;
|
|
56
|
+
const socketExists = deps.socketExists ?? defaultSocketExists;
|
|
57
|
+
const waitMs = deps.waitMs ?? 8000;
|
|
58
|
+
const pollMs = deps.pollMs ?? 150;
|
|
59
|
+
const codexPath = getConfig().COGENT_CODEX_PATH;
|
|
60
|
+
const env = { ...process.env, CODEX_HOME: codexHome };
|
|
61
|
+
const res = await run(codexPath, ["app-server", "daemon", "start"], env);
|
|
62
|
+
// The app-server daemon spawns/updates from a MANAGED-STANDALONE codex install
|
|
63
|
+
// at a fixed path; the npm/Homebrew `@openai/codex` package does NOT create it,
|
|
64
|
+
// so the daemon refuses to start. Surface codex's official remediation clearly
|
|
65
|
+
// (the caller falls back to exec-resume → the honest "queued" message).
|
|
66
|
+
if (/managed standalone Codex install not found/i.test(`${res.stdout}\n${res.stderr}`)) {
|
|
67
|
+
throw new Error("MANAGED_CODEX_REQUIRED: the codex app-server daemon needs the managed-standalone " +
|
|
68
|
+
"codex install, which the npm/Homebrew @openai/codex package does not provide. " +
|
|
69
|
+
"Install it with: curl -fsSL https://chatgpt.com/codex/install.sh | sh " +
|
|
70
|
+
"then relaunch via cogent-codex. (Until then, codex answers at its next turn, not in real time.)");
|
|
71
|
+
}
|
|
72
|
+
// `daemon start` prints JSON with the socketPath; fall back to the derived path.
|
|
73
|
+
let sock = appServerSocketPath(codexHome);
|
|
74
|
+
try {
|
|
75
|
+
const parsed = JSON.parse(res.stdout.trim());
|
|
76
|
+
if (parsed && typeof parsed.socketPath === "string")
|
|
77
|
+
sock = parsed.socketPath;
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
/* non-JSON stdout (e.g. "already running") → derived path */
|
|
81
|
+
}
|
|
82
|
+
const deadline = Date.now() + waitMs;
|
|
83
|
+
while (!(await socketExists(sock))) {
|
|
84
|
+
if (Date.now() >= deadline) {
|
|
85
|
+
throw new Error(`app-server daemon socket did not appear at ${sock} within ${waitMs}ms (stderr: ${res.stderr.trim() || "none"})`);
|
|
86
|
+
}
|
|
87
|
+
await sleep(pollMs);
|
|
88
|
+
}
|
|
89
|
+
ensuredSock = sock;
|
|
90
|
+
return sock;
|
|
91
|
+
}
|
|
92
|
+
/** True if an item looks like the agent's final message ("agentMessage"/"agent_message"). */
|
|
93
|
+
function isAgentMessage(item) {
|
|
94
|
+
return typeof item?.type === "string" && /^agent[_-]?message$/i.test(item.type);
|
|
95
|
+
}
|
|
96
|
+
/** Pull the text out of an agent-message item (plain `.text` or a content[] of text parts). */
|
|
97
|
+
function itemText(item) {
|
|
98
|
+
if (typeof item?.text === "string")
|
|
99
|
+
return item.text;
|
|
100
|
+
if (Array.isArray(item?.content)) {
|
|
101
|
+
return item.content
|
|
102
|
+
.filter((c) => typeof c?.text === "string")
|
|
103
|
+
.map((c) => c.text)
|
|
104
|
+
.join("");
|
|
105
|
+
}
|
|
106
|
+
return "";
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Extract the agent's reply text from the collected turn notifications. Prefers
|
|
110
|
+
* the final `turn/completed` items; falls back to streamed `item/completed`
|
|
111
|
+
* agent messages when the completed turn carries none. Tolerant of the exact
|
|
112
|
+
* shape (experimental API) — the live test pins the real wire format.
|
|
113
|
+
*/
|
|
114
|
+
export function extractAgentMessageText(notes) {
|
|
115
|
+
const fromCompleted = [];
|
|
116
|
+
const fromStream = [];
|
|
117
|
+
for (const n of notes) {
|
|
118
|
+
if (n.method === "turn/completed") {
|
|
119
|
+
const items = n.params?.items ?? n.params?.turn?.items ?? [];
|
|
120
|
+
for (const it of items)
|
|
121
|
+
if (isAgentMessage(it))
|
|
122
|
+
fromCompleted.push(itemText(it));
|
|
123
|
+
}
|
|
124
|
+
else if (n.method === "item/completed") {
|
|
125
|
+
const it = n.params?.item;
|
|
126
|
+
if (isAgentMessage(it))
|
|
127
|
+
fromStream.push(itemText(it));
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
const chosen = fromCompleted.length > 0 ? fromCompleted : fromStream;
|
|
131
|
+
return chosen.join("").trim();
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* A thin JSON-RPC-over-WebSocket client for the codex app-server daemon.
|
|
135
|
+
* `connect()` resolves once the socket is open + `initialize` succeeds.
|
|
136
|
+
*/
|
|
137
|
+
export class AppServerClient {
|
|
138
|
+
ws;
|
|
139
|
+
nextId = 1;
|
|
140
|
+
pending = new Map();
|
|
141
|
+
notifyListeners = new Set();
|
|
142
|
+
opened;
|
|
143
|
+
openResolved = false;
|
|
144
|
+
constructor(ws) {
|
|
145
|
+
this.ws = ws;
|
|
146
|
+
this.opened = new Promise((resolve, reject) => {
|
|
147
|
+
ws.on("open", () => {
|
|
148
|
+
this.openResolved = true;
|
|
149
|
+
resolve();
|
|
150
|
+
});
|
|
151
|
+
ws.on("unexpected-response", (_req, res) => {
|
|
152
|
+
if (!this.openResolved)
|
|
153
|
+
reject(new Error(`app-server ws upgrade rejected: HTTP ${res?.statusCode}`));
|
|
154
|
+
});
|
|
155
|
+
ws.on("error", (err) => {
|
|
156
|
+
if (!this.openResolved)
|
|
157
|
+
reject(err);
|
|
158
|
+
else
|
|
159
|
+
this._failAll(err);
|
|
160
|
+
});
|
|
161
|
+
ws.on("close", () => {
|
|
162
|
+
if (this.openResolved)
|
|
163
|
+
this._failAll(new Error("app-server ws closed"));
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
ws.on("message", (data) => this._onMessage(data));
|
|
167
|
+
}
|
|
168
|
+
/** Await the open handshake. Rejects (before open) on connect/upgrade errors. */
|
|
169
|
+
waitOpen() {
|
|
170
|
+
return this.opened;
|
|
171
|
+
}
|
|
172
|
+
_failAll(err) {
|
|
173
|
+
for (const [, p] of this.pending)
|
|
174
|
+
p.reject(err);
|
|
175
|
+
this.pending.clear();
|
|
176
|
+
}
|
|
177
|
+
_onMessage(data) {
|
|
178
|
+
let msg;
|
|
179
|
+
try {
|
|
180
|
+
msg = JSON.parse(data.toString());
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return; // ignore non-JSON frames
|
|
184
|
+
}
|
|
185
|
+
if (typeof msg.id === "number" && this.pending.has(msg.id)) {
|
|
186
|
+
const p = this.pending.get(msg.id);
|
|
187
|
+
this.pending.delete(msg.id);
|
|
188
|
+
if (msg.error)
|
|
189
|
+
p.reject(Object.assign(new Error(msg.error.message ?? "rpc error"), { rpcError: msg.error }));
|
|
190
|
+
else
|
|
191
|
+
p.resolve(msg.result);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
if (typeof msg.method === "string") {
|
|
195
|
+
for (const cb of this.notifyListeners)
|
|
196
|
+
cb(msg);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
/** Issue a JSON-RPC request and resolve with its result (rejects on rpc error). */
|
|
200
|
+
request(method, params) {
|
|
201
|
+
const id = this.nextId++;
|
|
202
|
+
const p = new Promise((resolve, reject) => {
|
|
203
|
+
this.pending.set(id, { resolve, reject });
|
|
204
|
+
});
|
|
205
|
+
this.ws.send(JSON.stringify({ jsonrpc: "2.0", id, method, params }));
|
|
206
|
+
return p;
|
|
207
|
+
}
|
|
208
|
+
/** Subscribe to server notifications; returns an unsubscribe fn. */
|
|
209
|
+
onNotification(cb) {
|
|
210
|
+
this.notifyListeners.add(cb);
|
|
211
|
+
return () => this.notifyListeners.delete(cb);
|
|
212
|
+
}
|
|
213
|
+
close() {
|
|
214
|
+
try {
|
|
215
|
+
this.ws.close();
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
/* ignore */
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Map COGENT_CODEX_SANDBOX to an explicit turn/start `sandboxPolicy`, so a PEER's
|
|
224
|
+
* injected turn is bounded by the CONFIGURED sandbox — not by whatever privilege
|
|
225
|
+
* the human happened to launch codex with (a live thread may be
|
|
226
|
+
* danger-full-access). Keeps the app-server rail's sandbox consistent with the
|
|
227
|
+
* exec-resume rail. Default (workspace-write) allows edits under the cwd, no net.
|
|
228
|
+
*/
|
|
229
|
+
export function sandboxPolicyFor(mode, cwd) {
|
|
230
|
+
switch (mode) {
|
|
231
|
+
case "read-only":
|
|
232
|
+
return { type: "readOnly", networkAccess: false };
|
|
233
|
+
case "danger-full-access":
|
|
234
|
+
case "bypass":
|
|
235
|
+
return { type: "dangerFullAccess" };
|
|
236
|
+
case "workspace-write":
|
|
237
|
+
case "full-auto":
|
|
238
|
+
default:
|
|
239
|
+
return {
|
|
240
|
+
type: "workspaceWrite",
|
|
241
|
+
writableRoots: [cwd],
|
|
242
|
+
networkAccess: false,
|
|
243
|
+
excludeTmpdirEnvVar: false,
|
|
244
|
+
excludeSlashTmp: false,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
const idempotencyCache = new Map();
|
|
249
|
+
/** How long a completed injection is remembered to suppress a duplicate delivery. */
|
|
250
|
+
const IDEMPOTENCY_TTL_MS = 300_000;
|
|
251
|
+
/** Clear the injection idempotency cache (test isolation). */
|
|
252
|
+
export function resetAppServerIdempotency() {
|
|
253
|
+
idempotencyCache.clear();
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Inject `message` as a turn into the codex thread `threadId` via the app-server
|
|
257
|
+
* daemon, and return the agent's reply as a {@link CliExecResult} (parallel to
|
|
258
|
+
* `execCodex`). When `deps.idempotencyKey` is set, a duplicate injection of the
|
|
259
|
+
* same message into the same thread is coalesced/short-circuited (never a second
|
|
260
|
+
* daemon turn). Closing our client afterward only detaches THIS client — the
|
|
261
|
+
* daemon + thread (and the human's TUI) persist.
|
|
262
|
+
*/
|
|
263
|
+
export function execCodexViaAppServer(threadId, message, cwd, timeoutMs, deps = {}) {
|
|
264
|
+
const key = deps.idempotencyKey ? `${threadId}::${deps.idempotencyKey}` : null;
|
|
265
|
+
if (!key)
|
|
266
|
+
return _injectTurn(threadId, message, cwd, timeoutMs, deps);
|
|
267
|
+
const existing = idempotencyCache.get(key);
|
|
268
|
+
if (existing) {
|
|
269
|
+
// Completed within TTL → same result (no second turn). Still in-flight →
|
|
270
|
+
// coalesce onto the same promise (e.g. a redelivery while the daemon runs).
|
|
271
|
+
return existing.done ? Promise.resolve(existing.done.result) : existing.promise;
|
|
272
|
+
}
|
|
273
|
+
const promise = _injectTurn(threadId, message, cwd, timeoutMs, deps);
|
|
274
|
+
const entry = { promise };
|
|
275
|
+
idempotencyCache.set(key, entry);
|
|
276
|
+
// `_injectTurn` always RESOLVES a CliExecResult (never throws); cache success
|
|
277
|
+
// AND failure for the TTL so a redelivery is suppressed either way, then evict.
|
|
278
|
+
void promise.then((result) => {
|
|
279
|
+
entry.done = { result, at: Date.now() };
|
|
280
|
+
const t = setTimeout(() => idempotencyCache.delete(key), IDEMPOTENCY_TTL_MS);
|
|
281
|
+
if (typeof t.unref === "function")
|
|
282
|
+
t.unref();
|
|
283
|
+
});
|
|
284
|
+
return promise;
|
|
285
|
+
}
|
|
286
|
+
async function _injectTurn(threadId, message, cwd, timeoutMs, deps = {}) {
|
|
287
|
+
const config = getConfig();
|
|
288
|
+
const effectiveTimeout = timeoutMs ?? config.COGENT_TIMEOUT_MS;
|
|
289
|
+
const truncated = config.COGENT_CHAR_LIMIT > 0 && message.length > config.COGENT_CHAR_LIMIT
|
|
290
|
+
? message.slice(0, config.COGENT_CHAR_LIMIT) + "\n...[truncated]"
|
|
291
|
+
: message;
|
|
292
|
+
const sock = deps.socketPath ?? appServerSocketPath();
|
|
293
|
+
const wsFactory = deps.wsFactory ?? defaultWsFactory;
|
|
294
|
+
let client;
|
|
295
|
+
try {
|
|
296
|
+
const ws = wsFactory(rpcUrl(sock), { perMessageDeflate: false, headers: { Host: "localhost" } });
|
|
297
|
+
client = new AppServerClient(ws);
|
|
298
|
+
await client.waitOpen();
|
|
299
|
+
await client.request("initialize", {
|
|
300
|
+
clientInfo: { name: "cogent-bridge", version: "1" },
|
|
301
|
+
capabilities: { experimentalApi: true },
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
catch (err) {
|
|
305
|
+
// Could not reach/handshake the daemon → let the caller fall back to exec-resume.
|
|
306
|
+
return {
|
|
307
|
+
stdout: "",
|
|
308
|
+
stderr: `APP_SERVER_UNAVAILABLE: ${err.message}`,
|
|
309
|
+
exitCode: 1,
|
|
310
|
+
appServerUnavailable: true,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
try {
|
|
314
|
+
// Attach to the human's existing live thread (does NOT create a new one),
|
|
315
|
+
// then inject the peer message as a turn on THAT thread.
|
|
316
|
+
await client.request("thread/resume", { threadId, cwd });
|
|
317
|
+
// Subscribe BEFORE turn/start so no completion is missed; buffer until we know
|
|
318
|
+
// OUR turn id. Verified against codex 0.147: turn/completed carries
|
|
319
|
+
// `params.turn.id` (the same id turn/start returns). We match on it so a
|
|
320
|
+
// CONCURRENT turn on the same thread — e.g. the human's own turn — can never be
|
|
321
|
+
// captured as this peer's reply. If the daemon omits the id (older codex),
|
|
322
|
+
// fall back to a threadId match.
|
|
323
|
+
const buffered = [];
|
|
324
|
+
let myTurnId;
|
|
325
|
+
const isMine = (msg) => msg.method === "turn/completed" &&
|
|
326
|
+
(myTurnId !== undefined ? msg.params?.turn?.id === myTurnId : msg.params?.threadId === threadId);
|
|
327
|
+
let deliver = null;
|
|
328
|
+
const off = client.onNotification((msg) => {
|
|
329
|
+
if (msg.method !== "turn/completed")
|
|
330
|
+
return;
|
|
331
|
+
if (myTurnId === undefined) {
|
|
332
|
+
buffered.push(msg); // hold until we learn our turn id
|
|
333
|
+
return;
|
|
334
|
+
}
|
|
335
|
+
if (isMine(msg) && deliver) {
|
|
336
|
+
const d = deliver;
|
|
337
|
+
deliver = null;
|
|
338
|
+
d(msg);
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
const startResult = await client.request("turn/start", {
|
|
342
|
+
threadId,
|
|
343
|
+
input: [{ type: "text", text: truncated }],
|
|
344
|
+
// Bound the injected peer turn by the CONFIGURED sandbox (not the human
|
|
345
|
+
// session's privilege). See sandboxPolicyFor.
|
|
346
|
+
sandboxPolicy: sandboxPolicyFor(config.COGENT_CODEX_SANDBOX, cwd),
|
|
347
|
+
// Native correlation id (daemon does NOT auto-dedupe on it — our own
|
|
348
|
+
// idempotency guard does; this is for daemon-side correlation/telemetry).
|
|
349
|
+
...(deps.idempotencyKey ? { clientUserMessageId: deps.idempotencyKey } : {}),
|
|
350
|
+
});
|
|
351
|
+
myTurnId = startResult?.turn?.id;
|
|
352
|
+
const turnCompleted = await new Promise((resolve) => {
|
|
353
|
+
deliver = resolve;
|
|
354
|
+
const early = buffered.find(isMine); // did our completion arrive before we knew the id?
|
|
355
|
+
if (early) {
|
|
356
|
+
deliver = null;
|
|
357
|
+
resolve(early);
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
setTimeout(() => {
|
|
361
|
+
if (deliver) {
|
|
362
|
+
deliver = null;
|
|
363
|
+
resolve(null);
|
|
364
|
+
}
|
|
365
|
+
}, effectiveTimeout);
|
|
366
|
+
});
|
|
367
|
+
off();
|
|
368
|
+
if (!turnCompleted) {
|
|
369
|
+
return {
|
|
370
|
+
stdout: "",
|
|
371
|
+
stderr: `CLI_TIMEOUT: app-server turn did not complete within ${effectiveTimeout}ms`,
|
|
372
|
+
exitCode: null,
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
const text = extractAgentMessageText([turnCompleted]);
|
|
376
|
+
return {
|
|
377
|
+
stdout: text,
|
|
378
|
+
stderr: "",
|
|
379
|
+
exitCode: 0,
|
|
380
|
+
captureContract: "event_stream",
|
|
381
|
+
stable: true,
|
|
382
|
+
};
|
|
383
|
+
}
|
|
384
|
+
catch (err) {
|
|
385
|
+
// A turn/thread RPC errored on the daemon. This is NOT a reachability
|
|
386
|
+
// problem, so do not flag appServerUnavailable (falling back to exec-resume
|
|
387
|
+
// would hit the same live thread and also fail).
|
|
388
|
+
return {
|
|
389
|
+
stdout: "",
|
|
390
|
+
stderr: `CLI_EXEC_FAILED: app-server turn failed: ${err.message}`,
|
|
391
|
+
exitCode: 1,
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
finally {
|
|
395
|
+
client.close();
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
//# sourceMappingURL=codex-app-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-app-server.js","sourceRoot":"","sources":["../../src/services/codex-app-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,14 @@ export declare function effectiveSandbox(config: Config): Config["COGENT_CODEX_S
|
|
|
15
15
|
* remedy instead of a generic exec failure.
|
|
16
16
|
*/
|
|
17
17
|
export declare const SANDBOX_FAILURE_RE: RegExp;
|
|
18
|
+
/**
|
|
19
|
+
* Signature of the codex >=0.145 SINGLE-WRITER thread-store conflict: the target
|
|
20
|
+
* thread is held by a live interactive TUI, so `codex exec resume` cannot open
|
|
21
|
+
* its writer and fast-fails. Used to tag `CliExecResult.codexLiveSession` so the
|
|
22
|
+
* caller surfaces an honest "queued — will answer next turn" message (and points
|
|
23
|
+
* at the app-server rail) instead of a generic capture failure.
|
|
24
|
+
*/
|
|
25
|
+
export declare const ACTIVE_WRITER_RE: RegExp;
|
|
18
26
|
/**
|
|
19
27
|
* Resume a Codex session non-interactively and return its final agent message.
|
|
20
28
|
* Parallel to execClaude() in cc-cli.ts. Uses `-o <file>` to capture the last
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-cli.d.ts","sourceRoot":"","sources":["../../src/services/codex-cli.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAqCtD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,IAAI,GAAG,IAAI,CAEpF;AACD,2CAA2C;AAC3C,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AACD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAE/E;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,QAC+J,CAAC;AAE/L;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"codex-cli.d.ts","sourceRoot":"","sources":["../../src/services/codex-cli.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAqCtD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,sBAAsB,CAAC,GAAG,IAAI,GAAG,IAAI,CAEpF;AACD,2CAA2C;AAC3C,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AACD,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC,CAE/E;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,QAC+J,CAAC;AAE/L;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,QAA+D,CAAC;AAE7F;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAkIxB;AA2FD;;;;GAIG;AACH,wBAAsB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAmBnF;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAuBnD;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAW9E"}
|
|
@@ -58,6 +58,14 @@ export function effectiveSandbox(config) {
|
|
|
58
58
|
* remedy instead of a generic exec failure.
|
|
59
59
|
*/
|
|
60
60
|
export const SANDBOX_FAILURE_RE = /bwrap:|setting up uid ?map|\/proc\/self\/(uid|gid)_map|newuidmap|user namespaces?|RTM_NEWADDR|unshare[^\n]*(Operation not permitted|Permission denied)|clone3?[^\n]*(EPERM|not permitted)/i;
|
|
61
|
+
/**
|
|
62
|
+
* Signature of the codex >=0.145 SINGLE-WRITER thread-store conflict: the target
|
|
63
|
+
* thread is held by a live interactive TUI, so `codex exec resume` cannot open
|
|
64
|
+
* its writer and fast-fails. Used to tag `CliExecResult.codexLiveSession` so the
|
|
65
|
+
* caller surfaces an honest "queued — will answer next turn" message (and points
|
|
66
|
+
* at the app-server rail) instead of a generic capture failure.
|
|
67
|
+
*/
|
|
68
|
+
export const ACTIVE_WRITER_RE = /already has an active writer|thread-store conflict|-32600/i;
|
|
61
69
|
/**
|
|
62
70
|
* Resume a Codex session non-interactively and return its final agent message.
|
|
63
71
|
* Parallel to execClaude() in cc-cli.ts. Uses `-o <file>` to capture the last
|
|
@@ -143,11 +151,15 @@ export function execCodex(sessionId, message, cwd, timeoutMs) {
|
|
|
143
151
|
// Detect an OS-sandbox init failure (unprivileged userns blocked) so the
|
|
144
152
|
// caller can surface an actionable remedy instead of a generic failure.
|
|
145
153
|
const sandboxBlocked = SANDBOX_FAILURE_RE.test(stderr);
|
|
154
|
+
// codex >=0.145 single-writer conflict: the agent is live in a TUI, so
|
|
155
|
+
// this isn't a real failure — the message is effectively queued.
|
|
156
|
+
const codexLiveSession = ACTIVE_WRITER_RE.test(stderr);
|
|
146
157
|
safeResolve({
|
|
147
158
|
stdout: "",
|
|
148
159
|
stderr: `CLI_EXEC_FAILED: codex exited with code ${code}. stderr: ${stderr}`,
|
|
149
160
|
exitCode: code,
|
|
150
161
|
...(sandboxBlocked ? { sandboxBlocked: true } : {}),
|
|
162
|
+
...(codexLiveSession ? { codexLiveSession: true } : {}),
|
|
151
163
|
});
|
|
152
164
|
return;
|
|
153
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-cli.js","sourceRoot":"","sources":["../../src/services/codex-cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"codex-cli.js","sourceRoot":"","sources":["../../src/services/codex-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -99,4 +99,31 @@ export declare function probeSandboxStatus(config: Config): Promise<SandboxProbe
|
|
|
99
99
|
* has opted out it is an ERROR (tasks will fail until they fix the host).
|
|
100
100
|
*/
|
|
101
101
|
export declare function preflightCodexSandbox(config: Config): Promise<SandboxProbeResult>;
|
|
102
|
+
/**
|
|
103
|
+
* Pure: does this `~/.codex/config.toml` text declare a STANDALONE
|
|
104
|
+
* `[mcp_servers.cogent]` server? That name collides with the `cogent@cogent`
|
|
105
|
+
* plugin's OWN MCP server (both named `cogent`) — Codex collapses the two by name
|
|
106
|
+
* and MCP startup fails ("MCP client for cogent failed to start … connection
|
|
107
|
+
* closed: initialize response"). Latent until 3.19.2 made the plugin actually
|
|
108
|
+
* start. See docs/update-and-troubleshooting.md + memory
|
|
109
|
+
* `codex-app-server-wake-shipped-3.20.0`.
|
|
110
|
+
*
|
|
111
|
+
* Matches only the TOML TABLE HEADER (anchored to line start, optional leading
|
|
112
|
+
* whitespace) so a `#`-comment or prose mention never trips it, and requires the
|
|
113
|
+
* server name to be exactly `cogent` (so `[mcp_servers.cogent-cli]` and other
|
|
114
|
+
* names are ignored). A bare `[mcp_servers.cogent]` OR any subtable
|
|
115
|
+
* (`[mcp_servers.cogent.env]`, `[mcp_servers.cogent.tools.x]`) counts.
|
|
116
|
+
*/
|
|
117
|
+
export declare function detectCodexCogentServerCollision(configTomlText: string): boolean;
|
|
118
|
+
/** Absolute path to the codex config, honouring CODEX_HOME (falls back to ~/.codex). */
|
|
119
|
+
export declare function codexConfigPath(codexHomeDir?: string): string;
|
|
120
|
+
/**
|
|
121
|
+
* Startup preflight: warn LOUDLY if the codex config defines a standalone
|
|
122
|
+
* `[mcp_servers.cogent]` that collides with the plugin's own `cogent` server.
|
|
123
|
+
* Never throws (a missing/unreadable config is simply "no collision"). Runs for
|
|
124
|
+
* every codex bridge (plugin users included), so plugin-only users who never
|
|
125
|
+
* launch via `cogent-codex` still get flagged. Returns true iff a collision was
|
|
126
|
+
* found.
|
|
127
|
+
*/
|
|
128
|
+
export declare function preflightCodexServerCollision(codexHomeDir?: string): Promise<boolean>;
|
|
102
129
|
//# sourceMappingURL=codex-preflight.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-preflight.d.ts","sourceRoot":"","sources":["../../src/services/codex-preflight.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex-preflight.d.ts","sourceRoot":"","sources":["../../src/services/codex-preflight.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAQxF,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAMpE;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAyCnC;AAMD;;;;;GAKG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;AACrE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,GAAG,kBAAkB,CAmBrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,GAC3F,OAAO,GAAG,SAAS,CAQrB;AAUD;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0BpF;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkCvF;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gCAAgC,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAEhF;AAED,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED;;;;;;;GAOG;AACH,wBAAsB,6BAA6B,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkB3F"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { execFile } from "node:child_process";
|
|
2
2
|
import { promisify } from "node:util";
|
|
3
3
|
import fs from "node:fs/promises";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import os from "node:os";
|
|
4
6
|
import { logger } from "../logger.js";
|
|
5
7
|
const execFileAsync = promisify(execFile);
|
|
6
8
|
/**
|
|
@@ -215,4 +217,57 @@ export async function preflightCodexSandbox(config) {
|
|
|
215
217
|
}
|
|
216
218
|
return res;
|
|
217
219
|
}
|
|
220
|
+
/* ------------------------------------------------------------------------- */
|
|
221
|
+
/* `[mcp_servers.cogent]` name-collision preflight */
|
|
222
|
+
/* ------------------------------------------------------------------------- */
|
|
223
|
+
/**
|
|
224
|
+
* Pure: does this `~/.codex/config.toml` text declare a STANDALONE
|
|
225
|
+
* `[mcp_servers.cogent]` server? That name collides with the `cogent@cogent`
|
|
226
|
+
* plugin's OWN MCP server (both named `cogent`) — Codex collapses the two by name
|
|
227
|
+
* and MCP startup fails ("MCP client for cogent failed to start … connection
|
|
228
|
+
* closed: initialize response"). Latent until 3.19.2 made the plugin actually
|
|
229
|
+
* start. See docs/update-and-troubleshooting.md + memory
|
|
230
|
+
* `codex-app-server-wake-shipped-3.20.0`.
|
|
231
|
+
*
|
|
232
|
+
* Matches only the TOML TABLE HEADER (anchored to line start, optional leading
|
|
233
|
+
* whitespace) so a `#`-comment or prose mention never trips it, and requires the
|
|
234
|
+
* server name to be exactly `cogent` (so `[mcp_servers.cogent-cli]` and other
|
|
235
|
+
* names are ignored). A bare `[mcp_servers.cogent]` OR any subtable
|
|
236
|
+
* (`[mcp_servers.cogent.env]`, `[mcp_servers.cogent.tools.x]`) counts.
|
|
237
|
+
*/
|
|
238
|
+
export function detectCodexCogentServerCollision(configTomlText) {
|
|
239
|
+
return /^[ \t]*\[mcp_servers\.cogent(\.[^\]]+)?\]/m.test(configTomlText);
|
|
240
|
+
}
|
|
241
|
+
/** Absolute path to the codex config, honouring CODEX_HOME (falls back to ~/.codex). */
|
|
242
|
+
export function codexConfigPath(codexHomeDir) {
|
|
243
|
+
const home = codexHomeDir || process.env.CODEX_HOME || join(os.homedir(), ".codex");
|
|
244
|
+
return join(home, "config.toml");
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Startup preflight: warn LOUDLY if the codex config defines a standalone
|
|
248
|
+
* `[mcp_servers.cogent]` that collides with the plugin's own `cogent` server.
|
|
249
|
+
* Never throws (a missing/unreadable config is simply "no collision"). Runs for
|
|
250
|
+
* every codex bridge (plugin users included), so plugin-only users who never
|
|
251
|
+
* launch via `cogent-codex` still get flagged. Returns true iff a collision was
|
|
252
|
+
* found.
|
|
253
|
+
*/
|
|
254
|
+
export async function preflightCodexServerCollision(codexHomeDir) {
|
|
255
|
+
const cfgPath = codexConfigPath(codexHomeDir);
|
|
256
|
+
let text;
|
|
257
|
+
try {
|
|
258
|
+
text = await fs.readFile(cfgPath, "utf8");
|
|
259
|
+
}
|
|
260
|
+
catch {
|
|
261
|
+
return false; // no config file → nothing can collide
|
|
262
|
+
}
|
|
263
|
+
if (!detectCodexCogentServerCollision(text))
|
|
264
|
+
return false;
|
|
265
|
+
logger.error(`Codex config collision: ${cfgPath} defines a standalone [mcp_servers.cogent] server, which ` +
|
|
266
|
+
`has the SAME NAME as the cogent@cogent plugin's MCP server. Codex collapses the two by name ` +
|
|
267
|
+
`and MCP startup can fail ("MCP client for cogent failed to start … connection closed: ` +
|
|
268
|
+
`initialize response"). FIX: remove the [mcp_servers.cogent] block from ${cfgPath} — the ` +
|
|
269
|
+
`plugin already provides the cogent tools — then restart Codex (new thread). Use the plugin ` +
|
|
270
|
+
`OR a manual 'codex mcp add cogent', never both.`);
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
218
273
|
//# sourceMappingURL=codex-preflight.js.map
|