SYMBOL INDEX (958 symbols across 67 files) FILE: script/build-schema.ts function addDescriptions (line 80) | function addDescriptions(schema: Record): void { FILE: script/test-cross-model.ts constant GEMINI_THOUGHT_SIGNATURE (line 7) | const GEMINI_THOUGHT_SIGNATURE = 'EsgQCsUQAXLI2nybuafAE150LGTo2r78fakesi... function runTests (line 54) | function runTests(): void { FILE: script/test-models.ts type ModelTest (line 4) | interface ModelTest { constant MODELS (line 9) | const MODELS: ModelTest[] = [ constant TEST_PROMPT (line 28) | const TEST_PROMPT = "Reply with exactly one word: WORKING"; constant DEFAULT_TIMEOUT_MS (line 29) | const DEFAULT_TIMEOUT_MS = 120_000; type TestResult (line 31) | interface TestResult { function testModel (line 37) | async function testModel(model: string, timeoutMs: number): Promise { FILE: script/test-regression.ts type Category (line 4) | type Category = "thinking-order" | "tool-pairing" | "multi-tool" | "mult... type TestSuite (line 5) | type TestSuite = "sanity" | "heavy" | "all"; type MultiTurnTest (line 7) | interface MultiTurnTest { type TurnConfig (line 18) | interface TurnConfig { type TestResult (line 23) | interface TestResult { type ConcurrentTest (line 31) | interface ConcurrentTest { constant ERROR_PATTERNS (line 42) | const ERROR_PATTERNS = [ constant GEMINI_FLASH (line 55) | const GEMINI_FLASH = "google/antigravity-gemini-3-flash"; constant GEMINI_FLASH_CLI_QUOTA (line 56) | const GEMINI_FLASH_CLI_QUOTA = "google/gemini-2.5-flash"; constant CLAUDE_SONNET (line 57) | const CLAUDE_SONNET = "google/antigravity-claude-sonnet-4-6"; constant CLAUDE_OPUS (line 58) | const CLAUDE_OPUS = "google/antigravity-claude-opus-4-6-thinking-low"; constant SANITY_TESTS (line 60) | const SANITY_TESTS: MultiTurnTest[] = [ constant HEAVY_TESTS (line 134) | const HEAVY_TESTS: MultiTurnTest[] = [ function generateEnduranceTest (line 210) | function generateEnduranceTest(turnCount: number): TurnConfig[] { constant RATE_LIMIT_ERROR_PATTERNS (line 241) | const RATE_LIMIT_ERROR_PATTERNS = [ constant CONCURRENT_TESTS (line 247) | const CONCURRENT_TESTS: ConcurrentTest[] = [ constant ALL_TESTS (line 280) | const ALL_TESTS = [...SANITY_TESTS, ...HEAVY_TESTS]; function runTurn (line 282) | async function runTurn( function deleteSession (line 346) | async function deleteSession(sessionId: string): Promise { function runConcurrentTest (line 359) | async function runConcurrentTest(test: ConcurrentTest): Promise { function parseArgs (line 490) | function parseArgs(): { function showHelp (line 516) | function showHelp(): void { function main (line 555) | async function main(): Promise { FILE: scripts/check-quota.mjs constant CLIENT_ID (line 5) | const CLIENT_ID = "1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.g... constant CLIENT_SECRET (line 6) | const CLIENT_SECRET = "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"; constant CLOUD_CODE_BASE (line 7) | const CLOUD_CODE_BASE = "https://cloudcode-pa.googleapis.com"; constant USER_AGENT (line 8) | const USER_AGENT = "antigravity/windows/amd64"; constant FALLBACK_PROJECT_ID (line 9) | const FALLBACK_PROJECT_ID = "bamboo-precept-lgxtn"; function getDefaultAccountsPath (line 11) | function getDefaultAccountsPath() { function parseArgs (line 20) | function parseArgs() { function postJson (line 42) | async function postJson(url, token, body, extraHeaders = {}) { function refreshAccessToken (line 55) | async function refreshAccessToken(refreshToken) { function loadProjectId (line 78) | async function loadProjectId(accessToken) { function classifyGroup (line 94) | function classifyGroup(modelName) { function updateGroup (line 102) | function updateGroup(groups, group, remainingFraction, resetTime) { function formatDuration (line 128) | function formatDuration(targetTime) { function printGroup (line 138) | function printGroup(label, entry) { function run (line 152) | async function run() { FILE: src/antigravity/oauth.ts type PkcePair (line 18) | interface PkcePair { type AntigravityAuthState (line 23) | interface AntigravityAuthState { type AntigravityAuthorization (line 31) | interface AntigravityAuthorization { type AntigravityTokenExchangeSuccess (line 37) | interface AntigravityTokenExchangeSuccess { type AntigravityTokenExchangeFailure (line 46) | interface AntigravityTokenExchangeFailure { type AntigravityTokenExchangeResult (line 51) | type AntigravityTokenExchangeResult = type AntigravityTokenResponse (line 55) | interface AntigravityTokenResponse { type AntigravityUserInfo (line 61) | interface AntigravityUserInfo { function encodeState (line 68) | function encodeState(payload: AntigravityAuthState): string { function decodeState (line 75) | function decodeState(state: string): AntigravityAuthState { function authorizeAntigravity (line 92) | async function authorizeAntigravity(projectId = ""): Promise { function exchangeAntigravity (line 201) | async function exchangeAntigravity( FILE: src/constants.ts constant ANTIGRAVITY_CLIENT_ID (line 4) | const ANTIGRAVITY_CLIENT_ID = "1071006060591-tmhssin2h21lcre235vtolojh4g... constant ANTIGRAVITY_CLIENT_SECRET (line 9) | const ANTIGRAVITY_CLIENT_SECRET = "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"; constant ANTIGRAVITY_SCOPES (line 14) | const ANTIGRAVITY_SCOPES: readonly string[] = [ constant ANTIGRAVITY_REDIRECT_URI (line 25) | const ANTIGRAVITY_REDIRECT_URI = "http://localhost:51121/oauth-callback"; constant ANTIGRAVITY_ENDPOINT_DAILY (line 32) | const ANTIGRAVITY_ENDPOINT_DAILY = "https://daily-cloudcode-pa.sandbox.g... constant ANTIGRAVITY_ENDPOINT_AUTOPUSH (line 33) | const ANTIGRAVITY_ENDPOINT_AUTOPUSH = "https://autopush-cloudcode-pa.san... constant ANTIGRAVITY_ENDPOINT_PROD (line 34) | const ANTIGRAVITY_ENDPOINT_PROD = "https://cloudcode-pa.googleapis.com"; constant ANTIGRAVITY_ENDPOINT_FALLBACKS (line 40) | const ANTIGRAVITY_ENDPOINT_FALLBACKS = [ constant ANTIGRAVITY_LOAD_ENDPOINTS (line 50) | const ANTIGRAVITY_LOAD_ENDPOINTS = [ constant ANTIGRAVITY_ENDPOINT (line 59) | const ANTIGRAVITY_ENDPOINT = ANTIGRAVITY_ENDPOINT_DAILY; constant GEMINI_CLI_ENDPOINT (line 66) | const GEMINI_CLI_ENDPOINT = ANTIGRAVITY_ENDPOINT_PROD; constant ANTIGRAVITY_DEFAULT_PROJECT_ID (line 71) | const ANTIGRAVITY_DEFAULT_PROJECT_ID = "rising-fact-p41fc"; constant ANTIGRAVITY_VERSION_FALLBACK (line 73) | const ANTIGRAVITY_VERSION_FALLBACK = "1.18.3"; function getAntigravityVersion (line 77) | function getAntigravityVersion(): string { return antigravityVersion; } function setAntigravityVersion (line 83) | function setAntigravityVersion(version: string): void { constant ANTIGRAVITY_VERSION (line 90) | const ANTIGRAVITY_VERSION = ANTIGRAVITY_VERSION_FALLBACK; function getAntigravityHeaders (line 92) | function getAntigravityHeaders(): HeaderSet & { "Client-Metadata": strin... constant ANTIGRAVITY_HEADERS (line 101) | const ANTIGRAVITY_HEADERS = { constant GEMINI_CLI_HEADERS (line 107) | const GEMINI_CLI_HEADERS = { constant ANTIGRAVITY_PLATFORMS (line 113) | const ANTIGRAVITY_PLATFORMS = ["windows/amd64", "darwin/arm64", "darwin/... constant ANTIGRAVITY_API_CLIENTS (line 115) | const ANTIGRAVITY_API_CLIENTS = [ function randomFrom (line 121) | function randomFrom(arr: readonly T[]): T { type HeaderSet (line 125) | type HeaderSet = { function getRandomizedHeaders (line 131) | function getRandomizedHeaders(style: HeaderStyle, model?: string): Heade... type HeaderStyle (line 148) | type HeaderStyle = "antigravity" | "gemini-cli"; constant ANTIGRAVITY_PROVIDER_ID (line 153) | const ANTIGRAVITY_PROVIDER_ID = "google"; constant CLAUDE_TOOL_SYSTEM_INSTRUCTION (line 166) | const CLAUDE_TOOL_SYSTEM_INSTRUCTION = `CRITICAL TOOL USAGE INSTRUCTIONS: constant CLAUDE_DESCRIPTION_PROMPT (line 183) | const CLAUDE_DESCRIPTION_PROMPT = "\n\n⚠️ STRICT PARAMETERS: {params}."; constant EMPTY_SCHEMA_PLACEHOLDER_NAME (line 185) | const EMPTY_SCHEMA_PLACEHOLDER_NAME = "_placeholder"; constant EMPTY_SCHEMA_PLACEHOLDER_DESCRIPTION (line 186) | const EMPTY_SCHEMA_PLACEHOLDER_DESCRIPTION = "Placeholder. Always pass t... constant SKIP_THOUGHT_SIGNATURE (line 201) | const SKIP_THOUGHT_SIGNATURE = "skip_thought_signature_validator"; constant SEARCH_MODEL (line 220) | const SEARCH_MODEL = "gemini-2.5-flash"; constant SEARCH_THINKING_BUDGET_DEEP (line 225) | const SEARCH_THINKING_BUDGET_DEEP = 16384; constant SEARCH_THINKING_BUDGET_FAST (line 230) | const SEARCH_THINKING_BUDGET_FAST = 4096; constant SEARCH_TIMEOUT_MS (line 235) | const SEARCH_TIMEOUT_MS = 60000; constant SEARCH_SYSTEM_INSTRUCTION (line 240) | const SEARCH_SYSTEM_INSTRUCTION = `You are an expert web search assistan... constant ANTIGRAVITY_SYSTEM_INSTRUCTION (line 254) | const ANTIGRAVITY_SYSTEM_INSTRUCTION = `You are Antigravity, a powerful ... FILE: src/hooks/auto-update-checker/cache.ts type BunLockfile (line 5) | interface BunLockfile { function stripTrailingCommas (line 14) | function stripTrailingCommas(json: string): string { function removeFromBunLock (line 18) | function removeFromBunLock(packageName: string): boolean { function invalidatePackage (line 48) | function invalidatePackage(packageName: string = PACKAGE_NAME): boolean { function invalidateCache (line 88) | function invalidateCache(): boolean { FILE: src/hooks/auto-update-checker/checker.ts function isLocalDevMode (line 15) | function isLocalDevMode(directory: string): boolean { function stripJsonComments (line 19) | function stripJsonComments(json: string): string { function getConfigPaths (line 25) | function getConfigPaths(directory: string): string[] { function getLocalDevPath (line 35) | function getLocalDevPath(directory: string): string | null { function findPackageJsonUp (line 60) | function findPackageJsonUp(startPath: string): string | null { function getLocalDevVersion (line 86) | function getLocalDevVersion(directory: string): string | null { type PluginEntryInfo (line 101) | interface PluginEntryInfo { function findPluginEntry (line 108) | function findPluginEntry(directory: string): PluginEntryInfo | null { function getCachedVersion (line 137) | function getCachedVersion(): string | null { function updatePinnedVersion (line 163) | function updatePinnedVersion(configPath: string, oldEntry: string, newVe... function getLatestVersion (line 213) | async function getLatestVersion(): Promise { function checkForUpdate (line 234) | async function checkForUpdate(directory: string): Promise { type VerificationProbeResult (line 271) | type VerificationProbeResult = { function decodeEscapedText (line 277) | function decodeEscapedText(input: string): string { function normalizeGoogleVerificationUrl (line 283) | function normalizeGoogleVerificationUrl(rawUrl: string): string | undefi... function selectBestVerificationUrl (line 299) | function selectBestVerificationUrl(urls: string[]): string | undefined { function extractVerificationErrorDetails (line 318) | function extractVerificationErrorDetails(bodyText: string): { function verifyAccountAccess (line 438) | async function verifyAccountAccess( function promptAccountIndexForVerification (line 550) | async function promptAccountIndexForVerification( function promptOpenVerificationUrl (line 587) | async function promptOpenVerificationUrl(): Promise { type VerificationStoredAccount (line 592) | type VerificationStoredAccount = { function markStoredAccountVerificationRequired (line 600) | function markStoredAccountVerificationRequired( function clearStoredAccountVerificationRequired (line 638) | function clearStoredAccountVerificationRequired( function promptOAuthCallbackValue (line 670) | async function promptOAuthCallbackValue(message: string): Promise { type OAuthCallbackParams (line 681) | type OAuthCallbackParams = { code: string; state: string }; function getStateFromAuthorizationUrl (line 683) | function getStateFromAuthorizationUrl(authorizationUrl: string): string { function extractOAuthCallbackParams (line 691) | function extractOAuthCallbackParams(url: URL): OAuthCallbackParams | null { function parseOAuthCallbackInput (line 700) | function parseOAuthCallbackInput( function promptManualOAuthInput (line 731) | async function promptManualOAuthInput( function clampInt (line 749) | function clampInt(value: number, min: number, max: number): number { function persistAccountPool (line 756) | async function persistAccountPool( function buildAuthSuccessFromStoredAccount (line 860) | function buildAuthSuccessFromStoredAccount(account: { function retryAfterMsFromResponse (line 882) | function retryAfterMsFromResponse(response: Response, defaultRetryMs: nu... function parseDurationToMs (line 909) | function parseDurationToMs(duration: string): number | null { type RateLimitBodyInfo (line 945) | interface RateLimitBodyInfo { function extractRateLimitBodyInfo (line 952) | function extractRateLimitBodyInfo(body: unknown): RateLimitBodyInfo { function extractRetryInfoFromBody (line 1024) | async function extractRetryInfoFromBody(response: Response): Promise { method execute (line 1342) | async execute(args, ctx) { method fetch (line 1454) | async fetch(input, init) { function toUrlString (line 3334) | function toUrlString(value: RequestInfo): string { function toWarmupStreamUrl (line 3345) | function toWarmupStreamUrl(value: RequestInfo): string { function extractModelFromUrl (line 3359) | function extractModelFromUrl(urlString: string): string | null { function extractModelFromUrlWithSuffix (line 3364) | function extractModelFromUrlWithSuffix(urlString: string): string | null { function getModelFamilyFromUrl (line 3369) | function getModelFamilyFromUrl(urlString: string): ModelFamily { function resolveQuotaFallbackHeaderStyle (line 3381) | function resolveQuotaFallbackHeaderStyle(input: { type HeaderRoutingDecision (line 3395) | type HeaderRoutingDecision = { function resolveHeaderRoutingDecision (line 3402) | function resolveHeaderRoutingDecision( function getCliFirst (line 3418) | function getCliFirst(config: AntigravityConfig): boolean { function getHeaderStyleFromUrl (line 3422) | function getHeaderStyleFromUrl( function isExplicitQuotaFromUrl (line 3438) | function isExplicitQuotaFromUrl(urlString: string): boolean { FILE: src/plugin/accounts.ts type RateLimitReason (line 17) | type RateLimitReason = type RateLimitBackoffResult (line 24) | interface RateLimitBackoffResult { constant QUOTA_EXHAUSTED_BACKOFFS (line 29) | const QUOTA_EXHAUSTED_BACKOFFS = [60_000, 300_000, 1_800_000, 7_200_000]... constant RATE_LIMIT_EXCEEDED_BACKOFF (line 30) | const RATE_LIMIT_EXCEEDED_BACKOFF = 30_000; constant MODEL_CAPACITY_EXHAUSTED_BASE_BACKOFF (line 32) | const MODEL_CAPACITY_EXHAUSTED_BASE_BACKOFF = 45_000; constant MODEL_CAPACITY_EXHAUSTED_JITTER_MAX (line 33) | const MODEL_CAPACITY_EXHAUSTED_JITTER_MAX = 30_000; constant SERVER_ERROR_BACKOFF (line 34) | const SERVER_ERROR_BACKOFF = 20_000; constant UNKNOWN_BACKOFF (line 35) | const UNKNOWN_BACKOFF = 60_000; constant MIN_BACKOFF_MS (line 36) | const MIN_BACKOFF_MS = 2_000; function generateJitter (line 42) | function generateJitter(maxJitterMs: number): number { function parseRateLimitReason (line 46) | function parseRateLimitReason( function calculateBackoffMs (line 96) | function calculateBackoffMs( type BaseQuotaKey (line 125) | type BaseQuotaKey = "claude" | "gemini-antigravity" | "gemini-cli"; type QuotaKey (line 126) | type QuotaKey = BaseQuotaKey | `${BaseQuotaKey}:${string}`; type ManagedAccount (line 128) | interface ManagedAccount { function nowMs (line 158) | function nowMs(): number { function clampNonNegativeInt (line 162) | function clampNonNegativeInt(value: unknown, fallback: number): number { function getQuotaKey (line 169) | function getQuotaKey(family: ModelFamily, headerStyle: HeaderStyle, mode... function isRateLimitedForQuotaKey (line 180) | function isRateLimitedForQuotaKey(account: ManagedAccount, key: QuotaKey... function isRateLimitedForFamily (line 185) | function isRateLimitedForFamily(account: ManagedAccount, family: ModelFa... function isRateLimitedForHeaderStyle (line 196) | function isRateLimitedForHeaderStyle(account: ManagedAccount, family: Mo... function clearExpiredRateLimits (line 216) | function clearExpiredRateLimits(account: ManagedAccount): void { function resolveQuotaGroup (line 239) | function resolveQuotaGroup(family: ModelFamily, model?: string | null): ... function isOverSoftQuotaThreshold (line 246) | function isOverSoftQuotaThreshold( function computeSoftQuotaCacheTtlMs (line 279) | function computeSoftQuotaCacheTtlMs( class AccountManager (line 298) | class AccountManager { method loadFromDisk (line 316) | static async loadFromDisk(authFallback?: OAuthAuthDetails): Promise { method requestSaveToDisk (line 1028) | requestSaveToDisk(): void { method flushSaveToDisk (line 1038) | async flushSaveToDisk(): Promise { method executeSave (line 1047) | private async executeSave(): Promise { method regenerateAccountFingerprint (line 1071) | regenerateAccountFingerprint(accountIndex: number): Fingerprint | null { method restoreAccountFingerprint (line 1109) | restoreAccountFingerprint(accountIndex: number, historyIndex: number):... method getAccountFingerprintHistory (line 1150) | getAccountFingerprintHistory(accountIndex: number): FingerprintVersion... method updateQuotaCache (line 1158) | updateQuotaCache(accountIndex: number, quotaGroups: Partial = {}): OAuthAut... FILE: src/plugin/cache.ts function normalizeRefreshKey (line 10) | function normalizeRefreshKey(refresh?: string): string | undefined { function resolveCachedAuth (line 18) | function resolveCachedAuth(auth: OAuthAuthDetails): OAuthAuthDetails { function storeCachedAuth (line 46) | function storeCachedAuth(auth: OAuthAuthDetails): void { function clearCachedAuth (line 57) | function clearCachedAuth(refresh?: string): void { type SignatureEntry (line 75) | interface SignatureEntry { constant SIGNATURE_CACHE_TTL_MS (line 84) | const SIGNATURE_CACHE_TTL_MS = 60 * 60 * 1000; constant MAX_ENTRIES_PER_SESSION (line 87) | const MAX_ENTRIES_PER_SESSION = 100; constant SIGNATURE_TEXT_HASH_HEX_LEN (line 90) | const SIGNATURE_TEXT_HASH_HEX_LEN = 16; function initDiskSignatureCache (line 99) | function initDiskSignatureCache(config: SignatureCacheConfig | undefined... function getDiskSignatureCache (line 107) | function getDiskSignatureCache(): SignatureCache | null { function hashText (line 116) | function hashText(text: string): string { function makeDiskKey (line 123) | function makeDiskKey(sessionId: string, textHash: string): string { function cacheSignature (line 132) | function cacheSignature(sessionId: string, text: string, signature: stri... function getCachedSignature (line 177) | function getCachedSignature(sessionId: string, text: string): string | u... function clearSignatureCache (line 219) | function clearSignatureCache(sessionId?: string): void { FILE: src/plugin/cache/signature-cache.ts type CacheEntry (line 24) | interface CacheEntry { type CacheData (line 35) | interface CacheData { type CacheStats (line 49) | interface CacheStats { type ThinkingCacheData (line 62) | interface ThinkingCacheData { function getConfigDir (line 72) | function getConfigDir(): string { function getCacheFilePath (line 81) | function getCacheFilePath(): string { class SignatureCache (line 89) | class SignatureCache { method constructor (line 113) | constructor(config: SignatureCacheConfig) { method makeKey (line 133) | static makeKey(sessionId: string, modelId: string): string { method store (line 140) | store(key: string, signature: string): void { method retrieve (line 154) | retrieve(key: string): string | null { method has (line 175) | has(key: string): boolean { method storeThinking (line 195) | storeThinking( method retrieveThinking (line 217) | retrieveThinking(key: string): ThinkingCacheData | null { method hasThinking (line 240) | hasThinking(key: string): boolean { method getStats (line 253) | getStats(): CacheStats { method flush (line 265) | async flush(): Promise { method shutdown (line 273) | shutdown(): void { method loadFromDisk (line 295) | private loadFromDisk(): void { method saveToDisk (line 336) | private saveToDisk(): boolean { method startBackgroundTasks (line 426) | private startBackgroundTasks(): void { method cleanupExpired (line 443) | private cleanupExpired(): void { function createSignatureCache (line 467) | function createSignatureCache(config: SignatureCacheConfig | undefined):... FILE: src/plugin/cli.ts function promptProjectId (line 12) | async function promptProjectId(): Promise { function promptAddAnotherAccount (line 22) | async function promptAddAnotherAccount(currentCount: number): Promise | null { function mergeConfigs (line 94) | function mergeConfigs( function loadConfig (line 121) | function loadConfig(directory: string): AntigravityConfig { function configExists (line 145) | function configExists(path: string): boolean { function getDefaultLogsDir (line 152) | function getDefaultLogsDir(): string { function initRuntimeConfig (line 158) | function initRuntimeConfig(config: AntigravityConfig): void { function getKeepThinking (line 162) | function getKeepThinking(): boolean { FILE: src/plugin/config/models.ts type ModelThinkingLevel (line 3) | type ModelThinkingLevel = "minimal" | "low" | "medium" | "high"; type ModelThinkingConfig (line 5) | interface ModelThinkingConfig { type ModelVariant (line 9) | interface ModelVariant { type ModelLimit (line 14) | interface ModelLimit { type ModelModality (line 19) | type ModelModality = "text" | "image" | "pdf"; type ModelModalities (line 21) | interface ModelModalities { type OpencodeModelDefinition (line 26) | interface OpencodeModelDefinition extends ProviderModel { type OpencodeModelDefinitions (line 33) | type OpencodeModelDefinitions = Record; constant DEFAULT_MODALITIES (line 35) | const DEFAULT_MODALITIES: ModelModalities = { constant OPENCODE_MODEL_DEFINITIONS (line 40) | const OPENCODE_MODEL_DEFINITIONS: OpencodeModelDefinitions = { FILE: src/plugin/config/schema.ts type AccountSelectionStrategy (line 22) | type AccountSelectionStrategy = z.infer; type SchedulingMode (line 42) | type SchedulingMode = z.infer; type AntigravityConfig (line 443) | type AntigravityConfig = z.infer; type SignatureCacheConfig (line 444) | type SignatureCacheConfig = z.infer; constant DEFAULT_CONFIG (line 449) | const DEFAULT_CONFIG: AntigravityConfig = { FILE: src/plugin/config/updater.ts type UpdateConfigResult (line 16) | interface UpdateConfigResult { type OpencodeConfig (line 22) | interface OpencodeConfig { type UpdateConfigOptions (line 35) | interface UpdateConfigOptions { constant PLUGIN_NAME (line 44) | const PLUGIN_NAME = "opencode-antigravity-auth@latest"; constant SCHEMA_URL (line 45) | const SCHEMA_URL = "https://opencode.ai/config.json"; constant OPENCODE_JSON_FILENAME (line 46) | const OPENCODE_JSON_FILENAME = "opencode.json"; constant OPENCODE_JSONC_FILENAME (line 47) | const OPENCODE_JSONC_FILENAME = "opencode.jsonc"; function stripJsonCommentsAndTrailingCommas (line 49) | function stripJsonCommentsAndTrailingCommas(json: string): string { function getOpencodeConfigDir (line 61) | function getOpencodeConfigDir(): string { function getOpencodeConfigPath (line 72) | function getOpencodeConfigPath(): string { function updateOpencodeConfig (line 107) | async function updateOpencodeConfig( FILE: src/plugin/core/streaming/transformer.ts function hashString (line 13) | function hashString(str: string): string { function createThoughtBuffer (line 21) | function createThoughtBuffer(): ThoughtBuffer { function transformStreamingPayload (line 30) | function transformStreamingPayload( function deduplicateThinkingText (line 58) | function deduplicateThinkingText( function transformSseLine (line 175) | function transformSseLine( function cacheThinkingSignaturesFromResponse (line 226) | function cacheThinkingSignaturesFromResponse( function createStreamingTransformer (line 291) | function createStreamingTransformer( FILE: src/plugin/core/streaming/types.ts type SignedThinking (line 1) | interface SignedThinking { type SignatureStore (line 6) | interface SignatureStore { type StreamingCallbacks (line 13) | interface StreamingCallbacks { type StreamingOptions (line 20) | interface StreamingOptions { type ThoughtBuffer (line 28) | interface ThoughtBuffer { FILE: src/plugin/debug.ts constant MAX_BODY_PREVIEW_CHARS (line 17) | const MAX_BODY_PREVIEW_CHARS = 12000; constant MAX_BODY_LOG_CHARS (line 18) | const MAX_BODY_LOG_CHARS = 50000; constant DEBUG_MESSAGE_PREFIX (line 20) | const DEBUG_MESSAGE_PREFIX = "[opencode-antigravity-auth debug]"; type DebugState (line 26) | interface DebugState { function getConfigDir (line 38) | function getConfigDir(): string { function getLogsDir (line 50) | function getLogsDir(customLogDir?: string): string { function createLogFilePath (line 65) | function createLogFilePath(customLogDir?: string): string { function cleanupOldLogs (line 75) | function cleanupOldLogs(logsDir: string, maxFiles: number): void { function createLogWriter (line 107) | function createLogWriter(filePath?: string): (line: string) => void { function initializeDebug (line 129) | function initializeDebug(config: AntigravityConfig): void { function getDebugState (line 158) | function getDebugState(): DebugState { function isDebugEnabled (line 185) | function isDebugEnabled(): boolean { function isDebugTuiEnabled (line 189) | function isDebugTuiEnabled(): boolean { function getLogFilePath (line 193) | function getLogFilePath(): string | undefined { type AntigravityDebugContext (line 197) | interface AntigravityDebugContext { type AntigravityDebugRequestMeta (line 203) | interface AntigravityDebugRequestMeta { type AntigravityDebugResponseMeta (line 213) | interface AntigravityDebugResponseMeta { function startAntigravityDebugRequest (line 225) | function startAntigravityDebugRequest(meta: AntigravityDebugRequestMeta)... function logAntigravityDebugResponse (line 253) | function logAntigravityDebugResponse( function maskHeaders (line 291) | function maskHeaders(headers?: HeadersInit | Headers): Record void): void { type AccountDebugInfo (line 320) | interface AccountDebugInfo { function logAccountContext (line 328) | function logAccountContext(label: string, info: AccountDebugInfo): void { function logRateLimitEvent (line 353) | function logRateLimitEvent( function logRateLimitSnapshot (line 379) | function logRateLimitSnapshot( function logResponseBody (line 399) | async function logResponseBody( function logModelFamily (line 418) | function logModelFamily(url: string, extractedModel: string | null, fami... function debugLogToFile (line 424) | function debugLogToFile(message: string): void { function logToast (line 434) | function logToast(message: string, variant: "info" | "warning" | "succes... function logRetryAttempt (line 445) | function logRetryAttempt( function logCacheStats (line 461) | function logCacheStats( function logQuotaStatus (line 479) | function logQuotaStatus( function logQuotaFetch (line 496) | function logQuotaFetch( function logModelUsed (line 511) | function logModelUsed( FILE: src/plugin/errors.ts class EmptyResponseError (line 15) | class EmptyResponseError extends Error { method constructor (line 20) | constructor( class ToolIdMismatchError (line 41) | class ToolIdMismatchError extends Error { method constructor (line 45) | constructor(expectedIds: string[], foundIds: string[], message?: strin... FILE: src/plugin/fingerprint.ts constant OS_VERSIONS (line 15) | const OS_VERSIONS: Record = { constant ARCHITECTURES (line 21) | const ARCHITECTURES = ["x64", "arm64"]; constant IDE_TYPES (line 23) | const IDE_TYPES = [ constant PLATFORMS (line 27) | const PLATFORMS = [ constant SDK_CLIENTS (line 32) | const SDK_CLIENTS = [ type ClientMetadata (line 39) | interface ClientMetadata { type Fingerprint (line 45) | interface Fingerprint { type FingerprintVersion (line 60) | interface FingerprintVersion { constant MAX_FINGERPRINT_HISTORY (line 67) | const MAX_FINGERPRINT_HISTORY = 5; type FingerprintHeaders (line 69) | interface FingerprintHeaders { function randomFrom (line 73) | function randomFrom(arr: readonly T[]): T { function generateDeviceId (line 77) | function generateDeviceId(): string { function generateSessionToken (line 81) | function generateSessionToken(): string { function generateFingerprint (line 89) | function generateFingerprint(): Fingerprint { function collectCurrentFingerprint (line 117) | function collectCurrentFingerprint(): Fingerprint { function updateFingerprintVersion (line 145) | function updateFingerprintVersion(fingerprint: Fingerprint): boolean { function buildFingerprintHeaders (line 162) | function buildFingerprintHeaders(fingerprint: Fingerprint | null): Parti... function getSessionFingerprint (line 182) | function getSessionFingerprint(): Fingerprint { function regenerateSessionFingerprint (line 193) | function regenerateSessionFingerprint(): Fingerprint { FILE: src/plugin/image-saver.ts function getImageOutputDir (line 15) | function getImageOutputDir(): string { function generateImageFilename (line 30) | function generateImageFilename(mimeType: string): string { function saveImageToDisk (line 54) | function saveImageToDisk(base64Data: string, mimeType: string): string { function processImageData (line 79) | function processImageData(inlineData: { mimeType?: string; data?: string... FILE: src/plugin/logger.ts type LogLevel (line 18) | type LogLevel = "debug" | "info" | "warn" | "error"; constant ENV_CONSOLE_LOG (line 20) | const ENV_CONSOLE_LOG = "OPENCODE_ANTIGRAVITY_CONSOLE_LOG"; type Logger (line 22) | interface Logger { function isConsoleLogEnabled (line 34) | function isConsoleLogEnabled(): boolean { function initLogger (line 42) | function initLogger(client: PluginClient): void { function createLogger (line 59) | function createLogger(module: string): Logger { FILE: src/plugin/logging-utils.ts type LogLevel (line 1) | type LogLevel = "debug" | "info" | "warn" | "error" type DebugPolicyInput (line 3) | interface DebugPolicyInput { type DebugPolicy (line 10) | interface DebugPolicy { function isTruthyFlag (line 17) | function isTruthyFlag(flag?: string): boolean { function parseDebugLevel (line 21) | function parseDebugLevel(flag: string): number { function deriveDebugPolicy (line 28) | function deriveDebugPolicy(input: DebugPolicyInput): DebugPolicy { function formatAccountLabel (line 47) | function formatAccountLabel(email: string | undefined, accountIndex: num... function formatAccountContextLabel (line 51) | function formatAccountContextLabel(email: string | undefined, accountInd... function formatErrorForLog (line 61) | function formatErrorForLog(error: unknown): string { function truncateTextForLog (line 72) | function truncateTextForLog(text: string, maxChars: number): string { function formatBodyPreviewForLog (line 79) | function formatBodyPreviewForLog( function writeConsoleLog (line 106) | function writeConsoleLog(level: LogLevel, ...args: unknown[]): void { FILE: src/plugin/persist-account-pool.test.ts function createMockAccount (line 37) | function createMockAccount(overrides: Partial = {}): ... function createMockStorage (line 49) | function createMockStorage(accounts: AccountMetadataV3[], activeIndex = ... FILE: src/plugin/project.ts constant CODE_ASSIST_METADATA (line 16) | const CODE_ASSIST_METADATA = { type AntigravityUserTier (line 22) | interface AntigravityUserTier { type LoadCodeAssistPayload (line 28) | interface LoadCodeAssistPayload { type OnboardUserPayload (line 36) | interface OnboardUserPayload { function buildMetadata (line 45) | function buildMetadata(projectId?: string): Record { function getDefaultTierId (line 60) | function getDefaultTierId(allowedTiers?: AntigravityUserTier[]): string ... function wait (line 75) | function wait(ms: number): Promise { function extractManagedProjectId (line 84) | function extractManagedProjectId(payload: LoadCodeAssistPayload | null):... function getCacheKey (line 100) | function getCacheKey(auth: OAuthAuthDetails): string | undefined { function invalidateProjectContextCache (line 108) | function invalidateProjectContextCache(refresh?: string): void { function loadManagedProject (line 121) | async function loadManagedProject( function onboardManagedProject (line 169) | async function onboardManagedProject( function ensureProjectContext (line 225) | async function ensureProjectContext(auth: OAuthAuthDetails): Promise { method refreshToken (line 212) | private async refreshToken( method start (line 232) | start(): void { method stop (line 274) | stop(): void { method getStats (line 295) | getStats(): { method isRunning (line 309) | isRunning(): boolean { function createProactiveRefreshQueue (line 317) | function createProactiveRefreshQueue( FILE: src/plugin/request-helpers.test.ts function createTestBuffer (line 1759) | function createTestBuffer() { FILE: src/plugin/request-helpers.ts constant ANTIGRAVITY_PREVIEW_LINK (line 14) | const ANTIGRAVITY_PREVIEW_LINK = "https://goo.gle/enable-preview-features"; constant UNSUPPORTED_CONSTRAINTS (line 25) | const UNSUPPORTED_CONSTRAINTS = [ constant UNSUPPORTED_KEYWORDS (line 34) | const UNSUPPORTED_KEYWORDS = [ function appendDescriptionHint (line 43) | function appendDescriptionHint(schema: any, hint: string): any { function convertRefsToHints (line 56) | function convertRefsToHints(schema: any): any { function convertConstToEnum (line 87) | function convertConstToEnum(schema: any): any { function addEnumHints (line 111) | function addEnumHints(schema: any): any { function addAdditionalPropertiesHints (line 142) | function addAdditionalPropertiesHints(schema: any): any { function moveConstraintsToDescription (line 171) | function moveConstraintsToDescription(schema: any): any { function mergeAllOf (line 204) | function mergeAllOf(schema: any): any { function scoreSchemaOption (line 278) | function scoreSchemaOption(schema: any): { score: number; typeName: stri... function tryMergeEnumFromUnion (line 313) | function tryMergeEnumFromUnion(options: any[]): string[] | null { function flattenAnyOfOneOf (line 369) | function flattenAnyOfOneOf(schema: any): any { function flattenTypeArrays (line 460) | function flattenTypeArrays(schema: any, nullableFields?: Map): boolean { function hasSignatureField (line 893) | function hasSignatureField(part: Record): boolean { function isToolBlock (line 905) | function isToolBlock(part: Record): boolean { function stripAllThinkingBlocks (line 922) | function stripAllThinkingBlocks(contentArray: any[]): any[] { function removeTrailingThinkingBlocks (line 937) | function removeTrailingThinkingBlocks( function hasValidSignature (line 962) | function hasValidSignature(part: Record): boolean { function getSignature (line 970) | function getSignature(part: Record): string | undefined { function isOurCachedSignature (line 980) | function isOurCachedSignature( function getThinkingText (line 1006) | function getThinkingText(part: Record): string { function stripCacheControlRecursively (line 1027) | function stripCacheControlRecursively(obj: unknown): unknown { function sanitizeThinkingPart (line 1045) | function sanitizeThinkingPart(part: Record): Record { function fixClaudeToolPairing (line 2301) | function fixClaudeToolPairing(messages: any[]): any[] { function removeOrphanedToolUse (line 2396) | function removeOrphanedToolUse(messages: any[], orphanIds: Set):... function validateAndFixClaudeToolPairing (line 2420) | function validateAndFixClaudeToolPairing(messages: any[]): any[] { function formatTypeHint (line 2452) | function formatTypeHint(propData: Record, depth = 0): s... function injectParameterSignatures (line 2519) | function injectParameterSignatures( function injectToolHardeningInstruction (line 2568) | function injectToolHardeningInstruction( function assignToolIdsToContents (line 2622) | function assignToolIdsToContents( function matchResponseIdsToContents (line 2666) | function matchResponseIdsToContents( function applyToolPairingFixes (line 2710) | function applyToolPairingFixes( function createSyntheticErrorResponse (line 2771) | function createSyntheticErrorResponse( FILE: src/plugin/request.test.ts function createMockSignatureStore (line 37) | function createMockSignatureStore(): SignatureStore { function createMockThoughtBuffer (line 47) | function createMockThoughtBuffer(): ThoughtBuffer { function withKeepThinking (line 60) | function withKeepThinking(enabled: boolean, fn: () => T): T { FILE: src/plugin/request.ts constant PLUGIN_SESSION_ID (line 77) | const PLUGIN_SESSION_ID = `-${crypto.randomUUID()}`; constant MIN_SIGNATURE_LENGTH (line 81) | const MIN_SIGNATURE_LENGTH = 50; function buildSignatureSessionKey (line 83) | function buildSignatureSessionKey( function shouldCacheThinkingSignatures (line 105) | function shouldCacheThinkingSignatures(model?: string): boolean { function hashConversationSeed (line 113) | function hashConversationSeed(seed: string): string { function extractTextFromContent (line 117) | function extractTextFromContent(content: unknown): string { function extractConversationSeedFromMessages (line 139) | function extractConversationSeedFromMessages(messages: any[]): string { function extractConversationSeedFromContents (line 150) | function extractConversationSeedFromContents(contents: any[]): string { function resolveConversationKey (line 164) | function resolveConversationKey(requestPayload: Record)... function resolveConversationKeyFromRequests (line 205) | function resolveConversationKeyFromRequests(requestObjects: Array = {}) { method getScore (line 65) | getScore(accountIndex: number): number { method recordSuccess (line 85) | recordSuccess(accountIndex: number): void { method recordRateLimit (line 100) | recordRateLimit(accountIndex: number): void { method recordFailure (line 116) | recordFailure(accountIndex: number): void { method isUsable (line 132) | isUsable(accountIndex: number): boolean { method getConsecutiveFailures (line 139) | getConsecutiveFailures(accountIndex: number): number { method reset (line 146) | reset(accountIndex: number): void { method getSnapshot (line 153) | getSnapshot(): Map = {}) { method getTokens (line 360) | getTokens(accountIndex: number): number { method hasTokens (line 380) | hasTokens(accountIndex: number, cost: number = 1): boolean { method consume (line 388) | consume(accountIndex: number, cost: number = 1): boolean { method refund (line 404) | refund(accountIndex: number, amount: number = 1): void { method getMaxTokens (line 412) | getMaxTokens(): number { function getTokenTracker (line 423) | function getTokenTracker(): TokenBucketTracker { function initTokenTracker (line 430) | function initTokenTracker(config: Partial): TokenBuck... function getHealthTracker (line 441) | function getHealthTracker(): HealthScoreTracker { function initHealthTracker (line 452) | function initHealthTracker(config: Partial): HealthSc... FILE: src/plugin/search.ts type GroundingChunk (line 24) | interface GroundingChunk { type GroundingSupport (line 31) | interface GroundingSupport { type GroundingMetadata (line 40) | interface GroundingMetadata { type UrlMetadata (line 49) | interface UrlMetadata { type UrlContextMetadata (line 54) | interface UrlContextMetadata { type SearchResponse (line 58) | interface SearchResponse { type AntigravitySearchResponse (line 75) | interface AntigravitySearchResponse { type SearchArgs (line 84) | interface SearchArgs { type SearchResult (line 90) | interface SearchResult { function generateRequestId (line 104) | function generateRequestId(): string { function getSessionId (line 108) | function getSessionId(): string { function formatSearchResult (line 113) | function formatSearchResult(result: SearchResult): string { function parseSearchResponse (line 147) | function parseSearchResponse(data: AntigravitySearchResponse): SearchRes... function executeSearch (line 223) | async function executeSearch( FILE: src/plugin/server.ts type OAuthListenerOptions (line 6) | interface OAuthListenerOptions { type OAuthListener (line 13) | interface OAuthListener { function isOrbStackDockerHost (line 31) | function isOrbStackDockerHost(): boolean { function isWSL (line 83) | function isWSL(): boolean { function isRemoteEnvironment (line 96) | function isRemoteEnvironment(): boolean { function getBindAddress (line 115) | function getBindAddress(): string { function startOAuthListener (line 140) | async function startOAuthListener( FILE: src/plugin/storage.ts constant GITIGNORE_ENTRIES (line 25) | const GITIGNORE_ENTRIES = [ function ensureGitignore (line 38) | async function ensureGitignore(configDir: string): Promise { function ensureGitignoreSync (line 89) | function ensureGitignoreSync(configDir: string): void { type ModelFamily (line 130) | type ModelFamily = "claude" | "gemini"; type RateLimitState (line 133) | interface RateLimitState { type RateLimitStateV3 (line 138) | interface RateLimitStateV3 { type AccountMetadataV1 (line 145) | interface AccountMetadataV1 { type AccountStorageV1 (line 157) | interface AccountStorageV1 { type AccountMetadata (line 163) | interface AccountMetadata { type AccountStorage (line 174) | interface AccountStorage { type CooldownReason (line 180) | type CooldownReason = "auth-failure" | "network-error" | "project-error"... type AccountMetadataV3 (line 182) | interface AccountMetadataV3 { type AccountStorageV3 (line 207) | interface AccountStorageV3 { type AccountStorageV4 (line 217) | interface AccountStorageV4 { type AnyAccountStorage (line 227) | type AnyAccountStorage = function getLegacyWindowsConfigDir (line 237) | function getLegacyWindowsConfigDir(): string { function getConfigDir (line 251) | function getConfigDir(): string { function migrateLegacyWindowsConfig (line 267) | function migrateLegacyWindowsConfig(): boolean { function getStoragePathWithMigration (line 315) | function getStoragePathWithMigration(): string { function getStoragePath (line 341) | function getStoragePath(): string { constant LOCK_OPTIONS (line 350) | const LOCK_OPTIONS = { function ensureSecurePermissions (line 364) | async function ensureSecurePermissions(path: string): Promise { function ensureFileExists (line 372) | async function ensureFileExists(path: string): Promise { function withFileLock (line 385) | async function withFileLock(path: string, fn: () => Promise): Prom... function mergeAccountStorage (line 402) | function mergeAccountStorage( function deduplicateAccountsByEmail (line 444) | function deduplicateAccountsByEmail< function migrateV1ToV2 (line 509) | function migrateV1ToV2(v1: AccountStorageV1): AccountStorage { function migrateV2ToV3 (line 540) | function migrateV2ToV3(v2: AccountStorage): AccountStorageV3 { function migrateV3ToV4 (line 576) | function migrateV3ToV4(v3: AccountStorageV3): AccountStorageV4 { function loadAccounts (line 589) | async function loadAccounts(): Promise { function saveAccounts (line 693) | async function saveAccounts(storage: AccountStorageV4): Promise { function saveAccountsReplace (line 726) | async function saveAccountsReplace(storage: AccountStorageV4): Promise { function clearAccounts (line 782) | async function clearAccounts(): Promise { FILE: src/plugin/stores/signature-store.ts function createSignatureStore (line 3) | function createSignatureStore(): SignatureStore { function createThoughtBuffer (line 18) | function createThoughtBuffer(): ThoughtBuffer { FILE: src/plugin/thinking-recovery.ts type ConversationState (line 19) | interface ConversationState { function isThinkingPart (line 41) | function isThinkingPart(part: any): boolean { function isFunctionResponsePart (line 53) | function isFunctionResponsePart(part: any): boolean { function isFunctionCallPart (line 60) | function isFunctionCallPart(part: any): boolean { function isToolResultMessage (line 67) | function isToolResultMessage(msg: any): boolean { function messageHasThinking (line 76) | function messageHasThinking(msg: any): boolean { function messageHasToolCalls (line 98) | function messageHasToolCalls(msg: any): boolean { function analyzeConversationState (line 125) | function analyzeConversationState(contents: any[]): ConversationState { function stripAllThinkingBlocks (line 189) | function stripAllThinkingBlocks(contents: any[]): any[] { function countTrailingToolResults (line 224) | function countTrailingToolResults(contents: any[]): number { function closeToolLoopForThinking (line 264) | function closeToolLoopForThinking(contents: any[]): any[] { function needsThinkingRecovery (line 305) | function needsThinkingRecovery(state: ConversationState): boolean { function looksLikeCompactedThinkingTurn (line 330) | function looksLikeCompactedThinkingTurn(msg: any): boolean { function hasPossibleCompactedThinking (line 381) | function hasPossibleCompactedThinking( FILE: src/plugin/token.test.ts function createClient (line 14) | function createClient() { FILE: src/plugin/token.ts type OAuthErrorPayload (line 10) | interface OAuthErrorPayload { function parseOAuthErrorPayload (line 24) | function parseOAuthErrorPayload(text: string | undefined): { code?: stri... class AntigravityTokenRefreshError (line 60) | class AntigravityTokenRefreshError extends Error { method constructor (line 66) | constructor(options: { function refreshAccessToken (line 85) | async function refreshAccessToken( FILE: src/plugin/transform/claude.ts constant CLAUDE_THINKING_MAX_OUTPUT_TOKENS (line 18) | const CLAUDE_THINKING_MAX_OUTPUT_TOKENS = 64_000; constant CLAUDE_INTERLEAVED_THINKING_HINT (line 21) | const CLAUDE_INTERLEAVED_THINKING_HINT = function isClaudeModel (line 27) | function isClaudeModel(model: string): boolean { function isClaudeThinkingModel (line 34) | function isClaudeThinkingModel(model: string): boolean { function configureClaudeToolConfig (line 43) | function configureClaudeToolConfig(payload: RequestPayload): void { function buildClaudeThinkingConfig (line 62) | function buildClaudeThinkingConfig( function ensureClaudeMaxOutputTokens (line 78) | function ensureClaudeMaxOutputTokens( function appendClaudeThinkingHint (line 96) | function appendClaudeThinkingHint( function normalizeClaudeTools (line 146) | function normalizeClaudeTools( function convertStopSequences (line 293) | function convertStopSequences( type ClaudeTransformOptions (line 305) | interface ClaudeTransformOptions { type ClaudeTransformResult (line 316) | interface ClaudeTransformResult { function applyClaudeTransforms (line 324) | function applyClaudeTransforms( FILE: src/plugin/transform/cross-model-sanitizer.ts type ModelFamily (line 13) | type ModelFamily = "claude" | "gemini" | "unknown"; type SanitizerOptions (line 15) | interface SanitizerOptions { type SanitizationResult (line 21) | interface SanitizationResult { constant GEMINI_SIGNATURE_FIELDS (line 27) | const GEMINI_SIGNATURE_FIELDS = ["thoughtSignature", "thinkingMetadata"]... constant CLAUDE_SIGNATURE_FIELDS (line 28) | const CLAUDE_SIGNATURE_FIELDS = ["signature"] as const; function getModelFamily (line 30) | function getModelFamily(model: string): ModelFamily { function isPlainObject (line 36) | function isPlainObject(value: unknown): value is Record { function stripGeminiThinkingMetadata (line 40) | function stripGeminiThinkingMetadata( function stripClaudeThinkingFields (line 81) | function stripClaudeThinkingFields( function sanitizePart (line 105) | function sanitizePart( function sanitizeParts (line 128) | function sanitizeParts( function sanitizeContents (line 144) | function sanitizeContents( function sanitizeMessages (line 172) | function sanitizeMessages( function deepSanitizeCrossModelMetadata (line 200) | function deepSanitizeCrossModelMetadata( function sanitizeCrossModelPayload (line 262) | function sanitizeCrossModelPayload( function sanitizeCrossModelPayloadInPlace (line 290) | function sanitizeCrossModelPayloadInPlace( FILE: src/plugin/transform/gemini.ts constant UNSUPPORTED_SCHEMA_FIELDS (line 27) | const UNSUPPORTED_SCHEMA_FIELDS = new Set([ function toGeminiSchema (line 52) | function toGeminiSchema(schema: unknown): unknown { function isGeminiModel (line 129) | function isGeminiModel(model: string): boolean { function isGemini3Model (line 137) | function isGemini3Model(model: string): boolean { function isGemini25Model (line 144) | function isGemini25Model(model: string): boolean { function isImageGenerationModel (line 152) | function isImageGenerationModel(model: string): boolean { function buildGemini3ThinkingConfig (line 163) | function buildGemini3ThinkingConfig( function buildGemini25ThinkingConfig (line 176) | function buildGemini25ThinkingConfig( type ImageConfig (line 191) | interface ImageConfig { constant VALID_ASPECT_RATIOS (line 198) | const VALID_ASPECT_RATIOS = ["1:1", "2:3", "3:2", "3:4", "4:3", "4:5", "... function buildImageGenerationConfig (line 210) | function buildImageGenerationConfig(): ImageConfig { function normalizeGeminiTools (line 230) | function normalizeGeminiTools( type GeminiTransformOptions (line 347) | interface GeminiTransformOptions { type GeminiTransformResult (line 360) | interface GeminiTransformResult { function applyGeminiTransforms (line 372) | function applyGeminiTransforms( type WrapToolsResult (line 434) | interface WrapToolsResult { function isWebSearchTool (line 456) | function isWebSearchTool(tool: Record): boolean { function wrapToolsAsFunctionDeclarations (line 476) | function wrapToolsAsFunctionDeclarations(payload: RequestPayload): WrapT... FILE: src/plugin/transform/model-resolver.ts type ModelResolverOptions (line 10) | interface ModelResolverOptions { constant THINKING_TIER_BUDGETS (line 18) | const THINKING_TIER_BUDGETS = { constant GEMINI_3_THINKING_LEVELS (line 30) | const GEMINI_3_THINKING_LEVELS = ["minimal", "low", "medium", "high"] as... constant MODEL_ALIASES (line 40) | const MODEL_ALIASES: Record = { constant TIER_REGEX (line 62) | const TIER_REGEX = /-(minimal|low|medium|high)$/; constant QUOTA_PREFIX_REGEX (line 63) | const QUOTA_PREFIX_REGEX = /^antigravity-/i; constant GEMINI_3_PRO_REGEX (line 64) | const GEMINI_3_PRO_REGEX = /^gemini-3(?:\.\d+)?-pro/i; constant GEMINI_3_FLASH_REGEX (line 65) | const GEMINI_3_FLASH_REGEX = /^gemini-3(?:\.\d+)?-flash/i; constant IMAGE_GENERATION_MODELS (line 73) | const IMAGE_GENERATION_MODELS = /image|imagen/i; function supportsThinkingTiers (line 82) | function supportsThinkingTiers(model: string): boolean { function extractThinkingTierFromModel (line 95) | function extractThinkingTierFromModel(model: string): ThinkingTier | und... function getBudgetFamily (line 107) | function getBudgetFamily(model: string): keyof typeof THINKING_TIER_BUDG... function isThinkingCapableModel (line 123) | function isThinkingCapableModel(model: string): boolean { function isGemini3ProModel (line 132) | function isGemini3ProModel(model: string): boolean { function isGemini3FlashModel (line 136) | function isGemini3FlashModel(model: string): boolean { function resolveModelWithTier (line 160) | function resolveModelWithTier(requestedModel: string, options: ModelReso... function getModelFamily (line 272) | function getModelFamily(model: string): "claude" | "gemini-flash" | "gem... type VariantConfig (line 286) | interface VariantConfig { function budgetToGemini3Level (line 295) | function budgetToGemini3Level(budget: number): "low" | "medium" | "high" { function resolveModelForHeaderStyle (line 310) | function resolveModelForHeaderStyle( function resolveModelWithVariant (line 363) | function resolveModelWithVariant( FILE: src/plugin/transform/types.ts type ModelFamily (line 3) | type ModelFamily = "claude" | "gemini-flash" | "gemini-pro"; type ThinkingTier (line 5) | type ThinkingTier = "low" | "medium" | "high"; type TransformContext (line 11) | interface TransformContext { type TransformResult (line 37) | interface TransformResult { type TransformDebugInfo (line 47) | interface TransformDebugInfo { type RequestPayload (line 66) | type RequestPayload = Record; type ThinkingConfig (line 71) | interface ThinkingConfig { type GoogleSearchConfig (line 89) | interface GoogleSearchConfig { type ResolvedModel (line 98) | interface ResolvedModel { FILE: src/plugin/types.ts type OAuthAuthDetails (line 4) | interface OAuthAuthDetails { type ApiKeyAuthDetails (line 11) | interface ApiKeyAuthDetails { type NonOAuthAuthDetails (line 16) | interface NonOAuthAuthDetails { type AuthDetails (line 21) | type AuthDetails = OAuthAuthDetails | ApiKeyAuthDetails | NonOAuthAuthDe... type GetAuth (line 23) | type GetAuth = () => Promise; type ProviderModel (line 25) | interface ProviderModel { type Provider (line 33) | interface Provider { type LoaderResult (line 37) | interface LoaderResult { type PluginClient (line 42) | type PluginClient = PluginInput["client"]; type PluginContext (line 44) | interface PluginContext { type AuthPrompt (line 49) | type AuthPrompt = type OAuthAuthorizationResult (line 66) | type OAuthAuthorizationResult = { url: string; instructions: string } & ( type AuthMethod (line 77) | interface AuthMethod { type PluginEventPayload (line 85) | interface PluginEventPayload { type PluginResult (line 92) | interface PluginResult { type RefreshParts (line 102) | interface RefreshParts { type ProjectContextResult (line 108) | interface ProjectContextResult { FILE: src/plugin/ui/ansi.ts constant ANSI (line 6) | const ANSI = { type KeyAction (line 27) | type KeyAction = 'up' | 'down' | 'enter' | 'escape' | 'escape-start' | n... function parseKey (line 33) | function parseKey(data: Buffer): KeyAction { function isTTY (line 55) | function isTTY(): boolean { FILE: src/plugin/ui/auth-menu.test.ts function formatRelativeTime (line 4) | function formatRelativeTime(timestamp: number | undefined): string { function formatDate (line 14) | function formatDate(timestamp: number | undefined): string { type AccountStatus (line 19) | type AccountStatus = 'active' | 'rate-limited' | 'expired' | 'unknown'; function getStatusBadge (line 21) | function getStatusBadge(status: AccountStatus | undefined): string { FILE: src/plugin/ui/auth-menu.ts type AccountStatus (line 5) | type AccountStatus = 'active' | 'rate-limited' | 'expired' | 'verificati... type AccountInfo (line 7) | interface AccountInfo { type AuthMenuAction (line 17) | type AuthMenuAction = type AccountAction (line 27) | type AccountAction = 'back' | 'delete' | 'refresh' | 'toggle' | 'verify'... function formatRelativeTime (line 29) | function formatRelativeTime(timestamp: number | undefined): string { function formatDate (line 39) | function formatDate(timestamp: number | undefined): string { function getStatusBadge (line 44) | function getStatusBadge(status: AccountStatus | undefined): string { function showAuthMenu (line 54) | async function showAuthMenu(accounts: AccountInfo[]): Promise { type SelectOptions (line 14) | interface SelectOptions { constant ESCAPE_TIMEOUT_MS (line 26) | const ESCAPE_TIMEOUT_MS = 50; constant ANSI_REGEX (line 28) | const ANSI_REGEX = new RegExp("\\x1b\\[[0-9;]*m", "g"); constant ANSI_LEADING_REGEX (line 29) | const ANSI_LEADING_REGEX = new RegExp("^\\x1b\\[[0-9;]*m"); function stripAnsi (line 31) | function stripAnsi(input: string): string { function truncateAnsi (line 35) | function truncateAnsi(input: string, maxVisibleChars: number): string { function getColorCode (line 71) | function getColorCode(color: MenuItem['color']): string { function select (line 81) | async function select( FILE: src/plugin/version.ts constant VERSION_URL (line 18) | const VERSION_URL = "https://antigravity-auto-updater-974169037036.us-ce... constant CHANGELOG_URL (line 19) | const CHANGELOG_URL = "https://antigravity.google/changelog"; constant FETCH_TIMEOUT_MS (line 20) | const FETCH_TIMEOUT_MS = 5000; constant CHANGELOG_SCAN_CHARS (line 21) | const CHANGELOG_SCAN_CHARS = 5000; constant VERSION_REGEX (line 22) | const VERSION_REGEX = /\d+\.\d+\.\d+/; type VersionSource (line 24) | type VersionSource = "api" | "changelog" | "fallback"; function parseVersion (line 26) | function parseVersion(text: string): string | null { function tryFetchVersion (line 31) | async function tryFetchVersion(url: string, maxChars?: number): Promise<... function initAntigravityVersion (line 51) | async function initAntigravityVersion(): Promise { FILE: src/shims.d.ts type PkcePair (line 2) | interface PkcePair {