perf: lazy load system run config

This commit is contained in:
Peter Steinberger
2026-04-17 16:39:07 +01:00
parent 8de7aefe0a
commit 7b27d08e56
2 changed files with 17 additions and 3 deletions

View File

@@ -13,7 +13,11 @@ import {
type Mock,
vi,
} from "vitest";
import { clearRuntimeConfigSnapshot, setRuntimeConfigSnapshot } from "../config/config.js";
import {
clearRuntimeConfigSnapshot,
getRuntimeConfigSnapshot,
setRuntimeConfigSnapshot,
} from "../config/runtime-snapshot.js";
import type { SystemRunApprovalPlan } from "../infra/exec-approvals.js";
import { loadExecApprovals, saveExecApprovals } from "../infra/exec-approvals.js";
import type { ExecHostResponse } from "../infra/exec-host.js";
@@ -474,6 +478,7 @@ describe("handleSystemRunInvoke mac app exec host routing", () => {
sendInvokeResult,
sendExecFinishedEvent,
preferMacAppExecHost: params.preferMacAppExecHost,
loadConfig: () => getRuntimeConfigSnapshot() ?? {},
});
return {

View File

@@ -1,6 +1,6 @@
import crypto from "node:crypto";
import { resolveAgentConfig } from "../agents/agent-scope.js";
import { loadConfig } from "../config/config.js";
import type { OpenClawConfig } from "../config/types.openclaw.js";
import type { GatewayClient } from "../gateway/client.js";
import {
addDurableCommandApproval,
@@ -171,8 +171,17 @@ export type HandleSystemRunInvokeOptions = {
sendInvokeResult: (result: SystemRunInvokeResult) => Promise<void>;
sendExecFinishedEvent: (params: ExecFinishedEventParams) => Promise<void>;
preferMacAppExecHost: boolean;
loadConfig?: () => OpenClawConfig;
};
async function loadSystemRunConfig(opts: HandleSystemRunInvokeOptions): Promise<OpenClawConfig> {
if (opts.loadConfig) {
return opts.loadConfig();
}
const { loadConfig } = await import("../config/config.js");
return loadConfig();
}
async function sendSystemRunDenied(
opts: Pick<
HandleSystemRunInvokeOptions,
@@ -343,7 +352,7 @@ async function evaluateSystemRunPolicyPhase(
opts: HandleSystemRunInvokeOptions,
parsed: SystemRunParsePhase,
): Promise<SystemRunPolicyPhase | null> {
const cfg = loadConfig();
const cfg = await loadSystemRunConfig(opts);
const agentExec = parsed.agentId
? resolveAgentConfig(cfg, parsed.agentId)?.tools?.exec
: undefined;