mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-18 13:30:48 +00:00
66 lines
1.9 KiB
TypeScript
66 lines
1.9 KiB
TypeScript
import { format } from "node:util";
|
|
import type { RuntimeEnv } from "../runtime.js";
|
|
export type { RuntimeEnv } from "../runtime.js";
|
|
export { createNonExitingRuntime, defaultRuntime } from "../runtime.js";
|
|
export {
|
|
danger,
|
|
info,
|
|
isVerbose,
|
|
isYes,
|
|
logVerbose,
|
|
logVerboseConsole,
|
|
setVerbose,
|
|
setYes,
|
|
shouldLogVerbose,
|
|
success,
|
|
warn,
|
|
} from "../globals.js";
|
|
export * from "../logging.js";
|
|
export { waitForAbortSignal } from "../infra/abort-signal.js";
|
|
export { registerUnhandledRejectionHandler } from "../infra/unhandled-rejections.js";
|
|
|
|
type LoggerLike = {
|
|
info: (message: string) => void;
|
|
error: (message: string) => void;
|
|
};
|
|
|
|
/** Adapt a simple logger into the RuntimeEnv contract used by shared plugin SDK helpers. */
|
|
export function createLoggerBackedRuntime(params: {
|
|
logger: LoggerLike;
|
|
exitError?: (code: number) => Error;
|
|
}): RuntimeEnv {
|
|
return {
|
|
log: (...args) => {
|
|
params.logger.info(format(...args));
|
|
},
|
|
error: (...args) => {
|
|
params.logger.error(format(...args));
|
|
},
|
|
exit: (code: number): never => {
|
|
throw params.exitError?.(code) ?? new Error(`exit ${code}`);
|
|
},
|
|
};
|
|
}
|
|
|
|
/** Reuse an existing runtime when present, otherwise synthesize one from the provided logger. */
|
|
export function resolveRuntimeEnv(params: {
|
|
runtime?: RuntimeEnv;
|
|
logger: LoggerLike;
|
|
exitError?: (code: number) => Error;
|
|
}): RuntimeEnv {
|
|
return params.runtime ?? createLoggerBackedRuntime(params);
|
|
}
|
|
|
|
/** Resolve a runtime that treats exit requests as unsupported errors instead of process termination. */
|
|
export function resolveRuntimeEnvWithUnavailableExit(params: {
|
|
runtime?: RuntimeEnv;
|
|
logger: LoggerLike;
|
|
unavailableMessage?: string;
|
|
}): RuntimeEnv {
|
|
return resolveRuntimeEnv({
|
|
runtime: params.runtime,
|
|
logger: params.logger,
|
|
exitError: () => new Error(params.unavailableMessage ?? "Runtime exit not available"),
|
|
});
|
|
}
|