assistant-cloud
Version:
Cloud integration for assistant-ui
80 lines (72 loc) • 2.63 kB
text/typescript
import { describe, expect, it, vi } from "vitest";
import type { AssistantCloud } from "./AssistantCloud";
import type { AssistantCloudAPI } from "./AssistantCloudAPI";
import { AssistantCloudThreadMessages } from "./AssistantCloudThreadMessages";
import { CloudMessagePersistence } from "./CloudMessagePersistence";
describe("backend transcript cloud client", () => {
it("sends external ids only when supplied", async () => {
const makeRequest = vi.fn().mockResolvedValue({ message_id: "cloud-1" });
const messages = new AssistantCloudThreadMessages({
makeRequest,
} as unknown as AssistantCloudAPI);
const body = { parent_id: null, format: "aui/v0", content: {} };
await messages.create("thread-1", body);
expect(makeRequest).toHaveBeenLastCalledWith("/threads/thread-1/messages", {
method: "POST",
body,
});
await messages.create("thread-1", {
...body,
external_id: "backend-1",
parent_external_id: "backend-0",
});
expect(makeRequest).toHaveBeenLastCalledWith("/threads/thread-1/messages", {
method: "POST",
body: {
...body,
external_id: "backend-1",
parent_external_id: "backend-0",
},
});
});
it("decodes external ids and treats an absent field as null", async () => {
const makeRequest = vi.fn().mockResolvedValue({
messages: [
{
id: "cloud-1",
parent_id: null,
height: 0,
created_at: "2026-01-01T00:00:00.000Z",
updated_at: "2026-01-01T00:00:00.000Z",
format: "aui/v0",
content: {},
external_id: "backend-1",
},
{
id: "cloud-2",
parent_id: "cloud-1",
height: 1,
created_at: "2026-01-01T00:00:00.000Z",
updated_at: "2026-01-01T00:00:00.000Z",
format: "aui/v0",
content: {},
},
],
});
const messages = new AssistantCloudThreadMessages({
makeRequest,
} as unknown as AssistantCloudAPI);
const result = await messages.list("thread-1");
expect(result.messages.map((message) => message.external_id)).toEqual([
"backend-1",
null,
]);
});
it("records a resolved local to cloud message mapping", async () => {
const persistence = new CloudMessagePersistence({} as AssistantCloud);
persistence.record("backend-1", "cloud-1");
expect(persistence.isPersisted("backend-1")).toBe(true);
expect(await persistence.getRemoteId("backend-1")).toBe("cloud-1");
expect(persistence.getResolvedRemoteId("backend-1")).toBe("cloud-1");
});
});