From 3bc404d7c616756539ffaa023d4c28c9da413595 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Thu, 27 Aug 2026 13:24:50 -0700 Subject: [PATCH] refactor(cli): reuse function-shaped lazy loaders (#131144) --- src/cli/daemon-cli/status.gather.ts | 48 +++----------- src/cli/gateway-cli/register.ts | 64 ++++--------------- src/cli/program/routed-command-definitions.ts | 39 ++--------- 3 files changed, 25 insertions(+), 126 deletions(-) diff --git a/src/cli/daemon-cli/status.gather.ts b/src/cli/daemon-cli/status.gather.ts index 37119a143dea..922af3795c7e 100644 --- a/src/cli/daemon-cli/status.gather.ts +++ b/src/cli/daemon-cli/status.gather.ts @@ -66,7 +66,7 @@ import { detectPluginVersionDrift, type PluginVersionDriftReport, } from "../../plugins/plugin-version-drift.js"; -import { createLazyImportLoader } from "../../shared/lazy-promise.js"; +import { createLazyPromise } from "../../shared/lazy-promise.js"; import { VERSION } from "../../version.js"; import { resolveGatewayLocalPortOverride } from "../gateway-port-option.js"; import { parseTimeoutMsWithFallback } from "../parse-timeout.js"; @@ -133,45 +133,13 @@ type CliStatusSummary = { type GatewayConnectFailureKind = ReturnType["kind"]; -const gatewayProbeAuthModuleLoader = createLazyImportLoader( - () => import("../../gateway/probe-auth.js"), -); -const daemonInspectModuleLoader = createLazyImportLoader(() => import("../../daemon/inspect.js")); -const launchdModuleLoader = createLazyImportLoader(() => import("../../daemon/launchd.js")); -const serviceAuditModuleLoader = createLazyImportLoader( - () => import("../../daemon/service-audit.js"), -); -const gatewayTlsModuleLoader = createLazyImportLoader(() => import("../../infra/tls/gateway.js")); -const daemonProbeModuleLoader = createLazyImportLoader(() => import("./probe.js")); -const restartHealthModuleLoader = createLazyImportLoader(() => import("./restart-health.js")); - -function loadGatewayProbeAuthModule() { - return gatewayProbeAuthModuleLoader.load(); -} - -function loadDaemonInspectModule() { - return daemonInspectModuleLoader.load(); -} - -function loadLaunchdModule() { - return launchdModuleLoader.load(); -} - -function loadServiceAuditModule() { - return serviceAuditModuleLoader.load(); -} - -function loadGatewayTlsModule() { - return gatewayTlsModuleLoader.load(); -} - -function loadDaemonProbeModule() { - return daemonProbeModuleLoader.load(); -} - -function loadRestartHealthModule() { - return restartHealthModuleLoader.load(); -} +const loadGatewayProbeAuthModule = createLazyPromise(() => import("../../gateway/probe-auth.js")); +const loadDaemonInspectModule = createLazyPromise(() => import("../../daemon/inspect.js")); +const loadLaunchdModule = createLazyPromise(() => import("../../daemon/launchd.js")); +const loadServiceAuditModule = createLazyPromise(() => import("../../daemon/service-audit.js")); +const loadGatewayTlsModule = createLazyPromise(() => import("../../infra/tls/gateway.js")); +const loadDaemonProbeModule = createLazyPromise(() => import("./probe.js")); +const loadRestartHealthModule = createLazyPromise(() => import("./restart-health.js")); function resolveSnapshotRuntimeConfig(snapshot: ConfigFileSnapshot | null): OpenClawConfig | null { if (!snapshot?.valid || !snapshot.runtimeConfig) { diff --git a/src/cli/gateway-cli/register.ts b/src/cli/gateway-cli/register.ts index a77dba96084b..0c2c626f2cb7 100644 --- a/src/cli/gateway-cli/register.ts +++ b/src/cli/gateway-cli/register.ts @@ -17,7 +17,7 @@ import type { } from "../../logging/diagnostic-stability.js"; import type { WriteDiagnosticSupportExportResult } from "../../logging/diagnostic-support-export.js"; import { defaultRuntime } from "../../runtime.js"; -import { createLazyImportLoader } from "../../shared/lazy-promise.js"; +import { createLazyPromise } from "../../shared/lazy-promise.js"; import { inheritOptionFromParent } from "../command-options.js"; import { addGatewayServiceCommands } from "../daemon-cli/register-service-commands.js"; import { formatCliJsonFailure, rethrowExpectedCliError } from "../failure-output.js"; @@ -38,28 +38,26 @@ import { runGatewayResume, runGatewaySuspend } from "./suspend-cli.js"; type GatewayRpcOpts = Parameters[1]; -const configModuleLoader = createLazyImportLoader( +const loadConfigModule = createLazyPromise( () => import("../../config/read-best-effort-config.runtime.js"), ); -const gatewayStatusModuleLoader = createLazyImportLoader( - () => import("../../commands/gateway-status.js"), -); -const gatewayHealthModuleLoader = createLazyImportLoader(() => import("../../commands/health.js")); -const bonjourDiscoveryModuleLoader = createLazyImportLoader( +const loadGatewayStatusModule = createLazyPromise(() => import("../../commands/gateway-status.js")); +const loadGatewayHealthModule = createLazyPromise(() => import("../../commands/health.js")); +const loadBonjourDiscoveryModule = createLazyPromise( () => import("../../infra/bonjour-discovery.js"), ); -const wideAreaDnsModuleLoader = createLazyImportLoader(() => import("../../infra/widearea-dns.js")); -const healthStyleModuleLoader = createLazyImportLoader( +const loadWideAreaDnsModule = createLazyPromise(() => import("../../infra/widearea-dns.js")); +const loadHealthStyleModule = createLazyPromise( () => import("../../../packages/terminal-core/src/health-style.js"), ); -const usageFormatModuleLoader = createLazyImportLoader(() => import("../../utils/usage-format.js")); -const stabilityBundleModuleLoader = createLazyImportLoader( +const loadUsageFormatModule = createLazyPromise(() => import("../../utils/usage-format.js")); +const loadStabilityBundleModule = createLazyPromise( () => import("../../logging/diagnostic-stability-bundle.js"), ); -const supportExportModuleLoader = createLazyImportLoader( +const loadSupportExportModule = createLazyPromise( () => import("../../logging/diagnostic-support-export.js"), ); -const daemonStatusGatherModuleLoader = createLazyImportLoader( +const loadDaemonStatusGatherModule = createLazyPromise( () => import("../daemon-cli/status.gather.js"), ); @@ -70,46 +68,6 @@ type GatewayCliDependencies = { loadHealthStyleModule?: typeof loadHealthStyleModule; }; -function loadConfigModule() { - return configModuleLoader.load(); -} - -function loadGatewayStatusModule() { - return gatewayStatusModuleLoader.load(); -} - -function loadGatewayHealthModule() { - return gatewayHealthModuleLoader.load(); -} - -function loadBonjourDiscoveryModule() { - return bonjourDiscoveryModuleLoader.load(); -} - -function loadWideAreaDnsModule() { - return wideAreaDnsModuleLoader.load(); -} - -function loadHealthStyleModule() { - return healthStyleModuleLoader.load(); -} - -function loadUsageFormatModule() { - return usageFormatModuleLoader.load(); -} - -function loadStabilityBundleModule() { - return stabilityBundleModuleLoader.load(); -} - -function loadSupportExportModule() { - return supportExportModuleLoader.load(); -} - -function loadDaemonStatusGatherModule() { - return daemonStatusGatherModuleLoader.load(); -} - function gatewayCallOpts(cmd: Command, defaultTimeoutMs = DEFAULT_GATEWAY_RPC_TIMEOUT_MS): Command { return addGatewayClientOptions(cmd, { timeoutMs: defaultTimeoutMs }).option( "--json", diff --git a/src/cli/program/routed-command-definitions.ts b/src/cli/program/routed-command-definitions.ts index 254605f443d0..d439cadd08f0 100644 --- a/src/cli/program/routed-command-definitions.ts +++ b/src/cli/program/routed-command-definitions.ts @@ -1,6 +1,6 @@ // Lazy command implementations for routes that can bypass full Commander registration. import { defaultRuntime } from "../../runtime.js"; -import { createLazyImportLoader } from "../../shared/lazy-promise.js"; +import { createLazyPromise } from "../../shared/lazy-promise.js"; import { parseAgentsListRouteArgs, parseChannelsListRouteArgs, @@ -22,11 +22,6 @@ import { type RouteArgParser = (argv: string[]) => TArgs | null; type ParsedRouteArgs> = Exclude, null>; -type AgentsListCommandModule = typeof import("../../commands/agents.commands.list.js"); -type ConfigCliModule = typeof import("../config-cli.js"); -type ModelsListCommandModule = typeof import("../../commands/models/list.list-command.js"); -type ModelsStatusCommandModule = typeof import("../../commands/models/list.status-command.js"); -type TasksJsonCommandModule = typeof import("../../commands/tasks-json.js"); /** Typed parsed route definition that binds one parser to its runner. */ type RoutedCommandDefinition> = { @@ -46,39 +41,17 @@ function defineRoutedCommand>( return definition; } -const configCliLoader = createLazyImportLoader(() => import("../config-cli.js")); -const agentsListCommandLoader = createLazyImportLoader( +const loadConfigCli = createLazyPromise(() => import("../config-cli.js")); +const loadAgentsListCommand = createLazyPromise( () => import("../../commands/agents.commands.list.js"), ); -const modelsListCommandLoader = createLazyImportLoader( +const loadModelsListCommand = createLazyPromise( () => import("../../commands/models/list.list-command.js"), ); -const modelsStatusCommandLoader = createLazyImportLoader( +const loadModelsStatusCommand = createLazyPromise( () => import("../../commands/models/list.status-command.js"), ); -const tasksJsonCommandLoader = createLazyImportLoader( - () => import("../../commands/tasks-json.js"), -); - -function loadConfigCli(): Promise { - return configCliLoader.load(); -} - -function loadAgentsListCommand(): Promise { - return agentsListCommandLoader.load(); -} - -function loadModelsListCommand(): Promise { - return modelsListCommandLoader.load(); -} - -function loadModelsStatusCommand(): Promise { - return modelsStatusCommandLoader.load(); -} - -function loadTasksJsonCommand(): Promise { - return tasksJsonCommandLoader.load(); -} +const loadTasksJsonCommand = createLazyPromise(() => import("../../commands/tasks-json.js")); /** Route id to lazy parser/runner definition. */ export const routedCommandDefinitions = {