Files
lvmh/web/src/protocol.test.ts
T

51 lines
2.2 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { EventType, Route } from "./protocol";
describe("protocol", () => {
it("PROTOCOL_VERSION is 1", async () => {
const mod = await import("./protocol");
expect(mod.PROTOCOL_VERSION).toBe(1);
});
it("EventType mirrors PROTOCOL.md", () => {
expect(EventType.Hello).toBe("hello");
expect(EventType.MessageStart).toBe("message_start");
expect(EventType.MessageUpdate).toBe("message_update");
expect(EventType.MessageEnd).toBe("message_end");
expect(EventType.ToolExecutionStart).toBe("tool_execution_start");
expect(EventType.ToolExecutionUpdate).toBe("tool_execution_update");
expect(EventType.ToolExecutionEnd).toBe("tool_execution_end");
expect(EventType.AgentStart).toBe("agent_start");
expect(EventType.AgentEnd).toBe("agent_end");
expect(EventType.AgentSettled).toBe("agent_settled");
expect(EventType.SessionInfo).toBe("session_info");
expect(EventType.ErrorNotice).toBe("error_notice");
expect(EventType.Bye).toBe("bye");
});
it("Route constants", () => {
expect(Route.Sessions).toBe("/api/sessions");
expect(Route.Spawn).toBe("/api/spawn");
expect(Route.SpawnStatus).toBe("/api/spawn/status");
expect(Route.GitlabStatus).toBe("/api/gitlab/status");
expect(Route.GitlabConnect).toBe("/api/gitlab/connect");
expect(Route.GitlabRepos).toBe("/api/gitlab/repos");
expect(Route.ModelCatalog).toBe("/api/model-catalog");
expect(Route.Repos).toBe("/api/repos");
expect(Route.Stats).toBe("/api/stats");
});
it("session routes interpolate and encode ids", () => {
expect(Route.SessionEvents("abc")).toBe("/api/sessions/abc/events");
expect(Route.SessionPrompt("abc")).toBe("/api/sessions/abc/prompt");
expect(Route.SessionAbort("abc")).toBe("/api/sessions/abc/abort");
expect(Route.SessionContainer("abc")).toBe("/api/sessions/abc/container");
expect(Route.Session("abc")).toBe("/api/sessions/abc");
expect(Route.SessionModel("abc")).toBe("/api/sessions/abc/model");
expect(Route.SessionStats("abc")).toBe("/api/sessions/abc/stats");
expect(Route.RepoImage("g/p")).toBe("/api/repos/g/p/image");
expect(Route.RepoPrepare("g/p")).toBe("/api/repos/g/p/prepare");
expect(Route.SessionEvents("a/b c")).toBe("/api/sessions/a%2Fb%20c/events");
});
});