import * as plugins from './plugins.js'; /** Codex's canonical app_server_control_socket_path, relative to its selected home. */ export const codexLocalSocketPath = (codexHomeArg: string): string => { if (!plugins.path.isAbsolute(codexHomeArg) || codexHomeArg.includes('\0')) throw new Error('CODEX_HOME must be an absolute directory.'); return plugins.path.join(codexHomeArg, 'app-server-control', 'app-server-control.sock'); }; /** Absence selects an owned server. An inaccessible or stale socket is a connection failure. */ export const findCodexLocalSocket = async (codexHomeArg: string): Promise => { const socketPath = codexLocalSocketPath(codexHomeArg); let stat: plugins.fs.Stats; try { stat = await plugins.fs.promises.lstat(socketPath); } catch (error) { if ((error as NodeJS.ErrnoException).code === 'ENOENT') return undefined; throw error; } if (!stat.isSocket()) throw new Error('The Codex control socket path is not a Unix socket.'); return socketPath; };