Files
clawdbot/apps/macos/Sources/Clawdis/Resources/WebChat/format-error.js
2025-12-10 11:31:28 +00:00

32 lines
1.1 KiB
JavaScript

// Shared formatter for WebChat bootstrap errors so UI shows actionable messages.
export const formatError = (err) => {
if (!err) return "Unknown error";
if (err instanceof Error) return err.stack || err.message || String(err);
const isCloseEvent =
(typeof CloseEvent !== "undefined" && err instanceof CloseEvent) ||
(typeof err?.code === "number" &&
(err?.reason !== undefined || err?.wasClean !== undefined));
if (isCloseEvent) {
const reason = err.reason?.trim();
const parts = [`WebSocket closed (${err.code})`];
if (reason) parts.push(`reason: ${reason}`);
if (err.wasClean) parts.push("clean close");
return parts.join("; ");
}
const isWsErrorEvent =
err?.type === "error" && typeof err?.target?.readyState === "number";
if (isWsErrorEvent) {
const states = ["connecting", "open", "closing", "closed"];
const stateLabel = states[err.target.readyState] ?? err.target.readyState;
return `WebSocket error (state: ${stateLabel})`;
}
try {
return JSON.stringify(err);
} catch {
return String(err);
}
};