chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
import test from "node:test";
|
||||
import assert from "node:assert/strict";
|
||||
|
||||
import { getExecutor, AntigravityExecutor } from "../../open-sse/executors/index.ts";
|
||||
import { processAntigravitySSEPayload } from "../../open-sse/executors/antigravity.ts";
|
||||
|
||||
function emptyCollected(): any {
|
||||
return {
|
||||
textContent: "",
|
||||
finishReason: "",
|
||||
toolCalls: [],
|
||||
usage: null,
|
||||
remainingCredits: null,
|
||||
};
|
||||
}
|
||||
|
||||
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.5-flash-high", 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.5-flash-high", 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");
|
||||
});
|
||||
|
||||
// #3821-review LEDGER-9 — the Antigravity SSE `markdown` extraction branch had no test.
|
||||
test("processAntigravitySSEPayload accumulates top-level markdown into textContent", () => {
|
||||
const collected = emptyCollected();
|
||||
processAntigravitySSEPayload(JSON.stringify({ markdown: "Hello " }), collected);
|
||||
processAntigravitySSEPayload(JSON.stringify({ response: { markdown: "world" } }), collected);
|
||||
assert.equal(collected.textContent, "Hello world");
|
||||
});
|
||||
|
||||
test("processAntigravitySSEPayload uses candidate parts text when no markdown is present", () => {
|
||||
const collected = emptyCollected();
|
||||
processAntigravitySSEPayload(
|
||||
JSON.stringify({ response: { candidates: [{ content: { parts: [{ text: "from parts" }] } }] } }),
|
||||
collected
|
||||
);
|
||||
assert.equal(collected.textContent, "from parts");
|
||||
});
|
||||
|
||||
test("processAntigravitySSEPayload ignores [DONE] and malformed payloads without throwing", () => {
|
||||
const collected = emptyCollected();
|
||||
processAntigravitySSEPayload("[DONE]", collected);
|
||||
processAntigravitySSEPayload("{not json", collected);
|
||||
assert.equal(collected.textContent, "");
|
||||
});
|
||||
Reference in New Issue
Block a user