diff --git a/src/cli/capability-cli.test.ts b/src/cli/capability-cli.test.ts index 5e2e1e5c33b..24cfbb27ad3 100644 --- a/src/cli/capability-cli.test.ts +++ b/src/cli/capability-cli.test.ts @@ -170,6 +170,10 @@ vi.mock("../commands/models/list.js", () => ({ modelsStatusCommand: mocks.modelsStatusCommand as typeof import("../commands/models/list.js").modelsStatusCommand, })); +vi.mock("../commands/models/list.status-command.js", () => ({ + modelsStatusCommand: + mocks.modelsStatusCommand as typeof import("../commands/models/list.status-command.js").modelsStatusCommand, +})); vi.mock("../gateway/call.js", () => ({ callGateway: mocks.callGateway as typeof import("../gateway/call.js").callGateway, diff --git a/src/cli/capability-cli.ts b/src/cli/capability-cli.ts index 8eb73b1d42c..a5ba86618b7 100644 --- a/src/cli/capability-cli.ts +++ b/src/cli/capability-cli.ts @@ -13,7 +13,6 @@ import { import { updateAuthProfileStoreWithLock } from "../agents/auth-profiles/store.js"; import { resolveMemorySearchConfig } from "../agents/memory-search.js"; import { loadModelCatalog } from "../agents/model-catalog.js"; -import { modelsStatusCommand } from "../commands/models/list.js"; import { loadConfig } from "../config/config.js"; import { resolveAgentModelPrimaryValue } from "../config/model-input.js"; import type { OpenClawConfig } from "../config/types.openclaw.js"; @@ -683,6 +682,7 @@ async function buildModelProviders() { async function runModelAuthStatus() { const captured: string[] = []; + const { modelsStatusCommand } = await import("../commands/models/list.status-command.js"); await modelsStatusCommand( { json: true }, { diff --git a/src/cli/models-cli.test.ts b/src/cli/models-cli.test.ts index 30f3f2fc03f..6b46baa3f1a 100644 --- a/src/cli/models-cli.test.ts +++ b/src/cli/models-cli.test.ts @@ -49,6 +49,12 @@ vi.mock("../commands/models/list.js", () => ({ modelsListCommand: mocks.noopAsync, modelsStatusCommand: mocks.modelsStatusCommand, })); +vi.mock("../commands/models/list.list-command.js", () => ({ + modelsListCommand: mocks.noopAsync, +})); +vi.mock("../commands/models/list.status-command.js", () => ({ + modelsStatusCommand: mocks.modelsStatusCommand, +})); vi.mock("../commands/models/auth.js", () => ({ modelsAuthAddCommand: mocks.modelsAuthAddCommand, modelsAuthLoginCommand: mocks.modelsAuthLoginCommand, diff --git a/src/cli/models-cli.ts b/src/cli/models-cli.ts index 0773a55bb54..a769aae2113 100644 --- a/src/cli/models-cli.ts +++ b/src/cli/models-cli.ts @@ -1,5 +1,4 @@ import type { Command } from "commander"; -import { modelsListCommand, modelsStatusCommand } from "../commands/models/list.js"; import { defaultRuntime } from "../runtime.js"; import { formatDocsLink } from "../terminal/links.js"; import { theme } from "../terminal/theme.js"; @@ -35,6 +34,7 @@ export function registerModelsCli(program: Command) { .option("--plain", "Plain line output", false) .action(async (opts) => { await runModelsCommand(async () => { + const { modelsListCommand } = await import("../commands/models/list.list-command.js"); await modelsListCommand(opts, defaultRuntime); }); }); @@ -71,6 +71,7 @@ export function registerModelsCli(program: Command) { const agent = resolveOptionFromCommand(command, "agent") ?? (opts.agent as string | undefined); await runModelsCommand(async () => { + const { modelsStatusCommand } = await import("../commands/models/list.status-command.js"); await modelsStatusCommand( { json: Boolean(opts.json), @@ -270,6 +271,7 @@ export function registerModelsCli(program: Command) { models.action(async (opts) => { await runModelsCommand(async () => { + const { modelsStatusCommand } = await import("../commands/models/list.status-command.js"); await modelsStatusCommand( { json: Boolean(opts?.statusJson), diff --git a/src/cli/program/routed-command-definitions.ts b/src/cli/program/routed-command-definitions.ts index 8557039ac19..09873d6cdd3 100644 --- a/src/cli/program/routed-command-definitions.ts +++ b/src/cli/program/routed-command-definitions.ts @@ -17,7 +17,8 @@ type RouteArgParser = (argv: string[]) => TArgs | null; type ParsedRouteArgs> = Exclude, null>; type ConfigCliModule = typeof import("../config-cli.js"); -type ModelsListModule = typeof import("../../commands/models/list.js"); +type ModelsListCommandModule = typeof import("../../commands/models/list.list-command.js"); +type ModelsStatusCommandModule = typeof import("../../commands/models/list.status-command.js"); export type RoutedCommandDefinition> = { parseArgs: TParse; @@ -36,16 +37,22 @@ function defineRoutedCommand>( } let configCliPromise: Promise | undefined; -let modelsListPromise: Promise | undefined; +let modelsListCommandPromise: Promise | undefined; +let modelsStatusCommandPromise: Promise | undefined; function loadConfigCli(): Promise { configCliPromise ??= import("../config-cli.js"); return configCliPromise; } -function loadModelsList(): Promise { - modelsListPromise ??= import("../../commands/models/list.js"); - return modelsListPromise; +function loadModelsListCommand(): Promise { + modelsListCommandPromise ??= import("../../commands/models/list.list-command.js"); + return modelsListCommandPromise; +} + +function loadModelsStatusCommand(): Promise { + modelsStatusCommandPromise ??= import("../../commands/models/list.status-command.js"); + return modelsStatusCommandPromise; } export const routedCommandDefinitions = { @@ -114,14 +121,14 @@ export const routedCommandDefinitions = { "models-list": defineRoutedCommand({ parseArgs: parseModelsListRouteArgs, runParsedArgs: async (args) => { - const { modelsListCommand } = await loadModelsList(); + const { modelsListCommand } = await loadModelsListCommand(); await modelsListCommand(args, defaultRuntime); }, }), "models-status": defineRoutedCommand({ parseArgs: parseModelsStatusRouteArgs, runParsedArgs: async (args) => { - const { modelsStatusCommand } = await loadModelsList(); + const { modelsStatusCommand } = await loadModelsStatusCommand(); await modelsStatusCommand(args, defaultRuntime); }, }), diff --git a/src/cli/program/routes.test.ts b/src/cli/program/routes.test.ts index 631d564f865..468458762b3 100644 --- a/src/cli/program/routes.test.ts +++ b/src/cli/program/routes.test.ts @@ -23,6 +23,12 @@ vi.mock("../../commands/models/list.js", () => ({ modelsListCommand: modelsListCommandMock, modelsStatusCommand: modelsStatusCommandMock, })); +vi.mock("../../commands/models/list.list-command.js", () => ({ + modelsListCommand: modelsListCommandMock, +})); +vi.mock("../../commands/models/list.status-command.js", () => ({ + modelsStatusCommand: modelsStatusCommandMock, +})); vi.mock("../daemon-cli/status.js", () => ({ runDaemonStatus: runDaemonStatusMock,