openclaw/src/auto-reply/reply/subagents-utils.ts

33 lines
1.1 KiB
TypeScript

import type { SubagentRunRecord } from "../../agents/subagent-registry.js";
import { truncateUtf16Safe } from "../../utils.js";
export function resolveSubagentLabel(entry: SubagentRunRecord, fallback = "subagent") {
const raw = entry.label?.trim() || entry.task?.trim() || "";
return raw || fallback;
}
export function formatRunLabel(entry: SubagentRunRecord, options?: { maxLength?: number }) {
const raw = resolveSubagentLabel(entry);
const maxLength = options?.maxLength ?? 72;
if (!Number.isFinite(maxLength) || maxLength <= 0) {
return raw;
}
return raw.length > maxLength ? `${truncateUtf16Safe(raw, maxLength).trimEnd()}` : raw;
}
export function formatRunStatus(entry: SubagentRunRecord) {
if (!entry.endedAt) {
return "running";
}
const status = entry.outcome?.status ?? "done";
return status === "ok" ? "done" : status;
}
export function sortSubagentRuns(runs: SubagentRunRecord[]) {
return [...runs].toSorted((a, b) => {
const aTime = a.startedAt ?? a.createdAt ?? 0;
const bTime = b.startedAt ?? b.createdAt ?? 0;
return bTime - aTime;
});
}