import { afterEach, expect, test } from "bun:test" import { prepareForCompact, prepareMessageProxyHeaders, } from "../src/lib/api-config" import { COMPACT_AUTO_CONTINUE, COMPACT_REQUEST } from "../src/lib/compact" const originalOauthApp = process.env.COPILOT_API_OAUTH_APP afterEach(() => { if (originalOauthApp === undefined) { delete process.env.COPILOT_API_OAUTH_APP return } process.env.COPILOT_API_OAUTH_APP = originalOauthApp }) test("prepareMessageProxyHeaders applies message proxy headers by default", () => { delete process.env.COPILOT_API_OAUTH_APP const headers: Record = { "user-agent": "GitHubCopilotChat/0.42.3", } prepareMessageProxyHeaders(headers) expect(headers["x-interaction-type"]).toBe("messages-proxy") expect(headers["openai-intent"]).toBe("messages-proxy") expect(headers["user-agent"]).toBe( "vscode_claude_code/2.1.112 (external, sdk-ts, agent-sdk/0.2.112)", ) expect(headers["x-request-id"]).toBeDefined() expect(headers["x-agent-task-id"]).toBe(headers["x-request-id"]) }) test("prepareMessageProxyHeaders leaves opencode headers untouched", () => { process.env.COPILOT_API_OAUTH_APP = "opencode" const headers: Record = { "Openai-Intent": "conversation-edits", "User-Agent": "opencode/1.0.0", } prepareMessageProxyHeaders(headers) expect(headers).toEqual({ "Openai-Intent": "conversation-edits", "User-Agent": "opencode/1.0.0", }) }) test("prepareForCompact marks compact traffic as agent initiated", () => { const compactHeaders: Record = { "x-initiator": "user" } const autoContinueHeaders: Record = { "x-initiator": "user" } const normalHeaders: Record = { "x-initiator": "user" } prepareForCompact(compactHeaders, COMPACT_REQUEST) prepareForCompact(autoContinueHeaders, COMPACT_AUTO_CONTINUE) prepareForCompact(normalHeaders, 0) expect(compactHeaders["x-initiator"]).toBe("agent") expect(autoContinueHeaders["x-initiator"]).toBe("agent") expect(normalHeaders["x-initiator"]).toBe("user") })