Files
clawdbot/src/agents/pi-embedded-runner.guard.test.ts
Peter Steinberger c379191f80 chore: migrate to oxlint and oxfmt
Co-authored-by: Christoph Nakazawa <christoph.pojer@gmail.com>
2026-01-14 15:02:19 +00:00

39 lines
1.3 KiB
TypeScript

import type { AgentMessage } from "@mariozechner/pi-agent-core";
import { SessionManager } from "@mariozechner/pi-coding-agent";
import { describe, expect, it } from "vitest";
import { guardSessionManager } from "./session-tool-result-guard-wrapper.js";
import { sanitizeToolUseResultPairing } from "./session-transcript-repair.js";
function assistantToolCall(id: string): AgentMessage {
return {
role: "assistant",
content: [{ type: "toolCall", id, name: "n", arguments: {} }],
} as AgentMessage;
}
describe("guardSessionManager integration", () => {
it("persists synthetic toolResult before subsequent assistant message", () => {
const sm = guardSessionManager(SessionManager.inMemory());
sm.appendMessage(assistantToolCall("call_1"));
sm.appendMessage({
role: "assistant",
content: [{ type: "text", text: "followup" }],
} as AgentMessage);
const messages = sm
.getEntries()
.filter((e) => e.type === "message")
.map((e) => (e as { message: AgentMessage }).message);
expect(messages.map((m) => m.role)).toEqual(["assistant", "toolResult", "assistant"]);
expect((messages[1] as { toolCallId?: string }).toolCallId).toBe("call_1");
expect(sanitizeToolUseResultPairing(messages).map((m) => m.role)).toEqual([
"assistant",
"toolResult",
"assistant",
]);
});
});