import { resolveProviderHttpRequestConfig, type ProviderRequestTransportOverrides, } from "openclaw/plugin-sdk/provider-http"; import { parseGeminiAuth } from "./gemini-auth.js"; export { parseGeminiAuth }; export { applyGoogleGeminiModelDefault, GOOGLE_GEMINI_DEFAULT_MODEL } from "./onboard.js"; import { DEFAULT_GOOGLE_API_BASE_URL, normalizeGoogleApiBaseUrl, normalizeGoogleGenerativeAiBaseUrl, } from "./provider-policy.js"; export { normalizeAntigravityModelId, normalizeGoogleModelId } from "./model-id.js"; export { createGoogleThinkingPayloadWrapper, createGoogleThinkingStreamWrapper, isGoogleGemini3FlashModel, isGoogleGemini3ProModel, isGoogleGemini3ThinkingLevelModel, isGoogleThinkingRequiredModel, resolveGoogleGemini3ThinkingLevel, sanitizeGoogleThinkingPayload, stripInvalidGoogleThinkingBudget, type GoogleThinkingInputLevel, type GoogleThinkingLevel, } from "./thinking-api.js"; export { buildGoogleGenerativeAiParams, createGoogleGenerativeAiTransportStreamFn, } from "./transport-stream.js"; export { DEFAULT_GOOGLE_API_BASE_URL, isGoogleGenerativeAiApi, normalizeGoogleApiBaseUrl, normalizeGoogleGenerativeAiBaseUrl, normalizeGoogleProviderConfig, resolveGoogleGenerativeAiApiOrigin, resolveGoogleGenerativeAiTransport, shouldNormalizeGoogleGenerativeAiProviderConfig, shouldNormalizeGoogleProviderConfig, } from "./provider-policy.js"; export { buildGoogleGeminiCliProvider } from "./gemini-cli-provider.js"; export { buildGoogleProvider } from "./provider-registration.js"; type GoogleGenerativeAiRequestOverrides = ProviderRequestTransportOverrides & { allowPrivateNetwork?: boolean; }; function resolveTrustedGoogleGenerativeAiBaseUrl(baseUrl?: string): string { const normalized = normalizeGoogleGenerativeAiBaseUrl(baseUrl ?? DEFAULT_GOOGLE_API_BASE_URL) ?? DEFAULT_GOOGLE_API_BASE_URL; let url: URL; try { url = new URL(normalized); } catch { throw new Error( "Google Generative AI baseUrl must be a valid https URL on generativelanguage.googleapis.com", ); } if ( url.protocol !== "https:" || url.hostname.toLowerCase() !== "generativelanguage.googleapis.com" ) { throw new Error( "Google Generative AI baseUrl must use https://generativelanguage.googleapis.com", ); } return normalized; } export function resolveGoogleGenerativeAiHttpRequestConfig(params: { apiKey: string; baseUrl?: string; headers?: Record; request?: GoogleGenerativeAiRequestOverrides; capability: "image" | "audio" | "video"; transport: "http" | "media-understanding"; }) { return resolveProviderHttpRequestConfig({ baseUrl: resolveTrustedGoogleGenerativeAiBaseUrl(params.baseUrl), defaultBaseUrl: DEFAULT_GOOGLE_API_BASE_URL, allowPrivateNetwork: params.request?.allowPrivateNetwork, headers: params.headers, request: params.request, defaultHeaders: parseGeminiAuth(params.apiKey).headers, provider: "google", api: "google-generative-ai", capability: params.capability, transport: params.transport, }); }