mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 15:30:39 +00:00
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import { format } from "node:util";
|
|
import type { RuntimeEnv } from "../runtime.js";
|
|
|
|
type LoggerLike = {
|
|
info: (message: string) => void;
|
|
error: (message: string) => void;
|
|
};
|
|
|
|
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}`);
|
|
},
|
|
};
|
|
}
|
|
|
|
export function resolveRuntimeEnv(params: {
|
|
runtime?: RuntimeEnv;
|
|
logger: LoggerLike;
|
|
exitError?: (code: number) => Error;
|
|
}): RuntimeEnv {
|
|
return params.runtime ?? createLoggerBackedRuntime(params);
|
|
}
|
|
|
|
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"),
|
|
});
|
|
}
|