import { describe, expect, it } from "vitest"; import { AgentServerUnknownVersionError, AgentServerUnsupportedVersionError, assertAgentServerVersionIsSupported, getDisplayAgentServerSdkVersion, getDisplayAgentServerVersion, type AgentServerInfo, } from "./agent-server-compatibility"; const serverInfo = (version?: string, sdkVersion?: string): AgentServerInfo => ({ version, sdk_version: sdkVersion }) as AgentServerInfo; describe("agent-server version compatibility", () => { it("classifies missing and unknown versions separately from old versions", () => { for (const version of [undefined, "", "unknown", " UNKNOWN "]) { expect(() => assertAgentServerVersionIsSupported(serverInfo(version)), ).toThrow(AgentServerUnknownVersionError); } }); it("classifies malformed versions separately from old versions", () => { expect(() => assertAgentServerVersionIsSupported(serverInfo("dev-build")), ).toThrow(AgentServerUnknownVersionError); }); it("keeps valid but too-old versions on the unsupported-version path", () => { expect(() => assertAgentServerVersionIsSupported(serverInfo("0.0.1")), ).toThrow(AgentServerUnsupportedVersionError); }); it("does not render unknown or malformed versions as backend badges", () => { expect(getDisplayAgentServerVersion(serverInfo("unknown"))).toBeNull(); expect(getDisplayAgentServerVersion(serverInfo("dev-build"))).toBeNull(); expect(getDisplayAgentServerVersion(serverInfo("1.28.0"))).toBe("1.28.0"); }); it("uses sdk_version as the agent-server version fallback", () => { expect(getDisplayAgentServerVersion(serverInfo(undefined, "1.36.1"))).toBe( "1.36.1", ); expect(() => assertAgentServerVersionIsSupported(serverInfo(undefined, "1.36.1")), ).not.toThrow(); }); it("reports the dedicated agent-server SDK version when present", () => { expect( getDisplayAgentServerSdkVersion(serverInfo("1.36.0", "1.36.1")), ).toBe("1.36.1"); expect(getDisplayAgentServerSdkVersion(serverInfo("1.36.0"))).toBe( "1.36.0", ); }); });