mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-28 10:49:59 +00:00
* fix status json plugin scan * fix status json metadata imports * fix channel metadata repair fallback * fix runtime channel id normalization fallback * fix status json env channel detection Co-authored-by: Peter Steinberger <steipete@gmail.com> * fix signed thinking legacy tool repair * fix: preserve first signed replay turn --------- Co-authored-by: Peter Steinberger <steipete@gmail.com>
78 lines
2.5 KiB
TypeScript
78 lines
2.5 KiB
TypeScript
import { routeLogsToStderr } from "../logging/console.js";
|
|
import type { RuntimeEnv } from "../runtime.js";
|
|
import { resolveCliArgvInvocation } from "./argv-invocation.js";
|
|
import { ensureCliCommandBootstrap } from "./command-bootstrap.js";
|
|
import { resolveCliStartupPolicy } from "./command-startup-policy.js";
|
|
|
|
type CliStartupPolicy = ReturnType<typeof resolveCliStartupPolicy>;
|
|
|
|
const hasJsonFlag = (argv: readonly string[]) =>
|
|
argv.some((arg) => arg === "--json" || arg.startsWith("--json="));
|
|
|
|
const hasVersionFlag = (argv: readonly string[]) =>
|
|
argv.some((arg) => arg === "--version" || arg === "-V");
|
|
|
|
export function resolveCliExecutionStartupContext(params: {
|
|
argv: string[];
|
|
jsonOutputMode: boolean;
|
|
env?: NodeJS.ProcessEnv;
|
|
routeMode?: boolean;
|
|
}) {
|
|
const invocation = resolveCliArgvInvocation(params.argv);
|
|
const { commandPath } = invocation;
|
|
return {
|
|
invocation,
|
|
commandPath,
|
|
startupPolicy: resolveCliStartupPolicy({
|
|
argv: params.argv,
|
|
commandPath,
|
|
jsonOutputMode: params.jsonOutputMode,
|
|
env: params.env,
|
|
routeMode: params.routeMode,
|
|
}),
|
|
};
|
|
}
|
|
|
|
export async function applyCliExecutionStartupPresentation(params: {
|
|
argv?: string[];
|
|
routeLogsToStderrOnSuppress?: boolean;
|
|
startupPolicy: CliStartupPolicy;
|
|
showBanner?: boolean;
|
|
version?: string;
|
|
}) {
|
|
if (params.startupPolicy.suppressDoctorStdout && params.routeLogsToStderrOnSuppress !== false) {
|
|
routeLogsToStderr();
|
|
}
|
|
if (params.startupPolicy.hideBanner || params.showBanner === false || !params.version) {
|
|
return;
|
|
}
|
|
if (params.argv && (hasJsonFlag(params.argv) || hasVersionFlag(params.argv))) {
|
|
return;
|
|
}
|
|
const { emitCliBanner } = await import("./banner.js");
|
|
if (params.argv) {
|
|
emitCliBanner(params.version, { argv: params.argv });
|
|
return;
|
|
}
|
|
emitCliBanner(params.version);
|
|
}
|
|
|
|
export async function ensureCliExecutionBootstrap(params: {
|
|
runtime: RuntimeEnv;
|
|
commandPath: string[];
|
|
startupPolicy: CliStartupPolicy;
|
|
allowInvalid?: boolean;
|
|
loadPlugins?: boolean;
|
|
skipConfigGuard?: boolean;
|
|
}) {
|
|
await ensureCliCommandBootstrap({
|
|
runtime: params.runtime,
|
|
commandPath: params.commandPath,
|
|
suppressDoctorStdout: params.startupPolicy.suppressDoctorStdout,
|
|
allowInvalid: params.allowInvalid,
|
|
loadPlugins: params.loadPlugins ?? params.startupPolicy.loadPlugins,
|
|
pluginRegistry: params.startupPolicy.pluginRegistry,
|
|
skipConfigGuard: params.skipConfigGuard ?? params.startupPolicy.skipConfigGuard,
|
|
});
|
|
}
|