import { formatDurationPrecise } from "../infra/format-time/format-duration.js";
export const formatKTokens = (value) => `${(value / 1000).toFixed(value >= 10_000 ? 0 : 1)}k`;
export const formatDuration = (ms) => {
    if (ms == null || !Number.isFinite(ms)) {
        return "unknown";
    }
    return formatDurationPrecise(ms, { decimals: 1 });
};
export const shortenText = (value, maxLen) => {
    const chars = Array.from(value);
    if (chars.length <= maxLen) {
        return value;
    }
    return `${chars.slice(0, Math.max(0, maxLen - 1)).join("")}…`;
};
export const formatTokensCompact = (sess) => {
    const used = sess.totalTokens;
    const ctx = sess.contextTokens;
    if (used == null) {
        return ctx ? `unknown/${formatKTokens(ctx)} (?%)` : "unknown used";
    }
    if (!ctx) {
        return `${formatKTokens(used)} used`;
    }
    const pctLabel = sess.percentUsed != null ? `${sess.percentUsed}%` : "?%";
    return `${formatKTokens(used)}/${formatKTokens(ctx)} (${pctLabel})`;
};
export const formatDaemonRuntimeShort = (runtime) => {
    if (!runtime) {
        return null;
    }
    const status = runtime.status ?? "unknown";
    const details = [];
    if (runtime.pid) {
        details.push(`pid ${runtime.pid}`);
    }
    if (runtime.state && runtime.state.toLowerCase() !== status) {
        details.push(`state ${runtime.state}`);
    }
    const detail = runtime.detail?.replace(/\s+/g, " ").trim() || "";
    const noisyLaunchctlDetail = runtime.missingUnit === true && detail.toLowerCase().includes("could not find service");
    if (detail && !noisyLaunchctlDetail) {
        details.push(detail);
    }
    return details.length > 0 ? `${status} (${details.join(", ")})` : status;
};
export function formatAge(ms) {
    const seconds = Math.floor(ms / 1000);
    if (seconds < 60)
        return seconds + "s";
    const minutes = Math.floor(seconds / 60);
    if (minutes < 60)
        return minutes + "m";
    const hours = Math.floor(minutes / 60);
    if (hours < 24)
        return hours + "h";
    const days = Math.floor(hours / 24);
    return days + "d";
}
