Files
openclaw/src/infra/runtime-status.ts
2026-04-07 15:53:50 +01:00

37 lines
963 B
TypeScript

import { normalizeLowercaseStringOrEmpty } from "../shared/string-coerce.js";
type RuntimeStatusFormatInput = {
status?: string;
pid?: number;
state?: string;
details?: string[];
};
export function formatRuntimeStatusWithDetails({
status,
pid,
state,
details = [],
}: RuntimeStatusFormatInput): string {
const runtimeStatus = status?.trim() || "unknown";
const fullDetails: string[] = [];
if (pid) {
fullDetails.push(`pid ${pid}`);
}
const normalizedState = state?.trim();
if (
normalizedState &&
normalizeLowercaseStringOrEmpty(normalizedState) !==
normalizeLowercaseStringOrEmpty(runtimeStatus)
) {
fullDetails.push(`state ${normalizedState}`);
}
for (const detail of details) {
const normalizedDetail = detail.trim();
if (normalizedDetail) {
fullDetails.push(normalizedDetail);
}
}
return fullDetails.length > 0 ? `${runtimeStatus} (${fullDetails.join(", ")})` : runtimeStatus;
}