diff --git a/src/CodexJsonRpcConnection.ts b/src/CodexJsonRpcConnection.ts index d96736b..343845b 100644 --- a/src/CodexJsonRpcConnection.ts +++ b/src/CodexJsonRpcConnection.ts @@ -2,6 +2,7 @@ import * as rpc from "vscode-jsonrpc/node"; import type {MessageConnection} from "vscode-jsonrpc/node"; import type {ChildProcessWithoutNullStreams} from "node:child_process"; import {spawn} from "node:child_process"; +import {createRequire} from "node:module"; import {createJSONRPCReader, createJSONRPCWriter} from "./StdUtils"; import {logger} from "./Logger"; @@ -11,11 +12,18 @@ export interface CodexConnection { readonly process: ChildProcessWithoutNullStreams; } -export function startCodexConnection(codexPath: string, env?: NodeJS.ProcessEnv): CodexConnection { +export function startCodexConnection(codexPath?: string, env?: NodeJS.ProcessEnv): CodexConnection { const spawnEnv = env ?? process.env; - const codex: ChildProcessWithoutNullStreams = process.platform === 'win32' - ? spawn(`"${codexPath}" app-server`, { shell: true, env: spawnEnv }) - : spawn(codexPath, ['app-server'], { env: spawnEnv }); + + let codex: ChildProcessWithoutNullStreams + if (codexPath) { + codex = process.platform === 'win32' + ? spawn(`"${codexPath}" app-server`, { shell: true, env: spawnEnv }) + : spawn(codexPath, ['app-server'], { env: spawnEnv }); + } else { + const bundledCodexPath = createRequire(import.meta.url).resolve("@openai/codex/bin/codex.js"); + codex = spawn(process.execPath, [bundledCodexPath, 'app-server'], {env: spawnEnv}); + } attachLogs(codex); diff --git a/src/index.ts b/src/index.ts index 7da8dba..73efd4a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,6 +1,5 @@ #!/usr/bin/env node -import {createRequire} from "node:module"; import * as acp from "@agentclientprotocol/sdk"; import {startCodexConnection} from "./CodexJsonRpcConnection"; import {CodexAcpServer} from "./CodexAcpServer"; @@ -30,7 +29,7 @@ if (process.argv[2] === "login") { } function startAcpServer() { - const codexPath = process.env["CODEX_PATH"] ?? createRequire(import.meta.url).resolve("@openai/codex/bin/codex.js"); + const codexPath = process.env["CODEX_PATH"]; const configString = process.env["CODEX_CONFIG"]; const authRequestString = process.env["DEFAULT_AUTH_REQUEST"]; const modelProvider = process.env["MODEL_PROVIDER"];