diff --git a/src/agents/agent-command.ts b/src/agents/agent-command.ts index bdf999f7f4f..ee61e531423 100644 --- a/src/agents/agent-command.ts +++ b/src/agents/agent-command.ts @@ -14,14 +14,11 @@ import { resolveCommandConfigWithSecrets } from "../cli/command-config-resolutio import { formatCliCommand } from "../cli/command-format.js"; import { getAgentRuntimeCommandSecretTargetIds } from "../cli/command-secret-targets.js"; import { type CliDeps, createDefaultDeps } from "../cli/deps.js"; -import { - loadConfig, - readConfigFileSnapshotForWrite, - setRuntimeConfigSnapshot, - type OpenClawConfig, -} from "../config/config.js"; -import { resolveAgentIdFromSessionKey, type SessionEntry } from "../config/sessions.js"; +import { loadConfig, readConfigFileSnapshotForWrite } from "../config/io.js"; +import { setRuntimeConfigSnapshot } from "../config/runtime-snapshot.js"; import { resolveSessionTranscriptFile } from "../config/sessions/transcript.js"; +import type { SessionEntry } from "../config/sessions/types.js"; +import type { OpenClawConfig } from "../config/types.openclaw.js"; import { clearAgentRunContext, emitAgentEvent, @@ -32,6 +29,7 @@ import { buildOutboundSessionContext } from "../infra/outbound/session-context.j import { getRemoteSkillEligibility } from "../infra/skills-remote.js"; import { createSubsystemLogger } from "../logging/subsystem.js"; import { normalizeAgentId } from "../routing/session-key.js"; +import { resolveAgentIdFromSessionKey } from "../routing/session-key.js"; import { defaultRuntime, type RuntimeEnv } from "../runtime.js"; import { applyVerboseOverride } from "../sessions/level-overrides.js"; import { applyModelOverrideToSessionEntry } from "../sessions/model-overrides.js"; diff --git a/src/commands/agent-runtime-config.test-support.ts b/src/commands/agent-runtime-config.test-support.ts index 7eba37992b1..1b57f51de81 100644 --- a/src/commands/agent-runtime-config.test-support.ts +++ b/src/commands/agent-runtime-config.test-support.ts @@ -3,9 +3,10 @@ import { __testing as acpManagerTesting } from "../acp/control-plane/manager.js" import { loadModelCatalog } from "../agents/model-catalog.js"; import * as modelSelectionModule from "../agents/model-selection.js"; import { runEmbeddedPiAgent } from "../agents/pi-embedded.js"; -import type { OpenClawConfig } from "../config/config.js"; -import * as configModule from "../config/config.js"; +import * as configIoModule from "../config/io.js"; +import * as runtimeSnapshotModule from "../config/runtime-snapshot.js"; import { clearSessionStoreCacheForTest } from "../config/sessions/store.js"; +import type { OpenClawConfig } from "../config/types.openclaw.js"; import { resetAgentEventsForTest, resetAgentRunContextForTest } from "../infra/agent-events.js"; import { resetPluginRuntimeStateForTest } from "../plugins/runtime.js"; import type { RuntimeEnv } from "../runtime.js"; @@ -62,7 +63,7 @@ export function mockSharedAgentCommandConfig( } export function resetSharedAgentCommandRuntimeState( - readConfigFileSnapshotForWriteSpy: typeof configModule.readConfigFileSnapshotForWrite, + readConfigFileSnapshotForWriteSpy: typeof configIoModule.readConfigFileSnapshotForWrite, ) { vi.clearAllMocks(); clearSessionStoreCacheForTest(); @@ -70,12 +71,12 @@ export function resetSharedAgentCommandRuntimeState( resetAgentRunContextForTest(); resetPluginRuntimeStateForTest(); acpManagerTesting.resetAcpSessionManagerForTests(); - configModule.clearRuntimeConfigSnapshot(); + runtimeSnapshotModule.clearRuntimeConfigSnapshot(); vi.mocked(runEmbeddedPiAgent).mockResolvedValue(createDefaultAgentCommandResult()); vi.mocked(loadModelCatalog).mockResolvedValue([]); vi.mocked(modelSelectionModule.isCliProvider).mockImplementation(() => false); vi.mocked(readConfigFileSnapshotForWriteSpy).mockResolvedValue({ snapshot: { valid: false, resolved: {} as OpenClawConfig }, writeOptions: {}, - } as Awaited>); + } as Awaited>); } diff --git a/src/commands/agent.acp.test.ts b/src/commands/agent.acp.test.ts index 409f568f8da..7f6b7dfbd56 100644 --- a/src/commands/agent.acp.test.ts +++ b/src/commands/agent.acp.test.ts @@ -5,14 +5,14 @@ import { withTempHome as withTempHomeBase } from "../../test/helpers/temp-home.j import * as acpManagerModule from "../acp/control-plane/manager.js"; import { AcpRuntimeError } from "../acp/runtime/errors.js"; import * as embeddedModule from "../agents/pi-embedded.js"; -import type { OpenClawConfig } from "../config/config.js"; -import * as configModule from "../config/config.js"; +import * as configIoModule from "../config/io.js"; +import type { OpenClawConfig } from "../config/types.openclaw.js"; import { readSessionMessages } from "../gateway/session-utils.fs.js"; import { onAgentEvent } from "../infra/agent-events.js"; import type { RuntimeEnv } from "../runtime.js"; import { agentCommand } from "./agent.js"; -const loadConfigSpy = vi.spyOn(configModule, "loadConfig"); +const loadConfigSpy = vi.spyOn(configIoModule, "loadConfig"); const runEmbeddedPiAgentSpy = vi.spyOn(embeddedModule, "runEmbeddedPiAgent"); const getAcpSessionManagerSpy = vi.spyOn(acpManagerModule, "getAcpSessionManager"); diff --git a/src/commands/agent.cli-provider.test.ts b/src/commands/agent.cli-provider.test.ts index 6e2dd58f9c8..a35e1c4c939 100644 --- a/src/commands/agent.cli-provider.test.ts +++ b/src/commands/agent.cli-provider.test.ts @@ -8,7 +8,7 @@ import { FailoverError } from "../agents/failover-error.js"; import { loadModelCatalog } from "../agents/model-catalog.js"; import * as modelSelectionModule from "../agents/model-selection.js"; import { runEmbeddedPiAgent } from "../agents/pi-embedded.js"; -import * as configModule from "../config/config.js"; +import * as configIoModule from "../config/io.js"; import { createDefaultAgentCommandResult } from "./agent-command.test-support.js"; import { mockSharedAgentCommandConfig, @@ -18,8 +18,11 @@ import { } from "./agent-runtime-config.test-support.js"; import { agentCommand } from "./agent.js"; -const configSpy = vi.spyOn(configModule, "loadConfig"); -const readConfigFileSnapshotForWriteSpy = vi.spyOn(configModule, "readConfigFileSnapshotForWrite"); +const configSpy = vi.spyOn(configIoModule, "loadConfig"); +const readConfigFileSnapshotForWriteSpy = vi.spyOn( + configIoModule, + "readConfigFileSnapshotForWrite", +); const runCliAgentSpy = vi.spyOn(cliRunnerModule, "runCliAgent"); async function withTempHome(fn: (home: string) => Promise): Promise { diff --git a/src/commands/agent.runtime-config.test.ts b/src/commands/agent.runtime-config.test.ts index 870563d5560..2464ec12adc 100644 --- a/src/commands/agent.runtime-config.test.ts +++ b/src/commands/agent.runtime-config.test.ts @@ -5,8 +5,9 @@ import "../cron/isolated-agent.mocks.js"; import { __testing as agentCommandTesting } from "../agents/agent-command.js"; import { resolveSession } from "../agents/command/session.js"; import * as commandConfigResolutionModule from "../cli/command-config-resolution.js"; -import type { OpenClawConfig } from "../config/config.js"; -import * as configModule from "../config/config.js"; +import * as configIoModule from "../config/io.js"; +import * as runtimeSnapshotModule from "../config/runtime-snapshot.js"; +import type { OpenClawConfig } from "../config/types.openclaw.js"; import { mockSharedAgentCommandConfig, resetSharedAgentCommandRuntimeState, @@ -20,8 +21,11 @@ vi.mock("../agents/command/session-store.js", () => { }; }); -const configSpy = vi.spyOn(configModule, "loadConfig"); -const readConfigFileSnapshotForWriteSpy = vi.spyOn(configModule, "readConfigFileSnapshotForWrite"); +const configSpy = vi.spyOn(configIoModule, "loadConfig"); +const readConfigFileSnapshotForWriteSpy = vi.spyOn( + configIoModule, + "readConfigFileSnapshotForWrite", +); async function withTempHome(fn: (home: string) => Promise): Promise { return withSharedAgentCommandTempHome("openclaw-agent-", fn); @@ -42,7 +46,10 @@ beforeEach(() => { describe("agentCommand runtime config", () => { it("sets runtime snapshots from source config before embedded agent run", async () => { await withTempHome(async (home) => { - const setRuntimeConfigSnapshotSpy = vi.spyOn(configModule, "setRuntimeConfigSnapshot"); + const setRuntimeConfigSnapshotSpy = vi.spyOn( + runtimeSnapshotModule, + "setRuntimeConfigSnapshot", + ); const store = path.join(home, "sessions.json"); const loadedConfig = { @@ -93,7 +100,7 @@ describe("agentCommand runtime config", () => { readConfigFileSnapshotForWriteSpy.mockResolvedValue({ snapshot: { valid: true, resolved: sourceConfig }, writeOptions: {}, - } as Awaited>); + } as Awaited>); const resolveConfigWithSecretsSpy = vi .spyOn(commandConfigResolutionModule, "resolveCommandConfigWithSecrets") .mockResolvedValueOnce({ diff --git a/src/commands/agent.test.ts b/src/commands/agent.test.ts index 84b125d1441..31b84767200 100644 --- a/src/commands/agent.test.ts +++ b/src/commands/agent.test.ts @@ -12,10 +12,11 @@ import { resolveSession } from "../agents/command/session.js"; import { loadModelCatalog } from "../agents/model-catalog.js"; import * as modelSelectionModule from "../agents/model-selection.js"; import { runEmbeddedPiAgent } from "../agents/pi-embedded.js"; -import type { OpenClawConfig } from "../config/config.js"; -import * as configModule from "../config/config.js"; +import * as configIoModule from "../config/io.js"; +import * as runtimeSnapshotModule from "../config/runtime-snapshot.js"; import * as sessionPathsModule from "../config/sessions/paths.js"; import { clearSessionStoreCacheForTest } from "../config/sessions/store.js"; +import type { OpenClawConfig } from "../config/types.openclaw.js"; import { emitAgentEvent, onAgentEvent, @@ -64,8 +65,11 @@ const runtime: RuntimeEnv = { }), }; -const configSpy = vi.spyOn(configModule, "loadConfig"); -const readConfigFileSnapshotForWriteSpy = vi.spyOn(configModule, "readConfigFileSnapshotForWrite"); +const configSpy = vi.spyOn(configIoModule, "loadConfig"); +const readConfigFileSnapshotForWriteSpy = vi.spyOn( + configIoModule, + "readConfigFileSnapshotForWrite", +); async function withTempHome(fn: (home: string) => Promise): Promise { return withTempHomeBase(fn, { prefix: "openclaw-agent-" }); @@ -267,14 +271,14 @@ beforeEach(() => { resetAgentRunContextForTest(); resetPluginRuntimeStateForTest(); acpManagerTesting.resetAcpSessionManagerForTests(); - configModule.clearRuntimeConfigSnapshot(); + runtimeSnapshotModule.clearRuntimeConfigSnapshot(); vi.mocked(runEmbeddedPiAgent).mockResolvedValue(createDefaultAgentResult()); vi.mocked(loadModelCatalog).mockResolvedValue([]); vi.mocked(modelSelectionModule.isCliProvider).mockImplementation(() => false); readConfigFileSnapshotForWriteSpy.mockResolvedValue({ snapshot: { valid: false, resolved: {} as OpenClawConfig }, writeOptions: {}, - } as Awaited>); + } as Awaited>); }); describe("agentCommand", () => {