51 lines
2.2 KiB
TypeScript
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");
|
|
});
|
|
});
|