openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
64 lines (63 loc) • 2.8 kB
JavaScript
import { i as resolveRequiredHomeDir } from "./home-dir-Dc6nN6HB.mjs";
import "./src-BirUqOZp.mjs";
import { n as formatByteSize } from "./format-C1IjPxxo.mjs";
import { p as shortenHomePath } from "./utils-CitNzLyF.mjs";
import { r as resolveStateDir } from "./state-dir-CYkBUd_G.mjs";
import "./paths-BP0DYpE8.mjs";
import { r as tryReadDiskSpace } from "./disk-space-CtKhSv74.mjs";
import { t as note } from "./note-Bi0VsI6R.mjs";
import os from "node:os";
//#region src/commands/doctor-disk-space.ts
const DISK_SPACE_CHECK_ID = "core/doctor/disk-space";
const CRITICAL_BYTES = 104857600;
const WARNING_BYTES = 524288e3;
/** Floor MB/KB values so display rounding never crosses a warning threshold. */
function formatBytes(bytes) {
if (bytes < 0 || !Number.isFinite(bytes)) return "unknown";
return formatByteSize(bytes, {
style: "legacy-binary",
maxUnit: "giga",
separator: " ",
fractionDigits: (_value, unit) => unit === "byte" ? null : unit === "giga" ? 1 : 0,
floorUnits: ["kilo", "mega"]
});
}
function collectDiskSpaceWarnings() {
const env = process.env;
const homedir = () => resolveRequiredHomeDir(env, os.homedir);
const stateDir = resolveStateDir(env, homedir);
const snapshot = tryReadDiskSpace(stateDir);
if (!snapshot || !(snapshot.availableBytes < WARNING_BYTES)) return null;
const displayStateDir = shortenHomePath(stateDir);
const { availableBytes } = snapshot;
const displayFreeSpace = formatBytes(availableBytes);
const critical = availableBytes < CRITICAL_BYTES;
return {
critical,
stateDir,
displayFreeSpace,
message: critical ? `CRITICAL: only ${displayFreeSpace} free on the partition containing ${displayStateDir}.` : `Low disk space: ${displayFreeSpace} free on the partition containing ${displayStateDir}.`,
details: critical ? ["Config writes, session transcripts, and log rotation may fail silently.", "Free up disk space immediately to avoid data loss."] : ["Consider freeing space to prevent future config/session write failures."]
};
}
/** Collects read-only structured findings for low disk space around the state directory. */
function collectDiskSpaceHealthFindings() {
const result = collectDiskSpaceWarnings();
if (!result) return [];
return [{
checkId: DISK_SPACE_CHECK_ID,
severity: result.critical ? "error" : "warning",
message: result.message,
path: result.stateDir,
target: result.displayFreeSpace,
requirement: result.critical ? "critical-free-space" : "low-free-space",
fixHint: result.details.join(" ")
}];
}
function noteDiskSpace() {
const result = collectDiskSpaceWarnings();
if (!result) return;
note([result.message, ...result.details].map((line) => `- ${line}`).join("\n"), "Disk space");
}
//#endregion
export { formatBytes as n, noteDiskSpace as r, collectDiskSpaceHealthFindings as t };