76 lines
1.9 KiB
TypeScript
76 lines
1.9 KiB
TypeScript
import { expect, test } from "@rstest/core";
|
|
|
|
import {
|
|
buildReferenceMessageMetadata,
|
|
readReferenceMessageContexts,
|
|
type SidecarContext,
|
|
} from "@/core/sidecar";
|
|
|
|
const contexts: SidecarContext[] = [
|
|
{
|
|
type: "referenced_message",
|
|
label: "Selected assistant text #2",
|
|
messageId: "parent-ai-1",
|
|
role: "assistant",
|
|
content: "Build it as a side conversation.",
|
|
},
|
|
{
|
|
type: "referenced_message",
|
|
label: "Selected assistant text #2",
|
|
messageId: "parent-ai-1",
|
|
role: "assistant",
|
|
content: "Keep the cited snippets compact.",
|
|
},
|
|
];
|
|
|
|
test("builds visible message reference metadata for selected contexts", () => {
|
|
expect(buildReferenceMessageMetadata(contexts)).toEqual({
|
|
referenced_message_count: 2,
|
|
referenced_message_ids: ["parent-ai-1", "parent-ai-1"],
|
|
referenced_message_roles: ["assistant", "assistant"],
|
|
referenced_message_contexts: [
|
|
{
|
|
label: "Selected assistant text #2",
|
|
message_id: "parent-ai-1",
|
|
role: "assistant",
|
|
content: "Build it as a side conversation.",
|
|
},
|
|
{
|
|
label: "Selected assistant text #2",
|
|
message_id: "parent-ai-1",
|
|
role: "assistant",
|
|
content: "Keep the cited snippets compact.",
|
|
},
|
|
],
|
|
});
|
|
});
|
|
|
|
test("reads visible message reference metadata defensively", () => {
|
|
expect(
|
|
readReferenceMessageContexts({
|
|
referenced_message_contexts: [
|
|
{
|
|
label: "Selected assistant text #2",
|
|
message_id: "parent-ai-1",
|
|
role: "assistant",
|
|
content: "Build it as a side conversation.",
|
|
},
|
|
{
|
|
label: 42,
|
|
message_id: "ignored",
|
|
role: "assistant",
|
|
content: "Bad reference",
|
|
},
|
|
],
|
|
}),
|
|
).toEqual([
|
|
{
|
|
type: "referenced_message",
|
|
label: "Selected assistant text #2",
|
|
messageId: "parent-ai-1",
|
|
role: "assistant",
|
|
content: "Build it as a side conversation.",
|
|
},
|
|
]);
|
|
});
|