diff --git a/plugins/codex/scripts/codex-companion.mjs b/plugins/codex/scripts/codex-companion.mjs index 201d1c7..3b10864 100644 --- a/plugins/codex/scripts/codex-companion.mjs +++ b/plugins/codex/scripts/codex-companion.mjs @@ -202,7 +202,7 @@ function buildSetupReport(cwd, actionsTaken = []) { npm: npmStatus, codex: codexStatus, auth: authStatus, - sessionRuntime: getSessionRuntimeStatus(), + sessionRuntime: getSessionRuntimeStatus(process.env, workspaceRoot), reviewGateEnabled: Boolean(config.stopReviewGate), actionsTaken, nextSteps diff --git a/plugins/codex/scripts/lib/job-control.mjs b/plugins/codex/scripts/lib/job-control.mjs index 74ba7f7..26c53e9 100644 --- a/plugins/codex/scripts/lib/job-control.mjs +++ b/plugins/codex/scripts/lib/job-control.mjs @@ -231,7 +231,7 @@ export function buildStatusSnapshot(cwd, options = {}) { return { workspaceRoot, config, - sessionRuntime: getSessionRuntimeStatus(options.env), + sessionRuntime: getSessionRuntimeStatus(options.env, workspaceRoot), running, latestFinished, recent, diff --git a/tests/runtime.test.mjs b/tests/runtime.test.mjs index 43ed17c..fead625 100644 --- a/tests/runtime.test.mjs +++ b/tests/runtime.test.mjs @@ -6,7 +6,7 @@ import { spawn } from "node:child_process"; import { buildEnv, installFakeCodex } from "./fake-codex-fixture.mjs"; import { initGitRepo, makeTempDir, run } from "./helpers.mjs"; -import { loadBrokerSession } from "../plugins/codex/scripts/lib/broker-lifecycle.mjs"; +import { loadBrokerSession, saveBrokerSession } from "../plugins/codex/scripts/lib/broker-lifecycle.mjs"; import { resolveStateDir } from "../plugins/codex/scripts/lib/state.mjs"; const ROOT = "/Users/dkundel/code/codex-plugin"; @@ -1698,3 +1698,26 @@ test("status reports shared session runtime when a lazy broker is active", () => assert.equal(result.status, 0, result.stderr); assert.match(result.stdout, /Session runtime: shared session/); }); + +test("setup and status honor --cwd when reading shared session runtime", () => { + const targetWorkspace = makeTempDir(); + const invocationWorkspace = makeTempDir(); + + saveBrokerSession(targetWorkspace, { + endpoint: "unix:/tmp/fake-broker.sock" + }); + + const status = run("node", [SCRIPT, "status", "--cwd", targetWorkspace], { + cwd: invocationWorkspace + }); + assert.equal(status.status, 0, status.stderr); + assert.match(status.stdout, /Session runtime: shared session/); + + const setup = run("node", [SCRIPT, "setup", "--cwd", targetWorkspace, "--json"], { + cwd: invocationWorkspace + }); + assert.equal(setup.status, 0, setup.stderr); + const payload = JSON.parse(setup.stdout); + assert.equal(payload.sessionRuntime.mode, "shared"); + assert.equal(payload.sessionRuntime.endpoint, "unix:/tmp/fake-broker.sock"); +});