From 379b72c157500f68db27d52d464154115d43c911 Mon Sep 17 00:00:00 2001 From: ReqX Date: Sun, 31 May 2026 02:18:04 +0200 Subject: [PATCH] fix(routing): add agy to executor map so it uses AntigravityExecutor (#2957) Integrated into release/v3.8.8 --- open-sse/executors/index.ts | 1 + tests/unit/executor-agy.test.ts | 39 +++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 tests/unit/executor-agy.test.ts diff --git a/open-sse/executors/index.ts b/open-sse/executors/index.ts index d5428950ac..245e772328 100644 --- a/open-sse/executors/index.ts +++ b/open-sse/executors/index.ts @@ -48,6 +48,7 @@ import { DoubaoWebExecutor } from "./doubao-web.ts"; const executors = { antigravity: new AntigravityExecutor(), + agy: new AntigravityExecutor(), "gemini-cli": new GeminiCLIExecutor(), github: new GithubExecutor(), qoder: new QoderExecutor(), diff --git a/tests/unit/executor-agy.test.ts b/tests/unit/executor-agy.test.ts new file mode 100644 index 0000000000..07975cb18d --- /dev/null +++ b/tests/unit/executor-agy.test.ts @@ -0,0 +1,39 @@ +import test from "node:test"; +import assert from "node:assert/strict"; + +import { getExecutor, AntigravityExecutor } from "../../open-sse/executors/index.ts"; + +test("getExecutor('agy') returns AntigravityExecutor (not DefaultExecutor)", () => { + const executor = getExecutor("agy"); + assert.ok(executor instanceof AntigravityExecutor, "agy provider should use AntigravityExecutor"); +}); + +test("getExecutor('antigravity') returns AntigravityExecutor", () => { + const executor = getExecutor("antigravity"); + assert.ok(executor instanceof AntigravityExecutor, "antigravity provider should use AntigravityExecutor"); +}); + +test("getExecutor('agy') builds valid streaming URL", () => { + const executor = getExecutor("agy"); + const url = executor.buildUrl("gemini-3-flash", true); + assert.ok( + url.includes("streamGenerateContent?alt=sse"), + `expected streaming endpoint URL, got: ${url}` + ); +}); + +test("getExecutor('agy') builds valid non-streaming URL", () => { + const executor = getExecutor("agy"); + const url = executor.buildUrl("gemini-3-flash", false); + // Antigravity executor always uses streaming endpoint (buildUrl ignores stream flag) + assert.ok( + url.includes("streamGenerateContent?alt=sse"), + `expected streaming endpoint URL (always), got: ${url}` + ); +}); + +test("getExecutor('agy') buildHeaders returns Bearer auth", () => { + const executor = getExecutor("agy"); + const headers = executor.buildHeaders({ accessToken: "test-token" }); + assert.equal(headers.Authorization, "Bearer test-token"); +});