export interface AntigravityApiError { code?: number; message?: string; status?: string; [key: string]: unknown; } /** * Minimal representation of Antigravity API responses we touch. */ export interface AntigravityApiBody { response?: unknown; error?: AntigravityApiError; [key: string]: unknown; } /** * Usage metadata exposed by Antigravity responses. Fields are optional to reflect partial payloads. */ export interface AntigravityUsageMetadata { totalTokenCount?: number; promptTokenCount?: number; candidatesTokenCount?: number; cachedContentTokenCount?: number; } /** * Normalized thinking configuration accepted by Antigravity. */ export interface ThinkingConfig { thinkingBudget?: number; includeThoughts?: boolean; } /** * Default token budget for thinking/reasoning. 16000 tokens provides sufficient * space for complex reasoning while staying within typical model limits. */ export declare const DEFAULT_THINKING_BUDGET = 16000; /** * Checks if a model name indicates thinking/reasoning capability. * Models with "thinking", "gemini-3", or "opus" in their name support extended thinking. */ export declare function isThinkingCapableModel(modelName: string): boolean; /** * Extracts thinking configuration from various possible request locations. * Supports both Gemini-style thinkingConfig and Anthropic-style thinking options. */ export declare function extractThinkingConfig(requestPayload: Record, rawGenerationConfig: Record | undefined, extraBody: Record | undefined): ThinkingConfig | undefined; /** * Determines the final thinking configuration based on model capabilities and user settings. * For Claude thinking models, we keep thinking enabled even in multi-turn conversations. * The filterUnsignedThinkingBlocks function will handle signature validation/restoration. */ export declare function resolveThinkingConfig(userConfig: ThinkingConfig | undefined, isThinkingModel: boolean, _isClaudeModel: boolean, _hasAssistantHistory: boolean): ThinkingConfig | undefined; /** * Filters out unsigned thinking blocks from contents (required by Claude API). * Attempts to restore signatures from cache for thinking blocks that lack valid signatures. * * @param contents - The contents array from the request * @param sessionId - Optional session ID for signature cache lookup * @param getCachedSignatureFn - Optional function to retrieve cached signatures */ export declare function filterUnsignedThinkingBlocks(contents: any[], sessionId?: string, getCachedSignatureFn?: (sessionId: string, text: string) => string | undefined): any[]; /** * Filters thinking blocks from Anthropic-style messages[] payloads. */ export declare function filterMessagesThinkingBlocks(messages: any[], sessionId?: string, getCachedSignatureFn?: (sessionId: string, text: string) => string | undefined): any[]; /** * Transforms thinking/reasoning content in response parts to OpenCode's expected format. * Handles both Gemini-style (thought: true) and Anthropic-style (type: "thinking") formats. * Also extracts reasoning_content for Anthropic-style responses. */ export declare function transformThinkingParts(response: unknown): unknown; /** * Ensures thinkingConfig is valid: includeThoughts only allowed when budget > 0. */ export declare function normalizeThinkingConfig(config: unknown): ThinkingConfig | undefined; /** * Parses an Antigravity API body; handles array-wrapped responses the API sometimes returns. */ export declare function parseAntigravityApiBody(rawText: string): AntigravityApiBody | null; /** * Extracts usageMetadata from a response object, guarding types. */ export declare function extractUsageMetadata(body: AntigravityApiBody): AntigravityUsageMetadata | null; /** * Walks SSE lines to find a usage-bearing response chunk. */ export declare function extractUsageFromSsePayload(payload: string): AntigravityUsageMetadata | null; /** * Enhances 404 errors for Antigravity models with a direct preview-access message. */ export declare function rewriteAntigravityPreviewAccessError(body: AntigravityApiBody, status: number, requestedModel?: string): AntigravityApiBody | null; //# sourceMappingURL=request-helpers.d.ts.map