94 lines
2.2 KiB
TypeScript
94 lines
2.2 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import type { ClawdbotConfig } from "../config/config.js";
|
|
import { resolveUserPath } from "../utils.js";
|
|
import { createCacheTrace } from "./cache-trace.js";
|
|
|
|
describe("createCacheTrace", () => {
|
|
it("returns null when diagnostics cache tracing is disabled", () => {
|
|
const trace = createCacheTrace({
|
|
cfg: {} as ClawdbotConfig,
|
|
env: {},
|
|
});
|
|
|
|
expect(trace).toBeNull();
|
|
});
|
|
|
|
it("honors diagnostics cache trace config and expands file paths", () => {
|
|
const lines: string[] = [];
|
|
const trace = createCacheTrace({
|
|
cfg: {
|
|
diagnostics: {
|
|
cacheTrace: {
|
|
enabled: true,
|
|
filePath: "~/.clawdbot/logs/cache-trace.jsonl",
|
|
},
|
|
},
|
|
},
|
|
env: {},
|
|
writer: {
|
|
filePath: "memory",
|
|
write: (line) => lines.push(line),
|
|
},
|
|
});
|
|
|
|
expect(trace).not.toBeNull();
|
|
expect(trace?.filePath).toBe(resolveUserPath("~/.clawdbot/logs/cache-trace.jsonl"));
|
|
|
|
trace?.recordStage("session:loaded", {
|
|
messages: [],
|
|
system: "sys",
|
|
});
|
|
|
|
expect(lines.length).toBe(1);
|
|
});
|
|
|
|
it("records empty prompt/system values when enabled", () => {
|
|
const lines: string[] = [];
|
|
const trace = createCacheTrace({
|
|
cfg: {
|
|
diagnostics: {
|
|
cacheTrace: {
|
|
enabled: true,
|
|
includePrompt: true,
|
|
includeSystem: true,
|
|
},
|
|
},
|
|
},
|
|
env: {},
|
|
writer: {
|
|
filePath: "memory",
|
|
write: (line) => lines.push(line),
|
|
},
|
|
});
|
|
|
|
trace?.recordStage("prompt:before", { prompt: "", system: "" });
|
|
|
|
const event = JSON.parse(lines[0]?.trim() ?? "{}") as Record<string, unknown>;
|
|
expect(event.prompt).toBe("");
|
|
expect(event.system).toBe("");
|
|
});
|
|
|
|
it("respects env overrides for enablement", () => {
|
|
const lines: string[] = [];
|
|
const trace = createCacheTrace({
|
|
cfg: {
|
|
diagnostics: {
|
|
cacheTrace: {
|
|
enabled: true,
|
|
},
|
|
},
|
|
},
|
|
env: {
|
|
CLAWDBOT_CACHE_TRACE: "0",
|
|
},
|
|
writer: {
|
|
filePath: "memory",
|
|
write: (line) => lines.push(line),
|
|
},
|
|
});
|
|
|
|
expect(trace).toBeNull();
|
|
});
|
|
});
|