import { describe, expect, it, vi } from "vitest"; import type { AgentApiClient } from "./client"; import { fetchAgentBootstrap, fetchAgentSessions } from "./swr"; describe("Agent API SWR helpers", () => { it("loads bootstrap data with a normalized UI registry", async () => { const client = { getUiRegistry: vi.fn(async () => ({ schema_version: "agent-ui-registry@1", chart_grammars: ["echarts-safe-subset"], components: [{ id: "HistoryPanel", supportedSurfaces: ["side_panel", "unknown"] }], actions: [{ id: "zoom_to_map", supportedSurfaces: ["map_overlay"] }] })), getModels: vi.fn(async () => ({ defaultModel: "model-a", models: [{ id: "model-a", label: "Model A", description: "Default model", icon: "sparkle" }] })) } as Pick as AgentApiClient; await expect(fetchAgentBootstrap(client)).resolves.toEqual({ defaultModel: "model-a", models: [{ id: "model-a", label: "Model A", description: "Default model", icon: "sparkle" }], registry: { schema_version: "agent-ui-registry@1", chart_grammars: ["echarts-safe-subset"], components: [{ id: "HistoryPanel", supportedSurfaces: ["side_panel"] }], actions: [{ id: "zoom_to_map", supportedSurfaces: ["map_overlay"] }] } }); }); it("loads session summaries through the shared client", async () => { const sessions = [ { id: "session-1", title: "会话", createdAt: 1, updatedAt: 2 } ]; const client = { listSessions: vi.fn(async () => sessions) } as Pick as AgentApiClient; await expect(fetchAgentSessions(client)).resolves.toBe(sessions); }); });