mirror of https://github.com/openclaw/openclaw.git
53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import type { AgentMessage } from "@mariozechner/pi-agent-core";
|
|
import { SessionManager } from "@mariozechner/pi-coding-agent";
|
|
import { afterEach, describe, expect, it } from "vitest";
|
|
import {
|
|
onSessionTranscriptUpdate,
|
|
type SessionTranscriptUpdate,
|
|
} from "../sessions/transcript-events.js";
|
|
import { guardSessionManager } from "./session-tool-result-guard-wrapper.js";
|
|
|
|
const listeners: Array<() => void> = [];
|
|
|
|
afterEach(() => {
|
|
while (listeners.length > 0) {
|
|
listeners.pop()?.();
|
|
}
|
|
});
|
|
|
|
describe("guardSessionManager transcript updates", () => {
|
|
it("includes the session key when broadcasting appended non-tool-result messages", () => {
|
|
const updates: SessionTranscriptUpdate[] = [];
|
|
listeners.push(onSessionTranscriptUpdate((update) => updates.push(update)));
|
|
|
|
const sm = SessionManager.inMemory();
|
|
const sessionFile = "/tmp/openclaw-session-message-events.jsonl";
|
|
Object.assign(sm, {
|
|
getSessionFile: () => sessionFile,
|
|
});
|
|
|
|
const guarded = guardSessionManager(sm, {
|
|
agentId: "main",
|
|
sessionKey: "agent:main:worker",
|
|
});
|
|
const appendMessage = guarded.appendMessage.bind(guarded) as unknown as (
|
|
message: AgentMessage,
|
|
) => void;
|
|
|
|
appendMessage({
|
|
role: "assistant",
|
|
content: [{ type: "text", text: "hello from subagent" }],
|
|
timestamp: Date.now(),
|
|
} as AgentMessage);
|
|
|
|
expect(updates).toHaveLength(1);
|
|
expect(updates[0]).toMatchObject({
|
|
sessionFile,
|
|
sessionKey: "agent:main:worker",
|
|
message: {
|
|
role: "assistant",
|
|
},
|
|
});
|
|
});
|
|
});
|