



























@@ -12,6 +12,42 @@ import {
12121313const { createSessionStoreDir, openClient } = setupGatewaySessionsTestHarness();
141415+async function writeTranscriptMessage(
16+dir: string,
17+sessionId: string,
18+content: string,
19+): Promise<void> {
20+await fs.writeFile(
21+path.join(dir, `${sessionId}.jsonl`),
22+[
23+JSON.stringify({ type: "session", version: 1, id: sessionId }),
24+JSON.stringify({ message: { role: "assistant", content } }),
25+].join("\n"),
26+"utf-8",
27+);
28+}
29+30+async function previewMainAliasFromStore(params: {
31+transcripts: Record<string, string>;
32+store: Record<string, { sessionId: string; updatedAt: number }>;
33+}): Promise<Awaited<ReturnType<typeof getMainPreviewEntry>>> {
34+const { dir, storePath } = await createSessionStoreDir();
35+testState.agentsConfig = { list: [{ id: "ops", default: true }] };
36+testState.sessionConfig = { mainKey: "work" };
37+38+for (const [sessionId, content] of Object.entries(params.transcripts)) {
39+await writeTranscriptMessage(dir, sessionId, content);
40+}
41+await fs.writeFile(storePath, JSON.stringify(params.store, null, 2), "utf-8");
42+43+const { ws } = await openClient();
44+try {
45+return await getMainPreviewEntry(ws);
46+} finally {
47+ws.close();
48+}
49+}
50+1551test("sessions.preview returns transcript previews", async () => {
1652const { dir } = await createSessionStoreDir();
1753const sessionId = "sess-preview";
@@ -41,85 +77,40 @@ test("sessions.preview returns transcript previews", async () => {
4177});
42784379test("sessions.preview resolves legacy mixed-case main alias with custom mainKey", async () => {
44-const { dir, storePath } = await createSessionStoreDir();
45-testState.agentsConfig = { list: [{ id: "ops", default: true }] };
46-testState.sessionConfig = { mainKey: "work" };
4780const sessionId = "sess-legacy-main";
48-const transcriptPath = path.join(dir, `${sessionId}.jsonl`);
49-const lines = [
50-JSON.stringify({ type: "session", version: 1, id: sessionId }),
51-JSON.stringify({ message: { role: "assistant", content: "Legacy alias transcript" } }),
52-];
53-await fs.writeFile(transcriptPath, lines.join("\n"), "utf-8");
54-await fs.writeFile(
55-storePath,
56-JSON.stringify(
57-{
58-"agent:ops:MAIN": {
59- sessionId,
60-updatedAt: Date.now(),
61-},
62-},
63-null,
64-2,
65-),
66-"utf-8",
67-);
688169-const { ws } = await openClient();
70-const entry = await getMainPreviewEntry(ws);
82+const entry = await previewMainAliasFromStore({
83+transcripts: {
84+[sessionId]: "Legacy alias transcript",
85+},
86+store: {
87+"agent:ops:MAIN": {
88+ sessionId,
89+updatedAt: Date.now(),
90+},
91+},
92+});
7193expect(entry?.items[0]?.text).toContain("Legacy alias transcript");
72-73-ws.close();
7494});
75957696test("sessions.preview prefers the freshest duplicate row for a legacy mixed-case main alias", async () => {
77-const { dir, storePath } = await createSessionStoreDir();
78-testState.agentsConfig = { list: [{ id: "ops", default: true }] };
79-testState.sessionConfig = { mainKey: "work" };
80-81-const staleTranscriptPath = path.join(dir, "sess-stale-main.jsonl");
82-const freshTranscriptPath = path.join(dir, "sess-fresh-main.jsonl");
83-await fs.writeFile(
84-staleTranscriptPath,
85-[
86-JSON.stringify({ type: "session", version: 1, id: "sess-stale-main" }),
87-JSON.stringify({ message: { role: "assistant", content: "stale preview" } }),
88-].join("\n"),
89-"utf-8",
90-);
91-await fs.writeFile(
92-freshTranscriptPath,
93-[
94-JSON.stringify({ type: "session", version: 1, id: "sess-fresh-main" }),
95-JSON.stringify({ message: { role: "assistant", content: "fresh preview" } }),
96-].join("\n"),
97-"utf-8",
98-);
99-await fs.writeFile(
100-storePath,
101-JSON.stringify(
102-{
103-"agent:ops:work": {
104-sessionId: "sess-stale-main",
105-updatedAt: 1,
106-},
107-"agent:ops:WORK": {
108-sessionId: "sess-fresh-main",
109-updatedAt: 2,
110-},
97+const entry = await previewMainAliasFromStore({
98+transcripts: {
99+"sess-stale-main": "stale preview",
100+"sess-fresh-main": "fresh preview",
101+},
102+store: {
103+"agent:ops:work": {
104+sessionId: "sess-stale-main",
105+updatedAt: 1,
111106},
112-null,
113-2,
114-),
115-"utf-8",
116-);
117-118-const { ws } = await openClient();
119-const entry = await getMainPreviewEntry(ws);
107+"agent:ops:WORK": {
108+sessionId: "sess-fresh-main",
109+updatedAt: 2,
110+},
111+},
112+});
120113expect(entry?.items[0]?.text).toContain("fresh preview");
121-122-ws.close();
123114});
124115125116test("sessions.resolve and mutators clean legacy main-alias ghost keys", async () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。