



























@@ -59,6 +59,27 @@ function createSessionTranscript(params: {
5959return sessionFile;
6060}
616162+function requireRecord(value: unknown, label: string): Record<string, unknown> {
63+if (!value || typeof value !== "object") {
64+throw new Error(`expected ${label}`);
65+}
66+return value as Record<string, unknown>;
67+}
68+69+function expectMessageFields(value: unknown, expected: { role: string; content?: string }) {
70+const message = requireRecord(value, "message");
71+expect(message.role).toBe(expected.role);
72+if ("content" in expected) {
73+expect(message.content).toBe(expected.content);
74+}
75+}
76+77+function expectCompactionSummary(value: unknown, summary: string) {
78+const message = requireRecord(value, "compaction summary");
79+expect(message.role).toBe("compactionSummary");
80+expect(message.summary).toBe(summary);
81+}
82+6283describe("loadCliSessionHistoryMessages", () => {
6384afterEach(() => {
6485vi.unstubAllEnvs();
@@ -81,14 +102,14 @@ describe("loadCliSessionHistoryMessages", () => {
81102});
8210383104try {
84-expect(
85-await loadCliSessionHistoryMessages({
86- sessionId: "session-test",
87- sessionFile: outsideFile,
88- sessionKey: "agent:main:main",
89- agentId: "main",
90- }),
91-).toMatchObject([{ role: "user", content: "expected history" }]);
105+const history = await loadCliSessionHistoryMessages({
106+sessionId: "session-test",
107+sessionFile: outsideFile,
108+sessionKey: "agent:main:main",
109+agentId: "main",
110+});
111+expect(history).toHaveLength(1);
112+expectMessageFields(history[0], { role: "user", content: "expected history" });
92113} finally {
93114fs.rmSync(stateDir, { recursive: true, force: true });
94115fs.rmSync(outsideDir, { recursive: true, force: true });
@@ -115,8 +136,8 @@ describe("loadCliSessionHistoryMessages", () => {
115136agentId: "main",
116137});
117138expect(history).toHaveLength(MAX_CLI_SESSION_HISTORY_MESSAGES);
118-expect(history[0]).toMatchObject({ role: "user", content: "msg-25" });
119-expect(history.at(-1)).toMatchObject({
139+expectMessageFields(history[0], { role: "user", content: "msg-25" });
140+expectMessageFields(history.at(-1), {
120141role: "user",
121142content: `msg-${MAX_CLI_SESSION_HISTORY_MESSAGES + 24}`,
122143});
@@ -201,19 +222,19 @@ describe("loadCliSessionHistoryMessages", () => {
201222});
202223203224try {
204-expect(
205-await loadCliSessionHistoryMessages({
206-sessionId: "session-custom-store",
207- sessionFile,
208-sessionKey: "agent:main:main",
209-agentId: "main",
210-config: {
211-session: {
212-store: storePath,
213-},
225+const history = await loadCliSessionHistoryMessages({
226+sessionId: "session-custom-store",
227+ sessionFile,
228+sessionKey: "agent:main:main",
229+agentId: "main",
230+config: {
231+session: {
232+store: storePath,
214233},
215-}),
216-).toMatchObject([{ role: "user", content: "custom store history" }]);
234+},
235+});
236+expect(history).toHaveLength(1);
237+expectMessageFields(history[0], { role: "user", content: "custom store history" });
217238} finally {
218239fs.rmSync(stateDir, { recursive: true, force: true });
219240fs.rmSync(customStoreDir, { recursive: true, force: true });
@@ -271,8 +292,8 @@ describe("loadCliSessionReseedMessages", () => {
271292rawTranscriptReseedReason: "missing-transcript",
272293});
273294expect(reseed).toHaveLength(MAX_CLI_SESSION_HISTORY_MESSAGES);
274-expect(reseed[0]).toMatchObject({ role: "user", content: "raw-25" });
275-expect(reseed.at(-1)).toMatchObject({
295+expectMessageFields(reseed[0], { role: "user", content: "raw-25" });
296+expectMessageFields(reseed.at(-1), {
276297role: "user",
277298content: `raw-${MAX_CLI_SESSION_HISTORY_MESSAGES + 24}`,
278299});
@@ -363,10 +384,9 @@ describe("loadCliSessionReseedMessages", () => {
363384sessionKey: "agent:main:main",
364385agentId: "main",
365386});
366-expect(reseed).toMatchObject([
367-{ role: "compactionSummary", summary: "safe compacted summary" },
368-{ role: "user", content: "post-compaction ask" },
369-]);
387+expect(reseed).toHaveLength(2);
388+expectCompactionSummary(reseed[0], "safe compacted summary");
389+expectMessageFields(reseed[1], { role: "user", content: "post-compaction ask" });
370390expect(buildCliSessionHistoryPrompt({ messages: reseed, prompt: "next" })).toContain(
371391"Compaction summary: safe compacted summary",
372392);
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。