diff --git a/src/agents/context.eager-warmup.test.ts b/src/agents/context.eager-warmup.test.ts new file mode 100644 index 00000000000..827a3cf257e --- /dev/null +++ b/src/agents/context.eager-warmup.test.ts @@ -0,0 +1,30 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; + +const loadConfigMock = vi.hoisted(() => vi.fn()); + +vi.mock("../config/config.js", () => ({ + loadConfig: loadConfigMock, +})); + +describe("agents/context eager warmup", () => { + const originalArgv = process.argv.slice(); + + beforeEach(() => { + vi.resetModules(); + loadConfigMock.mockReset(); + }); + + afterEach(() => { + process.argv = originalArgv.slice(); + }); + + it.each([ + ["models", ["node", "openclaw", "models", "set", "openai/gpt-5.4"]], + ["agent", ["node", "openclaw", "agent", "--message", "ok"]], + ])("does not eager-load config for %s commands on import", async (_label, argv) => { + process.argv = argv; + await import("./context.js"); + + expect(loadConfigMock).not.toHaveBeenCalled(); + }); +}); diff --git a/src/agents/context.ts b/src/agents/context.ts index 198490e2277..3404c900934 100644 --- a/src/agents/context.ts +++ b/src/agents/context.ts @@ -129,6 +129,7 @@ function getCommandPathFromArgv(argv: string[]): string[] { } const SKIP_EAGER_WARMUP_PRIMARY_COMMANDS = new Set([ + "agent", "backup", "completion", "config", @@ -138,6 +139,7 @@ const SKIP_EAGER_WARMUP_PRIMARY_COMMANDS = new Set([ "health", "hooks", "logs", + "models", "plugins", "secrets", "status",