From 4a4e56e8f31e98fc73477b085103fc97692ffdac Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 23 Apr 2026 15:07:00 +0100 Subject: [PATCH] perf(test): lazy load sandbox context helpers --- src/agents/model-auth.ts | 18 ++++++++++-------- src/agents/sandbox/context.ts | 15 ++++++++------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/agents/model-auth.ts b/src/agents/model-auth.ts index 3f614149cf6..97dbcbb0d3e 100644 --- a/src/agents/model-auth.ts +++ b/src/agents/model-auth.ts @@ -257,15 +257,17 @@ function resolveProviderSyntheticRuntimeAuth(params: { config: OpenClawConfig | undefined, ): ResolvedProviderAuth | undefined => { const providerConfig = resolveProviderConfig(config, params.provider); - return resolveProviderSyntheticAuthWithPlugin({ - provider: params.provider, - config, - context: { - config, + return ( + resolveProviderSyntheticAuthWithPlugin({ provider: params.provider, - providerConfig, - }, - }); + config, + context: { + config, + provider: params.provider, + providerConfig, + }, + }) ?? undefined + ); }; const directAuth = resolveFromConfig(params.cfg); diff --git a/src/agents/sandbox/context.ts b/src/agents/sandbox/context.ts index 361618c7fbc..d740d2500cb 100644 --- a/src/agents/sandbox/context.ts +++ b/src/agents/sandbox/context.ts @@ -1,7 +1,5 @@ import fs from "node:fs/promises"; -import { loadConfig } from "../../config/config.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; -import { getRemoteSkillEligibility } from "../../infra/skills-remote.js"; import { ensureBrowserControlAuth, resolveBrowserControlAuth, @@ -9,14 +7,11 @@ import { import { DEFAULT_BROWSER_EVALUATE_ENABLED } from "../../plugin-sdk/browser-profiles.js"; import { defaultRuntime } from "../../runtime.js"; import { resolveUserPath } from "../../utils.js"; -import { canExecRequestNode } from "../exec-defaults.js"; -import { syncSkillsToWorkspace } from "../skills.js"; import { DEFAULT_AGENT_WORKSPACE_DIR } from "../workspace.js"; import { requireSandboxBackendFactory } from "./backend.js"; import { ensureSandboxBrowser } from "./browser.js"; import { resolveSandboxConfigForAgent } from "./config.js"; import { createSandboxFsBridge } from "./fs-bridge.js"; -import { maybePruneSandboxes } from "./prune.js"; import { updateRegistry } from "./registry.js"; import { resolveSandboxRuntimeStatus } from "./runtime-status.js"; import { resolveSandboxScopeKey, resolveSandboxWorkspaceDir } from "./shared.js"; @@ -54,6 +49,12 @@ async function ensureSandboxWorkspaceLayout(params: { ); if (cfg.workspaceAccess !== "rw") { try { + const [{ getRemoteSkillEligibility }, { canExecRequestNode }, { syncSkillsToWorkspace }] = + await Promise.all([ + import("../../infra/skills-remote.js"), + import("../exec-defaults.js"), + import("../skills.js"), + ]); await syncSkillsToWorkspace({ sourceWorkspaceDir: agentWorkspaceDir, targetWorkspaceDir: sandboxWorkspaceDir, @@ -133,7 +134,7 @@ export async function resolveSandboxContext(params: { } const { rawSessionKey, cfg, runtime } = resolved; - await maybePruneSandboxes(cfg); + await (await import("./prune.js")).maybePruneSandboxes(cfg); const { agentWorkspaceDir, scopeKey, workspaceDir } = await ensureSandboxWorkspaceLayout({ cfg, @@ -175,7 +176,7 @@ export async function resolveSandboxContext(params: { ? await (async () => { // Sandbox browser bridge server runs on a loopback TCP port; always wire up // the same auth that loopback browser clients will send (token/password). - const cfgForAuth = params.config ?? loadConfig(); + const cfgForAuth = params.config ?? (await import("../../config/config.js")).loadConfig(); let browserAuth = resolveBrowserControlAuth(cfgForAuth); try { const ensured = await ensureBrowserControlAuth({ cfg: cfgForAuth });