@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.
Files changed (36) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +7 -0
  3. package/dist/bin/cogent-codex.d.ts +3 -0
  4. package/dist/bin/cogent-codex.d.ts.map +1 -0
  5. package/dist/bin/cogent-codex.js +94 -0
  6. package/dist/bin/cogent-codex.js.map +1 -0
  7. package/dist/config.d.ts +3 -0
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +14 -0
  10. package/dist/config.js.map +1 -1
  11. package/dist/services/auto-relay.d.ts.map +1 -1
  12. package/dist/services/auto-relay.js +23 -8
  13. package/dist/services/auto-relay.js.map +1 -1
  14. package/dist/services/codex-app-server.d.ts +144 -0
  15. package/dist/services/codex-app-server.d.ts.map +1 -0
  16. package/dist/services/codex-app-server.js +398 -0
  17. package/dist/services/codex-app-server.js.map +1 -0
  18. package/dist/services/codex-cli.d.ts +8 -0
  19. package/dist/services/codex-cli.d.ts.map +1 -1
  20. package/dist/services/codex-cli.js +12 -0
  21. package/dist/services/codex-cli.js.map +1 -1
  22. package/dist/services/codex-preflight.d.ts +27 -0
  23. package/dist/services/codex-preflight.d.ts.map +1 -1
  24. package/dist/services/codex-preflight.js +55 -0
  25. package/dist/services/codex-preflight.js.map +1 -1
  26. package/dist/services/exec-remote.d.ts +3 -1
  27. package/dist/services/exec-remote.d.ts.map +1 -1
  28. package/dist/services/exec-remote.js +28 -2
  29. package/dist/services/exec-remote.js.map +1 -1
  30. package/dist/startup.d.ts.map +1 -1
  31. package/dist/startup.js +5 -1
  32. package/dist/startup.js.map +1 -1
  33. package/dist/types.d.ts +17 -0
  34. package/dist/types.d.ts.map +1 -1
  35. package/package.json +3 -2
  36. 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,CA8HxB;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"}
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":"AAIA,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"}
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