Files
clawdbot/src/gateway/ws-log.test.ts
2026-01-03 17:34:52 +01:00

54 lines
1.5 KiB
TypeScript

import { describe, expect, test } from "vitest";
import {
formatForLog,
shortId,
summarizeAgentEventForWsLog,
} from "./ws-log.js";
describe("gateway ws log helpers", () => {
test("shortId compacts uuids and long strings", () => {
expect(shortId("12345678-1234-1234-1234-123456789abc")).toBe(
"12345678…9abc",
);
expect(shortId("a".repeat(30))).toBe("aaaaaaaaaaaa…aaaa");
expect(shortId("short")).toBe("short");
});
test("formatForLog formats errors and messages", () => {
const err = new Error("boom");
err.name = "TestError";
expect(formatForLog(err)).toContain("TestError");
expect(formatForLog(err)).toContain("boom");
const obj = { name: "Oops", message: "failed", code: "E1" };
expect(formatForLog(obj)).toBe("Oops: failed: code=E1");
});
test("summarizeAgentEventForWsLog extracts useful fields", () => {
const summary = summarizeAgentEventForWsLog({
runId: "12345678-1234-1234-1234-123456789abc",
stream: "assistant",
seq: 2,
data: { text: "hello world", mediaUrls: ["a", "b"] },
});
expect(summary).toMatchObject({
run: "12345678…9abc",
stream: "assistant",
aseq: 2,
text: "hello world",
media: 2,
});
const tool = summarizeAgentEventForWsLog({
runId: "run-1",
stream: "tool",
data: { phase: "start", name: "fetch", toolCallId: "call-1" },
});
expect(tool).toMatchObject({
stream: "tool",
tool: "start:fetch",
call: "call-1",
});
});
});