diff --git a/packages/coding-agent/src/eval/js/context-manager.ts b/packages/coding-agent/src/eval/js/context-manager.ts index e8d51aea9..62a3c1a81 100644 --- a/packages/coding-agent/src/eval/js/context-manager.ts +++ b/packages/coding-agent/src/eval/js/context-manager.ts @@ -44,6 +44,8 @@ interface PendingRun { interface JsSession { sessionKey: string; + sessionId: string; + cwd: string; worker: WorkerHandle; state: "alive" | "dead"; pending: Map; @@ -151,7 +153,14 @@ export async function disposeAllVmContexts(): Promise { */ export async function smokeTestJsEvalWorker(): Promise { const worker = spawnJsWorker(); - const session: JsSession = { sessionKey: "smoke", worker, state: "alive", pending: new Map() }; + const session: JsSession = { + sessionKey: "smoke", + sessionId: "smoke", + cwd: process.cwd(), + worker, + state: "alive", + pending: new Map(), + }; try { await initWorker(session, { cwd: process.cwd(), sessionId: "smoke" }, WORKER_INIT_TIMEOUT_MS); if (worker.mode !== "worker") { @@ -219,7 +228,11 @@ async function runOnce( async function acquireSession(sessionKey: string, snapshot: SessionSnapshot, timeoutMs?: number): Promise { const existing = sessions.get(sessionKey); - if (existing && existing.state === "alive") return existing; + if (existing && existing.state === "alive") { + existing.sessionId = snapshot.sessionId; + existing.cwd = snapshot.cwd; + return existing; + } const starting = startingSessions.get(sessionKey); if (starting) return await starting; @@ -231,6 +244,8 @@ async function acquireSession(sessionKey: string, snapshot: SessionSnapshot, tim const worker = spawnJsWorker(); const session: JsSession = { sessionKey, + sessionId: snapshot.sessionId, + cwd: snapshot.cwd, worker, state: "alive", pending: new Map(), diff --git a/packages/coding-agent/src/eval/py/executor.ts b/packages/coding-agent/src/eval/py/executor.ts index 265cd4d74..0ea83da64 100644 --- a/packages/coding-agent/src/eval/py/executor.ts +++ b/packages/coding-agent/src/eval/py/executor.ts @@ -632,7 +632,7 @@ async function executePerCall(code: string, cwd: string, options: PythonExecutor } const kernel = await startKernel(cwd, options); try { - return await executeWithKernel(kernel, code, { ...options, cwd: undefined }); + return await executeWithKernel(kernel, code, { ...options, cwd }); } finally { await kernel.shutdown().catch(() => undefined); } @@ -682,7 +682,7 @@ async function executeOnSession(code: string, cwd: string, options: PythonExecut throw new PythonExecutionCancelledError(false); } } - const runOptions = { ...options, cwd: undefined }; + const runOptions = { ...options, cwd }; try { return await executeWithKernel(session.kernel, code, runOptions); } catch (err) {