From d4476c689982ee0e96d06dc9d4a831dee2911b1e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 15 Feb 2026 16:32:51 +0000 Subject: [PATCH] refactor(sandbox): dedupe session resolution --- src/agents/sandbox/context.ts | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/agents/sandbox/context.ts b/src/agents/sandbox/context.ts index 1d365210807..b0eb0ffd9e7 100644 --- a/src/agents/sandbox/context.ts +++ b/src/agents/sandbox/context.ts @@ -64,11 +64,7 @@ async function ensureSandboxWorkspaceLayout(params: { return { agentWorkspaceDir, scopeKey, sandboxWorkspaceDir, workspaceDir }; } -export async function resolveSandboxContext(params: { - config?: OpenClawConfig; - sessionKey?: string; - workspaceDir?: string; -}): Promise { +function resolveSandboxSession(params: { config?: OpenClawConfig; sessionKey?: string }) { const rawSessionKey = params.sessionKey?.trim(); if (!rawSessionKey) { return null; @@ -83,6 +79,19 @@ export async function resolveSandboxContext(params: { } const cfg = resolveSandboxConfigForAgent(params.config, runtime.agentId); + return { rawSessionKey, runtime, cfg }; +} + +export async function resolveSandboxContext(params: { + config?: OpenClawConfig; + sessionKey?: string; + workspaceDir?: string; +}): Promise { + const resolved = resolveSandboxSession(params); + if (!resolved) { + return null; + } + const { rawSessionKey, cfg } = resolved; await maybePruneSandboxes(cfg); @@ -152,20 +161,11 @@ export async function ensureSandboxWorkspaceForSession(params: { sessionKey?: string; workspaceDir?: string; }): Promise { - const rawSessionKey = params.sessionKey?.trim(); - if (!rawSessionKey) { + const resolved = resolveSandboxSession(params); + if (!resolved) { return null; } - - const runtime = resolveSandboxRuntimeStatus({ - cfg: params.config, - sessionKey: rawSessionKey, - }); - if (!runtime.sandboxed) { - return null; - } - - const cfg = resolveSandboxConfigForAgent(params.config, runtime.agentId); + const { rawSessionKey, cfg } = resolved; const { workspaceDir } = await ensureSandboxWorkspaceLayout({ cfg,