Files
moltbot/src/cli/command-bootstrap.ts
2026-05-02 10:55:59 +01:00

41 lines
1.4 KiB
TypeScript

import type { RuntimeEnv } from "../runtime.js";
import { createLazyImportLoader } from "../shared/lazy-promise.js";
import type { CliPluginRegistryPolicy } from "./command-catalog.js";
import { resolveCliCommandPathPolicy } from "./command-path-policy.js";
import { ensureCliPluginRegistryLoaded } from "./plugin-registry-loader.js";
const configGuardModuleLoader = createLazyImportLoader(() => import("./program/config-guard.js"));
function loadConfigGuardModule() {
return configGuardModuleLoader.load();
}
export async function ensureCliCommandBootstrap(params: {
runtime: RuntimeEnv;
commandPath: string[];
suppressDoctorStdout?: boolean;
skipConfigGuard?: boolean;
allowInvalid?: boolean;
loadPlugins?: boolean;
pluginRegistry?: CliPluginRegistryPolicy;
}) {
if (!params.skipConfigGuard) {
const { ensureConfigReady } = await loadConfigGuardModule();
await ensureConfigReady({
runtime: params.runtime,
commandPath: params.commandPath,
...(params.allowInvalid ? { allowInvalid: true } : {}),
...(params.suppressDoctorStdout ? { suppressDoctorStdout: true } : {}),
});
}
if (!params.loadPlugins) {
return;
}
const pluginRegistryLoadPolicy =
params.pluginRegistry ?? resolveCliCommandPathPolicy(params.commandPath).pluginRegistry;
await ensureCliPluginRegistryLoaded({
scope: pluginRegistryLoadPolicy.scope,
routeLogsToStderr: params.suppressDoctorStdout,
});
}