refactor(test): share status transcript log writer

This commit is contained in:
Peter Steinberger
2026-02-15 15:32:20 +00:00
parent 1911942363
commit 7ea14a1c87

View File

@@ -345,20 +345,27 @@ describe("buildStatusMessage", () => {
expect(text).not.toContain("💵 Cost:"); expect(text).not.toContain("💵 Cost:");
}); });
it("prefers cached prompt tokens from the session log", async () => { function writeTranscriptUsageLog(params: {
await withTempHome( dir: string;
async (dir) => { agentId: string;
const sessionId = "sess-1"; sessionId: string;
usage: {
input: number;
output: number;
cacheRead: number;
cacheWrite: number;
totalTokens: number;
};
}) {
const logPath = path.join( const logPath = path.join(
dir, params.dir,
".openclaw", ".openclaw",
"agents", "agents",
"main", params.agentId,
"sessions", "sessions",
`${sessionId}.jsonl`, `${params.sessionId}.jsonl`,
); );
fs.mkdirSync(path.dirname(logPath), { recursive: true }); fs.mkdirSync(path.dirname(logPath), { recursive: true });
fs.writeFileSync( fs.writeFileSync(
logPath, logPath,
[ [
@@ -367,6 +374,22 @@ describe("buildStatusMessage", () => {
message: { message: {
role: "assistant", role: "assistant",
model: "claude-opus-4-5", model: "claude-opus-4-5",
usage: params.usage,
},
}),
].join("\n"),
"utf-8",
);
}
it("prefers cached prompt tokens from the session log", async () => {
await withTempHome(
async (dir) => {
const sessionId = "sess-1";
writeTranscriptUsageLog({
dir,
agentId: "main",
sessionId,
usage: { usage: {
input: 1, input: 1,
output: 2, output: 2,
@@ -374,11 +397,7 @@ describe("buildStatusMessage", () => {
cacheWrite: 0, cacheWrite: 0,
totalTokens: 1003, totalTokens: 1003,
}, },
}, });
}),
].join("\n"),
"utf-8",
);
const text = buildStatusMessage({ const text = buildStatusMessage({
agent: { agent: {
@@ -408,24 +427,10 @@ describe("buildStatusMessage", () => {
await withTempHome( await withTempHome(
async (dir) => { async (dir) => {
const sessionId = "sess-worker1"; const sessionId = "sess-worker1";
const logPath = path.join( writeTranscriptUsageLog({
dir, dir,
".openclaw", agentId: "worker1",
"agents", sessionId,
"worker1",
"sessions",
`${sessionId}.jsonl`,
);
fs.mkdirSync(path.dirname(logPath), { recursive: true });
fs.writeFileSync(
logPath,
[
JSON.stringify({
type: "message",
message: {
role: "assistant",
model: "claude-opus-4-5",
usage: { usage: {
input: 1, input: 1,
output: 2, output: 2,
@@ -433,11 +438,7 @@ describe("buildStatusMessage", () => {
cacheWrite: 0, cacheWrite: 0,
totalTokens: 1003, totalTokens: 1003,
}, },
}, });
}),
].join("\n"),
"utf-8",
);
const text = buildStatusMessage({ const text = buildStatusMessage({
agent: { agent: {
@@ -467,24 +468,10 @@ describe("buildStatusMessage", () => {
await withTempHome( await withTempHome(
async (dir) => { async (dir) => {
const sessionId = "sess-worker2"; const sessionId = "sess-worker2";
const logPath = path.join( writeTranscriptUsageLog({
dir, dir,
".openclaw", agentId: "worker2",
"agents", sessionId,
"worker2",
"sessions",
`${sessionId}.jsonl`,
);
fs.mkdirSync(path.dirname(logPath), { recursive: true });
fs.writeFileSync(
logPath,
[
JSON.stringify({
type: "message",
message: {
role: "assistant",
model: "claude-opus-4-5",
usage: { usage: {
input: 2, input: 2,
output: 3, output: 3,
@@ -492,11 +479,7 @@ describe("buildStatusMessage", () => {
cacheWrite: 0, cacheWrite: 0,
totalTokens: 1205, totalTokens: 1205,
}, },
}, });
}),
].join("\n"),
"utf-8",
);
const text = buildStatusMessage({ const text = buildStatusMessage({
agent: { agent: {