Skip to content

Commit f2e0829

Browse files
committed
perf(commands): narrow agent config imports
1 parent 3d42e33 commit f2e0829

6 files changed

Lines changed: 43 additions & 30 deletions

File tree

src/agents/agent-command.ts

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,11 @@ import { resolveCommandConfigWithSecrets } from "../cli/command-config-resolutio
1414
import { formatCliCommand } from "../cli/command-format.js";
1515
import { getAgentRuntimeCommandSecretTargetIds } from "../cli/command-secret-targets.js";
1616
import { type CliDeps, createDefaultDeps } from "../cli/deps.js";
17-
import {
18-
loadConfig,
19-
readConfigFileSnapshotForWrite,
20-
setRuntimeConfigSnapshot,
21-
type OpenClawConfig,
22-
} from "../config/config.js";
23-
import { resolveAgentIdFromSessionKey, type SessionEntry } from "../config/sessions.js";
17+
import { loadConfig, readConfigFileSnapshotForWrite } from "../config/io.js";
18+
import { setRuntimeConfigSnapshot } from "../config/runtime-snapshot.js";
2419
import { resolveSessionTranscriptFile } from "../config/sessions/transcript.js";
20+
import type { SessionEntry } from "../config/sessions/types.js";
21+
import type { OpenClawConfig } from "../config/types.openclaw.js";
2522
import {
2623
clearAgentRunContext,
2724
emitAgentEvent,
@@ -32,6 +29,7 @@ import { buildOutboundSessionContext } from "../infra/outbound/session-context.j
3229
import { getRemoteSkillEligibility } from "../infra/skills-remote.js";
3330
import { createSubsystemLogger } from "../logging/subsystem.js";
3431
import { normalizeAgentId } from "../routing/session-key.js";
32+
import { resolveAgentIdFromSessionKey } from "../routing/session-key.js";
3533
import { defaultRuntime, type RuntimeEnv } from "../runtime.js";
3634
import { applyVerboseOverride } from "../sessions/level-overrides.js";
3735
import { applyModelOverrideToSessionEntry } from "../sessions/model-overrides.js";

src/commands/agent-runtime-config.test-support.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ import { __testing as acpManagerTesting } from "../acp/control-plane/manager.js"
33
import { loadModelCatalog } from "../agents/model-catalog.js";
44
import * as modelSelectionModule from "../agents/model-selection.js";
55
import { runEmbeddedPiAgent } from "../agents/pi-embedded.js";
6-
import type { OpenClawConfig } from "../config/config.js";
7-
import * as configModule from "../config/config.js";
6+
import * as configIoModule from "../config/io.js";
7+
import * as runtimeSnapshotModule from "../config/runtime-snapshot.js";
88
import { clearSessionStoreCacheForTest } from "../config/sessions/store.js";
9+
import type { OpenClawConfig } from "../config/types.openclaw.js";
910
import { resetAgentEventsForTest, resetAgentRunContextForTest } from "../infra/agent-events.js";
1011
import { resetPluginRuntimeStateForTest } from "../plugins/runtime.js";
1112
import type { RuntimeEnv } from "../runtime.js";
@@ -62,20 +63,20 @@ export function mockSharedAgentCommandConfig(
6263
}
6364

6465
export function resetSharedAgentCommandRuntimeState(
65-
readConfigFileSnapshotForWriteSpy: typeof configModule.readConfigFileSnapshotForWrite,
66+
readConfigFileSnapshotForWriteSpy: typeof configIoModule.readConfigFileSnapshotForWrite,
6667
) {
6768
vi.clearAllMocks();
6869
clearSessionStoreCacheForTest();
6970
resetAgentEventsForTest();
7071
resetAgentRunContextForTest();
7172
resetPluginRuntimeStateForTest();
7273
acpManagerTesting.resetAcpSessionManagerForTests();
73-
configModule.clearRuntimeConfigSnapshot();
74+
runtimeSnapshotModule.clearRuntimeConfigSnapshot();
7475
vi.mocked(runEmbeddedPiAgent).mockResolvedValue(createDefaultAgentCommandResult());
7576
vi.mocked(loadModelCatalog).mockResolvedValue([]);
7677
vi.mocked(modelSelectionModule.isCliProvider).mockImplementation(() => false);
7778
vi.mocked(readConfigFileSnapshotForWriteSpy).mockResolvedValue({
7879
snapshot: { valid: false, resolved: {} as OpenClawConfig },
7980
writeOptions: {},
80-
} as Awaited<ReturnType<typeof configModule.readConfigFileSnapshotForWrite>>);
81+
} as Awaited<ReturnType<typeof configIoModule.readConfigFileSnapshotForWrite>>);
8182
}

src/commands/agent.acp.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ import { withTempHome as withTempHomeBase } from "../../test/helpers/temp-home.j
55
import * as acpManagerModule from "../acp/control-plane/manager.js";
66
import { AcpRuntimeError } from "../acp/runtime/errors.js";
77
import * as embeddedModule from "../agents/pi-embedded.js";
8-
import type { OpenClawConfig } from "../config/config.js";
9-
import * as configModule from "../config/config.js";
8+
import * as configIoModule from "../config/io.js";
9+
import type { OpenClawConfig } from "../config/types.openclaw.js";
1010
import { readSessionMessages } from "../gateway/session-utils.fs.js";
1111
import { onAgentEvent } from "../infra/agent-events.js";
1212
import type { RuntimeEnv } from "../runtime.js";
1313
import { agentCommand } from "./agent.js";
1414

15-
const loadConfigSpy = vi.spyOn(configModule, "loadConfig");
15+
const loadConfigSpy = vi.spyOn(configIoModule, "loadConfig");
1616
const runEmbeddedPiAgentSpy = vi.spyOn(embeddedModule, "runEmbeddedPiAgent");
1717
const getAcpSessionManagerSpy = vi.spyOn(acpManagerModule, "getAcpSessionManager");
1818

src/commands/agent.cli-provider.test.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { FailoverError } from "../agents/failover-error.js";
88
import { loadModelCatalog } from "../agents/model-catalog.js";
99
import * as modelSelectionModule from "../agents/model-selection.js";
1010
import { runEmbeddedPiAgent } from "../agents/pi-embedded.js";
11-
import * as configModule from "../config/config.js";
11+
import * as configIoModule from "../config/io.js";
1212
import { createDefaultAgentCommandResult } from "./agent-command.test-support.js";
1313
import {
1414
mockSharedAgentCommandConfig,
@@ -18,8 +18,11 @@ import {
1818
} from "./agent-runtime-config.test-support.js";
1919
import { agentCommand } from "./agent.js";
2020

21-
const configSpy = vi.spyOn(configModule, "loadConfig");
22-
const readConfigFileSnapshotForWriteSpy = vi.spyOn(configModule, "readConfigFileSnapshotForWrite");
21+
const configSpy = vi.spyOn(configIoModule, "loadConfig");
22+
const readConfigFileSnapshotForWriteSpy = vi.spyOn(
23+
configIoModule,
24+
"readConfigFileSnapshotForWrite",
25+
);
2326
const runCliAgentSpy = vi.spyOn(cliRunnerModule, "runCliAgent");
2427

2528
async function withTempHome<T>(fn: (home: string) => Promise<T>): Promise<T> {

src/commands/agent.runtime-config.test.ts

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ import "../cron/isolated-agent.mocks.js";
55
import { __testing as agentCommandTesting } from "../agents/agent-command.js";
66
import { resolveSession } from "../agents/command/session.js";
77
import * as commandConfigResolutionModule from "../cli/command-config-resolution.js";
8-
import type { OpenClawConfig } from "../config/config.js";
9-
import * as configModule from "../config/config.js";
8+
import * as configIoModule from "../config/io.js";
9+
import * as runtimeSnapshotModule from "../config/runtime-snapshot.js";
10+
import type { OpenClawConfig } from "../config/types.openclaw.js";
1011
import {
1112
mockSharedAgentCommandConfig,
1213
resetSharedAgentCommandRuntimeState,
@@ -20,8 +21,11 @@ vi.mock("../agents/command/session-store.js", () => {
2021
};
2122
});
2223

23-
const configSpy = vi.spyOn(configModule, "loadConfig");
24-
const readConfigFileSnapshotForWriteSpy = vi.spyOn(configModule, "readConfigFileSnapshotForWrite");
24+
const configSpy = vi.spyOn(configIoModule, "loadConfig");
25+
const readConfigFileSnapshotForWriteSpy = vi.spyOn(
26+
configIoModule,
27+
"readConfigFileSnapshotForWrite",
28+
);
2529

2630
async function withTempHome<T>(fn: (home: string) => Promise<T>): Promise<T> {
2731
return withSharedAgentCommandTempHome("openclaw-agent-", fn);
@@ -42,7 +46,10 @@ beforeEach(() => {
4246
describe("agentCommand runtime config", () => {
4347
it("sets runtime snapshots from source config before embedded agent run", async () => {
4448
await withTempHome(async (home) => {
45-
const setRuntimeConfigSnapshotSpy = vi.spyOn(configModule, "setRuntimeConfigSnapshot");
49+
const setRuntimeConfigSnapshotSpy = vi.spyOn(
50+
runtimeSnapshotModule,
51+
"setRuntimeConfigSnapshot",
52+
);
4653

4754
const store = path.join(home, "sessions.json");
4855
const loadedConfig = {
@@ -93,7 +100,7 @@ describe("agentCommand runtime config", () => {
93100
readConfigFileSnapshotForWriteSpy.mockResolvedValue({
94101
snapshot: { valid: true, resolved: sourceConfig },
95102
writeOptions: {},
96-
} as Awaited<ReturnType<typeof configModule.readConfigFileSnapshotForWrite>>);
103+
} as Awaited<ReturnType<typeof configIoModule.readConfigFileSnapshotForWrite>>);
97104
const resolveConfigWithSecretsSpy = vi
98105
.spyOn(commandConfigResolutionModule, "resolveCommandConfigWithSecrets")
99106
.mockResolvedValueOnce({

src/commands/agent.test.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ import { resolveSession } from "../agents/command/session.js";
1212
import { loadModelCatalog } from "../agents/model-catalog.js";
1313
import * as modelSelectionModule from "../agents/model-selection.js";
1414
import { runEmbeddedPiAgent } from "../agents/pi-embedded.js";
15-
import type { OpenClawConfig } from "../config/config.js";
16-
import * as configModule from "../config/config.js";
15+
import * as configIoModule from "../config/io.js";
16+
import * as runtimeSnapshotModule from "../config/runtime-snapshot.js";
1717
import * as sessionPathsModule from "../config/sessions/paths.js";
1818
import { clearSessionStoreCacheForTest } from "../config/sessions/store.js";
19+
import type { OpenClawConfig } from "../config/types.openclaw.js";
1920
import {
2021
emitAgentEvent,
2122
onAgentEvent,
@@ -64,8 +65,11 @@ const runtime: RuntimeEnv = {
6465
}),
6566
};
6667

67-
const configSpy = vi.spyOn(configModule, "loadConfig");
68-
const readConfigFileSnapshotForWriteSpy = vi.spyOn(configModule, "readConfigFileSnapshotForWrite");
68+
const configSpy = vi.spyOn(configIoModule, "loadConfig");
69+
const readConfigFileSnapshotForWriteSpy = vi.spyOn(
70+
configIoModule,
71+
"readConfigFileSnapshotForWrite",
72+
);
6973

7074
async function withTempHome<T>(fn: (home: string) => Promise<T>): Promise<T> {
7175
return withTempHomeBase(fn, { prefix: "openclaw-agent-" });
@@ -267,14 +271,14 @@ beforeEach(() => {
267271
resetAgentRunContextForTest();
268272
resetPluginRuntimeStateForTest();
269273
acpManagerTesting.resetAcpSessionManagerForTests();
270-
configModule.clearRuntimeConfigSnapshot();
274+
runtimeSnapshotModule.clearRuntimeConfigSnapshot();
271275
vi.mocked(runEmbeddedPiAgent).mockResolvedValue(createDefaultAgentResult());
272276
vi.mocked(loadModelCatalog).mockResolvedValue([]);
273277
vi.mocked(modelSelectionModule.isCliProvider).mockImplementation(() => false);
274278
readConfigFileSnapshotForWriteSpy.mockResolvedValue({
275279
snapshot: { valid: false, resolved: {} as OpenClawConfig },
276280
writeOptions: {},
277-
} as Awaited<ReturnType<typeof configModule.readConfigFileSnapshotForWrite>>);
281+
} as Awaited<ReturnType<typeof configIoModule.readConfigFileSnapshotForWrite>>);
278282
});
279283

280284
describe("agentCommand", () => {

0 commit comments

Comments
 (0)