TypeScript 97.4%
SQL 1%
JavaScript 0.9%
CSS 0.6%
1// Probe 00: list models via REST (x-goog-api-key) and via SDK; dump per-model metadata.2// Run: set -a; . ../../.env; set +a; npx tsx 00-models-list.ts3import { GoogleGenAI } from "@google/genai";4import { writeFileSync } from "node:fs";56const key = process.env.GOOGLE_GEMINI_API_KEY!;7if (!key) throw new Error("GOOGLE_GEMINI_API_KEY missing");89async function main() {10 // REST, paginated11 const all: any[] = [];12 let pageToken: string | undefined;13 do {14 const url = new URL("https://generativelanguage.googleapis.com/v1beta/models");15 url.searchParams.set("pageSize", "1000");16 if (pageToken) url.searchParams.set("pageToken", pageToken);17 const r = await fetch(url, { headers: { "x-goog-api-key": key } });18 console.log("REST status", r.status, "headers:", Object.fromEntries([...r.headers.entries()].filter(([k]) => !/set-cookie/.test(k))));19 const j = await r.json();20 all.push(...(j.models ?? []));21 pageToken = j.nextPageToken;22 } while (pageToken);23 writeFileSync("out/models.json", JSON.stringify(all, null, 2));24 console.log("model count", all.length);25 const keys = new Set<string>();26 for (const m of all) Object.keys(m).forEach((k) => keys.add(k));27 console.log("metadata fields seen:", [...keys].join(", "));28 for (const m of all) {29 console.log(30 m.name.replace("models/", "").padEnd(48),31 String(m.inputTokenLimit).padStart(8),32 String(m.outputTokenLimit).padStart(7),33 (m.thinking ? "think" : " "),34 (m.supportedGenerationMethods ?? []).join("|"),35 `T=${m.temperature ?? "-"}/${m.maxTemperature ?? "-"} P=${m.topP ?? "-"} K=${m.topK ?? "-"}`,36 );37 }38 // SDK39 const ai = new GoogleGenAI({ apiKey: key });40 const pager = await ai.models.list({ config: { pageSize: 5 } });41 let n = 0;42 for await (const m of pager) { n++; if (n === 1) console.log("SDK first model sample:", JSON.stringify(m)); if (n >= 5) break; }43}44main().catch((e) => { console.error("ERR", e?.message ?? e); process.exit(1); });45