import { isTruthyEnvValue } from "../infra/env.js" ;
import { defaultRuntime } from "../runtime.js" ;
import { resolveCliArgvInvocation } from "./argv-invocation.js" ;
import { hasFlag } from "./argv.js" ;
import {
applyCliExecutionStartupPresentation,
ensureCliExecutionBootstrap,
resolveCliExecutionStartupContext,
} from "./command-execution-startup.js" ;
import { findRoutedCommand } from "./program/routes.js" ;
async function prepareRoutedCommand(params: {
argv: string[];
commandPath: string[];
loadPlugins?: boolean | ((argv: string[]) => boolean );
}) {
const { startupPolicy } = resolveCliExecutionStartupContext({
argv: params.argv,
jsonOutputMode: hasFlag(params.argv, "--json" ),
env: process.env,
routeMode: true ,
});
const { VERSION } = await import ("../version.js" );
await applyCliExecutionStartupPresentation({
argv: params.argv,
routeLogsToStderrOnSuppress: false ,
startupPolicy,
showBanner: process.stdout.isTTY && !startupPolicy.suppressDoctorStdout,
version: VERSION,
});
const shouldLoadPlugins =
typeof params.loadPlugins === "function" ? params.loadPlugins(params.argv) : params.loadPlugins;
await ensureCliExecutionBootstrap({
runtime: defaultRuntime,
commandPath: params.commandPath,
startupPolicy,
loadPlugins: shouldLoadPlugins ?? startupPolicy.loadPlugins,
});
}
export async function tryRouteCli(argv: string[]): Promise<boolean > {
if (isTruthyEnvValue(process.env.OPENCLAW_DISABLE_ROUTE_FIRST)) {
return false ;
}
const invocation = resolveCliArgvInvocation(argv);
if (invocation.hasHelpOrVersion) {
return false ;
}
if (!invocation.commandPath[0 ]) {
return false ;
}
const route = findRoutedCommand(invocation.commandPath);
if (!route) {
return false ;
}
await prepareRoutedCommand({
argv,
commandPath: invocation.commandPath,
loadPlugins: route.loadPlugins,
});
return route.run(argv);
}
Messung V0.5 in Prozent C=92 H=84 G=87
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-06-06)
¤
*© Formatika GbR, Deutschland