Skip to content

Commit 9fd8246

Browse files
fix: ensure codex app-server is started with node (#135)
1 parent 72d5b11 commit 9fd8246

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

src/CodexJsonRpcConnection.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import * as rpc from "vscode-jsonrpc/node";
22
import type {MessageConnection} from "vscode-jsonrpc/node";
33
import type {ChildProcessWithoutNullStreams} from "node:child_process";
44
import {spawn} from "node:child_process";
5+
import {createRequire} from "node:module";
56

67
import {createJSONRPCReader, createJSONRPCWriter} from "./StdUtils";
78
import {logger} from "./Logger";
@@ -11,11 +12,18 @@ export interface CodexConnection {
1112
readonly process: ChildProcessWithoutNullStreams;
1213
}
1314

14-
export function startCodexConnection(codexPath: string, env?: NodeJS.ProcessEnv): CodexConnection {
15+
export function startCodexConnection(codexPath?: string, env?: NodeJS.ProcessEnv): CodexConnection {
1516
const spawnEnv = env ?? process.env;
16-
const codex: ChildProcessWithoutNullStreams = process.platform === 'win32'
17-
? spawn(`"${codexPath}" app-server`, { shell: true, env: spawnEnv })
18-
: spawn(codexPath, ['app-server'], { env: spawnEnv });
17+
18+
let codex: ChildProcessWithoutNullStreams
19+
if (codexPath) {
20+
codex = process.platform === 'win32'
21+
? spawn(`"${codexPath}" app-server`, { shell: true, env: spawnEnv })
22+
: spawn(codexPath, ['app-server'], { env: spawnEnv });
23+
} else {
24+
const bundledCodexPath = createRequire(import.meta.url).resolve("@openai/codex/bin/codex.js");
25+
codex = spawn(process.execPath, [bundledCodexPath, 'app-server'], {env: spawnEnv});
26+
}
1927

2028
attachLogs(codex);
2129

src/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#!/usr/bin/env node
22

3-
import {createRequire} from "node:module";
43
import * as acp from "@agentclientprotocol/sdk";
54
import {startCodexConnection} from "./CodexJsonRpcConnection";
65
import {CodexAcpServer} from "./CodexAcpServer";
@@ -30,7 +29,7 @@ if (process.argv[2] === "login") {
3029
}
3130

3231
function startAcpServer() {
33-
const codexPath = process.env["CODEX_PATH"] ?? createRequire(import.meta.url).resolve("@openai/codex/bin/codex.js");
32+
const codexPath = process.env["CODEX_PATH"];
3433
const configString = process.env["CODEX_CONFIG"];
3534
const authRequestString = process.env["DEFAULT_AUTH_REQUEST"];
3635
const modelProvider = process.env["MODEL_PROVIDER"];

0 commit comments

Comments
 (0)