mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 08:20:43 +00:00
fix(cli): lazy load model commands
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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 },
|
||||
{
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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<string>(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),
|
||||
|
||||
@@ -17,7 +17,8 @@ type RouteArgParser<TArgs> = (argv: string[]) => TArgs | null;
|
||||
|
||||
type ParsedRouteArgs<TParse extends RouteArgParser<unknown>> = Exclude<ReturnType<TParse>, 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<TParse extends RouteArgParser<unknown>> = {
|
||||
parseArgs: TParse;
|
||||
@@ -36,16 +37,22 @@ function defineRoutedCommand<TParse extends RouteArgParser<unknown>>(
|
||||
}
|
||||
|
||||
let configCliPromise: Promise<ConfigCliModule> | undefined;
|
||||
let modelsListPromise: Promise<ModelsListModule> | undefined;
|
||||
let modelsListCommandPromise: Promise<ModelsListCommandModule> | undefined;
|
||||
let modelsStatusCommandPromise: Promise<ModelsStatusCommandModule> | undefined;
|
||||
|
||||
function loadConfigCli(): Promise<ConfigCliModule> {
|
||||
configCliPromise ??= import("../config-cli.js");
|
||||
return configCliPromise;
|
||||
}
|
||||
|
||||
function loadModelsList(): Promise<ModelsListModule> {
|
||||
modelsListPromise ??= import("../../commands/models/list.js");
|
||||
return modelsListPromise;
|
||||
function loadModelsListCommand(): Promise<ModelsListCommandModule> {
|
||||
modelsListCommandPromise ??= import("../../commands/models/list.list-command.js");
|
||||
return modelsListCommandPromise;
|
||||
}
|
||||
|
||||
function loadModelsStatusCommand(): Promise<ModelsStatusCommandModule> {
|
||||
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);
|
||||
},
|
||||
}),
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user