mirror of
https://github.com/getpaseo/paseo.git
synced 2026-11-03 07:03:18 +00:00
fix(pi): accept native system messages with text blocks
This commit is contained in:
@@ -497,3 +497,33 @@ test("traverses native system and summary messages without displaying private co
|
||||
userEntries: [{ id: "1", text: "question" }],
|
||||
});
|
||||
});
|
||||
|
||||
test("restores surrounding chat when native system content uses text blocks", async () => {
|
||||
const records = [
|
||||
{ type: "session", version: 3 },
|
||||
{ type: "message", id: "u", parentId: null, message: { role: "user", content: "question" } },
|
||||
{
|
||||
type: "message",
|
||||
id: "s",
|
||||
parentId: "u",
|
||||
message: { role: "system", content: [{ type: "text", text: "private instructions" }] },
|
||||
},
|
||||
{
|
||||
type: "message",
|
||||
id: "a",
|
||||
parentId: "s",
|
||||
message: { role: "assistant", content: [{ type: "text", text: "answer" }] },
|
||||
},
|
||||
];
|
||||
const history = readPiTranscript(records.map((record) => JSON.stringify(record)).join("\n"));
|
||||
expect(history.messages).toEqual([
|
||||
{ role: "user", content: "question" },
|
||||
{ role: "assistant", content: [{ type: "text", text: "answer" }] },
|
||||
]);
|
||||
expect(history.userEntries).toEqual([{ id: "u", text: "question" }]);
|
||||
const events = await collectHistory(history.messages, history.userEntries);
|
||||
expect(events.map((event) => event.item)).toEqual([
|
||||
{ type: "user_message", text: "question", messageId: "u" },
|
||||
{ type: "assistant_message", text: "answer", messageId: "pi-history-assistant-1" },
|
||||
]);
|
||||
});
|
||||
|
||||
@@ -13,7 +13,9 @@ const image = z
|
||||
.passthrough();
|
||||
const content = z.union([z.string(), z.array(z.union([text, image]))]);
|
||||
const message = z.discriminatedUnion("role", [
|
||||
z.object({ role: z.literal("system"), content: z.string().nullish() }).passthrough(),
|
||||
z
|
||||
.object({ role: z.literal("system"), content: z.union([z.string(), z.array(text)]).nullish() })
|
||||
.passthrough(),
|
||||
z.object({ role: z.literal("branchSummary"), summary: z.string() }).passthrough(),
|
||||
z.object({ role: z.literal("compactionSummary"), summary: z.string() }).passthrough(),
|
||||
z.object({ role: z.literal("user"), content }).passthrough(),
|
||||
|
||||
@@ -406,7 +406,11 @@ test("seeded compacted Pi history survives daemon reload, native rewind and Fork
|
||||
id: "system",
|
||||
parentId: null,
|
||||
timestamp,
|
||||
message: { role: "system", content: "private system context", timestamp: Date.now() },
|
||||
message: {
|
||||
role: "system",
|
||||
content: [{ type: "text", text: "private system context" }],
|
||||
timestamp: Date.now(),
|
||||
},
|
||||
},
|
||||
{
|
||||
type: "message",
|
||||
|
||||
Reference in New Issue
Block a user