Something went wrong. Try again.
antigravity oauth for prime-agent ported from omp
Something went wrong. Try again.
prime-antigravity test.ts
3.2 kB · 83 lines
TypeScript
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384/** * Smoke test for the Antigravity extension. * * Run from the repo root (after /login google-antigravity): * npx tsx packages/coding-agent/examples/extensions/google-antigravity/test.ts */import { readFileSync } from "node:fs";import { homedir } from "node:os";import { join } from "node:path";import { type Api, type Context, type Model, registerApiProvider, streamSimple } from "@earendil-works/pi-ai";import { STATIC_PROVIDER_MODELS } from "./models.js";import { streamAntigravity } from "./stream.js";
function getAgentDir(): string { const envDir = process.env.PRIME_AGENT_CODING_AGENT_DIR ?? process.env.PI_CODING_AGENT_DIR; if (envDir) { if (envDir === "~") return homedir(); if (envDir.startsWith("~/")) return join(homedir(), envDir.slice(2)); return envDir; } return join(homedir(), ".prime", "agent");}
async function main() { const modelId = process.argv[2] || "claude-sonnet-4-6"; const modelConfig = STATIC_PROVIDER_MODELS.find((m) => m.id === modelId); if (!modelConfig) { console.error(`Unknown model: ${modelId}`); console.error("Available:", STATIC_PROVIDER_MODELS.map((m) => m.id).join(", ")); process.exit(1); }
type Credential = { type?: string; access?: string; projectId?: string }; const authPath = join(getAgentDir(), "auth.json"); const auth = JSON.parse(readFileSync(authPath, "utf-8")) as Record<string, Credential | Credential[]>; const stored = auth["google-antigravity"]; const credential = (Array.isArray(stored) ? stored : [stored]).find( (entry) => entry?.type === "oauth" && typeof entry.access === "string" && entry.access.length > 0, ); const access = credential?.access; if (!access) { console.error("No google-antigravity credentials. Run /login google-antigravity first."); process.exit(1); }
const apiKey = JSON.stringify({ token: access, projectId: credential?.projectId ?? "" });
registerApiProvider({ api: "google-antigravity" as Api, stream: (model, context, options) => streamAntigravity(model, context, options), streamSimple: (model, context, options) => streamAntigravity(model, context, options), });
const model: Model<Api> = { id: modelConfig.id, name: modelConfig.name, api: "google-antigravity" as Api, provider: "google-antigravity", baseUrl: "https://daily-cloudcode-pa.googleapis.com", reasoning: modelConfig.reasoning, input: modelConfig.input, cost: modelConfig.cost, contextWindow: modelConfig.contextWindow, maxTokens: modelConfig.maxTokens, };
const context: Context = { messages: [{ role: "user", content: "Say hello in exactly 3 words.", timestamp: Date.now() }], };
const s = streamSimple(model, context, { apiKey, maxTokens: 100, reasoning: "low" }); for await (const event of s) { if (event.type === "thinking_delta") process.stdout.write(event.delta); else if (event.type === "text_delta") process.stdout.write(event.delta); else if (event.type === "error") console.error("\nError:", event.error.errorMessage); else if (event.type === "done") console.log("\n\nDone!", event.reason, event.message.usage); }}
main().catch((error) => { console.error(error); process.exit(1);});