@adaline/google 1.17.0 → 1.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/configs/chat-model/base.config.chat-model.google.ts","../src/configs/chat-model/common.config.chat-model.google.ts","../src/configs/chat-model/response-schema.config.chat-model.google.ts","../src/configs/chat-model/reasoning.config.chat-model.google.ts","../src/configs/embedding-model/base.config.embedding-model.google.ts","../src/configs/embedding-model/common.config.embedding-model.google.ts","../src/configs/configs.google.ts","../src/provider/provider.google.ts","../src/models/pricing.json","../src/models/chat-models/types/roles.chat-model.google.ts","../src/models/chat-models/types/modalities.chat-model.google.ts","../src/models/chat-models/types/response.chat-model.google.ts","../src/models/chat-models/types/request.chat-model.google.ts","../src/models/chat-models/base-chat-model.google.ts","../src/models/chat-models/gemini-1.5-flash-001.google.ts","../src/models/chat-models/gemini-1.5-flash-002.google.ts","../src/models/chat-models/gemini-1.5-flash-latest.google.ts","../src/models/chat-models/gemini-1.5-flash.google.ts","../src/models/chat-models/gemini-1.5-pro-001.google.ts","../src/models/chat-models/gemini-1.5-pro-002.google.ts","../src/models/chat-models/gemini-1.5-pro-latest.google.ts","../src/models/chat-models/gemini-1.5-pro.google.ts","../src/models/chat-models/gemini-2.0-flash-exp.google.ts","../src/models/chat-models/gemini-2.0-flash.google.ts","../src/models/chat-models/gemini-2.5-flash-lite.google.ts","../src/models/chat-models/gemini-2.5-flash-preview-04-17.google.ts","../src/models/chat-models/gemini-2.5-flash.google.ts","../src/models/chat-models/gemini-2.5-pro-preview-03-25.google.ts","../src/models/chat-models/gemini-2.5-pro.google.ts","../src/models/chat-models/gemini-3-flash-preview.google.ts","../src/models/chat-models/gemini-3-pro-preview.google.ts","../src/models/embedding-models/types/modalitites.embedding-model.google.ts","../src/models/embedding-models/types/response.embedding-model.google.ts","../src/models/embedding-models/types/request.embedding-model.google.ts","../src/models/embedding-models/base-embedding-model.google.ts","../src/models/embedding-models/text-embedding-001.google.ts","../src/models/embedding-models/text-embedding-004.google.ts"],"names":["GOOGLE_SAFETY_CATEGORIES","GOOGLE_SAFETY_THRESHOLDS","formatSafetyLabel","value","prefix","letter","GOOGLE_SAFETY_CATEGORY_OPTIONS","category","GOOGLE_SAFETY_THRESHOLD_OPTIONS","threshold","temperature","max","_default","RangeConfigItem","CHAT_CONFIG","maxTokens","maxOutputTokens","stop","maxSequences","MultiStringConfigItem","topP","topK","frequencyPenalty","presencePenalty","seed","toolChoice","SelectStringConfigItem","safetySettings","PairedSelectConfigItem","reasoningEnabled","SelectBooleanConfigItem","maxReasoningTokens","minReasoningToken","maxReasoningToken","reasoningEffort","googleSearchTool","ChatModelBaseConfigSchema","maxTemperature","defaultTemperature","defaultTopP","z","ChatModelBaseConfigDef","responseSchema","ObjectSchemaConfigItem","ResponseSchema","responseFormat","GoogleChatModelResponseSchemaConfigDef","__spreadProps","__spreadValues","GoogleChatModelResponseSchemaConfigSchema","ChatModelReasoningConfigSchema","ChatModelReasoningConfigDef","dimensions","maxDimensions","EMBEDDING_CONFIG","EmbeddingModelBaseConfigSchema","EmbeddingModelBaseConfigDef","GoogleChatModelConfigs","GoogleEmbeddingModelConfigs","ProviderLiteral","Google","Gemini1_5Flash001Literal","Gemini1_5Flash001","Gemini1_5Flash001Options","Gemini1_5Flash001Schema","Gemini1_5Flash002Literal","Gemini1_5Flash002","Gemini1_5Flash002Options","Gemini1_5Flash002Schema","Gemini1_5FlashLatestLiteral","Gemini1_5FlashLatest","Gemini1_5FlashLatestOptions","Gemini1_5FlashLatestSchema","Gemini1_5FlashLiteral","Gemini1_5Flash","Gemini1_5FlashOptions","Gemini1_5FlashSchema","Gemini1_5Pro001Literal","Gemini1_5Pro001","Gemini1_5Pro001Options","Gemini1_5Pro001Schema","Gemini1_5Pro002Literal","Gemini1_5Pro002","Gemini1_5Pro002Options","Gemini1_5Pro002Schema","Gemini1_5ProLatestLiteral","Gemini1_5ProLatest","Gemini1_5ProLatestOptions","Gemini1_5ProLatestSchema","Gemini1_5ProLiteral","Gemini1_5Pro","Gemini1_5ProOptions","Gemini1_5ProSchema","Gemini2_0FlashLiteral","Gemini2_0Flash","Gemini2_0FlashOptions","Gemini2_0FlashSchema","Gemini2_5FlashPreview0417Literal","Gemini2_5FlashPreview0417","Gemini2_5FlashPreview0417Options","Gemini2_5FlashPreview0417Schema","Gemini2_5ProPreview0325Literal","Gemini2_5ProPreview0325","Gemini2_5ProPreview0325Options","Gemini2_5ProPreview0325Schema","Gemini2_5FlashLiteral","Gemini2_5Flash","Gemini2_5FlashOptions","Gemini2_5FlashSchema","Gemini2_5ProLiteral","Gemini2_5Pro","Gemini2_5ProOptions","Gemini2_5ProSchema","Gemini3FlashPreviewLiteral","Gemini3FlashPreview","Gemini3FlashPreviewOptions","Gemini3FlashPreviewSchema","Gemini3ProPreviewLiteral","Gemini3ProPreview","Gemini3ProPreviewOptions","Gemini3ProPreviewSchema","Gemini2_5FlashLiteLiteral","Gemini2_5FlashLite","Gemini2_5FlashLiteOptions","Gemini2_5FlashLiteSchema","Text_Embedding_001Literal","Text_Embedding_001","Text_Embedding_001Options","Text_Embedding_001Schema","Text_Embedding_004Literal","Text_Embedding_004","Text_Embedding_004Options","Text_Embedding_004Schema","acc","key","options","modelName","ProviderError","model","parsedOptions","pricing_default","GoogleChatModelRoles","SystemRoleLiteral","UserRoleLiteral","AssistantRoleLiteral","ToolRoleLiteral","GoogleChatAssistantRoleLiteral","GoogleChatToolRoleLiteral","GoogleChatModelRolesMap","GoogleChatModelModalities","TextModalityLiteral","ImageModalityLiteral","PdfModalityLiteral","ToolCallModalityLiteral","ToolResponseModalityLiteral","ReasoningModalityLiteral","SearchResultModalityLiteral","ErrorModalityLiteral","GoogleChatModelModalitiesEnum","GoogleChatModelTextModalities","GoogleChatModelTextModalitiesEnum","GoogleChatModelTextVisionModalities","GoogleChatModelTextVisionModalitiesEnum","GoogleChatModelTextToolModalities","GoogleChatModelTextToolModalitiesEnum","GoogleSearchEntryPoint","GoogleGroundingChunkWeb","GoogleGroundingChunk","GoogleSegment","GoogleGroundingSupport","GoogleGroundingMetadata","GoogleCompleteChatTextResponse","GoogleCompleteChatToolResponse","GoogleCompleteChatResponse","GoogleStreamChatTextResponse","GoogleStreamChatToolResponse","GoogleStreamChatResponse","GoogleChatContentPartText","GoogleChatContentPartInlineData","GoogleChatContentPartFileData","GoogleChatContentPartFunctionCall","GoogleChatContentPartFunctionResponse","GoogleChatContentPartThinking","GoogleChatContent","GoogleChatSystemInstruction","GoogleChatTool","GoogleChatGoogleSearchTool","GoogleChatToolConfig","GoogleChatThinkingConfig","GoogleChatGenerationConfig","GoogleChatSafetySettings","GoogleChatRequest","BaseChatModelOptions","BaseChatModel","modelSchema","_a","urlWithoutTrailingSlash","_responseHeaders","responseData","delayMs","parseDuration","duration","match","data","retryInfo","detail","messages","message","content","__async","downloadPdf","url","headers","isRunningInBrowser","response","InvalidMessagesError","arrayBuffer","existsInGoogleFiles","fileId","existingFile","file","error","uploadPdfToGoogleFiles","pdfBuffer","uploadResponse","uploadUrl","uploadHeaders","fileUploadResponse","getGoogleFilesUrl","existingFileUri","base64Data","pdfBase64Prefix","convertBase64ToUint8Array","processedMessages","processedContent","fileUri","request","safeRequest","InvalidModelRequestError","parsedRequest","systemInstruction","generationConfig","toolConfig","_config","config","Config","removeUndefinedEntries","part","role","_content","c","Base64ImageContentTypeLiteral","index","tools","tool","_toolChoice","_parsedConfig","InvalidConfigError","parsedConfig","transformedConfig","def","paramKey","paramValue","configToolChoice","responseSchemaConfig","stripBase64Prefix","prefixMatch","parsedMessages","parsedMessage","Message","nonSystemMessages","assistantContent","userContent","toolResponseContent","getNextExpectedRoles","i","obj","item","result","InvalidToolsError","transformedTools","parsedTool","Tool","resolve","transformedMessages","_b","_c","_d","_e","_f","safe","ModelResponseError","completeChatResponse","parsedResponse","candidate","contentItem","createReasoningContent","createTextContent","createToolCallContent","createSearchResultGoogleContent","chunk","support","safetyRatings","rating","createSafetyErrorContent","buffer","__asyncGenerator","lines","line","completeLine","structuredLine","partialResponse","messagePart","createPartialReasoningMessage","createPartialTextMessage","toolCall","createPartialToolCallMessage","createPartialSearchResultGoogleMessage","createPartialSafetyErrorMessage","query","__yieldStar","newData","newBuffer","currentIndex","newlineIndex","jsonStr","sanitizedHeaders","Gemini1_5Flash001Description","ChatModelSchema","Gemini1_5Flash002Description","Gemini1_5FlashLatestDescription","Gemini1_5FlashDescription","Gemini1_5Pro001Description","Gemini1_5Pro002Description","Gemini1_5ProLatestDescription","Gemini1_5ProDescription","Gemini2_0FlashExpLiteral","Gemini2_0FlashExpDescription","Gemini2_0FlashExpSchema","Gemini2_0FlashExpOptions","Gemini2_0FlashExp","Gemini2_0FlashDescription","Gemini2_5FlashLiteDescription","Gemini2_5FlashPreview0417Description","Gemini2_5FlashDescription","Gemini2_5ProPreview0325Description","Gemini2_5ProDescription","Gemini3FlashPreviewDescription","Gemini3ProPreviewDescription","GoogleEmbeddingModelModalities","EmbeddingTextModalityLiteral","GoogleEmbeddingModelModalitiesEnum","GoogleGetEmbeddingsResponse","GoogleEmbeddingRequestInput","GoogleEmbeddingRequest","BaseEmbeddingModelOptions","BaseEmbeddingModel","requests","embeddingRequests","p","_parsedRequests","EmbeddingRequests","InvalidEmbeddingRequestsError","_requests","embeddings","embedding","FloatEmbeddingLiteral","Text_Embedding_001_Description","EmbeddingModelSchema","Text_Embedding_004_Description"],"mappings":"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","file":"index.mjs","sourcesContent":["import { z } from \"zod\";\n\nimport { googleSearchTool, maxTokens, safetySettings, stop, temperature, toolChoice, topP } from \"./common.config.chat-model.google\";\n\nconst ChatModelBaseConfigSchema = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number\n) =>\n z.object({\n temperature: temperature(maxTemperature, defaultTemperature).schema,\n maxTokens: maxTokens(maxOutputTokens).schema,\n stop: stop(maxSequences).schema,\n topP: topP(defaultTopP).schema,\n toolChoice: toolChoice.schema,\n safetySettings: safetySettings.schema,\n googleSearchTool: googleSearchTool.schema,\n });\n\nconst ChatModelBaseConfigDef = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number\n) =>\n ({\n temperature: temperature(maxTemperature, defaultTemperature).def,\n maxTokens: maxTokens(maxOutputTokens).def,\n stop: stop(maxSequences).def,\n topP: topP(defaultTopP).def,\n toolChoice: toolChoice.def,\n safetySettings: safetySettings.def,\n googleSearchTool: googleSearchTool.def,\n }) as const;\n\nexport { ChatModelBaseConfigDef, ChatModelBaseConfigSchema };\n","import {\n CHAT_CONFIG,\n MultiStringConfigItem,\n PairedSelectConfigItem,\n RangeConfigItem,\n SelectBooleanConfigItem,\n SelectStringConfigItem,\n} from \"@adaline/provider\";\n\nconst GOOGLE_SAFETY_CATEGORIES = [\n \"HARM_CATEGORY_HARASSMENT\",\n \"HARM_CATEGORY_HATE_SPEECH\",\n \"HARM_CATEGORY_SEXUALLY_EXPLICIT\",\n \"HARM_CATEGORY_DANGEROUS_CONTENT\",\n \"HARM_CATEGORY_CIVIC_INTEGRITY\",\n] as const;\n\nconst GOOGLE_SAFETY_THRESHOLDS = [\n \"HARM_BLOCK_THRESHOLD_UNSPECIFIED\",\n \"BLOCK_LOW_AND_ABOVE\",\n \"BLOCK_MEDIUM_AND_ABOVE\",\n \"BLOCK_ONLY_HIGH\",\n \"BLOCK_NONE\",\n \"OFF\",\n] as const;\n\nconst formatSafetyLabel = (value: string, prefix: string) =>\n value\n .replace(prefix, \"\")\n .replace(/_/g, \" \")\n .toLowerCase()\n .replace(/\\b\\w/g, (letter: string) => letter.toUpperCase());\n\nconst GOOGLE_SAFETY_CATEGORY_OPTIONS = GOOGLE_SAFETY_CATEGORIES.map((category) => ({\n value: category,\n label: formatSafetyLabel(category, \"HARM_CATEGORY_\"),\n}));\n\nconst GOOGLE_SAFETY_THRESHOLD_OPTIONS = GOOGLE_SAFETY_THRESHOLDS.map((threshold) => ({\n value: threshold,\n label: formatSafetyLabel(threshold, \"HARM_BLOCK_THRESHOLD_\"),\n}));\n\nconst temperature = (max: number, _default: number) =>\n RangeConfigItem({\n param: \"temperature\",\n title: CHAT_CONFIG.TEMPERATURE.title,\n description: CHAT_CONFIG.TEMPERATURE.description,\n min: 0.0,\n max: max,\n step: 0.01,\n default: _default,\n });\n\nconst maxTokens = (maxOutputTokens: number) =>\n RangeConfigItem({\n param: \"maxOutputTokens\",\n title: CHAT_CONFIG.MAX_TOKENS.title,\n description: CHAT_CONFIG.MAX_TOKENS.description,\n min: 0,\n max: maxOutputTokens,\n step: 1,\n default: 0,\n });\n\nconst stop = (maxSequences: number) =>\n MultiStringConfigItem({\n param: \"stopSequences\",\n title: CHAT_CONFIG.STOP(maxSequences).title,\n description: CHAT_CONFIG.STOP(maxSequences).description,\n max: maxSequences,\n });\n\nconst topP = (_default: number) =>\n RangeConfigItem({\n param: \"topP\",\n title: CHAT_CONFIG.TOP_P.title,\n description: CHAT_CONFIG.TOP_P.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: _default,\n });\n\nconst topK = (_default: number) =>\n RangeConfigItem({\n param: \"topK\",\n title: CHAT_CONFIG.TOP_K.title,\n description: CHAT_CONFIG.TOP_K.description,\n min: 1,\n max: 40,\n step: 1,\n default: _default,\n });\n\nconst frequencyPenalty = RangeConfigItem({\n param: \"frequencyPenalty\",\n title: CHAT_CONFIG.FREQUENCY_PENALTY.title,\n description: CHAT_CONFIG.FREQUENCY_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst presencePenalty = RangeConfigItem({\n param: \"presencePenalty\",\n title: CHAT_CONFIG.PRESENCE_PENALTY.title,\n description: CHAT_CONFIG.PRESENCE_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst seed = RangeConfigItem({\n param: \"seed\",\n title: CHAT_CONFIG.SEED.title,\n description: CHAT_CONFIG.SEED.description,\n min: 0,\n max: 1000000,\n step: 1,\n default: 0,\n});\n\nconst toolChoice = SelectStringConfigItem({\n param: \"toolChoice\",\n title: \"Tool choice\",\n description:\n \"Controls which (if any) tool is called by the model. 'none' means the model will not call a function. 'auto' means the model can pick between generating a message or calling a tool.\",\n default: \"auto\",\n choices: [\"auto\", \"any\", \"none\"],\n});\n\nconst safetySettings = PairedSelectConfigItem({\n param: \"safetySettings\",\n title: \"Safety settings\",\n description: \"The safety rating contains the category of harm and the harm probability level in that category for a piece of content.\",\n fields: [\n {\n key: \"category\",\n label: \"Category\",\n choices: GOOGLE_SAFETY_CATEGORY_OPTIONS,\n },\n {\n key: \"threshold\",\n label: \"Threshold\",\n choices: GOOGLE_SAFETY_THRESHOLD_OPTIONS,\n },\n ],\n uniqueByField: \"category\",\n});\n\nconst reasoningEnabled = SelectBooleanConfigItem({\n param: \"reasoningEnabled\",\n title: \"Reasoning Enabled\",\n description:\n \"Controls whether the model is allowed to think for a longer period of time before generating a response. This can be useful for complex tasks that require more time to think.\",\n default: false,\n});\n\nconst maxReasoningTokens = (minReasoningToken: number, maxReasoningToken: number) =>\n RangeConfigItem({\n param: \"thinkingBudget\",\n title: \"Thinking budget\",\n description: \"Specify the total tokens for thinking (or reasoning), where one token approximates four English characters.\",\n min: minReasoningToken,\n max: maxReasoningToken,\n step: 1,\n default: 0,\n });\n\nconst reasoningEffort = SelectStringConfigItem({\n param: \"thinkingLevel\",\n title: \"Thinking Level\",\n description:\n \"Controls the depth of the model's reasoning process. Higher levels may result in more thorough reasoning but use more tokens.\",\n default: \"LOW\",\n choices: [\"LOW\", \"HIGH\"],\n});\n\nconst googleSearchTool = SelectBooleanConfigItem({\n param: \"googleSearch\",\n title: \"Google Search Tool\",\n description: \"Controls whether the model is allowed to use the Google Search tool. Powered by Google.\",\n default: false,\n});\n\nexport {\n GOOGLE_SAFETY_CATEGORIES,\n GOOGLE_SAFETY_CATEGORY_OPTIONS,\n GOOGLE_SAFETY_THRESHOLDS,\n GOOGLE_SAFETY_THRESHOLD_OPTIONS,\n frequencyPenalty,\n googleSearchTool,\n maxReasoningTokens,\n maxTokens,\n presencePenalty,\n reasoningEnabled,\n safetySettings,\n seed,\n stop,\n temperature,\n reasoningEffort,\n toolChoice,\n topK,\n topP,\n};\n","import { CHAT_CONFIG, ObjectSchemaConfigItem, SelectStringConfigItem } from \"@adaline/provider\";\nimport { ResponseSchema } from \"@adaline/types\";\n\nimport { ChatModelBaseConfigDef, ChatModelBaseConfigSchema } from \"./base.config.chat-model.google\";\n\nconst responseSchema = ObjectSchemaConfigItem({\n param: \"response_schema\",\n title: CHAT_CONFIG.RESPONSE_SCHEMA.title,\n description: CHAT_CONFIG.RESPONSE_SCHEMA.description,\n objectSchema: ResponseSchema,\n});\n\nconst responseFormat = SelectStringConfigItem({\n param: \"response_format\",\n title: CHAT_CONFIG.RESPONSE_FORMAT_WITH_SCHEMA.title,\n description: CHAT_CONFIG.RESPONSE_FORMAT_WITH_SCHEMA.description,\n default: \"text\",\n choices: [\"text\", \"json_schema\"],\n});\n\nconst GoogleChatModelResponseSchemaConfigDef = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number\n) => ({\n ...ChatModelBaseConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n responseFormat: responseFormat.def,\n responseSchema: responseSchema.def,\n});\n\nconst GoogleChatModelResponseSchemaConfigSchema = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number\n) =>\n ChatModelBaseConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP).extend({\n responseFormat: responseFormat.schema,\n responseSchema: responseSchema.schema,\n });\n\nexport { GoogleChatModelResponseSchemaConfigDef, GoogleChatModelResponseSchemaConfigSchema };\n","import { maxReasoningTokens, reasoningEnabled, reasoningEffort } from \"./common.config.chat-model.google\";\n\nimport {\n GoogleChatModelResponseSchemaConfigDef,\n GoogleChatModelResponseSchemaConfigSchema,\n} from \"./response-schema.config.chat-model.google\";\n\nconst ChatModelReasoningConfigSchema = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number,\n minReasoningToken: number,\n maxReasoningToken: number,\n) =>\n GoogleChatModelResponseSchemaConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP).extend({\n reasoningEnabled: reasoningEnabled.schema,\n maxReasoningTokens: maxReasoningTokens(minReasoningToken, maxReasoningToken).schema,\n reasoningEffort: reasoningEffort.schema,\n });\n\nconst ChatModelReasoningConfigDef = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number,\n minReasoningToken: number,\n maxReasoningToken: number,\n) =>\n ({\n ...GoogleChatModelResponseSchemaConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n reasoningEnabled: reasoningEnabled.def,\n maxReasoningTokens: maxReasoningTokens(minReasoningToken, maxReasoningToken).def,\n reasoningEffort: reasoningEffort.def,\n });\n\nexport { ChatModelReasoningConfigDef, ChatModelReasoningConfigSchema };","import { z } from \"zod\";\n\nimport { dimensions } from \"./common.config.embedding-model.google\";\n\nconst EmbeddingModelBaseConfigSchema = (maxDimensions: number) =>\n z.object({\n dimensions: dimensions(maxDimensions).schema,\n });\n\nconst EmbeddingModelBaseConfigDef = (maxDimensions: number) =>\n ({\n dimensions: dimensions(maxDimensions).def,\n }) as const;\n\nexport { EmbeddingModelBaseConfigDef, EmbeddingModelBaseConfigSchema };\n","import { EMBEDDING_CONFIG, RangeConfigItem } from \"@adaline/provider\";\n\nconst dimensions = (maxDimensions: number) =>\n RangeConfigItem({\n param: \"outputDimensionality\",\n title: EMBEDDING_CONFIG.DIMENSIONS.title,\n description: EMBEDDING_CONFIG.DIMENSIONS.description,\n min: 1,\n max: maxDimensions,\n step: 1,\n default: maxDimensions,\n });\n\nexport { dimensions };\n","import {\n ChatModelBaseConfigDef,\n ChatModelBaseConfigSchema,\n ChatModelReasoningConfigDef,\n ChatModelReasoningConfigSchema,\n GoogleChatModelResponseSchemaConfigDef,\n GoogleChatModelResponseSchemaConfigSchema,\n} from \"./chat-model\";\nimport { EmbeddingModelBaseConfigDef, EmbeddingModelBaseConfigSchema } from \"./embedding-model\";\n\nconst GoogleChatModelConfigs = {\n base: (maxTemperature: number, defaultTemperature: number, maxOutputTokens: number, maxSequences: number, defaultTopP: number) => ({\n def: ChatModelBaseConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n schema: ChatModelBaseConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n }),\n responseSchema: (maxTemperature: number, defaultTemperature: number, maxOutputTokens: number, maxSequences: number, defaultTopP: number) => ({\n def: GoogleChatModelResponseSchemaConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n schema: GoogleChatModelResponseSchemaConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n }),\n reasoning: (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number,\n minReasoningToken: number,\n maxReasoningToken: number,\n ) => ({\n def: ChatModelReasoningConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP, minReasoningToken, maxReasoningToken),\n schema: ChatModelReasoningConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP, minReasoningToken, maxReasoningToken),\n }),\n} as const;\n\nconst GoogleEmbeddingModelConfigs = {\n base: (maxDimensions: number) => ({\n def: EmbeddingModelBaseConfigDef(maxDimensions),\n schema: EmbeddingModelBaseConfigSchema(maxDimensions),\n }),\n} as const;\n\nexport { GoogleChatModelConfigs, GoogleEmbeddingModelConfigs };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType, ChatModelV1, EmbeddingModelSchemaType, EmbeddingModelV1, ProviderError, ProviderV1 } from \"@adaline/provider\";\n\nimport * as Models from \"../models\";\n\nconst ProviderLiteral = \"google\";\nclass Google<C extends Models.BaseChatModelOptionsType, E extends Models.BaseEmbeddingModelOptionsType> implements ProviderV1<C, E> {\n readonly version = \"v1\" as const;\n readonly name = ProviderLiteral;\n static readonly baseUrl: string = \"https://generativelanguage.googleapis.com/v1beta\";\n\n private readonly chatModelFactories: Record<\n string,\n {\n model: { new (options: any): ChatModelV1 };\n modelOptions: z.ZodType<any>;\n modelSchema: ChatModelSchemaType;\n }\n > = {\n [Models.Gemini1_5Flash001Literal]: {\n model: Models.Gemini1_5Flash001,\n modelOptions: Models.Gemini1_5Flash001Options,\n modelSchema: Models.Gemini1_5Flash001Schema,\n },\n [Models.Gemini1_5Flash002Literal]: {\n model: Models.Gemini1_5Flash002,\n modelOptions: Models.Gemini1_5Flash002Options,\n modelSchema: Models.Gemini1_5Flash002Schema,\n },\n [Models.Gemini1_5FlashLatestLiteral]: {\n model: Models.Gemini1_5FlashLatest,\n modelOptions: Models.Gemini1_5FlashLatestOptions,\n modelSchema: Models.Gemini1_5FlashLatestSchema,\n },\n [Models.Gemini1_5FlashLiteral]: {\n model: Models.Gemini1_5Flash,\n modelOptions: Models.Gemini1_5FlashOptions,\n modelSchema: Models.Gemini1_5FlashSchema,\n },\n [Models.Gemini1_5Pro001Literal]: {\n model: Models.Gemini1_5Pro001,\n modelOptions: Models.Gemini1_5Pro001Options,\n modelSchema: Models.Gemini1_5Pro001Schema,\n },\n [Models.Gemini1_5Pro002Literal]: {\n model: Models.Gemini1_5Pro002,\n modelOptions: Models.Gemini1_5Pro002Options,\n modelSchema: Models.Gemini1_5Pro002Schema,\n },\n [Models.Gemini1_5ProLatestLiteral]: {\n model: Models.Gemini1_5ProLatest,\n modelOptions: Models.Gemini1_5ProLatestOptions,\n modelSchema: Models.Gemini1_5ProLatestSchema,\n },\n [Models.Gemini1_5ProLiteral]: {\n model: Models.Gemini1_5Pro,\n modelOptions: Models.Gemini1_5ProOptions,\n modelSchema: Models.Gemini1_5ProSchema,\n },\n // gemini-2.0-flash-exp is deprecated \n // Removed from available models to prevent it from being used as a default\n // [Models.Gemini2_0FlashExpLiteral]: {\n // model: Models.Gemini2_0FlashExp,\n // modelOptions: Models.Gemini2_0FlashExpOptions,\n // modelSchema: Models.Gemini2_0FlashExpSchema,\n // },\n [Models.Gemini2_0FlashLiteral]: {\n model: Models.Gemini2_0Flash,\n modelOptions: Models.Gemini2_0FlashOptions,\n modelSchema: Models.Gemini2_0FlashSchema,\n },\n\n [Models.Gemini2_5FlashPreview0417Literal]: {\n model: Models.Gemini2_5FlashPreview0417,\n modelOptions: Models.Gemini2_5FlashPreview0417Options,\n modelSchema: Models.Gemini2_5FlashPreview0417Schema,\n },\n [Models.Gemini2_5ProPreview0325Literal]: {\n model: Models.Gemini2_5ProPreview0325,\n modelOptions: Models.Gemini2_5ProPreview0325Options,\n modelSchema: Models.Gemini2_5ProPreview0325Schema,\n },\n [Models.Gemini2_5FlashLiteral]: {\n model: Models.Gemini2_5Flash,\n modelOptions: Models.Gemini2_5FlashOptions,\n modelSchema: Models.Gemini2_5FlashSchema,\n },\n [Models.Gemini2_5ProLiteral]: {\n model: Models.Gemini2_5Pro,\n modelOptions: Models.Gemini2_5ProOptions,\n modelSchema: Models.Gemini2_5ProSchema,\n },\n [Models.Gemini3FlashPreviewLiteral]: {\n model: Models.Gemini3FlashPreview,\n modelOptions: Models.Gemini3FlashPreviewOptions,\n modelSchema: Models.Gemini3FlashPreviewSchema,\n },\n [Models.Gemini3ProPreviewLiteral]: {\n model: Models.Gemini3ProPreview,\n modelOptions: Models.Gemini3ProPreviewOptions,\n modelSchema: Models.Gemini3ProPreviewSchema,\n },\n [Models.Gemini2_5FlashLiteLiteral]: {\n model: Models.Gemini2_5FlashLite,\n modelOptions: Models.Gemini2_5FlashLiteOptions,\n modelSchema: Models.Gemini2_5FlashLiteSchema,\n },\n };\n\n private readonly embeddingModelFactories: Record<\n string,\n {\n model: { new (options: any): EmbeddingModelV1 };\n modelOptions: z.ZodType<any>;\n modelSchema: EmbeddingModelSchemaType;\n }\n > = {\n [Models.Text_Embedding_001Literal]: {\n model: Models.Text_Embedding_001,\n modelOptions: Models.Text_Embedding_001Options,\n modelSchema: Models.Text_Embedding_001Schema,\n },\n [Models.Text_Embedding_004Literal]: {\n model: Models.Text_Embedding_004,\n modelOptions: Models.Text_Embedding_004Options,\n modelSchema: Models.Text_Embedding_004Schema,\n },\n };\n\n chatModelLiterals(): string[] {\n return Object.keys(this.chatModelFactories);\n }\n\n chatModelSchemas(): Record<string, ChatModelSchemaType> {\n return Object.keys(this.chatModelFactories).reduce(\n (acc, key) => {\n acc[key] = this.chatModelFactories[key].modelSchema;\n return acc;\n },\n {} as Record<string, ChatModelSchemaType>\n );\n }\n\n chatModel(options: C): ChatModelV1 {\n const modelName = options.modelName;\n if (!(modelName in this.chatModelFactories)) {\n throw new ProviderError({\n info: `Google chat model: ${modelName} not found`,\n cause: new Error(`Google chat model: ${modelName} not found, available chat models: \n [${this.chatModelLiterals().join(\", \")}]`),\n });\n }\n\n const model = this.chatModelFactories[modelName].model;\n const parsedOptions = this.chatModelFactories[modelName].modelOptions.parse(options);\n return new model(parsedOptions);\n }\n\n embeddingModelLiterals(): string[] {\n return Object.keys(this.embeddingModelFactories);\n }\n\n embeddingModelSchemas(): Record<string, EmbeddingModelSchemaType> {\n return Object.keys(this.embeddingModelFactories).reduce(\n (acc, key) => {\n acc[key] = this.embeddingModelFactories[key].modelSchema;\n return acc;\n },\n {} as Record<string, EmbeddingModelSchemaType>\n );\n }\n\n embeddingModel(options: E): EmbeddingModelV1 {\n const modelName = options.modelName;\n if (!(modelName in this.embeddingModelFactories)) {\n throw new ProviderError({\n info: `Google embedding model: ${modelName} not found`,\n cause: new Error(`Google embedding model: ${modelName} not found, available embedding models: \n [${this.embeddingModelLiterals().join(\", \")}]`),\n });\n }\n\n const model = this.embeddingModelFactories[modelName].model;\n const parsedOptions = this.embeddingModelFactories[modelName].modelOptions.parse(options);\n return new model(parsedOptions);\n }\n}\n\nexport { Google, ProviderLiteral };\n","{\n \"base-gemini-1-chat-model\": {\n \"modelName\": \"base-gemini-1-chat-model\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"gemini-1.0-pro-001\": {\n \"modelName\": \"gemini-1.0-pro-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"gemini-1.0-pro-latest\": {\n \"modelName\": \"gemini-1.0-pro-latest\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"gemini-1.0-pro-vision\": {\n \"modelName\": \"gemini-1.0-pro-vision\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"gemini-1.0-pro\": {\n \"modelName\": \"gemini-1.0-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"gemini-1.5-flash-001\": {\n \"modelName\": \"gemini-1.5-flash-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"gemini-1.5-flash-002\": {\n \"modelName\": \"gemini-1.5-flash-002\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.0375,\n \"outputPricePerMillion\": 0.15\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"gemini-1.5-flash-latest\": {\n \"modelName\": \"gemini-1.5-flash-latest\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"gemini-1.5-flash\": {\n \"modelName\": \"gemini-1.5-flash\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"gemini-1.5-pro-001\": {\n \"modelName\": \"gemini-1.5-pro-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 5\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"gemini-1.5-pro-002\": {\n \"modelName\": \"gemini-1.5-pro-002\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 5\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"gemini-1.5-pro-latest\": {\n \"modelName\": \"gemini-1.5-pro-latest\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 5\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"gemini-1.5-pro\": {\n \"modelName\": \"gemini-1.5-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 5\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"gemini-2.0-flash-exp\": {\n \"modelName\": \"gemini-2.0-flash-exp\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.1,\n \"outputPricePerMillion\": 0.4\n }\n }\n }\n ]\n },\n \"gemini-2.5-flash-preview-04-17\": {\n \"modelName\": \"gemini-2.5-flash-preview-04-17\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"gemini-2.5-pro-preview-03-25\": {\n \"modelName\": \"gemini-2.5-pro-preview-03-25\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 200000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 10\n }\n }\n },\n {\n \"minTokens\": 200001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"gemini-pro-vision\": {\n \"modelName\": \"gemini-pro-vision\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"gemini-pro\": {\n \"modelName\": \"gemini-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"gemini-2.5-pro\": {\n \"modelName\": \"gemini-2.5-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"gemini-3-pro-preview\": {\n \"modelName\": \"gemini-3-pro-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"gemini-2.5-flash\": {\n \"modelName\": \"gemini-2.5-flash\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 2.5\n }\n }\n }\n ]\n },\n \"gemini-2.0-flash\": {\n \"modelName\": \"gemini-2.0-flash\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.1,\n \"outputPricePerMillion\": 0.4\n }\n }\n }\n ]\n },\n \"gemini-2.5-flash-lite\": {\n \"modelName\": \"gemini-2.5-flash-lite\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.1,\n \"outputPricePerMillion\": 0.4\n }\n }\n }\n ]\n },\n \"gemini-3-flash-preview\": {\n \"modelName\": \"gemini-3-flash-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 3.0\n }\n }\n }\n ]\n }\n}\n","import { z } from \"zod\";\n\nimport { AssistantRoleLiteral, SystemRoleLiteral, ToolRoleLiteral, UserRoleLiteral } from \"@adaline/types\";\n\nconst GoogleChatModelRoles = z.enum([SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral]);\n\nconst GoogleChatAssistantRoleLiteral = \"model\";\nconst GoogleChatToolRoleLiteral = \"function\";\n\nconst GoogleChatModelRolesMap = {\n system: UserRoleLiteral,\n user: UserRoleLiteral,\n assistant: GoogleChatAssistantRoleLiteral,\n tool: GoogleChatToolRoleLiteral,\n} as const;\n\nexport { GoogleChatAssistantRoleLiteral, GoogleChatToolRoleLiteral, GoogleChatModelRoles, GoogleChatModelRolesMap };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType } from \"@adaline/provider\";\nimport { ErrorModalityLiteral, ImageModalityLiteral, PdfModalityLiteral, ReasoningModalityLiteral, SearchResultModalityLiteral, TextModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral } from \"@adaline/types\";\n\nconst GoogleChatModelModalities: ChatModelSchemaType[\"modalities\"] = [\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ReasoningModalityLiteral,\n SearchResultModalityLiteral,\n ErrorModalityLiteral,\n];\n\nconst GoogleChatModelModalitiesEnum = z.enum([\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ReasoningModalityLiteral,\n SearchResultModalityLiteral,\n ErrorModalityLiteral,\n]);\n\nconst GoogleChatModelTextModalities: ChatModelSchemaType[\"modalities\"] = [TextModalityLiteral];\n\nconst GoogleChatModelTextModalitiesEnum = z.enum([TextModalityLiteral]);\n\nconst GoogleChatModelTextVisionModalities: ChatModelSchemaType[\"modalities\"] = [TextModalityLiteral, ImageModalityLiteral];\n\nconst GoogleChatModelTextVisionModalitiesEnum = z.enum([TextModalityLiteral, ImageModalityLiteral]);\n\nconst GoogleChatModelTextToolModalities: ChatModelSchemaType[\"modalities\"] = [\n TextModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n];\n\nconst GoogleChatModelTextToolModalitiesEnum = z.enum([TextModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral]);\n\nexport {\n GoogleChatModelModalitiesEnum,\n GoogleChatModelModalities,\n GoogleChatModelTextModalitiesEnum,\n GoogleChatModelTextModalities,\n GoogleChatModelTextToolModalitiesEnum,\n GoogleChatModelTextToolModalities,\n GoogleChatModelTextVisionModalitiesEnum,\n GoogleChatModelTextVisionModalities,\n};\n","import { z } from \"zod\";\n\nconst GoogleSearchEntryPoint = z.object({\n renderedContent: z.string().optional(),\n});\ntype GoogleSearchEntryPointType = z.infer<typeof GoogleSearchEntryPoint>;\n\nconst GoogleGroundingChunkWeb = z.object({\n uri: z.string().optional(),\n title: z.string().optional(),\n});\ntype GoogleGroundingChunkWebType = z.infer<typeof GoogleGroundingChunkWeb>;\n\nconst GoogleGroundingChunk = z.object({\n web: GoogleGroundingChunkWeb.optional(),\n});\ntype GoogleGroundingChunkType = z.infer<typeof GoogleGroundingChunk>;\n\nconst GoogleSegment = z.object({\n startIndex: z.number().optional(),\n endIndex: z.number().optional(),\n text: z.string().optional(),\n});\ntype GoogleSegmentType = z.infer<typeof GoogleSegment>;\n\nconst GoogleGroundingSupport = z.object({\n segment: GoogleSegment.optional(),\n groundingChunkIndices: z.array(z.number()).optional(),\n confidenceScores: z.array(z.number()).optional(),\n});\ntype GoogleGroundingSupportType = z.infer<typeof GoogleGroundingSupport>;\n\nconst GoogleGroundingMetadata = z.object({\n searchEntryPoint: GoogleSearchEntryPoint.optional(),\n groundingChunks: z.array(GoogleGroundingChunk).optional(),\n groundingSupports: z.array(GoogleGroundingSupport).optional(),\n webSearchQueries: z.array(z.string()).optional(),\n});\ntype GoogleGroundingMetadataType = z.infer<typeof GoogleGroundingMetadata>;\n\nconst GoogleCompleteChatTextResponse = z.object({\n text: z.string(),\n thought: z.boolean().optional(),\n});\n\nconst GoogleCompleteChatToolResponse = z.object({\n functionCall: z.object({\n name: z.string(),\n args: z.record(z.any()),\n }),\n thoughtSignature: z.string().optional(),\n});\n\nconst GoogleCompleteChatResponse = z.object({\n candidates: z.array(\n z.object({\n content: z\n .object({\n role: z.string(),\n parts: z.array(z.union([GoogleCompleteChatTextResponse, GoogleCompleteChatToolResponse])),\n })\n .optional(),\n finishReason: z.string(),\n index: z.number().optional(),\n safetyRatings: z.optional(\n z.array(\n z.object({\n category: z.string(),\n probability: z.string(),\n blocked: z.boolean().optional(),\n })\n )\n ),\n groundingMetadata: GoogleGroundingMetadata.optional(),\n })\n ),\n promptFeedback: z.optional(\n z.object({\n safetyRatings: z.optional(\n z.array(\n z.object({\n category: z.string(),\n probability: z.string(),\n })\n )\n ),\n })\n ),\n usageMetadata: z\n .object({\n promptTokenCount: z.number(),\n cachedContentTokenCount: z.number().optional(),\n candidatesTokenCount: z.number().optional(),\n totalTokenCount: z.number(),\n })\n .optional(),\n});\ntype GoogleCompleteChatResponseType = z.infer<typeof GoogleCompleteChatResponse>;\n\nconst GoogleStreamChatTextResponse = z.object({\n text: z.string(),\n thought: z.boolean().optional(),\n});\n\nconst GoogleStreamChatToolResponse = z.object({\n functionCall: z.object({\n name: z.string(),\n args: z.record(z.any()),\n }),\n thoughtSignature: z.string().optional(),\n});\n\nconst GoogleStreamChatResponse = z.object({\n candidates: z.array(\n z.object({\n content: z\n .object({\n role: z.string(),\n parts: z.array(z.union([GoogleStreamChatTextResponse, GoogleStreamChatToolResponse])),\n })\n .optional(),\n finishReason: z.string().optional(),\n index: z.number().optional(),\n safetyRatings: z.optional(\n z.array(\n z.object({\n category: z.string(),\n probability: z.string(),\n blocked: z.boolean().optional(),\n })\n )\n ),\n groundingMetadata: GoogleGroundingMetadata.optional(),\n })\n ),\n promptFeedback: z.optional(\n z.object({\n safetyRatings: z.optional(\n z.array(\n z.object({\n category: z.string(),\n probability: z.string(),\n })\n )\n ),\n })\n ),\n usageMetadata: z\n .object({\n promptTokenCount: z.number().optional(),\n cachedContentTokenCount: z.number().optional(),\n candidatesTokenCount: z.number().optional(),\n totalTokenCount: z.number().optional(),\n })\n .optional(),\n});\ntype GoogleStreamChatResponseType = z.infer<typeof GoogleStreamChatResponse>;\n\n\nexport {\n GoogleCompleteChatResponse,\n GoogleCompleteChatTextResponse,\n GoogleCompleteChatToolResponse,\n GoogleGroundingChunk,\n GoogleGroundingMetadata,\n GoogleGroundingSupport,\n GoogleSearchEntryPoint,\n GoogleStreamChatResponse,\n GoogleStreamChatTextResponse,\n GoogleStreamChatToolResponse,\n type GoogleCompleteChatResponseType,\n type GoogleGroundingChunkType,\n type GoogleGroundingMetadataType,\n type GoogleGroundingSupportType,\n type GoogleSearchEntryPointType,\n type GoogleStreamChatResponseType,\n type GoogleGroundingChunkWebType,\n type GoogleSegmentType,\n};\n","import { z } from \"zod\";\n\nconst GoogleChatContentPartText = z.object({\n text: z.string().min(1),\n});\ntype GoogleChatContentPartTextType = z.infer<typeof GoogleChatContentPartText>;\n\nconst GoogleChatContentPartInlineData = z.object({\n inline_data: z.object({\n mime_type: z.string().min(1),\n data: z.string().base64(),\n }),\n});\ntype GoogleChatContentPartInlineDataType = z.infer<typeof GoogleChatContentPartInlineData>;\n\nconst GoogleChatContentPartFileData = z.object({\n file_data: z.object({\n mime_type: z.string().min(1),\n file_uri: z.string().min(1),\n }),\n});\ntype GoogleChatContentPartFileDataType = z.infer<typeof GoogleChatContentPartFileData>;\n\nconst GoogleChatContentPartFunctionCall = z.object({\n function_call: z.object({\n name: z.string().min(1),\n args: z.record(z.string().min(1)),\n }),\n thought_signature: z.string().optional(),\n});\ntype GoogleChatContentPartFunctionCallType = z.infer<typeof GoogleChatContentPartFunctionCall>;\n\nconst GoogleChatContentPartFunctionResponse = z.object({\n function_response: z.object({\n name: z.string().min(1),\n response: z.record(z.string().min(1)),\n }),\n});\ntype GoogleChatContentPartFunctionResponseType = z.infer<typeof GoogleChatContentPartFunctionResponse>;\n\nconst GoogleChatContentPartThinking = z.object({\n text: z.string(),\n thought: z.literal(true),\n thought_signature: z.string().min(1),\n});\ntype GoogleChatContentPartThinkingType = z.infer<typeof GoogleChatContentPartThinking>;\n\nconst GoogleChatContent = z.object({\n role: z.enum([\"user\", \"model\", \"function\"]),\n parts: z.array(\n z.union([\n GoogleChatContentPartText,\n GoogleChatContentPartInlineData,\n GoogleChatContentPartFileData,\n GoogleChatContentPartFunctionCall,\n GoogleChatContentPartFunctionResponse,\n GoogleChatContentPartThinking,\n GoogleChatContentPartThinking,\n ])\n ),\n});\ntype GoogleChatContentType = z.infer<typeof GoogleChatContent>;\n\nconst GoogleChatSystemInstruction = z.object({\n parts: z.array(GoogleChatContentPartText),\n});\ntype GoogleChatSystemInstructionType = z.infer<typeof GoogleChatSystemInstruction>;\n\nconst GoogleChatTool = z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n parameters: z.any(),\n});\ntype GoogleChatToolType = z.infer<typeof GoogleChatTool>;\n\nconst GoogleChatGoogleSearchTool = z.object({\n timeRangeFilter: z\n .object({\n startTime: z.string().datetime().optional(),\n endTime: z.string().datetime().optional(),\n })\n .optional(),\n});\ntype GoogleChatGoogleSearchToolType = z.infer<typeof GoogleChatGoogleSearchTool>;\n\nconst GoogleChatToolConfig = z.object({\n function_calling_config: z.object({\n mode: z.enum([\"ANY\", \"AUTO\", \"NONE\"]),\n allowed_function_names: z.array(z.string()).optional(),\n }),\n});\ntype GoogleChatToolConfigType = z.infer<typeof GoogleChatToolConfig>;\n\nconst GoogleChatThinkingConfig = z.object({\n thinkingBudget: z.number().optional(),\n includeThoughts: z.boolean().optional(),\n thinkingLevel: z.enum([\"LOW\", \"HIGH\"]).optional(),\n});\ntype GoogleChatThinkingConfigType = z.infer<typeof GoogleChatThinkingConfig>;\n\nconst GoogleChatGenerationConfig = z.object({\n stopSequences: z.array(z.string()).optional(),\n maxOutputTokens: z.number().optional(),\n temperature: z.number().optional(),\n topP: z.number().optional(),\n topK: z.number().optional(),\n presencePenalty: z.number().optional(),\n frequencyPenalty: z.number().optional(),\n seed: z.number().optional(),\n thinkingConfig: GoogleChatThinkingConfig.optional(),\n});\ntype GoogleChatGenerationConfigType = z.infer<typeof GoogleChatGenerationConfig>;\n\nconst GoogleChatSafetySettings = z.object({\n category: z.enum([\n \"HARM_CATEGORY_HARASSMENT\",\n \"HARM_CATEGORY_HATE_SPEECH\",\n \"HARM_CATEGORY_SEXUALLY_EXPLICIT\",\n \"HARM_CATEGORY_DANGEROUS_CONTENT\",\n \"HARM_CATEGORY_CIVIC_INTEGRITY\",\n ]),\n threshold: z.enum([\n \"HARM_BLOCK_THRESHOLD_UNSPECIFIED\",\n \"BLOCK_LOW_AND_ABOVE\",\n \"BLOCK_MEDIUM_AND_ABOVE\",\n \"BLOCK_ONLY_HIGH\",\n \"BLOCK_NONE\",\n \"OFF\",\n ]),\n});\ntype GoogleChatSafetySettingsType = z.infer<typeof GoogleChatSafetySettings>;\n\nconst GoogleChatRequest = z.object({\n model: z.string().min(1).optional(),\n contents: z.array(GoogleChatContent),\n systemInstruction: GoogleChatSystemInstruction.optional(),\n system_instruction: GoogleChatSystemInstruction.optional(),\n generationConfig: GoogleChatGenerationConfig.optional(),\n generation_config: GoogleChatGenerationConfig.optional(),\n safetySettings: z.array(GoogleChatSafetySettings).optional(),\n safety_settings: z.array(GoogleChatSafetySettings).optional(),\n tools: z\n .object({\n function_declarations: z.array(GoogleChatTool),\n google_search: GoogleChatGoogleSearchTool.optional(),\n })\n .optional(),\n toolConfig: GoogleChatToolConfig.optional(),\n tool_config: GoogleChatToolConfig.optional(),\n});\ntype GoogleChatRequestType = z.infer<typeof GoogleChatRequest>;\n\nexport {\n GoogleChatContent,\n GoogleChatContentPartFileData,\n GoogleChatContentPartFunctionCall,\n GoogleChatContentPartFunctionResponse,\n GoogleChatContentPartInlineData,\n GoogleChatContentPartText,\n GoogleChatContentPartThinking,\n GoogleChatGenerationConfig,\n GoogleChatGoogleSearchTool,\n GoogleChatRequest,\n GoogleChatSafetySettings,\n GoogleChatSystemInstruction,\n GoogleChatThinkingConfig,\n GoogleChatTool,\n GoogleChatToolConfig,\n type GoogleChatContentPartFileDataType,\n type GoogleChatContentPartFunctionCallType,\n type GoogleChatContentPartFunctionResponseType,\n type GoogleChatContentPartInlineDataType,\n type GoogleChatContentPartTextType,\n type GoogleChatContentPartThinkingType,\n type GoogleChatContentType,\n type GoogleChatGenerationConfigType,\n type GoogleChatGoogleSearchToolType,\n type GoogleChatRequestType,\n type GoogleChatSafetySettingsType,\n type GoogleChatSystemInstructionType,\n type GoogleChatThinkingConfigType,\n type GoogleChatToolConfigType,\n type GoogleChatToolType,\n};\n","import { z } from \"zod\";\n\nimport {\n ChatModelSchemaType,\n ChatModelV1,\n convertBase64ToUint8Array,\n HeadersType,\n InvalidConfigError,\n InvalidMessagesError,\n InvalidModelRequestError,\n InvalidToolsError,\n isRunningInBrowser,\n ModelResponseError,\n ParamsType,\n removeUndefinedEntries,\n SelectStringConfigItemDefType,\n UrlType,\n urlWithoutTrailingSlash,\n} from \"@adaline/provider\";\nimport {\n AssistantRoleLiteral,\n Base64ImageContentTypeLiteral,\n Base64ImageContentValueType,\n ChatModelPriceType,\n ChatResponseType,\n Config,\n ConfigType,\n ContentType,\n createPartialReasoningMessage,\n createPartialSafetyErrorMessage,\n createPartialSearchResultGoogleMessage,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createReasoningContent,\n createSafetyErrorContent,\n createSearchResultGoogleContent,\n createTextContent,\n createToolCallContent,\n ImageContentType,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialChatResponseType,\n PdfContentType,\n PdfModalityLiteral,\n ReasoningModalityLiteral,\n ResponseSchemaType,\n SystemRoleLiteral,\n TextModalityLiteral,\n Tool,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ToolRoleLiteral,\n ToolType,\n UserRoleLiteral,\n} from \"@adaline/types\";\n\nimport { Google } from \"../../provider/provider.google\";\nimport pricingData from \"../pricing.json\";\nimport {\n GoogleChatContentPartFunctionCallType,\n GoogleChatContentPartFunctionResponseType,\n GoogleChatContentPartInlineDataType,\n GoogleChatContentPartTextType,\n GoogleChatContentType,\n GoogleChatRequest,\n GoogleChatRequestType,\n GoogleChatSystemInstructionType,\n GoogleChatToolType,\n GoogleCompleteChatResponse,\n GoogleCompleteChatResponseType,\n GoogleStreamChatResponse,\n GoogleStreamChatResponseType,\n} from \"./types\";\n\nconst BaseChatModelOptions = z.object({\n modelName: z.string(),\n apiKey: z.string(),\n baseUrl: z.string().url().optional(),\n completeChatUrl: z.string().url().optional(),\n streamChatUrl: z.string().url().optional(),\n});\ntype BaseChatModelOptionsType = z.infer<typeof BaseChatModelOptions>;\n\nclass BaseChatModel implements ChatModelV1<ChatModelSchemaType> {\n readonly version = \"v1\" as const;\n modelSchema: ChatModelSchemaType;\n readonly modelName: string;\n\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly streamChatUrl: string;\n private readonly completeChatUrl: string;\n\n constructor(modelSchema: ChatModelSchemaType, options: BaseChatModelOptionsType) {\n const parsedOptions = BaseChatModelOptions.parse(options);\n this.modelSchema = modelSchema;\n this.modelName = parsedOptions.modelName;\n this.apiKey = parsedOptions.apiKey;\n this.baseUrl = urlWithoutTrailingSlash(parsedOptions.baseUrl ?? Google.baseUrl);\n this.completeChatUrl = urlWithoutTrailingSlash(\n parsedOptions.completeChatUrl || `${this.baseUrl}/models/${this.modelName}:generateContent?key=${this.apiKey}`\n );\n this.streamChatUrl = urlWithoutTrailingSlash(\n parsedOptions.streamChatUrl || `${this.baseUrl}/models/${this.modelName}:streamGenerateContent?key=${this.apiKey}`\n );\n }\n\n getDefaultBaseUrl(): UrlType {\n return this.baseUrl;\n }\n\n getDefaultHeaders(): HeadersType {\n return {\n \"Content-Type\": \"application/json\",\n };\n }\n\n getDefaultParams(): ParamsType {\n return {};\n }\n\n // Google returns retry delay information in the response body rather than headers.\n // The response body contains error.details with a RetryInfo object:\n // {\"@type\":\"type.googleapis.com/google.rpc.RetryInfo\",\"retryDelay\":\"45s\"}\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(_responseHeaders: HeadersType, responseData: unknown): { shouldRetry: boolean; delayMs: number } {\n const shouldRetry = true;\n let delayMs = 0;\n\n // parse duration from retryDelay value of format \"45s\" or \"1.5s\" or \"45.499282066s\"\n const parseDuration = (duration: string): number => {\n const match = duration.match(/^(\\d+(?:\\.\\d+)?)s$/);\n if (match) {\n return Math.ceil(parseFloat(match[1]) * 1000);\n }\n return 0;\n };\n\n if (responseData && typeof responseData === \"object\") {\n const data = responseData as { error?: { details?: Array<{ \"@type\"?: string; retryDelay?: string }> } };\n if (data.error?.details && Array.isArray(data.error.details)) {\n const retryInfo = data.error.details.find(\n (detail) => detail[\"@type\"] === \"type.googleapis.com/google.rpc.RetryInfo\"\n );\n if (retryInfo?.retryDelay) {\n delayMs = parseDuration(retryInfo.retryDelay);\n }\n }\n }\n\n return { shouldRetry, delayMs };\n }\n\n // TODO: unused method, not tested; should add support for non-text modalities, tools\n getTokenCount(messages: MessageType[]): number {\n return messages.reduce((acc, message) => {\n return acc + message.content.map((content) => (content.modality === \"text\" ? content.value : \"\")).join(\" \").length;\n }, 0);\n }\n\n private async transformPdfMessages(messages: MessageType[]): Promise<MessageType[]> {\n // Helper method to download a PDF from a URL\n const downloadPdf = async (url: string): Promise<Uint8Array> => {\n // TODO: ideally use the isomorphic http client here but it's not available in the provider package, only in the gateway package.\n // TODO: currently using fetch since it'll work in the browser and node.js (v18+) for this simple use case.\n const headers: Record<string, string> = {};\n if (!isRunningInBrowser()) {\n headers[\"User-Agent\"] = \"Mozilla/5.0 (compatible; GoogleFilesAPI/1.0)\";\n }\n const response = await fetch(url, { headers });\n\n if (!response.ok) {\n throw new InvalidMessagesError({\n info: `Failed to download PDF from URL: ${url}`,\n cause: new Error(`HTTP ${response.status}: ${response.statusText}`),\n });\n }\n\n const arrayBuffer = await response.arrayBuffer();\n return new Uint8Array(arrayBuffer);\n };\n\n // Helper method to check if a file exists in Google Files API\n const existsInGoogleFiles = async (fileId: string): Promise<string | null> => {\n try {\n const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/files?key=${this.apiKey}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (!response.ok) {\n return null;\n }\n\n const data = await response.json();\n const files = data.files || [];\n\n // Find file by display name (which is our hash)\n const existingFile = files.find((file: any) => file.displayName === fileId);\n return existingFile ? existingFile.uri : null;\n } catch (error) {\n // If there's an error checking, we'll just upload the file\n return null;\n }\n };\n\n // Helper method to upload a PDF to Google Files API\n const uploadPdfToGoogleFiles = async (pdfBuffer: Uint8Array, fileId: string): Promise<string> => {\n // Start resumable upload\n const uploadResponse = await fetch(`https://generativelanguage.googleapis.com/upload/v1beta/files?key=${this.apiKey}`, {\n method: \"POST\",\n headers: {\n \"X-Goog-Upload-Protocol\": \"resumable\",\n \"X-Goog-Upload-Command\": \"start\",\n \"X-Goog-Upload-Header-Content-Length\": pdfBuffer.length.toString(),\n \"X-Goog-Upload-Header-Content-Type\": \"application/pdf\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n file: {\n display_name: fileId,\n },\n }),\n });\n\n if (!uploadResponse.ok) {\n throw new InvalidMessagesError({\n info: \"Failed to start PDF upload to Google Files API\",\n cause: new Error(`HTTP ${uploadResponse.status}: ${uploadResponse.statusText}`),\n });\n }\n\n // Get upload URL from response headers\n const uploadUrl = uploadResponse.headers.get(\"x-goog-upload-url\");\n if (!uploadUrl) {\n throw new InvalidMessagesError({\n info: \"No upload URL received from Google Files API\",\n cause: new Error(\"Missing x-goog-upload-url header\"),\n });\n }\n\n // Upload the actual file content\n const uploadHeaders: Record<string, string> = {\n \"X-Goog-Upload-Offset\": \"0\",\n \"X-Goog-Upload-Command\": \"upload, finalize\",\n };\n if (!isRunningInBrowser()) {\n uploadHeaders[\"Content-Length\"] = pdfBuffer.length.toString();\n }\n const fileUploadResponse = await fetch(uploadUrl, {\n method: \"POST\",\n headers: uploadHeaders,\n body: pdfBuffer,\n });\n\n if (!fileUploadResponse.ok) {\n throw new InvalidMessagesError({\n info: \"Failed to upload PDF content to Google Files API\",\n cause: new Error(`HTTP ${fileUploadResponse.status}: ${fileUploadResponse.statusText}`),\n });\n }\n\n const fileInfo = await fileUploadResponse.json();\n return fileInfo.file.uri;\n };\n\n // Helper method to get the URL of a PDF from Google Files API\n const getGoogleFilesUrl = async (content: PdfContentType): Promise<string> => {\n const existingFileUri = await existsInGoogleFiles(content.file.id);\n if (existingFileUri) {\n return existingFileUri;\n }\n\n let pdfBuffer: Uint8Array;\n if (content.value.type === \"url\") {\n pdfBuffer = await downloadPdf(content.value.url);\n } else {\n let base64Data = content.value.base64;\n const pdfBase64Prefix = \"data:application/pdf;base64,\";\n base64Data = base64Data.startsWith(pdfBase64Prefix) ? base64Data.substring(pdfBase64Prefix.length) : base64Data;\n pdfBuffer = convertBase64ToUint8Array(base64Data);\n }\n return await uploadPdfToGoogleFiles(pdfBuffer, content.file.id);\n };\n\n // Process the messages to add the Google Files API URL to the PDF content\n const processedMessages: MessageType[] = [];\n for (const message of messages) {\n const processedContent = [];\n for (const content of message.content) {\n if (content.modality === PdfModalityLiteral) {\n const fileUri = await getGoogleFilesUrl(content);\n processedContent.push({\n ...content,\n value: {\n type: \"url\" as const,\n url: fileUri,\n },\n });\n } else {\n processedContent.push(content);\n }\n }\n\n processedMessages.push({\n ...message,\n content: processedContent,\n });\n }\n\n return processedMessages;\n }\n\n transformModelRequest(request: GoogleChatRequestType): {\n modelName: string | undefined;\n config: ConfigType;\n messages: MessageType[];\n tools: ToolType[] | undefined;\n } {\n const safeRequest = GoogleChatRequest.safeParse(request);\n if (!safeRequest.success) {\n throw new InvalidModelRequestError({ info: \"Invalid model request\", cause: safeRequest.error });\n }\n\n const parsedRequest = safeRequest.data;\n\n const modelName = parsedRequest.model;\n\n if (parsedRequest.system_instruction && parsedRequest.systemInstruction) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"'system_instruction' and 'systemInstruction' are not allowed at the same time\"),\n });\n }\n\n if (parsedRequest.generation_config && parsedRequest.generationConfig) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"'generation_config' and 'generationConfig' are not allowed at the same time\"),\n });\n }\n\n if (parsedRequest.tool_config && parsedRequest.toolConfig) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"'tool_config' and 'toolConfig' are not allowed at the same time\"),\n });\n }\n\n const systemInstruction = parsedRequest.system_instruction || parsedRequest.systemInstruction;\n const generationConfig = parsedRequest.generation_config || parsedRequest.generationConfig;\n const safetySettings = parsedRequest.safety_settings || parsedRequest.safetySettings;\n const toolConfig = parsedRequest.tool_config || parsedRequest.toolConfig;\n\n if (toolConfig && (!parsedRequest.tools || parsedRequest.tools.function_declarations.length === 0)) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"'tools' are required when 'tool_choice' is specified\"),\n });\n }\n\n const _config: ConfigType = {};\n\n if (toolConfig) {\n if (toolConfig.function_calling_config.mode === \"ANY\") {\n if (\n toolConfig.function_calling_config.allowed_function_names &&\n toolConfig.function_calling_config.allowed_function_names.length === 1\n ) {\n _config.toolChoice = toolConfig.function_calling_config.allowed_function_names[0];\n } else {\n _config.toolChoice = toolConfig.function_calling_config.mode.toLowerCase();\n }\n } else {\n _config.toolChoice = toolConfig.function_calling_config.mode.toLowerCase();\n }\n }\n\n _config.seed = generationConfig?.seed;\n _config.maxTokens = generationConfig?.maxOutputTokens;\n _config.temperature = generationConfig?.temperature;\n _config.topP = generationConfig?.topP;\n _config.presencePenalty = generationConfig?.presencePenalty;\n _config.frequencyPenalty = generationConfig?.frequencyPenalty;\n _config.stop = generationConfig?.stopSequences;\n _config.safetySettings = safetySettings;\n const config = Config().parse(removeUndefinedEntries(_config));\n\n const messages: MessageType[] = [];\n if (systemInstruction) {\n systemInstruction.parts.forEach((part) => {\n messages.push({ role: SystemRoleLiteral, content: [{ modality: TextModalityLiteral, value: part.text }] });\n });\n }\n\n parsedRequest.contents.forEach((message) => {\n const role = message.role;\n switch (role) {\n case \"user\":\n {\n const content = message.parts as (GoogleChatContentPartTextType | GoogleChatContentPartInlineDataType)[];\n const _content = content.map((c) => {\n if (\"text\" in c) {\n return { modality: TextModalityLiteral, value: c.text };\n } else {\n return {\n modality: ImageModalityLiteral,\n detail: \"auto\" as ImageContentType[\"detail\"],\n value: {\n type: Base64ImageContentTypeLiteral,\n base64: c.inline_data.data,\n mediaType: c.inline_data.mime_type.split(\"/\")[1] as Base64ImageContentValueType[\"mediaType\"],\n },\n };\n }\n });\n messages.push({ role: role, content: _content });\n }\n break;\n\n case \"model\":\n {\n const content = message.parts as (GoogleChatContentPartTextType | GoogleChatContentPartFunctionCallType)[];\n const _content = content.map((c, index) => {\n if (\"text\" in c) {\n return { modality: TextModalityLiteral, value: c.text };\n } else {\n return {\n modality: ToolCallModalityLiteral,\n id: index.toString(),\n index: index,\n name: c.function_call.name,\n arguments: JSON.stringify(c.function_call.args),\n };\n }\n });\n messages.push({ role: AssistantRoleLiteral, content: _content });\n }\n break;\n\n case \"function\":\n {\n const content = message.parts as GoogleChatContentPartFunctionResponseType[];\n const _content = content.map((c, index) => {\n return {\n modality: ToolResponseModalityLiteral,\n id: index.toString(),\n index: index,\n name: c.function_response.name,\n data: JSON.stringify(c.function_response.response),\n };\n });\n messages.push({ role: ToolRoleLiteral, content: _content });\n }\n break;\n\n default: {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' is not supported for model : ${this.modelName}`),\n });\n }\n }\n });\n\n const tools: ToolType[] = [];\n if (parsedRequest.tools) {\n parsedRequest.tools.function_declarations.forEach((tool: GoogleChatToolType) => {\n tools.push({\n type: \"function\",\n definition: {\n schema: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n },\n });\n });\n }\n\n return {\n modelName,\n config,\n messages,\n tools: tools.length > 0 ? tools : undefined,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n transformConfig(config: ConfigType, messages?: MessageType[], tools?: ToolType[]): ParamsType {\n const _toolChoice = config.toolChoice;\n delete config.toolChoice; // can have a specific tool name that is not in the model schema, validated at transformation\n\n const _parsedConfig = this.modelSchema.config.schema.safeParse(config);\n if (!_parsedConfig.success) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: _parsedConfig.error,\n });\n }\n\n const parsedConfig = _parsedConfig.data as ConfigType;\n\n Object.keys(parsedConfig).forEach((key) => {\n if (!(key in this.modelSchema.config.def)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`Invalid config key : '${key}', \n available keys : [${Object.keys(this.modelSchema.config.def).join(\", \")}]`),\n });\n }\n });\n\n const transformedConfig = Object.keys(parsedConfig).reduce((acc, key) => {\n const def = this.modelSchema.config.def[key];\n const paramKey = def.param;\n const paramValue = (parsedConfig as ConfigType)[key];\n\n if (key === \"reasoningEnabled\") {\n // Handle reasoningEnabled specially\n acc.thinkingConfig =\n acc.thinkingConfig && typeof acc.thinkingConfig === \"object\"\n ? { ...acc.thinkingConfig, includeThoughts: paramValue }\n : { includeThoughts: paramValue };\n } else if (key === \"maxReasoningTokens\") {\n acc.thinkingConfig =\n acc.thinkingConfig && typeof acc.thinkingConfig === \"object\"\n ? { ...acc.thinkingConfig, thinkingBudget: paramValue }\n : { thinkingBudget: paramValue };\n } else if (key === \"reasoningEffort\") {\n acc.thinkingConfig =\n acc.thinkingConfig && typeof acc.thinkingConfig === \"object\"\n ? { ...acc.thinkingConfig, thinkingLevel: paramValue }\n : { thinkingLevel: paramValue };\n } else if (paramKey === \"maxOutputTokens\" && def.type === \"range\" && paramValue === 0) {\n acc[paramKey] = def.max;\n } else {\n acc[paramKey] = paramValue;\n }\n\n return acc;\n }, {} as ParamsType);\n\n // Validate that only one of thinkingBudget or thinkingLevel is set\n if (\n transformedConfig.thinkingConfig &&\n typeof transformedConfig.thinkingConfig === \"object\" &&\n \"thinkingBudget\" in transformedConfig.thinkingConfig &&\n \"thinkingLevel\" in transformedConfig.thinkingConfig &&\n transformedConfig.thinkingConfig.thinkingBudget !== undefined &&\n transformedConfig.thinkingConfig.thinkingBudget !== 0 &&\n transformedConfig.thinkingConfig.thinkingLevel !== undefined\n ) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"Only one of 'thinkingBudget' or 'thinkingLevel' can be set, not both.\"),\n });\n }\n\n const safetySettings = transformedConfig.safetySettings;\n delete transformedConfig.safetySettings;\n delete transformedConfig.googleSearch;\n\n let toolConfig;\n if (_toolChoice !== undefined) {\n const toolChoice = _toolChoice as string;\n if (!tools || (tools && tools.length === 0)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'tools' are required when 'toolChoice' is specified\"),\n });\n } else if (tools && tools.length > 0) {\n const configToolChoice = this.modelSchema.config.def.toolChoice as SelectStringConfigItemDefType;\n if (!configToolChoice.choices.includes(toolChoice)) {\n // toolChoice not in model schema choices\n if (tools.map((tool) => tool.definition.schema.name).includes(toolChoice)) {\n // toolChoice is a specific tool name\n toolConfig = {\n function_calling_config: {\n mode: \"ANY\",\n allowed_function_names: [toolChoice],\n },\n };\n } else {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`toolChoice : '${toolChoice}' is not part of provided 'tools' names or \n one of [${configToolChoice.choices.join(\", \")}]`),\n });\n }\n } else {\n // toolChoice is in model schema choices\n if (toolChoice === \"any\") {\n toolConfig = {\n function_calling_config: {\n mode: \"ANY\",\n allowed_function_names: tools.map((tool) => tool.definition.schema.name),\n },\n };\n } else {\n toolConfig = {\n function_calling_config: {\n mode: toolChoice.toUpperCase(), // Google uses uppercase for toolChoice\n },\n };\n }\n }\n }\n }\n\n if (\"response_format\" in transformedConfig && transformedConfig.response_format !== undefined) {\n const responseFormat = transformedConfig.response_format as string;\n if (responseFormat === \"json_schema\") {\n const responseSchemaConfig = transformedConfig.response_schema as ResponseSchemaType;\n if (!(\"response_schema\" in transformedConfig) || !transformedConfig.response_schema || !responseSchemaConfig?.schema) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'responseSchema' is required in config when 'responseFormat' is 'json_schema'\"),\n });\n } else {\n transformedConfig.responseSchema = responseSchemaConfig.schema;\n transformedConfig.responseMimeType = \"application/json\";\n if (\"additionalProperties\" in responseSchemaConfig.schema) {\n // Google does not support additionalProperties in responseSchema but our schema always has it\n delete (transformedConfig.responseSchema as any).additionalProperties;\n }\n delete transformedConfig.response_format;\n delete transformedConfig.response_schema;\n }\n } else if (responseFormat === \"json_object\") {\n transformedConfig.responseSchema = {\n type: \"object\",\n };\n delete transformedConfig.response_format;\n } else if (responseFormat === \"text\") {\n delete transformedConfig.response_format;\n }\n }\n\n return {\n generation_config: transformedConfig,\n ...(toolConfig ? { tool_config: toolConfig } : {}),\n ...(safetySettings ? { safety_settings: safetySettings } : {}),\n };\n }\n\n transformMessages(messages: MessageType[]): ParamsType {\n if (!messages || (messages && messages.length === 0)) {\n return { messages: [] };\n }\n const stripBase64Prefix = (data: string): string => {\n const prefixMatch = data.match(/^data:(image\\/[a-zA-Z]+|application\\/pdf);base64,/);\n if (prefixMatch) {\n return data.substring(prefixMatch[0].length);\n }\n return data;\n };\n const parsedMessages = messages.map((message) => {\n const parsedMessage = Message().safeParse(message);\n if (!parsedMessage.success) {\n throw new InvalidMessagesError({ info: \"Invalid messages\", cause: parsedMessage.error });\n }\n return parsedMessage.data;\n });\n\n parsedMessages.forEach((message) => {\n message.content.forEach((content) => {\n if (!this.modelSchema.modalities.includes(content.modality)) {\n throw new InvalidMessagesError({\n info: `Invalid message content for model : '${this.modelName}'`,\n cause: new Error(`model : '${this.modelName}' does not support modality : '${content.modality}', \n available modalities : [${this.modelSchema.modalities.join(\", \")}]`),\n });\n }\n });\n });\n\n parsedMessages.forEach((message) => {\n if (!Object.keys(this.modelSchema.roles).includes(message.role)) {\n throw new InvalidMessagesError({\n info: `Invalid message content for model : '${this.modelName}'`,\n cause: new Error(`model : '${this.modelName}' does not support role : '${message.role}', \n available roles : [${Object.keys(this.modelSchema.roles).join(\", \")}]`),\n });\n }\n });\n\n // Filter out error, search-result modalities from all messages (these are output-only modalities)\n parsedMessages.forEach((message) => {\n message.content = message.content.filter((content) => content.modality !== \"error\" && content.modality !== \"search-result\");\n });\n\n const systemInstruction: GoogleChatSystemInstructionType = { parts: [] };\n const nonSystemMessages: GoogleChatContentType[] = [];\n\n parsedMessages.forEach((message) => {\n switch (message.role) {\n case SystemRoleLiteral:\n {\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n systemInstruction.parts.push({ text: content.value });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n }\n break;\n\n case AssistantRoleLiteral:\n {\n const assistantContent: GoogleChatContentType[\"parts\"] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n assistantContent.push({ text: content.value });\n } else if (content.modality === ToolCallModalityLiteral) {\n // Include thought_signature if present (for thinking models)\n assistantContent.push({\n function_call: {\n name: content.name,\n args: JSON.parse(content.arguments),\n },\n ...(content.thoughtSignature ? { thought_signature: content.thoughtSignature } : {}),\n });\n } else if (content.modality === ReasoningModalityLiteral) {\n // Only send thinking content back, skip redacted reasoning\n if (content.value.type === \"thinking\" && content.value.thinking) {\n assistantContent.push({\n text: content.value.thinking,\n thought: true as const,\n thought_signature: content.value.signature,\n });\n }\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n nonSystemMessages.push({\n role: this.modelSchema.roles[message.role] as GoogleChatContentType[\"role\"],\n parts: assistantContent,\n });\n }\n break;\n\n case UserRoleLiteral:\n {\n const userContent: GoogleChatContentType[\"parts\"] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n userContent.push({ text: content.value });\n } else if (content.modality === ImageModalityLiteral) {\n if (content.value.type === \"base64\") {\n let base64Data = content.value.base64;\n // Check and strip the data URL prefix if it exists.\n base64Data = stripBase64Prefix(base64Data);\n userContent.push({\n inline_data: {\n mime_type: `image/${content.value.mediaType}`,\n data: base64Data,\n },\n });\n } else if (content.value.type === \"url\") {\n throw new InvalidMessagesError({\n info: `Invalid message 'modality' for model : ${this.modelName}`,\n cause: new Error(`model: '${this.modelName}' does not support image content type: '${content.value.type}'`),\n });\n }\n } else if (content.modality === PdfModalityLiteral) {\n if (content.value.type === \"base64\") {\n let base64Data = content.value.base64;\n // Check and strip the data URL prefix if it exists.\n base64Data = stripBase64Prefix(base64Data);\n userContent.push({\n inline_data: {\n mime_type: \"application/pdf\",\n data: base64Data,\n },\n });\n } else if (content.value.type === \"url\") {\n userContent.push({\n file_data: {\n mime_type: \"application/pdf\",\n file_uri: content.value.url,\n },\n });\n }\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n nonSystemMessages.push({\n role: this.modelSchema.roles[message.role] as GoogleChatContentType[\"role\"],\n parts: userContent,\n });\n }\n break;\n\n case ToolRoleLiteral:\n {\n const toolResponseContent: GoogleChatContentPartFunctionResponseType[] = [];\n message.content.forEach((content) => {\n if (content.modality === ToolResponseModalityLiteral) {\n toolResponseContent.push({\n function_response: {\n name: content.name,\n response: JSON.parse(content.data),\n },\n });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n nonSystemMessages.push({\n role: this.modelSchema.roles[message.role] as GoogleChatContentType[\"role\"],\n parts: toolResponseContent,\n });\n }\n break;\n\n default: {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' is not supported, \n available roles : [${Object.keys(this.modelSchema.roles).join(\", \")}]`),\n });\n }\n }\n });\n\n if (nonSystemMessages[0].role !== this.modelSchema.roles[UserRoleLiteral]) {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' for model : ${this.modelName}`,\n cause: new Error(`model : '${this.modelName}' requires first message to be from user`),\n });\n }\n\n const getNextExpectedRoles = (role: string): string[] => {\n if (role === this.modelSchema.roles[UserRoleLiteral] || role === this.modelSchema.roles[ToolRoleLiteral]) {\n return [this.modelSchema.roles[AssistantRoleLiteral] as string];\n }\n return [this.modelSchema.roles[UserRoleLiteral] as string, this.modelSchema.roles[ToolRoleLiteral] as string];\n };\n\n for (let i = 1; i < nonSystemMessages.length; i++) {\n if (!getNextExpectedRoles(nonSystemMessages[i - 1].role).includes(nonSystemMessages[i].role)) {\n throw new InvalidMessagesError({\n info: `Invalid message format for model : ${this.modelName}`,\n cause: new Error(\n `model : '${this.modelName}' cannot have message with role : '${nonSystemMessages[i].role}' after message with role : '${nonSystemMessages[i - 1].role}'`\n ),\n });\n }\n }\n\n if (\n nonSystemMessages[nonSystemMessages.length - 1].role !== this.modelSchema.roles[UserRoleLiteral] &&\n nonSystemMessages[nonSystemMessages.length - 1].role !== this.modelSchema.roles[ToolRoleLiteral]\n ) {\n throw new InvalidMessagesError({\n info: `Invalid message format for model : ${this.modelName}`,\n cause: new Error(`model : '${this.modelName}' requires last message to be from user`),\n });\n }\n\n return {\n contents: nonSystemMessages,\n ...(systemInstruction.parts.length > 0 ? { system_instruction: systemInstruction } : {}),\n };\n }\n\n /**\n * Recursively removes 'additionalProperties' from a JSON schema object.\n * Google's Gemini API does not support this field in function parameters.\n */\n private stripAdditionalProperties(obj: unknown): unknown {\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => this.stripAdditionalProperties(item));\n }\n\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {\n if (key === \"additionalProperties\") {\n // Skip this field - Google doesn't support it\n continue;\n }\n result[key] = this.stripAdditionalProperties(value);\n }\n return result;\n }\n\n transformTools(tools: ToolType[], config?: ConfigType): ParamsType {\n if (!this.modelSchema.modalities.includes(ToolCallModalityLiteral)) {\n throw new InvalidToolsError({\n info: `Invalid tool 'modality' for model : ${this.modelName}`,\n cause: new Error(`model : '${this.modelName}' does not support tool modality : '${ToolCallModalityLiteral}'`),\n });\n }\n\n if ((!tools || tools.length === 0) && !config?.googleSearchTool) {\n return { tools: [] as ToolType[] };\n }\n\n const parsedTools = (tools ?? []).map((tool) => {\n const parsedTool = Tool().safeParse(tool);\n if (!parsedTool.success) {\n throw new InvalidToolsError({ info: \"Invalid tools\", cause: parsedTool.error });\n }\n return parsedTool.data;\n });\n\n const transformedTools = parsedTools.map((tool) => ({\n name: tool.definition.schema.name,\n description: tool.definition.schema.description,\n // Strip additionalProperties as Google's API doesn't support this field\n parameters: this.stripAdditionalProperties(tool.definition.schema.parameters),\n }));\n\n return {\n tools: [\n {\n ...(transformedTools.length > 0 ? { function_declarations: transformedTools } : {}),\n ...(config?.googleSearchTool ? { google_search: {} } : {}),\n },\n ],\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.completeChatUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getCompleteChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n\n // Process PDF content through Google Files API before transforming messages\n const processedMessages = await this.transformPdfMessages(messages);\n const transformedMessages = this.transformMessages(processedMessages);\n\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = this.transformTools(tools || [], config);\n\n return {\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n };\n }\n\n transformCompleteChatResponse(response: any): ChatResponseType {\n const safe = GoogleCompleteChatResponse.safeParse(response);\n if (safe.success) {\n if (safe.data.candidates.length === 0) {\n throw new ModelResponseError({\n info: \"Invalid response from model\",\n cause: new Error(`No choices in response : ${JSON.stringify(safe.data)}`),\n });\n }\n\n const completeChatResponse: ChatResponseType = {\n messages: [],\n usage: undefined,\n logProbs: undefined,\n };\n\n const parsedResponse: GoogleCompleteChatResponseType = safe.data;\n\n if (parsedResponse.usageMetadata) {\n completeChatResponse.usage = {\n promptTokens: parsedResponse.usageMetadata.promptTokenCount,\n totalTokens: parsedResponse.usageMetadata.totalTokenCount,\n completionTokens: parsedResponse.usageMetadata.candidatesTokenCount || 0,\n };\n }\n\n const candidate = parsedResponse.candidates[0]; // default to first candidate, top choice\n\n if (candidate.content) {\n const content = candidate.content.parts.map((contentItem, index) => {\n if (\"text\" in contentItem && contentItem.text !== undefined) {\n // Check if this is a thinking/reasoning part\n if (contentItem.thought === true) {\n return createReasoningContent(contentItem.text, \"\");\n }\n return createTextContent(contentItem.text);\n } else if (\"functionCall\" in contentItem && contentItem.functionCall !== undefined) {\n return createToolCallContent(\n index,\n `${contentItem.functionCall.name}_${index}`,\n contentItem.functionCall.name,\n JSON.stringify(contentItem.functionCall.args),\n undefined, // serverName\n contentItem.thoughtSignature // thoughtSignature for thinking models\n );\n }\n }) as ContentType[];\n\n completeChatResponse.messages.push({\n role: AssistantRoleLiteral,\n content: content,\n });\n }\n\n if (candidate.groundingMetadata) {\n if (completeChatResponse.messages.length === 0) {\n completeChatResponse.messages.push({\n role: AssistantRoleLiteral,\n content: [\n createSearchResultGoogleContent(\n candidate.groundingMetadata.webSearchQueries?.[0] || \"\",\n candidate.groundingMetadata.groundingChunks?.map((chunk) => ({\n source: chunk.web ? \"web\" : \"\",\n url: chunk.web?.uri || \"\",\n title: chunk.web?.title || \"\",\n })) || [],\n candidate.groundingMetadata.groundingSupports?.map((support) => ({\n text: support.segment?.text || \"\",\n responseIndices: support.groundingChunkIndices || [],\n startIndex: support.segment?.startIndex || undefined,\n endIndex: support.segment?.endIndex || undefined,\n confidenceScores: support.confidenceScores || undefined,\n })) || []\n ),\n ],\n });\n } else {\n completeChatResponse.messages[0].content.push(\n createSearchResultGoogleContent(\n candidate.groundingMetadata.webSearchQueries?.[0] || \"\",\n candidate.groundingMetadata.groundingChunks?.map((chunk) => ({\n source: chunk.web ? \"web\" : \"\",\n url: chunk.web?.uri || \"\",\n title: chunk.web?.title || \"\",\n })) || [],\n candidate.groundingMetadata.groundingSupports?.map((support) => ({\n text: support.segment?.text || \"\",\n responseIndices: support.groundingChunkIndices || [],\n startIndex: support.segment?.startIndex || undefined,\n endIndex: support.segment?.endIndex || undefined,\n confidenceScores: support.confidenceScores || undefined,\n })) || []\n )\n );\n }\n }\n\n const safetyRatings = candidate.safetyRatings;\n if (safetyRatings && safetyRatings.length > 0) {\n safetyRatings.forEach((rating) => {\n if (rating.blocked) {\n if (completeChatResponse.messages.length === 0) {\n completeChatResponse.messages.push({\n role: AssistantRoleLiteral,\n content: [\n createSafetyErrorContent(\n rating.category,\n rating.probability,\n rating.blocked,\n `Blocked content for category: ${rating.category} with probability: ${rating.probability}`\n ),\n ],\n });\n } else {\n completeChatResponse.messages[0].content.push(\n createSafetyErrorContent(\n rating.category,\n rating.probability,\n rating.blocked,\n `Blocked content for category: ${rating.category} with probability: ${rating.probability}`\n )\n );\n }\n }\n });\n }\n\n if (completeChatResponse.messages.length > 0) {\n return completeChatResponse;\n } else if (completeChatResponse.messages.length === 0 && candidate.finishReason === \"SAFETY\") {\n throw new ModelResponseError({\n info: \"Blocked content, model response finished with safety reason\",\n cause: new Error(\"Blocked content, model response finished with safety reason\"),\n });\n }\n }\n\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.streamChatUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getStreamChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n\n // Process PDF content through Google Files API before transforming messages\n const processedMessages = await this.transformPdfMessages(messages);\n const transformedMessages = this.transformMessages(processedMessages);\n\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = this.transformTools(tools || [], config);\n\n return {\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n };\n }\n\n async *transformStreamChatResponseChunk(\n chunk: string,\n buffer: string\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n // merge last buffer message and split into lines\n const lines = (buffer + chunk).split(\",\\r\").filter((line) => line.trim() !== \"\");\n for (const line of lines) {\n let completeLine = line;\n // remove all '\\n' from string JSON\n completeLine = completeLine.replace(/\\n/g, \"\");\n if (completeLine.startsWith(\"[\") || completeLine.startsWith(\",{\")) {\n // start of stream, remove '['\n completeLine = completeLine.slice(1);\n } else if (completeLine.endsWith(\"]\")) {\n if (completeLine === \"]\") {\n // strict end of stream\n return;\n } else {\n // remaining message and then end of stream, remove ']'\n completeLine = completeLine.slice(0, -1);\n }\n }\n\n let structuredLine: any;\n try {\n structuredLine = JSON.parse(completeLine);\n } catch (error) {\n // malformed JSON error, must be the end of loop\n if (error instanceof SyntaxError) {\n buffer = completeLine;\n continue;\n } else {\n // non JSON parse error, re-raise\n throw error;\n }\n }\n\n // reset buffer\n buffer = \"\";\n const safe = GoogleStreamChatResponse.safeParse(structuredLine);\n if (safe.success) {\n const partialResponse: PartialChatResponseType = { partialMessages: [] };\n const parsedResponse: GoogleStreamChatResponseType = safe.data;\n if (parsedResponse.candidates.length > 0) {\n const message = parsedResponse.candidates[0].content;\n if (message && \"parts\" in message && message.parts.length > 0) {\n message.parts.forEach((messagePart, index) => {\n if (\"text\" in messagePart && messagePart.text !== undefined) {\n // Check if this is a thinking/reasoning part\n if (messagePart.thought === true) {\n partialResponse.partialMessages.push(createPartialReasoningMessage(AssistantRoleLiteral, messagePart.text, \"\"));\n } else {\n partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, messagePart.text));\n }\n }\n\n if (\"functionCall\" in messagePart && messagePart.functionCall !== undefined) {\n const toolCall = messagePart.functionCall;\n partialResponse.partialMessages.push(\n createPartialToolCallMessage(\n AssistantRoleLiteral,\n index,\n `${toolCall.name}_${index}`,\n toolCall.name,\n JSON.stringify(toolCall.args),\n undefined, // serverName\n messagePart.thoughtSignature // thoughtSignature for thinking models\n )\n );\n }\n });\n }\n }\n\n if (parsedResponse.usageMetadata) {\n partialResponse.usage = {\n promptTokens: parsedResponse.usageMetadata.promptTokenCount,\n completionTokens: parsedResponse.usageMetadata.candidatesTokenCount,\n totalTokens: parsedResponse.usageMetadata.totalTokenCount,\n };\n }\n\n if (parsedResponse.candidates.length > 0) {\n const candidate = parsedResponse.candidates[0];\n if (candidate.groundingMetadata) {\n partialResponse.partialMessages.push(\n createPartialSearchResultGoogleMessage(\n AssistantRoleLiteral,\n candidate.groundingMetadata.webSearchQueries?.[0] || \"\",\n candidate.groundingMetadata.groundingChunks?.map((chunk) => ({\n source: chunk.web ? \"web\" : \"\",\n url: chunk.web?.uri || \"\",\n title: chunk.web?.title || \"\",\n })) || [],\n candidate.groundingMetadata.groundingSupports?.map((support) => ({\n text: support.segment?.text || \"\",\n responseIndices: support.groundingChunkIndices || [],\n startIndex: support.segment?.startIndex || undefined,\n endIndex: support.segment?.endIndex || undefined,\n confidenceScores: support.confidenceScores || undefined,\n })) || []\n )\n );\n }\n\n const safetyRatings = candidate.safetyRatings;\n if (safetyRatings && safetyRatings.length > 0) {\n safetyRatings.forEach((rating) => {\n if (rating.blocked) {\n partialResponse.partialMessages.push(\n createPartialSafetyErrorMessage(\n AssistantRoleLiteral,\n rating.category,\n rating.probability,\n rating.blocked,\n `Blocked content for category: ${rating.category} with probability: ${rating.probability}`\n )\n );\n }\n });\n }\n }\n\n yield { partialResponse: partialResponse, buffer: buffer };\n } else {\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n }\n\n yield { partialResponse: { partialMessages: [] }, buffer: buffer };\n }\n async *transformProxyStreamChatResponseChunk(\n chunk: string,\n buffer: string,\n data?: any,\n headers?: Record<string, string>,\n query?: Record<string, string>\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n // If query has alt not equal to 'sse', delegate to streamTransform logic\n if (query?.alt !== \"sse\") {\n yield* this.transformStreamChatResponseChunk(chunk, buffer);\n return;\n }\n\n // --- proxyStreamTransform logic starts here ---\n const newData = buffer + chunk;\n const lines: string[] = [];\n let newBuffer = \"\";\n\n // Split newData into complete lines and new buffer\n let currentIndex = 0;\n while (currentIndex < newData.length) {\n const newlineIndex = newData.indexOf(\"\\n\", currentIndex);\n if (newlineIndex === -1) {\n newBuffer = newData.substring(currentIndex);\n break;\n } else {\n const line = newData.substring(currentIndex, newlineIndex).trim();\n if (line) {\n lines.push(line);\n }\n currentIndex = newlineIndex + 1;\n }\n }\n\n // Process each complete line\n for (const line of lines) {\n if (line === \"data: [DONE]\") {\n return; // End of stream\n }\n\n if (line.startsWith(\"data: \")) {\n const jsonStr = line.substring(\"data: \".length);\n try {\n const structuredLine = JSON.parse(jsonStr);\n const safe = GoogleStreamChatResponse.safeParse(structuredLine);\n if (safe.success) {\n const partialResponse: PartialChatResponseType = { partialMessages: [] };\n const parsedResponse: GoogleStreamChatResponseType = safe.data;\n if (parsedResponse.candidates.length > 0) {\n const message = parsedResponse.candidates[0].content;\n if (message && \"parts\" in message && message.parts.length > 0) {\n message.parts.forEach((messagePart, index) => {\n if (\"text\" in messagePart && messagePart.text !== undefined) {\n // Check if this is a thinking/reasoning part\n if (messagePart.thought === true) {\n partialResponse.partialMessages.push(createPartialReasoningMessage(AssistantRoleLiteral, messagePart.text, \"\"));\n } else {\n partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, messagePart.text));\n }\n }\n\n if (\"functionCall\" in messagePart && messagePart.functionCall !== undefined) {\n const toolCall = messagePart.functionCall;\n partialResponse.partialMessages.push(\n createPartialToolCallMessage(\n AssistantRoleLiteral,\n index,\n `${toolCall.name}_${index}`,\n toolCall.name,\n JSON.stringify(toolCall.args),\n undefined, // serverName\n messagePart.thoughtSignature // thoughtSignature for thinking models\n )\n );\n }\n });\n }\n }\n\n if (\n parsedResponse.usageMetadata &&\n parsedResponse.usageMetadata.totalTokenCount &&\n parsedResponse.usageMetadata.promptTokenCount &&\n parsedResponse.usageMetadata.candidatesTokenCount\n ) {\n partialResponse.usage = {\n promptTokens: parsedResponse.usageMetadata.promptTokenCount,\n completionTokens: parsedResponse.usageMetadata.candidatesTokenCount,\n totalTokens: parsedResponse.usageMetadata.totalTokenCount,\n };\n }\n\n if (parsedResponse.candidates.length > 0) {\n const candidate = parsedResponse.candidates[0];\n if (candidate.groundingMetadata) {\n partialResponse.partialMessages.push(\n createPartialSearchResultGoogleMessage(\n AssistantRoleLiteral,\n candidate.groundingMetadata.webSearchQueries?.[0] || \"\",\n candidate.groundingMetadata.groundingChunks?.map((chunk) => ({\n source: chunk.web ? \"web\" : \"\",\n url: chunk.web?.uri || \"\",\n title: chunk.web?.title || \"\",\n })) || [],\n candidate.groundingMetadata.groundingSupports?.map((support) => ({\n text: support.segment?.text || \"\",\n responseIndices: support.groundingChunkIndices || [],\n startIndex: support.segment?.startIndex || undefined,\n endIndex: support.segment?.endIndex || undefined,\n confidenceScores: support.confidenceScores || undefined,\n })) || []\n )\n );\n }\n\n const safetyRatings = candidate.safetyRatings;\n if (safetyRatings && safetyRatings.length > 0) {\n safetyRatings.forEach((rating) => {\n if (rating.blocked) {\n partialResponse.partialMessages.push(\n createPartialSafetyErrorMessage(\n AssistantRoleLiteral,\n rating.category,\n rating.probability,\n rating.blocked,\n `Blocked content for category: ${rating.category} with probability: ${rating.probability}`\n )\n );\n }\n });\n }\n }\n\n yield { partialResponse: partialResponse, buffer: buffer };\n } else {\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n } catch (error) {\n throw new ModelResponseError({\n info: `Malformed JSON received in stream: ${jsonStr}`,\n cause: error,\n });\n }\n }\n }\n\n // Yield the updated buffer after processing all lines\n yield { partialResponse: { partialMessages: [] }, buffer: newBuffer };\n }\n\n async getProxyCompleteChatUrl(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.completeChatUrl);\n });\n }\n\n async getProxyStreamChatUrl(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<UrlType> {\n return new Promise((resolve) => {\n if (!query || Object.keys(query).length === 0) {\n resolve(this.streamChatUrl);\n return;\n }\n\n const url = new URL(this.streamChatUrl);\n Object.entries(query).forEach(([key, value]) => {\n if (value != null) {\n url.searchParams.set(key, value);\n }\n });\n\n resolve(url.toString() as UrlType);\n });\n }\n async getProxyCompleteChatHeaders(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<HeadersType> {\n if (!headers) {\n return {};\n }\n const sanitizedHeaders: Record<string, string> = { ...headers };\n\n delete sanitizedHeaders.host;\n delete sanitizedHeaders[\"content-length\"];\n return sanitizedHeaders;\n }\n async getProxyStreamChatHeaders(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<HeadersType> {\n // Directly delegate to getProxyCompleteChatHeaders for now\n return await this.getProxyCompleteChatHeaders(data, headers, query);\n }\n getModelPricing(): ChatModelPriceType {\n // Check if the modelName exists in pricingData before accessing it\n if (!(this.modelName in pricingData)) {\n throw new ModelResponseError({\n info: `Invalid model pricing for model : '${this.modelName}'`,\n cause: new Error(`No pricing configuration found for model \"${this.modelName}\"`),\n });\n }\n\n const entry = pricingData[this.modelName as keyof typeof pricingData];\n return entry as ChatModelPriceType;\n }\n}\n\nexport { BaseChatModel, BaseChatModelOptions, type BaseChatModelOptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5Flash001Literal = \"gemini-1.5-flash-001\";\nconst Gemini1_5Flash001Description =\n \"Google's fastest, most cost-efficient multimodal model with great performance for high-frequency tasks. \\\n Optimized for fast and versatile performance across a diverse variety of tasks\";\n\nconst Gemini1_5Flash001Schema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5Flash001Literal,\n description: Gemini1_5Flash001Description,\n maxInputTokens: 1000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5Flash001Literal],\n});\n\nconst Gemini1_5Flash001Options = BaseChatModelOptions;\ntype Gemini1_5Flash001OptionsType = z.infer<typeof Gemini1_5Flash001Options>;\n\nclass Gemini1_5Flash001 extends BaseChatModel {\n constructor(options: Gemini1_5Flash001OptionsType) {\n super(Gemini1_5Flash001Schema, options);\n }\n}\n\nexport {\n Gemini1_5Flash001,\n Gemini1_5Flash001Literal,\n Gemini1_5Flash001Options,\n Gemini1_5Flash001Schema,\n type Gemini1_5Flash001OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5Flash002Literal = \"gemini-1.5-flash-002\";\nconst Gemini1_5Flash002Description =\n \"Google's fastest, most cost-efficient multimodal model with great performance for high-frequency tasks. \\\n Optimized for fast and versatile performance across a diverse variety of tasks\";\n\nconst Gemini1_5Flash002Schema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5Flash002Literal,\n description: Gemini1_5Flash002Description,\n maxInputTokens: 1000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5Flash002Literal],\n});\n\nconst Gemini1_5Flash002Options = BaseChatModelOptions;\ntype Gemini1_5Flash002OptionsType = z.infer<typeof Gemini1_5Flash002Options>;\n\nclass Gemini1_5Flash002 extends BaseChatModel {\n constructor(options: Gemini1_5Flash002OptionsType) {\n super(Gemini1_5Flash002Schema, options);\n }\n}\n\nexport {\n Gemini1_5Flash002,\n Gemini1_5Flash002Literal,\n Gemini1_5Flash002Options,\n Gemini1_5Flash002Schema,\n type Gemini1_5Flash002OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5FlashLatestLiteral = \"gemini-1.5-flash-latest\";\nconst Gemini1_5FlashLatestDescription =\n \"Google's latest multimodal model with great performance for high-frequency tasks. \\\n Optimized for fast and versatile performance across a diverse variety of tasks\";\n\nconst Gemini1_5FlashLatestSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5FlashLatestLiteral,\n description: Gemini1_5FlashLatestDescription,\n maxInputTokens: 1000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5FlashLatestLiteral],\n});\n\nconst Gemini1_5FlashLatestOptions = BaseChatModelOptions;\ntype Gemini1_5FlashLatestOptionsType = z.infer<typeof Gemini1_5FlashLatestOptions>;\n\nclass Gemini1_5FlashLatest extends BaseChatModel {\n constructor(options: Gemini1_5FlashLatestOptionsType) {\n super(Gemini1_5FlashLatestSchema, options);\n }\n}\n\nexport {\n Gemini1_5FlashLatest,\n Gemini1_5FlashLatestLiteral,\n Gemini1_5FlashLatestOptions,\n Gemini1_5FlashLatestSchema,\n type Gemini1_5FlashLatestOptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5FlashLiteral = \"gemini-1.5-flash\";\nconst Gemini1_5FlashDescription =\n \"Google's fastest, most cost-efficient multimodal model with great performance for high-frequency tasks. \\\n Optimized for fast and versatile performance across a diverse variety of tasks\";\n\nconst Gemini1_5FlashSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5FlashLiteral,\n description: Gemini1_5FlashDescription,\n maxInputTokens: 1000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5FlashLiteral],\n});\n\nconst Gemini1_5FlashOptions = BaseChatModelOptions;\ntype Gemini1_5FlashOptionsType = z.infer<typeof Gemini1_5FlashOptions>;\n\nclass Gemini1_5Flash extends BaseChatModel {\n constructor(options: Gemini1_5FlashOptionsType) {\n super(Gemini1_5FlashSchema, options);\n }\n}\n\nexport { Gemini1_5Flash, Gemini1_5FlashLiteral, Gemini1_5FlashOptions, Gemini1_5FlashSchema, type Gemini1_5FlashOptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5Pro001Literal = \"gemini-1.5-pro-001\";\nconst Gemini1_5Pro001Description =\n \"Google's best performing multimodal model with features for a wide variety of reasoning tasks. \\\n Optimized for complex reasoning tasks requiring more intelligence\";\n\nconst Gemini1_5Pro001Schema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5Pro001Literal,\n description: Gemini1_5Pro001Description,\n maxInputTokens: 2000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5Pro001Literal],\n});\n\nconst Gemini1_5Pro001Options = BaseChatModelOptions;\ntype Gemini1_5Pro001OptionsType = z.infer<typeof Gemini1_5Pro001Options>;\n\nclass Gemini1_5Pro001 extends BaseChatModel {\n constructor(options: Gemini1_5Pro001OptionsType) {\n super(Gemini1_5Pro001Schema, options);\n }\n}\n\nexport { Gemini1_5Pro001, Gemini1_5Pro001Literal, Gemini1_5Pro001Options, Gemini1_5Pro001Schema, type Gemini1_5Pro001OptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5Pro002Literal = \"gemini-1.5-pro-002\";\nconst Gemini1_5Pro002Description =\n \"Google's best performing multimodal model with features for a wide variety of reasoning tasks. \\\n Optimized for complex reasoning tasks requiring more intelligence\";\n\nconst Gemini1_5Pro002Schema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5Pro002Literal,\n description: Gemini1_5Pro002Description,\n maxInputTokens: 2000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5Pro002Literal],\n});\n\nconst Gemini1_5Pro002Options = BaseChatModelOptions;\ntype Gemini1_5Pro002OptionsType = z.infer<typeof Gemini1_5Pro002Options>;\n\nclass Gemini1_5Pro002 extends BaseChatModel {\n constructor(options: Gemini1_5Pro002OptionsType) {\n super(Gemini1_5Pro002Schema, options);\n }\n}\n\nexport { Gemini1_5Pro002, Gemini1_5Pro002Literal, Gemini1_5Pro002Options, Gemini1_5Pro002Schema, type Gemini1_5Pro002OptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5ProLatestLiteral = \"gemini-1.5-pro-latest\";\nconst Gemini1_5ProLatestDescription =\n \"Google's best performing multimodal model with features for a wide variety of reasoning tasks. \\\n Optimized for complex reasoning tasks requiring more intelligence\";\n\nconst Gemini1_5ProLatestSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5ProLatestLiteral,\n description: Gemini1_5ProLatestDescription,\n maxInputTokens: 2000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5ProLatestLiteral],\n});\n\nconst Gemini1_5ProLatestOptions = BaseChatModelOptions;\ntype Gemini1_5ProLatestOptionsType = z.infer<typeof Gemini1_5ProLatestOptions>;\n\nclass Gemini1_5ProLatest extends BaseChatModel {\n constructor(options: Gemini1_5ProLatestOptionsType) {\n super(Gemini1_5ProLatestSchema, options);\n }\n}\n\nexport {\n Gemini1_5ProLatest,\n Gemini1_5ProLatestLiteral,\n Gemini1_5ProLatestOptions,\n Gemini1_5ProLatestSchema,\n type Gemini1_5ProLatestOptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5ProLiteral = \"gemini-1.5-pro\";\nconst Gemini1_5ProDescription =\n \"Google's best performing multimodal model with features for a wide variety of reasoning tasks. \\\n Optimized for complex reasoning tasks requiring more intelligence\";\n\nconst Gemini1_5ProSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5ProLiteral,\n description: Gemini1_5ProDescription,\n maxInputTokens: 2000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5ProLiteral],\n});\n\nconst Gemini1_5ProOptions = BaseChatModelOptions;\ntype Gemini1_5ProOptionsType = z.infer<typeof Gemini1_5ProOptions>;\n\nclass Gemini1_5Pro extends BaseChatModel {\n constructor(options: Gemini1_5ProOptionsType) {\n super(Gemini1_5ProSchema, options);\n }\n}\n\nexport { Gemini1_5Pro, Gemini1_5ProLiteral, Gemini1_5ProOptions, Gemini1_5ProSchema, type Gemini1_5ProOptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_0FlashExpLiteral = \"gemini-2.0-flash-exp\";\nconst Gemini2_0FlashExpDescription =\n \"Google's experimental multimodal model with enhanced capabilities. \\\n Designed for cutting-edge performance across complex and high-frequency tasks.\";\n\nconst Gemini2_0FlashExpSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_0FlashExpLiteral,\n description: Gemini2_0FlashExpDescription,\n maxInputTokens: 1000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini2_0FlashExpLiteral],\n});\n\nconst Gemini2_0FlashExpOptions = BaseChatModelOptions;\ntype Gemini2_0FlashExpOptionsType = z.infer<typeof Gemini2_0FlashExpOptions>;\n\nclass Gemini2_0FlashExp extends BaseChatModel {\n constructor(options: Gemini2_0FlashExpOptionsType) {\n super(Gemini2_0FlashExpSchema, options);\n }\n}\n\nexport {\n Gemini2_0FlashExp,\n Gemini2_0FlashExpLiteral,\n Gemini2_0FlashExpOptions,\n Gemini2_0FlashExpSchema,\n type Gemini2_0FlashExpOptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_0FlashLiteral = \"gemini-2.0-flash\";\nconst Gemini2_0FlashDescription =\n \"Google's Gemini 2.0 Flash model optimized for low-latency, high-performance tasks. \\\n Supports multimodal inputs including text, images, video, and audio with enhanced speed and efficiency.\";\n\nconst Gemini2_0FlashSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_0FlashLiteral,\n description: Gemini2_0FlashDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini2_0FlashLiteral],\n});\n\nconst Gemini2_0FlashOptions = BaseChatModelOptions;\ntype Gemini2_0FlashOptionsType = z.infer<typeof Gemini2_0FlashOptions>;\n\nclass Gemini2_0Flash extends BaseChatModel {\n constructor(options: Gemini2_0FlashOptionsType) {\n super(Gemini2_0FlashSchema, options);\n }\n}\n\nexport {\n Gemini2_0Flash,\n Gemini2_0FlashLiteral,\n Gemini2_0FlashOptions,\n Gemini2_0FlashSchema,\n type Gemini2_0FlashOptionsType\n};\n\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_5FlashLiteLiteral = \"gemini-2.5-flash-lite\";\nconst Gemini2_5FlashLiteDescription =\n \"Google's most cost-efficient and fastest model in the 2.5 series. \\\n Optimized for high-volume, latency-sensitive tasks like translation and classification with enhanced reasoning capabilities.\";\n\nconst Gemini2_5FlashLiteSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_5FlashLiteLiteral,\n description: Gemini2_5FlashLiteDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 65536, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 65536, 4, 0.95).schema,\n },\n price: pricingData[Gemini2_5FlashLiteLiteral],\n});\n\nconst Gemini2_5FlashLiteOptions = BaseChatModelOptions;\ntype Gemini2_5FlashLiteOptionsType = z.infer<typeof Gemini2_5FlashLiteOptions>;\n\nclass Gemini2_5FlashLite extends BaseChatModel {\n constructor(options: Gemini2_5FlashLiteOptionsType) {\n super(Gemini2_5FlashLiteSchema, options);\n }\n}\n\nexport {\n Gemini2_5FlashLite,\n Gemini2_5FlashLiteLiteral,\n Gemini2_5FlashLiteOptions,\n Gemini2_5FlashLiteSchema,\n type Gemini2_5FlashLiteOptionsType\n};\n\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_5FlashPreview0417Literal = \"gemini-2.5-flash-preview-04-17\";\nconst Gemini2_5FlashPreview0417Description =\n \"Google's best model in Gemini 2.5 family in terms of price-performance, offering well-rounded capabilities.\";\n\nconst Gemini2_5FlashPreview0417Schema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_5FlashPreview0417Literal,\n description: Gemini2_5FlashPreview0417Description,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 24576).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 24576).schema,\n },\n price: pricingData[Gemini2_5FlashPreview0417Literal],\n});\n\nconst Gemini2_5FlashPreview0417Options = BaseChatModelOptions;\ntype Gemini2_5FlashPreview0417OptionsType = z.infer<typeof Gemini2_5FlashPreview0417Options>;\n\nclass Gemini2_5FlashPreview0417 extends BaseChatModel {\n constructor(options: Gemini2_5FlashPreview0417OptionsType) {\n super(Gemini2_5FlashPreview0417Schema, options);\n }\n}\n\nexport {\n Gemini2_5FlashPreview0417,\n Gemini2_5FlashPreview0417Literal,\n Gemini2_5FlashPreview0417Options,\n Gemini2_5FlashPreview0417Schema,\n type Gemini2_5FlashPreview0417OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_5FlashLiteral = \"gemini-2.5-flash\";\nconst Gemini2_5FlashDescription =\n \"Google's Gemini 2.5 Flash model for enhanced thinking, reasoning, multimodal understanding, and advanced coding.\";\n\nconst Gemini2_5FlashSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_5FlashLiteral,\n description: Gemini2_5FlashDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 24576).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 24576).schema,\n },\n price: pricingData[Gemini2_5FlashLiteral],\n});\n\nconst Gemini2_5FlashOptions = BaseChatModelOptions;\ntype Gemini2_5FlashOptionsType = z.infer<typeof Gemini2_5FlashOptions>;\n\nclass Gemini2_5Flash extends BaseChatModel {\n constructor(options: Gemini2_5FlashOptionsType) {\n super(Gemini2_5FlashSchema, options);\n }\n}\n\nexport { Gemini2_5Flash, Gemini2_5FlashLiteral, Gemini2_5FlashOptions, Gemini2_5FlashSchema, type Gemini2_5FlashOptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_5ProPreview0325Literal = \"gemini-2.5-pro-preview-03-25\";\nconst Gemini2_5ProPreview0325Description =\n \"Google's preview model in Gemini 2.5 family for enhanced thinking, reasoning, multimodal understanding, and advanced coding.\";\n\nconst Gemini2_5ProPreview0325Schema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_5ProPreview0325Literal,\n description: Gemini2_5ProPreview0325Description,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).schema,\n },\n price: pricingData[Gemini2_5ProPreview0325Literal],\n});\n\nconst Gemini2_5ProPreview0325Options = BaseChatModelOptions;\ntype Gemini2_5ProPreview0325OptionsType = z.infer<typeof Gemini2_5ProPreview0325Options>;\n\nclass Gemini2_5ProPreview0325 extends BaseChatModel {\n constructor(options: Gemini2_5ProPreview0325OptionsType) {\n super(Gemini2_5ProPreview0325Schema, options);\n }\n}\n\nexport {\n Gemini2_5ProPreview0325,\n Gemini2_5ProPreview0325Literal,\n Gemini2_5ProPreview0325Options,\n Gemini2_5ProPreview0325Schema,\n type Gemini2_5ProPreview0325OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_5ProLiteral = \"gemini-2.5-pro\";\nconst Gemini2_5ProDescription =\n \"Google's Gemini 2.5 Pro model for enhanced thinking, reasoning, multimodal understanding, and advanced coding.\";\n\nconst Gemini2_5ProSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_5ProLiteral,\n description: Gemini2_5ProDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).schema,\n },\n price: pricingData[Gemini2_5ProLiteral],\n});\n\nconst Gemini2_5ProOptions = BaseChatModelOptions;\ntype Gemini2_5ProOptionsType = z.infer<typeof Gemini2_5ProOptions>;\n\nclass Gemini2_5Pro extends BaseChatModel {\n constructor(options: Gemini2_5ProOptionsType) {\n super(Gemini2_5ProSchema, options);\n }\n}\n\nexport {\n Gemini2_5Pro,\n Gemini2_5ProLiteral,\n Gemini2_5ProOptions,\n Gemini2_5ProSchema,\n type Gemini2_5ProOptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\n// Specs reference: https://ai.google.dev/models/gemini (retrieved 2025-12-19)\nconst Gemini3FlashPreviewLiteral = \"gemini-3-flash-preview\";\nconst Gemini3FlashPreviewDescription =\n \"Google's Gemini 3 Flash Preview model - a lightweight and efficient AI model with enhanced multimodal understanding, \\\n reasoning, and advanced coding capabilities. Optimized for speed and cost-effectiveness. \\\n Supports Text, Image, Video, Audio, and PDF inputs. Knowledge cutoff: January 2025.\";\n\nconst Gemini3FlashPreviewSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini3FlashPreviewLiteral,\n description: Gemini3FlashPreviewDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).schema,\n },\n price: pricingData[Gemini3FlashPreviewLiteral],\n});\n\nconst Gemini3FlashPreviewOptions = BaseChatModelOptions;\ntype Gemini3FlashPreviewOptionsType = z.infer<typeof Gemini3FlashPreviewOptions>;\n\nclass Gemini3FlashPreview extends BaseChatModel {\n constructor(options: Gemini3FlashPreviewOptionsType) {\n super(Gemini3FlashPreviewSchema, options);\n }\n}\n\nexport {\n Gemini3FlashPreview,\n Gemini3FlashPreviewLiteral,\n Gemini3FlashPreviewOptions,\n Gemini3FlashPreviewSchema,\n type Gemini3FlashPreviewOptionsType,\n};\n\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\n// Specs reference: https://ai.google.dev/models/gemini (retrieved 2025-11-18)\nconst Gemini3ProPreviewLiteral = \"gemini-3-pro-preview\";\nconst Gemini3ProPreviewDescription =\n \"Google's latest Gemini 3 Pro Preview model with enhanced multimodal understanding, reasoning, and thinking capabilities. \\\n Supports Text, Image, Video, Audio, and PDF inputs. Knowledge cutoff: January 2025.\";\n\nconst Gemini3ProPreviewSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini3ProPreviewLiteral,\n description: Gemini3ProPreviewDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).schema,\n },\n price: pricingData[Gemini3ProPreviewLiteral],\n});\n\nconst Gemini3ProPreviewOptions = BaseChatModelOptions;\ntype Gemini3ProPreviewOptionsType = z.infer<typeof Gemini3ProPreviewOptions>;\n\nclass Gemini3ProPreview extends BaseChatModel {\n constructor(options: Gemini3ProPreviewOptionsType) {\n super(Gemini3ProPreviewSchema, options);\n }\n}\n\nexport {\n Gemini3ProPreview,\n Gemini3ProPreviewLiteral,\n Gemini3ProPreviewOptions,\n Gemini3ProPreviewSchema,\n type Gemini3ProPreviewOptionsType,\n};\n\n\n\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchemaType } from \"@adaline/provider\";\nimport { EmbeddingTextModalityLiteral } from \"@adaline/types\";\n\nconst GoogleEmbeddingModelModalities: EmbeddingModelSchemaType[\"modalities\"] = [EmbeddingTextModalityLiteral];\n\nconst GoogleEmbeddingModelModalitiesEnum = z.enum([EmbeddingTextModalityLiteral]);\n\nexport { GoogleEmbeddingModelModalitiesEnum, GoogleEmbeddingModelModalities };\n","import { z } from \"zod\";\n\nconst GoogleGetEmbeddingsResponse = z.object({\n embeddings: z.array(\n z.object({\n values: z.array(z.number()),\n })\n ),\n});\ntype GoogleGetEmbeddingsResponseType = z.infer<typeof GoogleGetEmbeddingsResponse>;\n\nexport { GoogleGetEmbeddingsResponse, type GoogleGetEmbeddingsResponseType };\n","import { z } from \"zod\";\n\nconst GoogleEmbeddingRequestInput = z.object({\n model: z.string().min(1),\n content: z.object({\n parts: z\n .array(\n z.object({\n text: z.string().min(1),\n })\n )\n .min(1),\n }),\n});\ntype GoogleEmbeddingRequestInputType = z.infer<typeof GoogleEmbeddingRequestInput>;\n\nconst GoogleEmbeddingRequest = z.object({\n model: z.string().min(1).optional(),\n requests: z.array(GoogleEmbeddingRequestInput).min(1),\n outputDimensionality: z.number().int().min(1).optional(),\n});\ntype GoogleEmbeddingRequestType = z.infer<typeof GoogleEmbeddingRequest>;\n\nexport { GoogleEmbeddingRequest, GoogleEmbeddingRequestInput, type GoogleEmbeddingRequestType, type GoogleEmbeddingRequestInputType };\n","import { z } from \"zod\";\n\nimport {\n EmbeddingModelSchemaType,\n EmbeddingModelV1,\n HeadersType,\n InvalidConfigError,\n InvalidEmbeddingRequestsError,\n InvalidModelRequestError,\n ModelResponseError,\n ParamsType,\n removeUndefinedEntries,\n UrlType,\n urlWithoutTrailingSlash,\n} from \"@adaline/provider\";\nimport {\n Config,\n ConfigType,\n EmbeddingRequests,\n EmbeddingRequestsType,\n EmbeddingResponseType,\n EmbeddingTextModalityLiteral,\n FloatEmbeddingLiteral,\n FloatEmbeddingType,\n} from \"@adaline/types\";\n\nimport { Google } from \"../../provider/provider.google\";\nimport { GoogleEmbeddingRequest, GoogleEmbeddingRequestInputType, GoogleGetEmbeddingsResponse } from \"./types\";\n\nconst BaseEmbeddingModelOptions = z.object({\n modelName: z.string(),\n apiKey: z.string(),\n baseUrl: z.string().url().optional(),\n getEmbeddingsUrl: z.string().url().optional(),\n});\ntype BaseEmbeddingModelOptionsType = z.infer<typeof BaseEmbeddingModelOptions>;\n\nclass BaseEmbeddingModel implements EmbeddingModelV1<EmbeddingModelSchemaType> {\n readonly version = \"v1\" as const;\n modelSchema: EmbeddingModelSchemaType;\n readonly modelName: string;\n\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly getEmbeddingsUrl: string;\n\n constructor(modelSchema: EmbeddingModelSchemaType, options: BaseEmbeddingModelOptionsType) {\n const parsedOptions = BaseEmbeddingModelOptions.parse(options);\n this.modelSchema = modelSchema;\n this.modelName = parsedOptions.modelName;\n this.apiKey = parsedOptions.apiKey;\n this.baseUrl = urlWithoutTrailingSlash(parsedOptions.baseUrl || Google.baseUrl);\n this.getEmbeddingsUrl = urlWithoutTrailingSlash(\n parsedOptions.getEmbeddingsUrl || `${this.baseUrl}/models/${this.modelName}:batchEmbedContents?key=${this.apiKey}`\n );\n }\n\n getDefaultBaseUrl(): UrlType {\n return this.baseUrl;\n }\n\n getDefaultHeaders(): HeadersType {\n return {\n \"Content-Type\": \"application/json\",\n };\n }\n\n getDefaultParams(): ParamsType {\n return {\n model: this.modelName,\n };\n }\n\n // Google returns retry delay information in the response body rather than headers.\n // The response body contains error.details with a RetryInfo object:\n // {\"@type\":\"type.googleapis.com/google.rpc.RetryInfo\",\"retryDelay\":\"45s\"}\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(_responseHeaders: HeadersType, responseData: unknown): { shouldRetry: boolean; delayMs: number } {\n const shouldRetry = true;\n let delayMs = 0;\n\n // parse duration from retryDelay value of format \"45s\" or \"1.5s\" or \"45.499282066s\"\n const parseDuration = (duration: string): number => {\n const match = duration.match(/^(\\d+(?:\\.\\d+)?)s$/);\n if (match) {\n return Math.ceil(parseFloat(match[1]) * 1000);\n }\n return 0;\n };\n\n if (responseData && typeof responseData === \"object\") {\n const data = responseData as { error?: { details?: Array<{ \"@type\"?: string; retryDelay?: string }> } };\n if (data.error?.details && Array.isArray(data.error.details)) {\n const retryInfo = data.error.details.find(\n (detail) => detail[\"@type\"] === \"type.googleapis.com/google.rpc.RetryInfo\"\n );\n if (retryInfo?.retryDelay) {\n delayMs = parseDuration(retryInfo.retryDelay);\n }\n }\n }\n\n return { shouldRetry, delayMs };\n }\n\n // TODO: unused method, not tested\n getTokenCount(requests: EmbeddingRequestsType): number {\n return requests.requests.reduce((acc, request) => acc + request.length, 0);\n }\n\n transformModelRequest(request: any): {\n modelName: string | undefined;\n config: ConfigType;\n embeddingRequests: EmbeddingRequestsType;\n } {\n const safeRequest = GoogleEmbeddingRequest.safeParse(request);\n if (!safeRequest.success) {\n throw new InvalidModelRequestError({ info: \"Invalid model request\", cause: safeRequest.error });\n }\n\n const parsedRequest = safeRequest.data;\n\n const modelName = parsedRequest.model;\n\n const _config = {\n outputDimensionality: parsedRequest.outputDimensionality,\n };\n const config = Config().parse(removeUndefinedEntries(_config));\n\n const embeddingRequests: EmbeddingRequestsType = {\n modality: EmbeddingTextModalityLiteral,\n requests: parsedRequest.requests.reduce((acc, request) => {\n acc.push(...request.content.parts.map((p) => p.text));\n return acc;\n }, [] as string[]),\n };\n\n return {\n modelName,\n config,\n embeddingRequests,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n transformConfig(config: ConfigType, requests?: EmbeddingRequestsType): ParamsType {\n const _parsedConfig = this.modelSchema.config.schema.safeParse(config);\n if (!_parsedConfig.success) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: _parsedConfig.error,\n });\n }\n\n const parsedConfig = _parsedConfig.data as ConfigType;\n Object.keys(parsedConfig as ConfigType).forEach((key) => {\n if (!this.modelSchema.config.def[key]) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`Invalid config key : '${key}', \n available keys : [${Object.keys(this.modelSchema.config.def).join(\", \")}]`),\n });\n }\n });\n\n const transformedConfig = Object.keys(parsedConfig).reduce((acc, key) => {\n const def = this.modelSchema.config.def[key];\n const paramKey = def.param;\n const paramValue = parsedConfig[key];\n acc[paramKey] = paramValue;\n return acc;\n }, {} as ParamsType);\n\n return transformedConfig;\n }\n\n transformEmbeddingRequests(requests: EmbeddingRequestsType): ParamsType {\n const _parsedRequests = EmbeddingRequests().safeParse(requests);\n if (!_parsedRequests.success) {\n throw new InvalidEmbeddingRequestsError({ info: \"Invalid embedding requests\", cause: _parsedRequests.error });\n }\n\n if (requests.modality !== EmbeddingTextModalityLiteral) {\n throw new InvalidEmbeddingRequestsError({\n info: `Invalid embedding requests for model : '${this.modelName}'`,\n cause: new Error(`Only '${EmbeddingTextModalityLiteral}' modality is supported for model : '${this.modelName}'`),\n });\n }\n\n const _requests: GoogleEmbeddingRequestInputType[] = _parsedRequests.data.requests.map((request) => {\n return {\n model: `models/${this.modelName}`,\n content: { parts: [{ text: request as string }] },\n };\n });\n\n return {\n requests: _requests,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getGetEmbeddingsUrl(config?: ConfigType, requests?: EmbeddingRequestsType): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.getEmbeddingsUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getGetEmbeddingsHeaders(config?: ConfigType, requests?: EmbeddingRequestsType): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getGetEmbeddingsData(config: ConfigType, requests: EmbeddingRequestsType): Promise<ParamsType> {\n return new Promise((resolve) => {\n const _config = this.transformConfig(config);\n const _requests = this.transformEmbeddingRequests(requests);\n\n if (requests.requests.length === 0) {\n throw new InvalidEmbeddingRequestsError({\n info: `Invalid embedding requests for model : '${this.modelName}'`,\n cause: new Error(\"requests cannot be empty\"),\n });\n }\n\n if (_config.outputDimensionality) {\n (_requests as any).requests.forEach((request: any) => {\n request.outputDimensionality = _config.outputDimensionality;\n });\n delete _config.outputDimensionality;\n }\n\n resolve({\n ...this.getDefaultParams(),\n ..._config,\n ..._requests,\n });\n });\n }\n\n transformGetEmbeddingsResponse(response: any): EmbeddingResponseType {\n const safe = GoogleGetEmbeddingsResponse.safeParse(response);\n if (safe.success) {\n const parsedResponse = safe.data;\n const embeddings = parsedResponse.embeddings.map((embedding, index) => {\n return {\n index,\n embedding: embedding.values,\n } as FloatEmbeddingType;\n });\n\n return {\n encodingFormat: FloatEmbeddingLiteral,\n embeddings: embeddings,\n } as EmbeddingResponseType;\n }\n\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n}\n\nexport { BaseEmbeddingModel, BaseEmbeddingModelOptions, type BaseEmbeddingModelOptionsType };\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { GoogleEmbeddingModelConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.google\";\nimport { GoogleEmbeddingModelModalities, GoogleEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst Text_Embedding_001Literal = \"text-embedding-001\";\nconst Text_Embedding_001_Description = \"text-embedding-001\";\n\nconst Text_Embedding_001Schema = EmbeddingModelSchema(GoogleEmbeddingModelModalitiesEnum).parse({\n name: Text_Embedding_001Literal,\n description: Text_Embedding_001_Description,\n modalities: GoogleEmbeddingModelModalities,\n maxInputTokens: 2048,\n maxOutputTokens: 768,\n config: {\n def: GoogleEmbeddingModelConfigs.base(768).def,\n schema: GoogleEmbeddingModelConfigs.base(768).schema,\n },\n});\n\nconst Text_Embedding_001Options = BaseEmbeddingModelOptions;\ntype Text_Embedding_001OptionsType = z.infer<typeof Text_Embedding_001Options>;\n\nclass Text_Embedding_001 extends BaseEmbeddingModel {\n constructor(options: Text_Embedding_001OptionsType) {\n super(Text_Embedding_001Schema, options);\n }\n}\n\nexport {\n Text_Embedding_001,\n Text_Embedding_001Options,\n Text_Embedding_001Schema,\n Text_Embedding_001Literal,\n type Text_Embedding_001OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { GoogleEmbeddingModelConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.google\";\nimport { GoogleEmbeddingModelModalities, GoogleEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst Text_Embedding_004Literal = \"text-embedding-004\";\nconst Text_Embedding_004_Description = \"text-embedding-004\";\n\nconst Text_Embedding_004Schema = EmbeddingModelSchema(GoogleEmbeddingModelModalitiesEnum).parse({\n name: Text_Embedding_004Literal,\n description: Text_Embedding_004_Description,\n modalities: GoogleEmbeddingModelModalities,\n maxInputTokens: 2048,\n maxOutputTokens: 768,\n config: {\n def: GoogleEmbeddingModelConfigs.base(768).def,\n schema: GoogleEmbeddingModelConfigs.base(768).schema,\n },\n});\n\nconst Text_Embedding_004Options = BaseEmbeddingModelOptions;\ntype Text_Embedding_004OptionsType = z.infer<typeof Text_Embedding_004Options>;\n\nclass Text_Embedding_004 extends BaseEmbeddingModel {\n constructor(options: Text_Embedding_004OptionsType) {\n super(Text_Embedding_004Schema, options);\n }\n}\n\nexport {\n Text_Embedding_004,\n Text_Embedding_004Options,\n Text_Embedding_004Schema,\n Text_Embedding_004Literal,\n type Text_Embedding_004OptionsType,\n};\n"]}
1
+ {"version":3,"sources":["../src/configs/chat-model/base.config.chat-model.google.ts","../src/configs/chat-model/common.config.chat-model.google.ts","../src/configs/chat-model/response-schema.config.chat-model.google.ts","../src/configs/chat-model/reasoning.config.chat-model.google.ts","../src/configs/embedding-model/base.config.embedding-model.google.ts","../src/configs/embedding-model/common.config.embedding-model.google.ts","../src/configs/configs.google.ts","../src/provider/provider.google.ts","../src/models/pricing.json","../src/models/chat-models/types/roles.chat-model.google.ts","../src/models/chat-models/types/modalities.chat-model.google.ts","../src/models/chat-models/types/response.chat-model.google.ts","../src/models/chat-models/types/request.chat-model.google.ts","../src/models/chat-models/base-chat-model.google.ts","../src/models/chat-models/gemini-1.5-flash-001.google.ts","../src/models/chat-models/gemini-1.5-flash-002.google.ts","../src/models/chat-models/gemini-1.5-flash-latest.google.ts","../src/models/chat-models/gemini-1.5-flash.google.ts","../src/models/chat-models/gemini-1.5-pro-001.google.ts","../src/models/chat-models/gemini-1.5-pro-002.google.ts","../src/models/chat-models/gemini-1.5-pro-latest.google.ts","../src/models/chat-models/gemini-1.5-pro.google.ts","../src/models/chat-models/gemini-2.0-flash-exp.google.ts","../src/models/chat-models/gemini-2.0-flash.google.ts","../src/models/chat-models/gemini-2.0-flash-lite.google.ts","../src/models/chat-models/gemini-2.5-flash-lite.google.ts","../src/models/chat-models/gemini-2.5-flash-lite-preview-09-2025.google.ts","../src/models/chat-models/gemini-2.5-flash-preview-04-17.google.ts","../src/models/chat-models/gemini-2.5-flash.google.ts","../src/models/chat-models/gemini-2.5-pro-preview-03-25.google.ts","../src/models/chat-models/gemini-2.5-pro.google.ts","../src/models/chat-models/gemini-3.1-pro-preview-customtools.google.ts","../src/models/chat-models/gemini-3.1-pro-preview.google.ts","../src/models/chat-models/gemini-3-flash-preview.google.ts","../src/models/chat-models/gemini-3-pro-preview.google.ts","../src/models/embedding-models/types/modalitites.embedding-model.google.ts","../src/models/embedding-models/types/response.embedding-model.google.ts","../src/models/embedding-models/types/request.embedding-model.google.ts","../src/models/embedding-models/base-embedding-model.google.ts","../src/models/embedding-models/text-embedding-001.google.ts","../src/models/embedding-models/text-embedding-004.google.ts"],"names":["GOOGLE_SAFETY_CATEGORIES","GOOGLE_SAFETY_THRESHOLDS","formatSafetyLabel","value","prefix","letter","GOOGLE_SAFETY_CATEGORY_OPTIONS","category","GOOGLE_SAFETY_THRESHOLD_OPTIONS","threshold","temperature","max","_default","RangeConfigItem","CHAT_CONFIG","maxTokens","maxOutputTokens","stop","maxSequences","MultiStringConfigItem","topP","topK","frequencyPenalty","presencePenalty","seed","toolChoice","SelectStringConfigItem","safetySettings","PairedSelectConfigItem","reasoningEnabled","SelectBooleanConfigItem","maxReasoningTokens","minReasoningToken","maxReasoningToken","reasoningEffort","googleSearchTool","ChatModelBaseConfigSchema","maxTemperature","defaultTemperature","defaultTopP","z","ChatModelBaseConfigDef","responseSchema","ObjectSchemaConfigItem","ResponseSchema","responseFormat","GoogleChatModelResponseSchemaConfigDef","__spreadProps","__spreadValues","GoogleChatModelResponseSchemaConfigSchema","ChatModelReasoningConfigSchema","ChatModelReasoningConfigDef","dimensions","maxDimensions","EMBEDDING_CONFIG","EmbeddingModelBaseConfigSchema","EmbeddingModelBaseConfigDef","GoogleChatModelConfigs","GoogleEmbeddingModelConfigs","ProviderLiteral","Google","Gemini1_5Flash001Literal","Gemini1_5Flash001","Gemini1_5Flash001Options","Gemini1_5Flash001Schema","Gemini1_5Flash002Literal","Gemini1_5Flash002","Gemini1_5Flash002Options","Gemini1_5Flash002Schema","Gemini1_5FlashLatestLiteral","Gemini1_5FlashLatest","Gemini1_5FlashLatestOptions","Gemini1_5FlashLatestSchema","Gemini1_5FlashLiteral","Gemini1_5Flash","Gemini1_5FlashOptions","Gemini1_5FlashSchema","Gemini1_5Pro001Literal","Gemini1_5Pro001","Gemini1_5Pro001Options","Gemini1_5Pro001Schema","Gemini1_5Pro002Literal","Gemini1_5Pro002","Gemini1_5Pro002Options","Gemini1_5Pro002Schema","Gemini1_5ProLatestLiteral","Gemini1_5ProLatest","Gemini1_5ProLatestOptions","Gemini1_5ProLatestSchema","Gemini1_5ProLiteral","Gemini1_5Pro","Gemini1_5ProOptions","Gemini1_5ProSchema","Gemini2_0FlashLiteral","Gemini2_0Flash","Gemini2_0FlashOptions","Gemini2_0FlashSchema","Gemini2_0FlashLiteLiteral","Gemini2_0FlashLite","Gemini2_0FlashLiteOptions","Gemini2_0FlashLiteSchema","Gemini2_5FlashPreview0417Literal","Gemini2_5FlashPreview0417","Gemini2_5FlashPreview0417Options","Gemini2_5FlashPreview0417Schema","Gemini2_5ProPreview0325Literal","Gemini2_5ProPreview0325","Gemini2_5ProPreview0325Options","Gemini2_5ProPreview0325Schema","Gemini2_5FlashLiteral","Gemini2_5Flash","Gemini2_5FlashOptions","Gemini2_5FlashSchema","Gemini2_5ProLiteral","Gemini2_5Pro","Gemini2_5ProOptions","Gemini2_5ProSchema","Gemini3FlashPreviewLiteral","Gemini3FlashPreview","Gemini3FlashPreviewOptions","Gemini3FlashPreviewSchema","Gemini3_1ProPreviewLiteral","Gemini3_1ProPreview","Gemini3_1ProPreviewOptions","Gemini3_1ProPreviewSchema","Gemini3_1ProPreviewCustomtoolsLiteral","Gemini3_1ProPreviewCustomtools","Gemini3_1ProPreviewCustomtoolsOptions","Gemini3_1ProPreviewCustomtoolsSchema","Gemini3ProPreviewLiteral","Gemini3ProPreview","Gemini3ProPreviewOptions","Gemini3ProPreviewSchema","Gemini2_5FlashLiteLiteral","Gemini2_5FlashLite","Gemini2_5FlashLiteOptions","Gemini2_5FlashLiteSchema","Gemini2_5FlashLitePreview092025Literal","Gemini2_5FlashLitePreview092025","Gemini2_5FlashLitePreview092025Options","Gemini2_5FlashLitePreview092025Schema","Text_Embedding_001Literal","Text_Embedding_001","Text_Embedding_001Options","Text_Embedding_001Schema","Text_Embedding_004Literal","Text_Embedding_004","Text_Embedding_004Options","Text_Embedding_004Schema","acc","key","options","modelName","ProviderError","model","parsedOptions","pricing_default","GoogleChatModelRoles","SystemRoleLiteral","UserRoleLiteral","AssistantRoleLiteral","ToolRoleLiteral","GoogleChatAssistantRoleLiteral","GoogleChatToolRoleLiteral","GoogleChatModelRolesMap","GoogleChatModelModalities","TextModalityLiteral","ImageModalityLiteral","PdfModalityLiteral","ToolCallModalityLiteral","ToolResponseModalityLiteral","ReasoningModalityLiteral","SearchResultModalityLiteral","ErrorModalityLiteral","GoogleChatModelModalitiesEnum","GoogleChatModelTextModalities","GoogleChatModelTextModalitiesEnum","GoogleChatModelTextVisionModalities","GoogleChatModelTextVisionModalitiesEnum","GoogleChatModelTextToolModalities","GoogleChatModelTextToolModalitiesEnum","GoogleSearchEntryPoint","GoogleGroundingChunkWeb","GoogleGroundingChunk","GoogleSegment","GoogleGroundingSupport","GoogleGroundingMetadata","GoogleCompleteChatTextResponse","GoogleCompleteChatToolResponse","GoogleCompleteChatResponse","GoogleStreamChatTextResponse","GoogleStreamChatToolResponse","GoogleStreamChatResponse","GoogleChatContentPartText","GoogleChatContentPartInlineData","GoogleChatContentPartFileData","GoogleChatContentPartFunctionCall","GoogleChatContentPartFunctionResponse","GoogleChatContentPartThinking","GoogleChatContent","GoogleChatSystemInstruction","GoogleChatTool","GoogleChatGoogleSearchTool","GoogleChatToolConfig","GoogleChatThinkingConfig","GoogleChatGenerationConfig","GoogleChatSafetySettings","GoogleChatRequest","BaseChatModelOptions","BaseChatModel","modelSchema","_a","urlWithoutTrailingSlash","_responseHeaders","responseData","delayMs","parseDuration","duration","match","data","retryInfo","detail","messages","message","content","__async","downloadPdf","url","headers","isRunningInBrowser","response","InvalidMessagesError","arrayBuffer","existsInGoogleFiles","fileId","existingFile","file","error","uploadPdfToGoogleFiles","pdfBuffer","uploadResponse","uploadUrl","uploadHeaders","fileUploadResponse","getGoogleFilesUrl","existingFileUri","base64Data","pdfBase64Prefix","convertBase64ToUint8Array","processedMessages","processedContent","fileUri","request","safeRequest","InvalidModelRequestError","parsedRequest","systemInstruction","generationConfig","toolConfig","_config","config","Config","removeUndefinedEntries","part","role","_content","c","Base64ImageContentTypeLiteral","index","tools","tool","_toolChoice","_parsedConfig","InvalidConfigError","parsedConfig","transformedConfig","def","paramKey","paramValue","configToolChoice","responseSchemaConfig","stripBase64Prefix","prefixMatch","parsedMessages","parsedMessage","Message","normalizedMessages","lastMessage","nonSystemMessages","assistantContent","userContent","toolResponseContent","getNextExpectedRoles","obj","item","result","InvalidToolsError","transformedTools","parsedTool","Tool","resolve","transformedMessages","_b","_c","_d","_e","_f","safe","ModelResponseError","completeChatResponse","parsedResponse","candidate","contentItem","createReasoningContent","createTextContent","createToolCallContent","createSearchResultGoogleContent","chunk","support","safetyRatings","rating","createSafetyErrorContent","buffer","__asyncGenerator","lines","line","completeLine","structuredLine","partialResponse","messagePart","createPartialReasoningMessage","createPartialTextMessage","toolCall","createPartialToolCallMessage","createPartialSearchResultGoogleMessage","createPartialSafetyErrorMessage","query","__yieldStar","newData","newBuffer","currentIndex","newlineIndex","jsonStr","sanitizedHeaders","Gemini1_5Flash001Description","ChatModelSchema","Gemini1_5Flash002Description","Gemini1_5FlashLatestDescription","Gemini1_5FlashDescription","Gemini1_5Pro001Description","Gemini1_5Pro002Description","Gemini1_5ProLatestDescription","Gemini1_5ProDescription","Gemini2_0FlashExpLiteral","Gemini2_0FlashExpDescription","Gemini2_0FlashExpSchema","Gemini2_0FlashExpOptions","Gemini2_0FlashExp","Gemini2_0FlashDescription","Gemini2_0FlashLiteDescription","Gemini2_5FlashLiteDescription","Gemini2_5FlashLitePreview092025Description","Gemini2_5FlashPreview0417Description","Gemini2_5FlashDescription","Gemini2_5ProPreview0325Description","Gemini2_5ProDescription","Gemini3_1ProPreviewCustomtoolsDescription","Gemini3_1ProPreviewDescription","Gemini3FlashPreviewDescription","Gemini3ProPreviewDescription","GoogleEmbeddingModelModalities","EmbeddingTextModalityLiteral","GoogleEmbeddingModelModalitiesEnum","GoogleGetEmbeddingsResponse","GoogleEmbeddingRequestInput","GoogleEmbeddingRequest","BaseEmbeddingModelOptions","BaseEmbeddingModel","requests","embeddingRequests","p","_parsedRequests","EmbeddingRequests","InvalidEmbeddingRequestsError","_requests","embeddings","embedding","FloatEmbeddingLiteral","Text_Embedding_001_Description","EmbeddingModelSchema","Text_Embedding_004_Description"],"mappings":"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","file":"index.mjs","sourcesContent":["import { z } from \"zod\";\n\nimport { googleSearchTool, maxTokens, safetySettings, stop, temperature, toolChoice, topP } from \"./common.config.chat-model.google\";\n\nconst ChatModelBaseConfigSchema = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number\n) =>\n z.object({\n temperature: temperature(maxTemperature, defaultTemperature).schema,\n maxTokens: maxTokens(maxOutputTokens).schema,\n stop: stop(maxSequences).schema,\n topP: topP(defaultTopP).schema,\n toolChoice: toolChoice.schema,\n safetySettings: safetySettings.schema,\n googleSearchTool: googleSearchTool.schema,\n });\n\nconst ChatModelBaseConfigDef = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number\n) =>\n ({\n temperature: temperature(maxTemperature, defaultTemperature).def,\n maxTokens: maxTokens(maxOutputTokens).def,\n stop: stop(maxSequences).def,\n topP: topP(defaultTopP).def,\n toolChoice: toolChoice.def,\n safetySettings: safetySettings.def,\n googleSearchTool: googleSearchTool.def,\n }) as const;\n\nexport { ChatModelBaseConfigDef, ChatModelBaseConfigSchema };\n","import {\n CHAT_CONFIG,\n MultiStringConfigItem,\n PairedSelectConfigItem,\n RangeConfigItem,\n SelectBooleanConfigItem,\n SelectStringConfigItem,\n} from \"@adaline/provider\";\n\nconst GOOGLE_SAFETY_CATEGORIES = [\n \"HARM_CATEGORY_HARASSMENT\",\n \"HARM_CATEGORY_HATE_SPEECH\",\n \"HARM_CATEGORY_SEXUALLY_EXPLICIT\",\n \"HARM_CATEGORY_DANGEROUS_CONTENT\",\n \"HARM_CATEGORY_CIVIC_INTEGRITY\",\n] as const;\n\nconst GOOGLE_SAFETY_THRESHOLDS = [\n \"HARM_BLOCK_THRESHOLD_UNSPECIFIED\",\n \"BLOCK_LOW_AND_ABOVE\",\n \"BLOCK_MEDIUM_AND_ABOVE\",\n \"BLOCK_ONLY_HIGH\",\n \"BLOCK_NONE\",\n \"OFF\",\n] as const;\n\nconst formatSafetyLabel = (value: string, prefix: string) =>\n value\n .replace(prefix, \"\")\n .replace(/_/g, \" \")\n .toLowerCase()\n .replace(/\\b\\w/g, (letter: string) => letter.toUpperCase());\n\nconst GOOGLE_SAFETY_CATEGORY_OPTIONS = GOOGLE_SAFETY_CATEGORIES.map((category) => ({\n value: category,\n label: formatSafetyLabel(category, \"HARM_CATEGORY_\"),\n}));\n\nconst GOOGLE_SAFETY_THRESHOLD_OPTIONS = GOOGLE_SAFETY_THRESHOLDS.map((threshold) => ({\n value: threshold,\n label: formatSafetyLabel(threshold, \"HARM_BLOCK_THRESHOLD_\"),\n}));\n\nconst temperature = (max: number, _default: number) =>\n RangeConfigItem({\n param: \"temperature\",\n title: CHAT_CONFIG.TEMPERATURE.title,\n description: CHAT_CONFIG.TEMPERATURE.description,\n min: 0.0,\n max: max,\n step: 0.01,\n default: _default,\n });\n\nconst maxTokens = (maxOutputTokens: number) =>\n RangeConfigItem({\n param: \"maxOutputTokens\",\n title: CHAT_CONFIG.MAX_TOKENS.title,\n description: CHAT_CONFIG.MAX_TOKENS.description,\n min: 0,\n max: maxOutputTokens,\n step: 1,\n default: 0,\n });\n\nconst stop = (maxSequences: number) =>\n MultiStringConfigItem({\n param: \"stopSequences\",\n title: CHAT_CONFIG.STOP(maxSequences).title,\n description: CHAT_CONFIG.STOP(maxSequences).description,\n max: maxSequences,\n });\n\nconst topP = (_default: number) =>\n RangeConfigItem({\n param: \"topP\",\n title: CHAT_CONFIG.TOP_P.title,\n description: CHAT_CONFIG.TOP_P.description,\n min: 0,\n max: 1,\n step: 0.01,\n default: _default,\n });\n\nconst topK = (_default: number) =>\n RangeConfigItem({\n param: \"topK\",\n title: CHAT_CONFIG.TOP_K.title,\n description: CHAT_CONFIG.TOP_K.description,\n min: 1,\n max: 40,\n step: 1,\n default: _default,\n });\n\nconst frequencyPenalty = RangeConfigItem({\n param: \"frequencyPenalty\",\n title: CHAT_CONFIG.FREQUENCY_PENALTY.title,\n description: CHAT_CONFIG.FREQUENCY_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst presencePenalty = RangeConfigItem({\n param: \"presencePenalty\",\n title: CHAT_CONFIG.PRESENCE_PENALTY.title,\n description: CHAT_CONFIG.PRESENCE_PENALTY.description,\n min: -2,\n max: 2,\n step: 0.01,\n default: 0,\n});\n\nconst seed = RangeConfigItem({\n param: \"seed\",\n title: CHAT_CONFIG.SEED.title,\n description: CHAT_CONFIG.SEED.description,\n min: 0,\n max: 1000000,\n step: 1,\n default: 0,\n});\n\nconst toolChoice = SelectStringConfigItem({\n param: \"toolChoice\",\n title: \"Tool choice\",\n description:\n \"Controls which (if any) tool is called by the model. 'none' means the model will not call a function. 'auto' means the model can pick between generating a message or calling a tool.\",\n default: \"auto\",\n choices: [\"auto\", \"any\", \"none\"],\n});\n\nconst safetySettings = PairedSelectConfigItem({\n param: \"safetySettings\",\n title: \"Safety settings\",\n description: \"The safety rating contains the category of harm and the harm probability level in that category for a piece of content.\",\n fields: [\n {\n key: \"category\",\n label: \"Category\",\n choices: GOOGLE_SAFETY_CATEGORY_OPTIONS,\n },\n {\n key: \"threshold\",\n label: \"Threshold\",\n choices: GOOGLE_SAFETY_THRESHOLD_OPTIONS,\n },\n ],\n uniqueByField: \"category\",\n});\n\nconst reasoningEnabled = SelectBooleanConfigItem({\n param: \"reasoningEnabled\",\n title: \"Reasoning Enabled\",\n description:\n \"Controls whether the model is allowed to think for a longer period of time before generating a response. This can be useful for complex tasks that require more time to think.\",\n default: false,\n});\n\nconst maxReasoningTokens = (minReasoningToken: number, maxReasoningToken: number) =>\n RangeConfigItem({\n param: \"thinkingBudget\",\n title: \"Thinking budget\",\n description: \"Specify the total tokens for thinking (or reasoning), where one token approximates four English characters.\",\n min: minReasoningToken,\n max: maxReasoningToken,\n step: 1,\n default: 0,\n });\n\nconst reasoningEffort = SelectStringConfigItem({\n param: \"thinkingLevel\",\n title: \"Thinking Level\",\n description:\n \"Controls the depth of the model's reasoning process. Higher levels may result in more thorough reasoning but use more tokens.\",\n default: \"LOW\",\n choices: [\"LOW\", \"HIGH\"],\n});\n\nconst googleSearchTool = SelectBooleanConfigItem({\n param: \"googleSearch\",\n title: \"Google Search Tool\",\n description: \"Controls whether the model is allowed to use the Google Search tool. Powered by Google.\",\n default: false,\n});\n\nexport {\n GOOGLE_SAFETY_CATEGORIES,\n GOOGLE_SAFETY_CATEGORY_OPTIONS,\n GOOGLE_SAFETY_THRESHOLDS,\n GOOGLE_SAFETY_THRESHOLD_OPTIONS,\n frequencyPenalty,\n googleSearchTool,\n maxReasoningTokens,\n maxTokens,\n presencePenalty,\n reasoningEnabled,\n safetySettings,\n seed,\n stop,\n temperature,\n reasoningEffort,\n toolChoice,\n topK,\n topP,\n};\n","import { CHAT_CONFIG, ObjectSchemaConfigItem, SelectStringConfigItem } from \"@adaline/provider\";\nimport { ResponseSchema } from \"@adaline/types\";\n\nimport { ChatModelBaseConfigDef, ChatModelBaseConfigSchema } from \"./base.config.chat-model.google\";\n\nconst responseSchema = ObjectSchemaConfigItem({\n param: \"response_schema\",\n title: CHAT_CONFIG.RESPONSE_SCHEMA.title,\n description: CHAT_CONFIG.RESPONSE_SCHEMA.description,\n objectSchema: ResponseSchema,\n});\n\nconst responseFormat = SelectStringConfigItem({\n param: \"response_format\",\n title: CHAT_CONFIG.RESPONSE_FORMAT_WITH_SCHEMA.title,\n description: CHAT_CONFIG.RESPONSE_FORMAT_WITH_SCHEMA.description,\n default: \"text\",\n choices: [\"text\", \"json_schema\"],\n});\n\nconst GoogleChatModelResponseSchemaConfigDef = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number\n) => ({\n ...ChatModelBaseConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n responseFormat: responseFormat.def,\n responseSchema: responseSchema.def,\n});\n\nconst GoogleChatModelResponseSchemaConfigSchema = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number\n) =>\n ChatModelBaseConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP).extend({\n responseFormat: responseFormat.schema,\n responseSchema: responseSchema.schema,\n });\n\nexport { GoogleChatModelResponseSchemaConfigDef, GoogleChatModelResponseSchemaConfigSchema };\n","import { maxReasoningTokens, reasoningEnabled, reasoningEffort } from \"./common.config.chat-model.google\";\n\nimport {\n GoogleChatModelResponseSchemaConfigDef,\n GoogleChatModelResponseSchemaConfigSchema,\n} from \"./response-schema.config.chat-model.google\";\n\nconst ChatModelReasoningConfigSchema = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number,\n minReasoningToken: number,\n maxReasoningToken: number,\n) =>\n GoogleChatModelResponseSchemaConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP).extend({\n reasoningEnabled: reasoningEnabled.schema,\n maxReasoningTokens: maxReasoningTokens(minReasoningToken, maxReasoningToken).schema,\n reasoningEffort: reasoningEffort.schema,\n });\n\nconst ChatModelReasoningConfigDef = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number,\n minReasoningToken: number,\n maxReasoningToken: number,\n) =>\n ({\n ...GoogleChatModelResponseSchemaConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n reasoningEnabled: reasoningEnabled.def,\n maxReasoningTokens: maxReasoningTokens(minReasoningToken, maxReasoningToken).def,\n reasoningEffort: reasoningEffort.def,\n });\n\nexport { ChatModelReasoningConfigDef, ChatModelReasoningConfigSchema };","import { z } from \"zod\";\n\nimport { dimensions } from \"./common.config.embedding-model.google\";\n\nconst EmbeddingModelBaseConfigSchema = (maxDimensions: number) =>\n z.object({\n dimensions: dimensions(maxDimensions).schema,\n });\n\nconst EmbeddingModelBaseConfigDef = (maxDimensions: number) =>\n ({\n dimensions: dimensions(maxDimensions).def,\n }) as const;\n\nexport { EmbeddingModelBaseConfigDef, EmbeddingModelBaseConfigSchema };\n","import { EMBEDDING_CONFIG, RangeConfigItem } from \"@adaline/provider\";\n\nconst dimensions = (maxDimensions: number) =>\n RangeConfigItem({\n param: \"outputDimensionality\",\n title: EMBEDDING_CONFIG.DIMENSIONS.title,\n description: EMBEDDING_CONFIG.DIMENSIONS.description,\n min: 1,\n max: maxDimensions,\n step: 1,\n default: maxDimensions,\n });\n\nexport { dimensions };\n","import {\n ChatModelBaseConfigDef,\n ChatModelBaseConfigSchema,\n ChatModelReasoningConfigDef,\n ChatModelReasoningConfigSchema,\n GoogleChatModelResponseSchemaConfigDef,\n GoogleChatModelResponseSchemaConfigSchema,\n} from \"./chat-model\";\nimport { EmbeddingModelBaseConfigDef, EmbeddingModelBaseConfigSchema } from \"./embedding-model\";\n\nconst GoogleChatModelConfigs = {\n base: (maxTemperature: number, defaultTemperature: number, maxOutputTokens: number, maxSequences: number, defaultTopP: number) => ({\n def: ChatModelBaseConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n schema: ChatModelBaseConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n }),\n responseSchema: (maxTemperature: number, defaultTemperature: number, maxOutputTokens: number, maxSequences: number, defaultTopP: number) => ({\n def: GoogleChatModelResponseSchemaConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n schema: GoogleChatModelResponseSchemaConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n }),\n reasoning: (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number,\n minReasoningToken: number,\n maxReasoningToken: number,\n ) => ({\n def: ChatModelReasoningConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP, minReasoningToken, maxReasoningToken),\n schema: ChatModelReasoningConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP, minReasoningToken, maxReasoningToken),\n }),\n} as const;\n\nconst GoogleEmbeddingModelConfigs = {\n base: (maxDimensions: number) => ({\n def: EmbeddingModelBaseConfigDef(maxDimensions),\n schema: EmbeddingModelBaseConfigSchema(maxDimensions),\n }),\n} as const;\n\nexport { GoogleChatModelConfigs, GoogleEmbeddingModelConfigs };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType, ChatModelV1, EmbeddingModelSchemaType, EmbeddingModelV1, ProviderError, ProviderV1 } from \"@adaline/provider\";\n\nimport * as Models from \"../models\";\n\nconst ProviderLiteral = \"google\";\nclass Google<C extends Models.BaseChatModelOptionsType, E extends Models.BaseEmbeddingModelOptionsType> implements ProviderV1<C, E> {\n readonly version = \"v1\" as const;\n readonly name = ProviderLiteral;\n static readonly baseUrl: string = \"https://generativelanguage.googleapis.com/v1beta\";\n\n private readonly chatModelFactories: Record<\n string,\n {\n model: { new (options: any): ChatModelV1 };\n modelOptions: z.ZodType<any>;\n modelSchema: ChatModelSchemaType;\n }\n > = {\n [Models.Gemini1_5Flash001Literal]: {\n model: Models.Gemini1_5Flash001,\n modelOptions: Models.Gemini1_5Flash001Options,\n modelSchema: Models.Gemini1_5Flash001Schema,\n },\n [Models.Gemini1_5Flash002Literal]: {\n model: Models.Gemini1_5Flash002,\n modelOptions: Models.Gemini1_5Flash002Options,\n modelSchema: Models.Gemini1_5Flash002Schema,\n },\n [Models.Gemini1_5FlashLatestLiteral]: {\n model: Models.Gemini1_5FlashLatest,\n modelOptions: Models.Gemini1_5FlashLatestOptions,\n modelSchema: Models.Gemini1_5FlashLatestSchema,\n },\n [Models.Gemini1_5FlashLiteral]: {\n model: Models.Gemini1_5Flash,\n modelOptions: Models.Gemini1_5FlashOptions,\n modelSchema: Models.Gemini1_5FlashSchema,\n },\n [Models.Gemini1_5Pro001Literal]: {\n model: Models.Gemini1_5Pro001,\n modelOptions: Models.Gemini1_5Pro001Options,\n modelSchema: Models.Gemini1_5Pro001Schema,\n },\n [Models.Gemini1_5Pro002Literal]: {\n model: Models.Gemini1_5Pro002,\n modelOptions: Models.Gemini1_5Pro002Options,\n modelSchema: Models.Gemini1_5Pro002Schema,\n },\n [Models.Gemini1_5ProLatestLiteral]: {\n model: Models.Gemini1_5ProLatest,\n modelOptions: Models.Gemini1_5ProLatestOptions,\n modelSchema: Models.Gemini1_5ProLatestSchema,\n },\n [Models.Gemini1_5ProLiteral]: {\n model: Models.Gemini1_5Pro,\n modelOptions: Models.Gemini1_5ProOptions,\n modelSchema: Models.Gemini1_5ProSchema,\n },\n // gemini-2.0-flash-exp is deprecated \n // Removed from available models to prevent it from being used as a default\n // [Models.Gemini2_0FlashExpLiteral]: {\n // model: Models.Gemini2_0FlashExp,\n // modelOptions: Models.Gemini2_0FlashExpOptions,\n // modelSchema: Models.Gemini2_0FlashExpSchema,\n // },\n [Models.Gemini2_0FlashLiteral]: {\n model: Models.Gemini2_0Flash,\n modelOptions: Models.Gemini2_0FlashOptions,\n modelSchema: Models.Gemini2_0FlashSchema,\n },\n [Models.Gemini2_0FlashLiteLiteral]: {\n model: Models.Gemini2_0FlashLite,\n modelOptions: Models.Gemini2_0FlashLiteOptions,\n modelSchema: Models.Gemini2_0FlashLiteSchema,\n },\n\n [Models.Gemini2_5FlashPreview0417Literal]: {\n model: Models.Gemini2_5FlashPreview0417,\n modelOptions: Models.Gemini2_5FlashPreview0417Options,\n modelSchema: Models.Gemini2_5FlashPreview0417Schema,\n },\n [Models.Gemini2_5ProPreview0325Literal]: {\n model: Models.Gemini2_5ProPreview0325,\n modelOptions: Models.Gemini2_5ProPreview0325Options,\n modelSchema: Models.Gemini2_5ProPreview0325Schema,\n },\n [Models.Gemini2_5FlashLiteral]: {\n model: Models.Gemini2_5Flash,\n modelOptions: Models.Gemini2_5FlashOptions,\n modelSchema: Models.Gemini2_5FlashSchema,\n },\n [Models.Gemini2_5ProLiteral]: {\n model: Models.Gemini2_5Pro,\n modelOptions: Models.Gemini2_5ProOptions,\n modelSchema: Models.Gemini2_5ProSchema,\n },\n [Models.Gemini3FlashPreviewLiteral]: {\n model: Models.Gemini3FlashPreview,\n modelOptions: Models.Gemini3FlashPreviewOptions,\n modelSchema: Models.Gemini3FlashPreviewSchema,\n },\n [Models.Gemini3_1ProPreviewLiteral]: {\n model: Models.Gemini3_1ProPreview,\n modelOptions: Models.Gemini3_1ProPreviewOptions,\n modelSchema: Models.Gemini3_1ProPreviewSchema,\n },\n [Models.Gemini3_1ProPreviewCustomtoolsLiteral]: {\n model: Models.Gemini3_1ProPreviewCustomtools,\n modelOptions: Models.Gemini3_1ProPreviewCustomtoolsOptions,\n modelSchema: Models.Gemini3_1ProPreviewCustomtoolsSchema,\n },\n [Models.Gemini3ProPreviewLiteral]: {\n model: Models.Gemini3ProPreview,\n modelOptions: Models.Gemini3ProPreviewOptions,\n modelSchema: Models.Gemini3ProPreviewSchema,\n },\n [Models.Gemini2_5FlashLiteLiteral]: {\n model: Models.Gemini2_5FlashLite,\n modelOptions: Models.Gemini2_5FlashLiteOptions,\n modelSchema: Models.Gemini2_5FlashLiteSchema,\n },\n [Models.Gemini2_5FlashLitePreview092025Literal]: {\n model: Models.Gemini2_5FlashLitePreview092025,\n modelOptions: Models.Gemini2_5FlashLitePreview092025Options,\n modelSchema: Models.Gemini2_5FlashLitePreview092025Schema,\n },\n };\n\n private readonly embeddingModelFactories: Record<\n string,\n {\n model: { new (options: any): EmbeddingModelV1 };\n modelOptions: z.ZodType<any>;\n modelSchema: EmbeddingModelSchemaType;\n }\n > = {\n [Models.Text_Embedding_001Literal]: {\n model: Models.Text_Embedding_001,\n modelOptions: Models.Text_Embedding_001Options,\n modelSchema: Models.Text_Embedding_001Schema,\n },\n [Models.Text_Embedding_004Literal]: {\n model: Models.Text_Embedding_004,\n modelOptions: Models.Text_Embedding_004Options,\n modelSchema: Models.Text_Embedding_004Schema,\n },\n };\n\n chatModelLiterals(): string[] {\n return Object.keys(this.chatModelFactories);\n }\n\n chatModelSchemas(): Record<string, ChatModelSchemaType> {\n return Object.keys(this.chatModelFactories).reduce(\n (acc, key) => {\n acc[key] = this.chatModelFactories[key].modelSchema;\n return acc;\n },\n {} as Record<string, ChatModelSchemaType>\n );\n }\n\n chatModel(options: C): ChatModelV1 {\n const modelName = options.modelName;\n if (!(modelName in this.chatModelFactories)) {\n throw new ProviderError({\n info: `Google chat model: ${modelName} not found`,\n cause: new Error(`Google chat model: ${modelName} not found, available chat models: \n [${this.chatModelLiterals().join(\", \")}]`),\n });\n }\n\n const model = this.chatModelFactories[modelName].model;\n const parsedOptions = this.chatModelFactories[modelName].modelOptions.parse(options);\n return new model(parsedOptions);\n }\n\n embeddingModelLiterals(): string[] {\n return Object.keys(this.embeddingModelFactories);\n }\n\n embeddingModelSchemas(): Record<string, EmbeddingModelSchemaType> {\n return Object.keys(this.embeddingModelFactories).reduce(\n (acc, key) => {\n acc[key] = this.embeddingModelFactories[key].modelSchema;\n return acc;\n },\n {} as Record<string, EmbeddingModelSchemaType>\n );\n }\n\n embeddingModel(options: E): EmbeddingModelV1 {\n const modelName = options.modelName;\n if (!(modelName in this.embeddingModelFactories)) {\n throw new ProviderError({\n info: `Google embedding model: ${modelName} not found`,\n cause: new Error(`Google embedding model: ${modelName} not found, available embedding models: \n [${this.embeddingModelLiterals().join(\", \")}]`),\n });\n }\n\n const model = this.embeddingModelFactories[modelName].model;\n const parsedOptions = this.embeddingModelFactories[modelName].modelOptions.parse(options);\n return new model(parsedOptions);\n }\n}\n\nexport { Google, ProviderLiteral };\n","{\n \"base-gemini-1-chat-model\": {\n \"modelName\": \"base-gemini-1-chat-model\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0,\n \"outputPricePerMillion\": 0\n }\n }\n }\n ]\n },\n \"gemini-1.0-pro-001\": {\n \"modelName\": \"gemini-1.0-pro-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"gemini-1.0-pro-latest\": {\n \"modelName\": \"gemini-1.0-pro-latest\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"gemini-1.0-pro-vision\": {\n \"modelName\": \"gemini-1.0-pro-vision\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"gemini-1.0-pro\": {\n \"modelName\": \"gemini-1.0-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"gemini-1.5-flash-001\": {\n \"modelName\": \"gemini-1.5-flash-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"gemini-1.5-flash-002\": {\n \"modelName\": \"gemini-1.5-flash-002\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.0375,\n \"outputPricePerMillion\": 0.15\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"gemini-1.5-flash-latest\": {\n \"modelName\": \"gemini-1.5-flash-latest\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"gemini-1.5-flash\": {\n \"modelName\": \"gemini-1.5-flash\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"gemini-1.5-pro-001\": {\n \"modelName\": \"gemini-1.5-pro-001\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 5\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"gemini-1.5-pro-002\": {\n \"modelName\": \"gemini-1.5-pro-002\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 5\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"gemini-1.5-pro-latest\": {\n \"modelName\": \"gemini-1.5-pro-latest\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 5\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"gemini-1.5-pro\": {\n \"modelName\": \"gemini-1.5-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 128000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 5\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"gemini-2.0-flash-exp\": {\n \"modelName\": \"gemini-2.0-flash-exp\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.1,\n \"outputPricePerMillion\": 0.4\n }\n }\n }\n ]\n },\n \"gemini-2.5-flash-preview-04-17\": {\n \"modelName\": \"gemini-2.5-flash-preview-04-17\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.15,\n \"outputPricePerMillion\": 0.6\n }\n }\n }\n ]\n },\n \"gemini-2.5-pro-preview-03-25\": {\n \"modelName\": \"gemini-2.5-pro-preview-03-25\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 200000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 10\n }\n }\n },\n {\n \"minTokens\": 200001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.5,\n \"outputPricePerMillion\": 15\n }\n }\n }\n ]\n },\n \"gemini-pro-vision\": {\n \"modelName\": \"gemini-pro-vision\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"gemini-pro\": {\n \"modelName\": \"gemini-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 1.5\n }\n }\n }\n ]\n },\n \"gemini-2.5-pro\": {\n \"modelName\": \"gemini-2.5-pro\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"gemini-3-pro-preview\": {\n \"modelName\": \"gemini-3-pro-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 1.25,\n \"outputPricePerMillion\": 10\n }\n }\n }\n ]\n },\n \"gemini-3.1-pro-preview\": {\n \"modelName\": \"gemini-3.1-pro-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 200000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.0,\n \"outputPricePerMillion\": 12.0\n }\n }\n },\n {\n \"minTokens\": 200001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4.0,\n \"outputPricePerMillion\": 18.0\n }\n }\n }\n ]\n },\n \"gemini-3.1-pro-preview-customtools\": {\n \"modelName\": \"gemini-3.1-pro-preview-customtools\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 200000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2.0,\n \"outputPricePerMillion\": 12.0\n }\n }\n },\n {\n \"minTokens\": 200001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4.0,\n \"outputPricePerMillion\": 18.0\n }\n }\n }\n ]\n },\n \"gemini-2.5-flash\": {\n \"modelName\": \"gemini-2.5-flash\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.3,\n \"outputPricePerMillion\": 2.5\n }\n }\n }\n ]\n },\n \"gemini-2.0-flash\": {\n \"modelName\": \"gemini-2.0-flash\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.1,\n \"outputPricePerMillion\": 0.4\n }\n }\n }\n ]\n },\n \"gemini-2.0-flash-lite\": {\n \"modelName\": \"gemini-2.0-flash-lite\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.075,\n \"outputPricePerMillion\": 0.3\n }\n }\n }\n ]\n },\n \"gemini-2.5-flash-lite\": {\n \"modelName\": \"gemini-2.5-flash-lite\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.1,\n \"outputPricePerMillion\": 0.4\n }\n }\n }\n ]\n },\n \"gemini-2.5-flash-lite-preview-09-2025\": {\n \"modelName\": \"gemini-2.5-flash-lite-preview-09-2025\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.1,\n \"outputPricePerMillion\": 0.4\n }\n }\n }\n ]\n },\n \"gemini-3-flash-preview\": {\n \"modelName\": \"gemini-3-flash-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.5,\n \"outputPricePerMillion\": 3.0\n }\n }\n }\n ]\n }\n}\n","import { z } from \"zod\";\n\nimport { AssistantRoleLiteral, SystemRoleLiteral, ToolRoleLiteral, UserRoleLiteral } from \"@adaline/types\";\n\nconst GoogleChatModelRoles = z.enum([SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral]);\n\nconst GoogleChatAssistantRoleLiteral = \"model\";\nconst GoogleChatToolRoleLiteral = \"function\";\n\nconst GoogleChatModelRolesMap = {\n system: UserRoleLiteral,\n user: UserRoleLiteral,\n assistant: GoogleChatAssistantRoleLiteral,\n tool: GoogleChatToolRoleLiteral,\n} as const;\n\nexport { GoogleChatAssistantRoleLiteral, GoogleChatToolRoleLiteral, GoogleChatModelRoles, GoogleChatModelRolesMap };\n","import { z } from \"zod\";\n\nimport { ChatModelSchemaType } from \"@adaline/provider\";\nimport { ErrorModalityLiteral, ImageModalityLiteral, PdfModalityLiteral, ReasoningModalityLiteral, SearchResultModalityLiteral, TextModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral } from \"@adaline/types\";\n\nconst GoogleChatModelModalities: ChatModelSchemaType[\"modalities\"] = [\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ReasoningModalityLiteral,\n SearchResultModalityLiteral,\n ErrorModalityLiteral,\n];\n\nconst GoogleChatModelModalitiesEnum = z.enum([\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ReasoningModalityLiteral,\n SearchResultModalityLiteral,\n ErrorModalityLiteral,\n]);\n\nconst GoogleChatModelTextModalities: ChatModelSchemaType[\"modalities\"] = [TextModalityLiteral];\n\nconst GoogleChatModelTextModalitiesEnum = z.enum([TextModalityLiteral]);\n\nconst GoogleChatModelTextVisionModalities: ChatModelSchemaType[\"modalities\"] = [TextModalityLiteral, ImageModalityLiteral];\n\nconst GoogleChatModelTextVisionModalitiesEnum = z.enum([TextModalityLiteral, ImageModalityLiteral]);\n\nconst GoogleChatModelTextToolModalities: ChatModelSchemaType[\"modalities\"] = [\n TextModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n];\n\nconst GoogleChatModelTextToolModalitiesEnum = z.enum([TextModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral]);\n\nexport {\n GoogleChatModelModalitiesEnum,\n GoogleChatModelModalities,\n GoogleChatModelTextModalitiesEnum,\n GoogleChatModelTextModalities,\n GoogleChatModelTextToolModalitiesEnum,\n GoogleChatModelTextToolModalities,\n GoogleChatModelTextVisionModalitiesEnum,\n GoogleChatModelTextVisionModalities,\n};\n","import { z } from \"zod\";\n\nconst GoogleSearchEntryPoint = z.object({\n renderedContent: z.string().optional(),\n});\ntype GoogleSearchEntryPointType = z.infer<typeof GoogleSearchEntryPoint>;\n\nconst GoogleGroundingChunkWeb = z.object({\n uri: z.string().optional(),\n title: z.string().optional(),\n});\ntype GoogleGroundingChunkWebType = z.infer<typeof GoogleGroundingChunkWeb>;\n\nconst GoogleGroundingChunk = z.object({\n web: GoogleGroundingChunkWeb.optional(),\n});\ntype GoogleGroundingChunkType = z.infer<typeof GoogleGroundingChunk>;\n\nconst GoogleSegment = z.object({\n startIndex: z.number().optional(),\n endIndex: z.number().optional(),\n text: z.string().optional(),\n});\ntype GoogleSegmentType = z.infer<typeof GoogleSegment>;\n\nconst GoogleGroundingSupport = z.object({\n segment: GoogleSegment.optional(),\n groundingChunkIndices: z.array(z.number()).optional(),\n confidenceScores: z.array(z.number()).optional(),\n});\ntype GoogleGroundingSupportType = z.infer<typeof GoogleGroundingSupport>;\n\nconst GoogleGroundingMetadata = z.object({\n searchEntryPoint: GoogleSearchEntryPoint.optional(),\n groundingChunks: z.array(GoogleGroundingChunk).optional(),\n groundingSupports: z.array(GoogleGroundingSupport).optional(),\n webSearchQueries: z.array(z.string()).optional(),\n});\ntype GoogleGroundingMetadataType = z.infer<typeof GoogleGroundingMetadata>;\n\nconst GoogleCompleteChatTextResponse = z.object({\n text: z.string(),\n thought: z.boolean().optional(),\n});\n\nconst GoogleCompleteChatToolResponse = z.object({\n functionCall: z.object({\n name: z.string(),\n args: z.record(z.any()),\n }),\n thoughtSignature: z.string().optional(),\n});\n\nconst GoogleCompleteChatResponse = z.object({\n candidates: z.array(\n z.object({\n content: z\n .object({\n role: z.string(),\n parts: z.array(z.union([GoogleCompleteChatTextResponse, GoogleCompleteChatToolResponse])),\n })\n .optional(),\n finishReason: z.string(),\n index: z.number().optional(),\n safetyRatings: z.optional(\n z.array(\n z.object({\n category: z.string(),\n probability: z.string(),\n blocked: z.boolean().optional(),\n })\n )\n ),\n groundingMetadata: GoogleGroundingMetadata.optional(),\n })\n ),\n promptFeedback: z.optional(\n z.object({\n safetyRatings: z.optional(\n z.array(\n z.object({\n category: z.string(),\n probability: z.string(),\n })\n )\n ),\n })\n ),\n usageMetadata: z\n .object({\n promptTokenCount: z.number(),\n cachedContentTokenCount: z.number().optional(),\n candidatesTokenCount: z.number().optional(),\n totalTokenCount: z.number(),\n })\n .optional(),\n});\ntype GoogleCompleteChatResponseType = z.infer<typeof GoogleCompleteChatResponse>;\n\nconst GoogleStreamChatTextResponse = z.object({\n text: z.string(),\n thought: z.boolean().optional(),\n});\n\nconst GoogleStreamChatToolResponse = z.object({\n functionCall: z.object({\n name: z.string(),\n args: z.record(z.any()),\n }),\n thoughtSignature: z.string().optional(),\n});\n\nconst GoogleStreamChatResponse = z.object({\n candidates: z.array(\n z.object({\n content: z\n .object({\n role: z.string(),\n parts: z.array(z.union([GoogleStreamChatTextResponse, GoogleStreamChatToolResponse])),\n })\n .optional(),\n finishReason: z.string().optional(),\n index: z.number().optional(),\n safetyRatings: z.optional(\n z.array(\n z.object({\n category: z.string(),\n probability: z.string(),\n blocked: z.boolean().optional(),\n })\n )\n ),\n groundingMetadata: GoogleGroundingMetadata.optional(),\n })\n ),\n promptFeedback: z.optional(\n z.object({\n safetyRatings: z.optional(\n z.array(\n z.object({\n category: z.string(),\n probability: z.string(),\n })\n )\n ),\n })\n ),\n usageMetadata: z\n .object({\n promptTokenCount: z.number().optional(),\n cachedContentTokenCount: z.number().optional(),\n candidatesTokenCount: z.number().optional(),\n totalTokenCount: z.number().optional(),\n })\n .optional(),\n});\ntype GoogleStreamChatResponseType = z.infer<typeof GoogleStreamChatResponse>;\n\n\nexport {\n GoogleCompleteChatResponse,\n GoogleCompleteChatTextResponse,\n GoogleCompleteChatToolResponse,\n GoogleGroundingChunk,\n GoogleGroundingMetadata,\n GoogleGroundingSupport,\n GoogleSearchEntryPoint,\n GoogleStreamChatResponse,\n GoogleStreamChatTextResponse,\n GoogleStreamChatToolResponse,\n type GoogleCompleteChatResponseType,\n type GoogleGroundingChunkType,\n type GoogleGroundingMetadataType,\n type GoogleGroundingSupportType,\n type GoogleSearchEntryPointType,\n type GoogleStreamChatResponseType,\n type GoogleGroundingChunkWebType,\n type GoogleSegmentType,\n};\n","import { z } from \"zod\";\n\nconst GoogleChatContentPartText = z.object({\n text: z.string().min(1),\n});\ntype GoogleChatContentPartTextType = z.infer<typeof GoogleChatContentPartText>;\n\nconst GoogleChatContentPartInlineData = z.object({\n inline_data: z.object({\n mime_type: z.string().min(1),\n data: z.string().base64(),\n }),\n});\ntype GoogleChatContentPartInlineDataType = z.infer<typeof GoogleChatContentPartInlineData>;\n\nconst GoogleChatContentPartFileData = z.object({\n file_data: z.object({\n mime_type: z.string().min(1),\n file_uri: z.string().min(1),\n }),\n});\ntype GoogleChatContentPartFileDataType = z.infer<typeof GoogleChatContentPartFileData>;\n\nconst GoogleChatContentPartFunctionCall = z.object({\n function_call: z.object({\n name: z.string().min(1),\n args: z.record(z.string().min(1)),\n }),\n thought_signature: z.string().optional(),\n});\ntype GoogleChatContentPartFunctionCallType = z.infer<typeof GoogleChatContentPartFunctionCall>;\n\nconst GoogleChatContentPartFunctionResponse = z.object({\n function_response: z.object({\n name: z.string().min(1),\n response: z.record(z.string().min(1)),\n }),\n});\ntype GoogleChatContentPartFunctionResponseType = z.infer<typeof GoogleChatContentPartFunctionResponse>;\n\nconst GoogleChatContentPartThinking = z.object({\n text: z.string(),\n thought: z.literal(true),\n thought_signature: z.string().min(1),\n});\ntype GoogleChatContentPartThinkingType = z.infer<typeof GoogleChatContentPartThinking>;\n\nconst GoogleChatContent = z.object({\n role: z.enum([\"user\", \"model\", \"function\"]),\n parts: z.array(\n z.union([\n GoogleChatContentPartText,\n GoogleChatContentPartInlineData,\n GoogleChatContentPartFileData,\n GoogleChatContentPartFunctionCall,\n GoogleChatContentPartFunctionResponse,\n GoogleChatContentPartThinking,\n GoogleChatContentPartThinking,\n ])\n ),\n});\ntype GoogleChatContentType = z.infer<typeof GoogleChatContent>;\n\nconst GoogleChatSystemInstruction = z.object({\n parts: z.array(GoogleChatContentPartText),\n});\ntype GoogleChatSystemInstructionType = z.infer<typeof GoogleChatSystemInstruction>;\n\nconst GoogleChatTool = z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n parameters: z.any(),\n});\ntype GoogleChatToolType = z.infer<typeof GoogleChatTool>;\n\nconst GoogleChatGoogleSearchTool = z.object({\n timeRangeFilter: z\n .object({\n startTime: z.string().datetime().optional(),\n endTime: z.string().datetime().optional(),\n })\n .optional(),\n});\ntype GoogleChatGoogleSearchToolType = z.infer<typeof GoogleChatGoogleSearchTool>;\n\nconst GoogleChatToolConfig = z.object({\n function_calling_config: z.object({\n mode: z.enum([\"ANY\", \"AUTO\", \"NONE\"]),\n allowed_function_names: z.array(z.string()).optional(),\n }),\n});\ntype GoogleChatToolConfigType = z.infer<typeof GoogleChatToolConfig>;\n\nconst GoogleChatThinkingConfig = z.object({\n thinkingBudget: z.number().optional(),\n includeThoughts: z.boolean().optional(),\n thinkingLevel: z.enum([\"LOW\", \"HIGH\"]).optional(),\n});\ntype GoogleChatThinkingConfigType = z.infer<typeof GoogleChatThinkingConfig>;\n\nconst GoogleChatGenerationConfig = z.object({\n stopSequences: z.array(z.string()).optional(),\n maxOutputTokens: z.number().optional(),\n temperature: z.number().optional(),\n topP: z.number().optional(),\n topK: z.number().optional(),\n presencePenalty: z.number().optional(),\n frequencyPenalty: z.number().optional(),\n seed: z.number().optional(),\n thinkingConfig: GoogleChatThinkingConfig.optional(),\n});\ntype GoogleChatGenerationConfigType = z.infer<typeof GoogleChatGenerationConfig>;\n\nconst GoogleChatSafetySettings = z.object({\n category: z.enum([\n \"HARM_CATEGORY_HARASSMENT\",\n \"HARM_CATEGORY_HATE_SPEECH\",\n \"HARM_CATEGORY_SEXUALLY_EXPLICIT\",\n \"HARM_CATEGORY_DANGEROUS_CONTENT\",\n \"HARM_CATEGORY_CIVIC_INTEGRITY\",\n ]),\n threshold: z.enum([\n \"HARM_BLOCK_THRESHOLD_UNSPECIFIED\",\n \"BLOCK_LOW_AND_ABOVE\",\n \"BLOCK_MEDIUM_AND_ABOVE\",\n \"BLOCK_ONLY_HIGH\",\n \"BLOCK_NONE\",\n \"OFF\",\n ]),\n});\ntype GoogleChatSafetySettingsType = z.infer<typeof GoogleChatSafetySettings>;\n\nconst GoogleChatRequest = z.object({\n model: z.string().min(1).optional(),\n contents: z.array(GoogleChatContent),\n systemInstruction: GoogleChatSystemInstruction.optional(),\n system_instruction: GoogleChatSystemInstruction.optional(),\n generationConfig: GoogleChatGenerationConfig.optional(),\n generation_config: GoogleChatGenerationConfig.optional(),\n safetySettings: z.array(GoogleChatSafetySettings).optional(),\n safety_settings: z.array(GoogleChatSafetySettings).optional(),\n tools: z\n .object({\n function_declarations: z.array(GoogleChatTool),\n google_search: GoogleChatGoogleSearchTool.optional(),\n })\n .optional(),\n toolConfig: GoogleChatToolConfig.optional(),\n tool_config: GoogleChatToolConfig.optional(),\n});\ntype GoogleChatRequestType = z.infer<typeof GoogleChatRequest>;\n\nexport {\n GoogleChatContent,\n GoogleChatContentPartFileData,\n GoogleChatContentPartFunctionCall,\n GoogleChatContentPartFunctionResponse,\n GoogleChatContentPartInlineData,\n GoogleChatContentPartText,\n GoogleChatContentPartThinking,\n GoogleChatGenerationConfig,\n GoogleChatGoogleSearchTool,\n GoogleChatRequest,\n GoogleChatSafetySettings,\n GoogleChatSystemInstruction,\n GoogleChatThinkingConfig,\n GoogleChatTool,\n GoogleChatToolConfig,\n type GoogleChatContentPartFileDataType,\n type GoogleChatContentPartFunctionCallType,\n type GoogleChatContentPartFunctionResponseType,\n type GoogleChatContentPartInlineDataType,\n type GoogleChatContentPartTextType,\n type GoogleChatContentPartThinkingType,\n type GoogleChatContentType,\n type GoogleChatGenerationConfigType,\n type GoogleChatGoogleSearchToolType,\n type GoogleChatRequestType,\n type GoogleChatSafetySettingsType,\n type GoogleChatSystemInstructionType,\n type GoogleChatThinkingConfigType,\n type GoogleChatToolConfigType,\n type GoogleChatToolType,\n};\n","import { z } from \"zod\";\n\nimport {\n ChatModelSchemaType,\n ChatModelV1,\n convertBase64ToUint8Array,\n HeadersType,\n InvalidConfigError,\n InvalidMessagesError,\n InvalidModelRequestError,\n InvalidToolsError,\n isRunningInBrowser,\n ModelResponseError,\n ParamsType,\n removeUndefinedEntries,\n SelectStringConfigItemDefType,\n UrlType,\n urlWithoutTrailingSlash,\n} from \"@adaline/provider\";\nimport {\n AssistantRoleLiteral,\n Base64ImageContentTypeLiteral,\n Base64ImageContentValueType,\n ChatModelPriceType,\n ChatResponseType,\n Config,\n ConfigType,\n ContentType,\n createPartialReasoningMessage,\n createPartialSafetyErrorMessage,\n createPartialSearchResultGoogleMessage,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createReasoningContent,\n createSafetyErrorContent,\n createSearchResultGoogleContent,\n createTextContent,\n createToolCallContent,\n ImageContentType,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialChatResponseType,\n PdfContentType,\n PdfModalityLiteral,\n ReasoningModalityLiteral,\n ResponseSchemaType,\n SystemRoleLiteral,\n TextModalityLiteral,\n Tool,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ToolRoleLiteral,\n ToolType,\n UserRoleLiteral,\n} from \"@adaline/types\";\n\nimport { Google } from \"../../provider/provider.google\";\nimport pricingData from \"../pricing.json\";\nimport {\n GoogleChatContentPartFunctionCallType,\n GoogleChatContentPartFunctionResponseType,\n GoogleChatContentPartInlineDataType,\n GoogleChatContentPartTextType,\n GoogleChatContentType,\n GoogleChatRequest,\n GoogleChatRequestType,\n GoogleChatSystemInstructionType,\n GoogleChatToolType,\n GoogleCompleteChatResponse,\n GoogleCompleteChatResponseType,\n GoogleStreamChatResponse,\n GoogleStreamChatResponseType,\n} from \"./types\";\n\nconst BaseChatModelOptions = z.object({\n modelName: z.string(),\n apiKey: z.string(),\n baseUrl: z.string().url().optional(),\n completeChatUrl: z.string().url().optional(),\n streamChatUrl: z.string().url().optional(),\n});\ntype BaseChatModelOptionsType = z.infer<typeof BaseChatModelOptions>;\n\nclass BaseChatModel implements ChatModelV1<ChatModelSchemaType> {\n readonly version = \"v1\" as const;\n modelSchema: ChatModelSchemaType;\n readonly modelName: string;\n\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly streamChatUrl: string;\n private readonly completeChatUrl: string;\n\n constructor(modelSchema: ChatModelSchemaType, options: BaseChatModelOptionsType) {\n const parsedOptions = BaseChatModelOptions.parse(options);\n this.modelSchema = modelSchema;\n this.modelName = parsedOptions.modelName;\n this.apiKey = parsedOptions.apiKey;\n this.baseUrl = urlWithoutTrailingSlash(parsedOptions.baseUrl ?? Google.baseUrl);\n this.completeChatUrl = urlWithoutTrailingSlash(\n parsedOptions.completeChatUrl || `${this.baseUrl}/models/${this.modelName}:generateContent?key=${this.apiKey}`\n );\n this.streamChatUrl = urlWithoutTrailingSlash(\n parsedOptions.streamChatUrl || `${this.baseUrl}/models/${this.modelName}:streamGenerateContent?key=${this.apiKey}`\n );\n }\n\n getDefaultBaseUrl(): UrlType {\n return this.baseUrl;\n }\n\n getDefaultHeaders(): HeadersType {\n return {\n \"Content-Type\": \"application/json\",\n };\n }\n\n getDefaultParams(): ParamsType {\n return {};\n }\n\n // Google returns retry delay information in the response body rather than headers.\n // The response body contains error.details with a RetryInfo object:\n // {\"@type\":\"type.googleapis.com/google.rpc.RetryInfo\",\"retryDelay\":\"45s\"}\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(_responseHeaders: HeadersType, responseData: unknown): { shouldRetry: boolean; delayMs: number } {\n const shouldRetry = true;\n let delayMs = 0;\n\n // parse duration from retryDelay value of format \"45s\" or \"1.5s\" or \"45.499282066s\"\n const parseDuration = (duration: string): number => {\n const match = duration.match(/^(\\d+(?:\\.\\d+)?)s$/);\n if (match) {\n return Math.ceil(parseFloat(match[1]) * 1000);\n }\n return 0;\n };\n\n if (responseData && typeof responseData === \"object\") {\n const data = responseData as { error?: { details?: Array<{ \"@type\"?: string; retryDelay?: string }> } };\n if (data.error?.details && Array.isArray(data.error.details)) {\n const retryInfo = data.error.details.find(\n (detail) => detail[\"@type\"] === \"type.googleapis.com/google.rpc.RetryInfo\"\n );\n if (retryInfo?.retryDelay) {\n delayMs = parseDuration(retryInfo.retryDelay);\n }\n }\n }\n\n return { shouldRetry, delayMs };\n }\n\n // TODO: unused method, not tested; should add support for non-text modalities, tools\n getTokenCount(messages: MessageType[]): number {\n return messages.reduce((acc, message) => {\n return acc + message.content.map((content) => (content.modality === \"text\" ? content.value : \"\")).join(\" \").length;\n }, 0);\n }\n\n private async transformPdfMessages(messages: MessageType[]): Promise<MessageType[]> {\n // Helper method to download a PDF from a URL\n const downloadPdf = async (url: string): Promise<Uint8Array> => {\n // TODO: ideally use the isomorphic http client here but it's not available in the provider package, only in the gateway package.\n // TODO: currently using fetch since it'll work in the browser and node.js (v18+) for this simple use case.\n const headers: Record<string, string> = {};\n if (!isRunningInBrowser()) {\n headers[\"User-Agent\"] = \"Mozilla/5.0 (compatible; GoogleFilesAPI/1.0)\";\n }\n const response = await fetch(url, { headers });\n\n if (!response.ok) {\n throw new InvalidMessagesError({\n info: `Failed to download PDF from URL: ${url}`,\n cause: new Error(`HTTP ${response.status}: ${response.statusText}`),\n });\n }\n\n const arrayBuffer = await response.arrayBuffer();\n return new Uint8Array(arrayBuffer);\n };\n\n // Helper method to check if a file exists in Google Files API\n const existsInGoogleFiles = async (fileId: string): Promise<string | null> => {\n try {\n const response = await fetch(`https://generativelanguage.googleapis.com/v1beta/files?key=${this.apiKey}`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n });\n\n if (!response.ok) {\n return null;\n }\n\n const data = await response.json();\n const files = data.files || [];\n\n // Find file by display name (which is our hash)\n const existingFile = files.find((file: any) => file.displayName === fileId);\n return existingFile ? existingFile.uri : null;\n } catch (error) {\n // If there's an error checking, we'll just upload the file\n return null;\n }\n };\n\n // Helper method to upload a PDF to Google Files API\n const uploadPdfToGoogleFiles = async (pdfBuffer: Uint8Array, fileId: string): Promise<string> => {\n // Start resumable upload\n const uploadResponse = await fetch(`https://generativelanguage.googleapis.com/upload/v1beta/files?key=${this.apiKey}`, {\n method: \"POST\",\n headers: {\n \"X-Goog-Upload-Protocol\": \"resumable\",\n \"X-Goog-Upload-Command\": \"start\",\n \"X-Goog-Upload-Header-Content-Length\": pdfBuffer.length.toString(),\n \"X-Goog-Upload-Header-Content-Type\": \"application/pdf\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n file: {\n display_name: fileId,\n },\n }),\n });\n\n if (!uploadResponse.ok) {\n throw new InvalidMessagesError({\n info: \"Failed to start PDF upload to Google Files API\",\n cause: new Error(`HTTP ${uploadResponse.status}: ${uploadResponse.statusText}`),\n });\n }\n\n // Get upload URL from response headers\n const uploadUrl = uploadResponse.headers.get(\"x-goog-upload-url\");\n if (!uploadUrl) {\n throw new InvalidMessagesError({\n info: \"No upload URL received from Google Files API\",\n cause: new Error(\"Missing x-goog-upload-url header\"),\n });\n }\n\n // Upload the actual file content\n const uploadHeaders: Record<string, string> = {\n \"X-Goog-Upload-Offset\": \"0\",\n \"X-Goog-Upload-Command\": \"upload, finalize\",\n };\n if (!isRunningInBrowser()) {\n uploadHeaders[\"Content-Length\"] = pdfBuffer.length.toString();\n }\n const fileUploadResponse = await fetch(uploadUrl, {\n method: \"POST\",\n headers: uploadHeaders,\n body: pdfBuffer,\n });\n\n if (!fileUploadResponse.ok) {\n throw new InvalidMessagesError({\n info: \"Failed to upload PDF content to Google Files API\",\n cause: new Error(`HTTP ${fileUploadResponse.status}: ${fileUploadResponse.statusText}`),\n });\n }\n\n const fileInfo = await fileUploadResponse.json();\n return fileInfo.file.uri;\n };\n\n // Helper method to get the URL of a PDF from Google Files API\n const getGoogleFilesUrl = async (content: PdfContentType): Promise<string> => {\n const existingFileUri = await existsInGoogleFiles(content.file.id);\n if (existingFileUri) {\n return existingFileUri;\n }\n\n let pdfBuffer: Uint8Array;\n if (content.value.type === \"url\") {\n pdfBuffer = await downloadPdf(content.value.url);\n } else {\n let base64Data = content.value.base64;\n const pdfBase64Prefix = \"data:application/pdf;base64,\";\n base64Data = base64Data.startsWith(pdfBase64Prefix) ? base64Data.substring(pdfBase64Prefix.length) : base64Data;\n pdfBuffer = convertBase64ToUint8Array(base64Data);\n }\n return await uploadPdfToGoogleFiles(pdfBuffer, content.file.id);\n };\n\n // Process the messages to add the Google Files API URL to the PDF content\n const processedMessages: MessageType[] = [];\n for (const message of messages) {\n const processedContent = [];\n for (const content of message.content) {\n if (content.modality === PdfModalityLiteral) {\n const fileUri = await getGoogleFilesUrl(content);\n processedContent.push({\n ...content,\n value: {\n type: \"url\" as const,\n url: fileUri,\n },\n });\n } else {\n processedContent.push(content);\n }\n }\n\n processedMessages.push({\n ...message,\n content: processedContent,\n });\n }\n\n return processedMessages;\n }\n\n transformModelRequest(request: GoogleChatRequestType): {\n modelName: string | undefined;\n config: ConfigType;\n messages: MessageType[];\n tools: ToolType[] | undefined;\n } {\n const safeRequest = GoogleChatRequest.safeParse(request);\n if (!safeRequest.success) {\n throw new InvalidModelRequestError({ info: \"Invalid model request\", cause: safeRequest.error });\n }\n\n const parsedRequest = safeRequest.data;\n\n const modelName = parsedRequest.model;\n\n if (parsedRequest.system_instruction && parsedRequest.systemInstruction) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"'system_instruction' and 'systemInstruction' are not allowed at the same time\"),\n });\n }\n\n if (parsedRequest.generation_config && parsedRequest.generationConfig) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"'generation_config' and 'generationConfig' are not allowed at the same time\"),\n });\n }\n\n if (parsedRequest.tool_config && parsedRequest.toolConfig) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"'tool_config' and 'toolConfig' are not allowed at the same time\"),\n });\n }\n\n const systemInstruction = parsedRequest.system_instruction || parsedRequest.systemInstruction;\n const generationConfig = parsedRequest.generation_config || parsedRequest.generationConfig;\n const safetySettings = parsedRequest.safety_settings || parsedRequest.safetySettings;\n const toolConfig = parsedRequest.tool_config || parsedRequest.toolConfig;\n\n if (toolConfig && (!parsedRequest.tools || parsedRequest.tools.function_declarations.length === 0)) {\n throw new InvalidModelRequestError({\n info: `Invalid model request for model : '${this.modelName}'`,\n cause: new Error(\"'tools' are required when 'tool_choice' is specified\"),\n });\n }\n\n const _config: ConfigType = {};\n\n if (toolConfig) {\n if (toolConfig.function_calling_config.mode === \"ANY\") {\n if (\n toolConfig.function_calling_config.allowed_function_names &&\n toolConfig.function_calling_config.allowed_function_names.length === 1\n ) {\n _config.toolChoice = toolConfig.function_calling_config.allowed_function_names[0];\n } else {\n _config.toolChoice = toolConfig.function_calling_config.mode.toLowerCase();\n }\n } else {\n _config.toolChoice = toolConfig.function_calling_config.mode.toLowerCase();\n }\n }\n\n _config.seed = generationConfig?.seed;\n _config.maxTokens = generationConfig?.maxOutputTokens;\n _config.temperature = generationConfig?.temperature;\n _config.topP = generationConfig?.topP;\n _config.presencePenalty = generationConfig?.presencePenalty;\n _config.frequencyPenalty = generationConfig?.frequencyPenalty;\n _config.stop = generationConfig?.stopSequences;\n _config.safetySettings = safetySettings;\n const config = Config().parse(removeUndefinedEntries(_config));\n\n const messages: MessageType[] = [];\n if (systemInstruction) {\n systemInstruction.parts.forEach((part) => {\n messages.push({ role: SystemRoleLiteral, content: [{ modality: TextModalityLiteral, value: part.text }] });\n });\n }\n\n parsedRequest.contents.forEach((message) => {\n const role = message.role;\n switch (role) {\n case \"user\":\n {\n const content = message.parts as (GoogleChatContentPartTextType | GoogleChatContentPartInlineDataType)[];\n const _content = content.map((c) => {\n if (\"text\" in c) {\n return { modality: TextModalityLiteral, value: c.text };\n } else {\n return {\n modality: ImageModalityLiteral,\n detail: \"auto\" as ImageContentType[\"detail\"],\n value: {\n type: Base64ImageContentTypeLiteral,\n base64: c.inline_data.data,\n mediaType: c.inline_data.mime_type.split(\"/\")[1] as Base64ImageContentValueType[\"mediaType\"],\n },\n };\n }\n });\n messages.push({ role: role, content: _content });\n }\n break;\n\n case \"model\":\n {\n const content = message.parts as (GoogleChatContentPartTextType | GoogleChatContentPartFunctionCallType)[];\n const _content = content.map((c, index) => {\n if (\"text\" in c) {\n return { modality: TextModalityLiteral, value: c.text };\n } else {\n return {\n modality: ToolCallModalityLiteral,\n id: index.toString(),\n index: index,\n name: c.function_call.name,\n arguments: JSON.stringify(c.function_call.args),\n };\n }\n });\n messages.push({ role: AssistantRoleLiteral, content: _content });\n }\n break;\n\n case \"function\":\n {\n const content = message.parts as GoogleChatContentPartFunctionResponseType[];\n const _content = content.map((c, index) => {\n return {\n modality: ToolResponseModalityLiteral,\n id: index.toString(),\n index: index,\n name: c.function_response.name,\n data: JSON.stringify(c.function_response.response),\n };\n });\n messages.push({ role: ToolRoleLiteral, content: _content });\n }\n break;\n\n default: {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' is not supported for model : ${this.modelName}`),\n });\n }\n }\n });\n\n const tools: ToolType[] = [];\n if (parsedRequest.tools) {\n parsedRequest.tools.function_declarations.forEach((tool: GoogleChatToolType) => {\n tools.push({\n type: \"function\",\n definition: {\n schema: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n },\n });\n });\n }\n\n return {\n modelName,\n config,\n messages,\n tools: tools.length > 0 ? tools : undefined,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n transformConfig(config: ConfigType, messages?: MessageType[], tools?: ToolType[]): ParamsType {\n const _toolChoice = config.toolChoice;\n delete config.toolChoice; // can have a specific tool name that is not in the model schema, validated at transformation\n\n const _parsedConfig = this.modelSchema.config.schema.safeParse(config);\n if (!_parsedConfig.success) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: _parsedConfig.error,\n });\n }\n\n const parsedConfig = _parsedConfig.data as ConfigType;\n\n Object.keys(parsedConfig).forEach((key) => {\n if (!(key in this.modelSchema.config.def)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`Invalid config key : '${key}', \n available keys : [${Object.keys(this.modelSchema.config.def).join(\", \")}]`),\n });\n }\n });\n\n const transformedConfig = Object.keys(parsedConfig).reduce((acc, key) => {\n const def = this.modelSchema.config.def[key];\n const paramKey = def.param;\n const paramValue = (parsedConfig as ConfigType)[key];\n\n if (key === \"reasoningEnabled\") {\n // Handle reasoningEnabled specially\n acc.thinkingConfig =\n acc.thinkingConfig && typeof acc.thinkingConfig === \"object\"\n ? { ...acc.thinkingConfig, includeThoughts: paramValue }\n : { includeThoughts: paramValue };\n } else if (key === \"maxReasoningTokens\") {\n acc.thinkingConfig =\n acc.thinkingConfig && typeof acc.thinkingConfig === \"object\"\n ? { ...acc.thinkingConfig, thinkingBudget: paramValue }\n : { thinkingBudget: paramValue };\n } else if (key === \"reasoningEffort\") {\n acc.thinkingConfig =\n acc.thinkingConfig && typeof acc.thinkingConfig === \"object\"\n ? { ...acc.thinkingConfig, thinkingLevel: paramValue }\n : { thinkingLevel: paramValue };\n } else if (paramKey === \"maxOutputTokens\" && def.type === \"range\" && paramValue === 0) {\n acc[paramKey] = def.max;\n } else {\n acc[paramKey] = paramValue;\n }\n\n return acc;\n }, {} as ParamsType);\n\n // Validate that only one of thinkingBudget or thinkingLevel is set\n if (\n transformedConfig.thinkingConfig &&\n typeof transformedConfig.thinkingConfig === \"object\" &&\n \"thinkingBudget\" in transformedConfig.thinkingConfig &&\n \"thinkingLevel\" in transformedConfig.thinkingConfig &&\n transformedConfig.thinkingConfig.thinkingBudget !== undefined &&\n transformedConfig.thinkingConfig.thinkingBudget !== 0 &&\n transformedConfig.thinkingConfig.thinkingLevel !== undefined\n ) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"Only one of 'thinkingBudget' or 'thinkingLevel' can be set, not both.\"),\n });\n }\n\n const safetySettings = transformedConfig.safetySettings;\n delete transformedConfig.safetySettings;\n delete transformedConfig.googleSearch;\n\n let toolConfig;\n if (_toolChoice !== undefined) {\n const toolChoice = _toolChoice as string;\n if (!tools || (tools && tools.length === 0)) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'tools' are required when 'toolChoice' is specified\"),\n });\n } else if (tools && tools.length > 0) {\n const configToolChoice = this.modelSchema.config.def.toolChoice as SelectStringConfigItemDefType;\n if (!configToolChoice.choices.includes(toolChoice)) {\n // toolChoice not in model schema choices\n if (tools.map((tool) => tool.definition.schema.name).includes(toolChoice)) {\n // toolChoice is a specific tool name\n toolConfig = {\n function_calling_config: {\n mode: \"ANY\",\n allowed_function_names: [toolChoice],\n },\n };\n } else {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`toolChoice : '${toolChoice}' is not part of provided 'tools' names or \n one of [${configToolChoice.choices.join(\", \")}]`),\n });\n }\n } else {\n // toolChoice is in model schema choices\n if (toolChoice === \"any\") {\n toolConfig = {\n function_calling_config: {\n mode: \"ANY\",\n allowed_function_names: tools.map((tool) => tool.definition.schema.name),\n },\n };\n } else {\n toolConfig = {\n function_calling_config: {\n mode: toolChoice.toUpperCase(), // Google uses uppercase for toolChoice\n },\n };\n }\n }\n }\n }\n\n if (\"response_format\" in transformedConfig && transformedConfig.response_format !== undefined) {\n const responseFormat = transformedConfig.response_format as string;\n if (responseFormat === \"json_schema\") {\n const responseSchemaConfig = transformedConfig.response_schema as ResponseSchemaType;\n if (!(\"response_schema\" in transformedConfig) || !transformedConfig.response_schema || !responseSchemaConfig?.schema) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(\"'responseSchema' is required in config when 'responseFormat' is 'json_schema'\"),\n });\n } else {\n // Keep response-schema normalization aligned with tool schema handling for Google.\n transformedConfig.responseSchema = this.stripAdditionalProperties(responseSchemaConfig.schema);\n transformedConfig.responseMimeType = \"application/json\";\n delete transformedConfig.response_format;\n delete transformedConfig.response_schema;\n }\n } else if (responseFormat === \"json_object\") {\n transformedConfig.responseSchema = {\n type: \"object\",\n };\n delete transformedConfig.response_format;\n } else if (responseFormat === \"text\") {\n delete transformedConfig.response_format;\n }\n }\n\n return {\n generation_config: transformedConfig,\n ...(toolConfig ? { tool_config: toolConfig } : {}),\n ...(safetySettings ? { safety_settings: safetySettings } : {}),\n };\n }\n\n transformMessages(messages: MessageType[]): ParamsType {\n if (!messages || (messages && messages.length === 0)) {\n return { messages: [] };\n }\n const stripBase64Prefix = (data: string): string => {\n const prefixMatch = data.match(/^data:(image\\/[a-zA-Z]+|application\\/pdf);base64,/);\n if (prefixMatch) {\n return data.substring(prefixMatch[0].length);\n }\n return data;\n };\n const parsedMessages = messages.map((message) => {\n const parsedMessage = Message().safeParse(message);\n if (!parsedMessage.success) {\n throw new InvalidMessagesError({ info: \"Invalid messages\", cause: parsedMessage.error });\n }\n return parsedMessage.data;\n });\n\n parsedMessages.forEach((message) => {\n message.content.forEach((content) => {\n if (!this.modelSchema.modalities.includes(content.modality)) {\n throw new InvalidMessagesError({\n info: `Invalid message content for model : '${this.modelName}'`,\n cause: new Error(`model : '${this.modelName}' does not support modality : '${content.modality}', \n available modalities : [${this.modelSchema.modalities.join(\", \")}]`),\n });\n }\n });\n });\n\n parsedMessages.forEach((message) => {\n if (!Object.keys(this.modelSchema.roles).includes(message.role)) {\n throw new InvalidMessagesError({\n info: `Invalid message content for model : '${this.modelName}'`,\n cause: new Error(`model : '${this.modelName}' does not support role : '${message.role}', \n available roles : [${Object.keys(this.modelSchema.roles).join(\", \")}]`),\n });\n }\n });\n\n // Filter out error, search-result modalities from all messages (these are output-only modalities)\n parsedMessages.forEach((message) => {\n message.content = message.content.filter((content) => content.modality !== \"error\" && content.modality !== \"search-result\");\n });\n\n const normalizedMessages: MessageType[] = [];\n for (const message of parsedMessages) {\n const lastMessage = normalizedMessages[normalizedMessages.length - 1];\n\n // Gemini expects parallel tool responses from one turn to be grouped\n // into a single function message with multiple function_response parts.\n if (message.role === ToolRoleLiteral && lastMessage?.role === ToolRoleLiteral) {\n normalizedMessages[normalizedMessages.length - 1] = {\n ...lastMessage,\n content: [...lastMessage.content, ...message.content],\n };\n continue;\n }\n\n normalizedMessages.push(message);\n }\n\n const systemInstruction: GoogleChatSystemInstructionType = { parts: [] };\n const nonSystemMessages: GoogleChatContentType[] = [];\n\n normalizedMessages.forEach((message) => {\n switch (message.role) {\n case SystemRoleLiteral:\n {\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n systemInstruction.parts.push({ text: content.value });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n }\n break;\n\n case AssistantRoleLiteral:\n {\n const assistantContent: GoogleChatContentType[\"parts\"] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n assistantContent.push({ text: content.value });\n } else if (content.modality === ToolCallModalityLiteral) {\n // Include thought_signature if present (for thinking models)\n assistantContent.push({\n function_call: {\n name: content.name,\n args: JSON.parse(content.arguments),\n },\n ...(content.thoughtSignature ? { thought_signature: content.thoughtSignature } : {}),\n });\n } else if (content.modality === ReasoningModalityLiteral) {\n // Only send thinking content back, skip redacted reasoning\n if (content.value.type === \"thinking\" && content.value.thinking) {\n assistantContent.push({\n text: content.value.thinking,\n thought: true as const,\n thought_signature: content.value.signature,\n });\n }\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n nonSystemMessages.push({\n role: this.modelSchema.roles[message.role] as GoogleChatContentType[\"role\"],\n parts: assistantContent,\n });\n }\n break;\n\n case UserRoleLiteral:\n {\n const userContent: GoogleChatContentType[\"parts\"] = [];\n message.content.forEach((content) => {\n if (content.modality === TextModalityLiteral) {\n userContent.push({ text: content.value });\n } else if (content.modality === ImageModalityLiteral) {\n if (content.value.type === \"base64\") {\n let base64Data = content.value.base64;\n // Check and strip the data URL prefix if it exists.\n base64Data = stripBase64Prefix(base64Data);\n userContent.push({\n inline_data: {\n mime_type: `image/${content.value.mediaType}`,\n data: base64Data,\n },\n });\n } else if (content.value.type === \"url\") {\n throw new InvalidMessagesError({\n info: `Invalid message 'modality' for model : ${this.modelName}`,\n cause: new Error(`model: '${this.modelName}' does not support image content type: '${content.value.type}'`),\n });\n }\n } else if (content.modality === PdfModalityLiteral) {\n if (content.value.type === \"base64\") {\n let base64Data = content.value.base64;\n // Check and strip the data URL prefix if it exists.\n base64Data = stripBase64Prefix(base64Data);\n userContent.push({\n inline_data: {\n mime_type: \"application/pdf\",\n data: base64Data,\n },\n });\n } else if (content.value.type === \"url\") {\n userContent.push({\n file_data: {\n mime_type: \"application/pdf\",\n file_uri: content.value.url,\n },\n });\n }\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n nonSystemMessages.push({\n role: this.modelSchema.roles[message.role] as GoogleChatContentType[\"role\"],\n parts: userContent,\n });\n }\n break;\n\n case ToolRoleLiteral:\n {\n const toolResponseContent: GoogleChatContentPartFunctionResponseType[] = [];\n message.content.forEach((content) => {\n if (content.modality === ToolResponseModalityLiteral) {\n toolResponseContent.push({\n function_response: {\n name: content.name,\n response: JSON.parse(content.data),\n },\n });\n } else {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' and 'modality' combination for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' cannot have content with modality : '${content.modality}'`),\n });\n }\n });\n nonSystemMessages.push({\n role: this.modelSchema.roles[message.role] as GoogleChatContentType[\"role\"],\n parts: toolResponseContent,\n });\n }\n break;\n\n default: {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' for model : ${this.modelName}`,\n cause: new Error(`role : '${message.role}' is not supported, \n available roles : [${Object.keys(this.modelSchema.roles).join(\", \")}]`),\n });\n }\n }\n });\n\n if (nonSystemMessages[0].role !== this.modelSchema.roles[UserRoleLiteral]) {\n throw new InvalidMessagesError({\n info: `Invalid message 'role' for model : ${this.modelName}`,\n cause: new Error(`model : '${this.modelName}' requires first message to be from user`),\n });\n }\n\n const getNextExpectedRoles = (role: string): string[] => {\n if (role === this.modelSchema.roles[UserRoleLiteral] || role === this.modelSchema.roles[ToolRoleLiteral]) {\n return [this.modelSchema.roles[AssistantRoleLiteral] as string];\n }\n return [this.modelSchema.roles[UserRoleLiteral] as string, this.modelSchema.roles[ToolRoleLiteral] as string];\n };\n\n for (let i = 1; i < nonSystemMessages.length; i++) {\n if (!getNextExpectedRoles(nonSystemMessages[i - 1].role).includes(nonSystemMessages[i].role)) {\n throw new InvalidMessagesError({\n info: `Invalid message format for model : ${this.modelName}`,\n cause: new Error(\n `model : '${this.modelName}' cannot have message with role : '${nonSystemMessages[i].role}' after message with role : '${nonSystemMessages[i - 1].role}'`\n ),\n });\n }\n }\n\n if (\n nonSystemMessages[nonSystemMessages.length - 1].role !== this.modelSchema.roles[UserRoleLiteral] &&\n nonSystemMessages[nonSystemMessages.length - 1].role !== this.modelSchema.roles[ToolRoleLiteral]\n ) {\n throw new InvalidMessagesError({\n info: `Invalid message format for model : ${this.modelName}`,\n cause: new Error(`model : '${this.modelName}' requires last message to be from user`),\n });\n }\n\n return {\n contents: nonSystemMessages,\n ...(systemInstruction.parts.length > 0 ? { system_instruction: systemInstruction } : {}),\n };\n }\n\n /**\n * Recursively removes 'additionalProperties' from a JSON schema object.\n * Google's Gemini API does not support this field in function parameters.\n */\n private stripAdditionalProperties(obj: unknown): unknown {\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => this.stripAdditionalProperties(item));\n }\n\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj as Record<string, unknown>)) {\n if (key === \"additionalProperties\") {\n // Skip this field - Google doesn't support it\n continue;\n }\n result[key] = this.stripAdditionalProperties(value);\n }\n return result;\n }\n\n transformTools(tools: ToolType[], config?: ConfigType): ParamsType {\n if (!this.modelSchema.modalities.includes(ToolCallModalityLiteral)) {\n throw new InvalidToolsError({\n info: `Invalid tool 'modality' for model : ${this.modelName}`,\n cause: new Error(`model : '${this.modelName}' does not support tool modality : '${ToolCallModalityLiteral}'`),\n });\n }\n\n if ((!tools || tools.length === 0) && !config?.googleSearchTool) {\n return { tools: [] as ToolType[] };\n }\n\n const parsedTools = (tools ?? []).map((tool) => {\n const parsedTool = Tool().safeParse(tool);\n if (!parsedTool.success) {\n throw new InvalidToolsError({ info: \"Invalid tools\", cause: parsedTool.error });\n }\n return parsedTool.data;\n });\n\n const transformedTools = parsedTools.map((tool) => ({\n name: tool.definition.schema.name,\n description: tool.definition.schema.description,\n // Strip additionalProperties as Google's API doesn't support this field\n parameters: this.stripAdditionalProperties(tool.definition.schema.parameters),\n }));\n\n return {\n tools: [\n {\n ...(transformedTools.length > 0 ? { function_declarations: transformedTools } : {}),\n ...(config?.googleSearchTool ? { google_search: {} } : {}),\n },\n ],\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.completeChatUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getCompleteChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getCompleteChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n\n // Process PDF content through Google Files API before transforming messages\n const processedMessages = await this.transformPdfMessages(messages);\n const transformedMessages = this.transformMessages(processedMessages);\n\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = this.transformTools(tools || [], config);\n\n return {\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n };\n }\n\n transformCompleteChatResponse(response: any): ChatResponseType {\n const safe = GoogleCompleteChatResponse.safeParse(response);\n if (safe.success) {\n if (safe.data.candidates.length === 0) {\n throw new ModelResponseError({\n info: \"Invalid response from model\",\n cause: new Error(`No choices in response : ${JSON.stringify(safe.data)}`),\n });\n }\n\n const completeChatResponse: ChatResponseType = {\n messages: [],\n usage: undefined,\n logProbs: undefined,\n };\n\n const parsedResponse: GoogleCompleteChatResponseType = safe.data;\n\n if (parsedResponse.usageMetadata) {\n completeChatResponse.usage = {\n promptTokens: parsedResponse.usageMetadata.promptTokenCount,\n totalTokens: parsedResponse.usageMetadata.totalTokenCount,\n completionTokens: parsedResponse.usageMetadata.candidatesTokenCount || 0,\n };\n }\n\n const candidate = parsedResponse.candidates[0]; // default to first candidate, top choice\n\n if (candidate.content) {\n const content = candidate.content.parts.map((contentItem, index) => {\n if (\"text\" in contentItem && contentItem.text !== undefined) {\n // Check if this is a thinking/reasoning part\n if (contentItem.thought === true) {\n return createReasoningContent(contentItem.text, \"\");\n }\n return createTextContent(contentItem.text);\n } else if (\"functionCall\" in contentItem && contentItem.functionCall !== undefined) {\n return createToolCallContent(\n index,\n `${contentItem.functionCall.name}_${index}`,\n contentItem.functionCall.name,\n JSON.stringify(contentItem.functionCall.args),\n undefined, // serverName\n contentItem.thoughtSignature // thoughtSignature for thinking models\n );\n }\n }) as ContentType[];\n\n completeChatResponse.messages.push({\n role: AssistantRoleLiteral,\n content: content,\n });\n }\n\n if (candidate.groundingMetadata) {\n if (completeChatResponse.messages.length === 0) {\n completeChatResponse.messages.push({\n role: AssistantRoleLiteral,\n content: [\n createSearchResultGoogleContent(\n candidate.groundingMetadata.webSearchQueries?.[0] || \"\",\n candidate.groundingMetadata.groundingChunks?.map((chunk) => ({\n source: chunk.web ? \"web\" : \"\",\n url: chunk.web?.uri || \"\",\n title: chunk.web?.title || \"\",\n })) || [],\n candidate.groundingMetadata.groundingSupports?.map((support) => ({\n text: support.segment?.text || \"\",\n responseIndices: support.groundingChunkIndices || [],\n startIndex: support.segment?.startIndex || undefined,\n endIndex: support.segment?.endIndex || undefined,\n confidenceScores: support.confidenceScores || undefined,\n })) || []\n ),\n ],\n });\n } else {\n completeChatResponse.messages[0].content.push(\n createSearchResultGoogleContent(\n candidate.groundingMetadata.webSearchQueries?.[0] || \"\",\n candidate.groundingMetadata.groundingChunks?.map((chunk) => ({\n source: chunk.web ? \"web\" : \"\",\n url: chunk.web?.uri || \"\",\n title: chunk.web?.title || \"\",\n })) || [],\n candidate.groundingMetadata.groundingSupports?.map((support) => ({\n text: support.segment?.text || \"\",\n responseIndices: support.groundingChunkIndices || [],\n startIndex: support.segment?.startIndex || undefined,\n endIndex: support.segment?.endIndex || undefined,\n confidenceScores: support.confidenceScores || undefined,\n })) || []\n )\n );\n }\n }\n\n const safetyRatings = candidate.safetyRatings;\n if (safetyRatings && safetyRatings.length > 0) {\n safetyRatings.forEach((rating) => {\n if (rating.blocked) {\n if (completeChatResponse.messages.length === 0) {\n completeChatResponse.messages.push({\n role: AssistantRoleLiteral,\n content: [\n createSafetyErrorContent(\n rating.category,\n rating.probability,\n rating.blocked,\n `Blocked content for category: ${rating.category} with probability: ${rating.probability}`\n ),\n ],\n });\n } else {\n completeChatResponse.messages[0].content.push(\n createSafetyErrorContent(\n rating.category,\n rating.probability,\n rating.blocked,\n `Blocked content for category: ${rating.category} with probability: ${rating.probability}`\n )\n );\n }\n }\n });\n }\n\n if (completeChatResponse.messages.length > 0) {\n return completeChatResponse;\n } else if (completeChatResponse.messages.length === 0 && candidate.finishReason === \"SAFETY\") {\n throw new ModelResponseError({\n info: \"Blocked content, model response finished with safety reason\",\n cause: new Error(\"Blocked content, model response finished with safety reason\"),\n });\n }\n }\n\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatUrl(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.streamChatUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getStreamChatHeaders(config?: ConfigType, messages?: MessageType[], tools?: ToolType[]): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getStreamChatData(config: ConfigType, messages: MessageType[], tools?: ToolType[]): Promise<ParamsType> {\n const transformedConfig = this.transformConfig(config, messages, tools);\n\n // Process PDF content through Google Files API before transforming messages\n const processedMessages = await this.transformPdfMessages(messages);\n const transformedMessages = this.transformMessages(processedMessages);\n\n if (transformedMessages.messages && (transformedMessages.messages as MessageType[]).length === 0) {\n throw new InvalidMessagesError({\n info: \"Messages are required\",\n cause: new Error(\"Messages are required\"),\n });\n }\n\n const transformedTools = this.transformTools(tools || [], config);\n\n return {\n ...this.getDefaultParams(),\n ...transformedConfig,\n ...transformedMessages,\n ...transformedTools,\n };\n }\n\n async *transformStreamChatResponseChunk(\n chunk: string,\n buffer: string\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n // merge last buffer message and split into lines\n const lines = (buffer + chunk).split(\",\\r\").filter((line) => line.trim() !== \"\");\n for (const line of lines) {\n let completeLine = line;\n // remove all '\\n' from string JSON\n completeLine = completeLine.replace(/\\n/g, \"\");\n if (completeLine.startsWith(\"[\") || completeLine.startsWith(\",{\")) {\n // start of stream, remove '['\n completeLine = completeLine.slice(1);\n } else if (completeLine.endsWith(\"]\")) {\n if (completeLine === \"]\") {\n // strict end of stream\n return;\n } else {\n // remaining message and then end of stream, remove ']'\n completeLine = completeLine.slice(0, -1);\n }\n }\n\n let structuredLine: any;\n try {\n structuredLine = JSON.parse(completeLine);\n } catch (error) {\n // malformed JSON error, must be the end of loop\n if (error instanceof SyntaxError) {\n buffer = completeLine;\n continue;\n } else {\n // non JSON parse error, re-raise\n throw error;\n }\n }\n\n // reset buffer\n buffer = \"\";\n const safe = GoogleStreamChatResponse.safeParse(structuredLine);\n if (safe.success) {\n const partialResponse: PartialChatResponseType = { partialMessages: [] };\n const parsedResponse: GoogleStreamChatResponseType = safe.data;\n if (parsedResponse.candidates.length > 0) {\n const message = parsedResponse.candidates[0].content;\n if (message && \"parts\" in message && message.parts.length > 0) {\n message.parts.forEach((messagePart, index) => {\n if (\"text\" in messagePart && messagePart.text !== undefined) {\n // Check if this is a thinking/reasoning part\n if (messagePart.thought === true) {\n partialResponse.partialMessages.push(createPartialReasoningMessage(AssistantRoleLiteral, messagePart.text, \"\"));\n } else {\n partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, messagePart.text));\n }\n }\n\n if (\"functionCall\" in messagePart && messagePart.functionCall !== undefined) {\n const toolCall = messagePart.functionCall;\n partialResponse.partialMessages.push(\n createPartialToolCallMessage(\n AssistantRoleLiteral,\n index,\n `${toolCall.name}_${index}`,\n toolCall.name,\n JSON.stringify(toolCall.args),\n undefined, // serverName\n messagePart.thoughtSignature // thoughtSignature for thinking models\n )\n );\n }\n });\n }\n }\n\n if (parsedResponse.usageMetadata) {\n partialResponse.usage = {\n promptTokens: parsedResponse.usageMetadata.promptTokenCount,\n completionTokens: parsedResponse.usageMetadata.candidatesTokenCount,\n totalTokens: parsedResponse.usageMetadata.totalTokenCount,\n };\n }\n\n if (parsedResponse.candidates.length > 0) {\n const candidate = parsedResponse.candidates[0];\n if (candidate.groundingMetadata) {\n partialResponse.partialMessages.push(\n createPartialSearchResultGoogleMessage(\n AssistantRoleLiteral,\n candidate.groundingMetadata.webSearchQueries?.[0] || \"\",\n candidate.groundingMetadata.groundingChunks?.map((chunk) => ({\n source: chunk.web ? \"web\" : \"\",\n url: chunk.web?.uri || \"\",\n title: chunk.web?.title || \"\",\n })) || [],\n candidate.groundingMetadata.groundingSupports?.map((support) => ({\n text: support.segment?.text || \"\",\n responseIndices: support.groundingChunkIndices || [],\n startIndex: support.segment?.startIndex || undefined,\n endIndex: support.segment?.endIndex || undefined,\n confidenceScores: support.confidenceScores || undefined,\n })) || []\n )\n );\n }\n\n const safetyRatings = candidate.safetyRatings;\n if (safetyRatings && safetyRatings.length > 0) {\n safetyRatings.forEach((rating) => {\n if (rating.blocked) {\n partialResponse.partialMessages.push(\n createPartialSafetyErrorMessage(\n AssistantRoleLiteral,\n rating.category,\n rating.probability,\n rating.blocked,\n `Blocked content for category: ${rating.category} with probability: ${rating.probability}`\n )\n );\n }\n });\n }\n }\n\n yield { partialResponse: partialResponse, buffer: buffer };\n } else {\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n }\n\n yield { partialResponse: { partialMessages: [] }, buffer: buffer };\n }\n async *transformProxyStreamChatResponseChunk(\n chunk: string,\n buffer: string,\n data?: any,\n headers?: Record<string, string>,\n query?: Record<string, string>\n ): AsyncGenerator<{ partialResponse: PartialChatResponseType; buffer: string }> {\n // If query has alt not equal to 'sse', delegate to streamTransform logic\n if (query?.alt !== \"sse\") {\n yield* this.transformStreamChatResponseChunk(chunk, buffer);\n return;\n }\n\n // --- proxyStreamTransform logic starts here ---\n const newData = buffer + chunk;\n const lines: string[] = [];\n let newBuffer = \"\";\n\n // Split newData into complete lines and new buffer\n let currentIndex = 0;\n while (currentIndex < newData.length) {\n const newlineIndex = newData.indexOf(\"\\n\", currentIndex);\n if (newlineIndex === -1) {\n newBuffer = newData.substring(currentIndex);\n break;\n } else {\n const line = newData.substring(currentIndex, newlineIndex).trim();\n if (line) {\n lines.push(line);\n }\n currentIndex = newlineIndex + 1;\n }\n }\n\n // Process each complete line\n for (const line of lines) {\n if (line === \"data: [DONE]\") {\n return; // End of stream\n }\n\n if (line.startsWith(\"data: \")) {\n const jsonStr = line.substring(\"data: \".length);\n try {\n const structuredLine = JSON.parse(jsonStr);\n const safe = GoogleStreamChatResponse.safeParse(structuredLine);\n if (safe.success) {\n const partialResponse: PartialChatResponseType = { partialMessages: [] };\n const parsedResponse: GoogleStreamChatResponseType = safe.data;\n if (parsedResponse.candidates.length > 0) {\n const message = parsedResponse.candidates[0].content;\n if (message && \"parts\" in message && message.parts.length > 0) {\n message.parts.forEach((messagePart, index) => {\n if (\"text\" in messagePart && messagePart.text !== undefined) {\n // Check if this is a thinking/reasoning part\n if (messagePart.thought === true) {\n partialResponse.partialMessages.push(createPartialReasoningMessage(AssistantRoleLiteral, messagePart.text, \"\"));\n } else {\n partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, messagePart.text));\n }\n }\n\n if (\"functionCall\" in messagePart && messagePart.functionCall !== undefined) {\n const toolCall = messagePart.functionCall;\n partialResponse.partialMessages.push(\n createPartialToolCallMessage(\n AssistantRoleLiteral,\n index,\n `${toolCall.name}_${index}`,\n toolCall.name,\n JSON.stringify(toolCall.args),\n undefined, // serverName\n messagePart.thoughtSignature // thoughtSignature for thinking models\n )\n );\n }\n });\n }\n }\n\n if (\n parsedResponse.usageMetadata &&\n parsedResponse.usageMetadata.totalTokenCount &&\n parsedResponse.usageMetadata.promptTokenCount &&\n parsedResponse.usageMetadata.candidatesTokenCount\n ) {\n partialResponse.usage = {\n promptTokens: parsedResponse.usageMetadata.promptTokenCount,\n completionTokens: parsedResponse.usageMetadata.candidatesTokenCount,\n totalTokens: parsedResponse.usageMetadata.totalTokenCount,\n };\n }\n\n if (parsedResponse.candidates.length > 0) {\n const candidate = parsedResponse.candidates[0];\n if (candidate.groundingMetadata) {\n partialResponse.partialMessages.push(\n createPartialSearchResultGoogleMessage(\n AssistantRoleLiteral,\n candidate.groundingMetadata.webSearchQueries?.[0] || \"\",\n candidate.groundingMetadata.groundingChunks?.map((chunk) => ({\n source: chunk.web ? \"web\" : \"\",\n url: chunk.web?.uri || \"\",\n title: chunk.web?.title || \"\",\n })) || [],\n candidate.groundingMetadata.groundingSupports?.map((support) => ({\n text: support.segment?.text || \"\",\n responseIndices: support.groundingChunkIndices || [],\n startIndex: support.segment?.startIndex || undefined,\n endIndex: support.segment?.endIndex || undefined,\n confidenceScores: support.confidenceScores || undefined,\n })) || []\n )\n );\n }\n\n const safetyRatings = candidate.safetyRatings;\n if (safetyRatings && safetyRatings.length > 0) {\n safetyRatings.forEach((rating) => {\n if (rating.blocked) {\n partialResponse.partialMessages.push(\n createPartialSafetyErrorMessage(\n AssistantRoleLiteral,\n rating.category,\n rating.probability,\n rating.blocked,\n `Blocked content for category: ${rating.category} with probability: ${rating.probability}`\n )\n );\n }\n });\n }\n }\n\n yield { partialResponse: partialResponse, buffer: buffer };\n } else {\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n } catch (error) {\n throw new ModelResponseError({\n info: `Malformed JSON received in stream: ${jsonStr}`,\n cause: error,\n });\n }\n }\n }\n\n // Yield the updated buffer after processing all lines\n yield { partialResponse: { partialMessages: [] }, buffer: newBuffer };\n }\n\n async getProxyCompleteChatUrl(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.completeChatUrl);\n });\n }\n\n async getProxyStreamChatUrl(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<UrlType> {\n return new Promise((resolve) => {\n if (!query || Object.keys(query).length === 0) {\n resolve(this.streamChatUrl);\n return;\n }\n\n const url = new URL(this.streamChatUrl);\n Object.entries(query).forEach(([key, value]) => {\n if (value != null) {\n url.searchParams.set(key, value);\n }\n });\n\n resolve(url.toString() as UrlType);\n });\n }\n async getProxyCompleteChatHeaders(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<HeadersType> {\n if (!headers) {\n return {};\n }\n const sanitizedHeaders: Record<string, string> = { ...headers };\n\n delete sanitizedHeaders.host;\n delete sanitizedHeaders[\"content-length\"];\n return sanitizedHeaders;\n }\n async getProxyStreamChatHeaders(data?: any, headers?: Record<string, string>, query?: Record<string, string>): Promise<HeadersType> {\n // Directly delegate to getProxyCompleteChatHeaders for now\n return await this.getProxyCompleteChatHeaders(data, headers, query);\n }\n getModelPricing(): ChatModelPriceType {\n // Check if the modelName exists in pricingData before accessing it\n if (!(this.modelName in pricingData)) {\n throw new ModelResponseError({\n info: `Invalid model pricing for model : '${this.modelName}'`,\n cause: new Error(`No pricing configuration found for model \"${this.modelName}\"`),\n });\n }\n\n const entry = pricingData[this.modelName as keyof typeof pricingData];\n return entry as ChatModelPriceType;\n }\n}\n\nexport { BaseChatModel, BaseChatModelOptions, type BaseChatModelOptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5Flash001Literal = \"gemini-1.5-flash-001\";\nconst Gemini1_5Flash001Description =\n \"Google's fastest, most cost-efficient multimodal model with great performance for high-frequency tasks. \\\n Optimized for fast and versatile performance across a diverse variety of tasks\";\n\nconst Gemini1_5Flash001Schema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5Flash001Literal,\n description: Gemini1_5Flash001Description,\n maxInputTokens: 1000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5Flash001Literal],\n});\n\nconst Gemini1_5Flash001Options = BaseChatModelOptions;\ntype Gemini1_5Flash001OptionsType = z.infer<typeof Gemini1_5Flash001Options>;\n\nclass Gemini1_5Flash001 extends BaseChatModel {\n constructor(options: Gemini1_5Flash001OptionsType) {\n super(Gemini1_5Flash001Schema, options);\n }\n}\n\nexport {\n Gemini1_5Flash001,\n Gemini1_5Flash001Literal,\n Gemini1_5Flash001Options,\n Gemini1_5Flash001Schema,\n type Gemini1_5Flash001OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5Flash002Literal = \"gemini-1.5-flash-002\";\nconst Gemini1_5Flash002Description =\n \"Google's fastest, most cost-efficient multimodal model with great performance for high-frequency tasks. \\\n Optimized for fast and versatile performance across a diverse variety of tasks\";\n\nconst Gemini1_5Flash002Schema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5Flash002Literal,\n description: Gemini1_5Flash002Description,\n maxInputTokens: 1000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5Flash002Literal],\n});\n\nconst Gemini1_5Flash002Options = BaseChatModelOptions;\ntype Gemini1_5Flash002OptionsType = z.infer<typeof Gemini1_5Flash002Options>;\n\nclass Gemini1_5Flash002 extends BaseChatModel {\n constructor(options: Gemini1_5Flash002OptionsType) {\n super(Gemini1_5Flash002Schema, options);\n }\n}\n\nexport {\n Gemini1_5Flash002,\n Gemini1_5Flash002Literal,\n Gemini1_5Flash002Options,\n Gemini1_5Flash002Schema,\n type Gemini1_5Flash002OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5FlashLatestLiteral = \"gemini-1.5-flash-latest\";\nconst Gemini1_5FlashLatestDescription =\n \"Google's latest multimodal model with great performance for high-frequency tasks. \\\n Optimized for fast and versatile performance across a diverse variety of tasks\";\n\nconst Gemini1_5FlashLatestSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5FlashLatestLiteral,\n description: Gemini1_5FlashLatestDescription,\n maxInputTokens: 1000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5FlashLatestLiteral],\n});\n\nconst Gemini1_5FlashLatestOptions = BaseChatModelOptions;\ntype Gemini1_5FlashLatestOptionsType = z.infer<typeof Gemini1_5FlashLatestOptions>;\n\nclass Gemini1_5FlashLatest extends BaseChatModel {\n constructor(options: Gemini1_5FlashLatestOptionsType) {\n super(Gemini1_5FlashLatestSchema, options);\n }\n}\n\nexport {\n Gemini1_5FlashLatest,\n Gemini1_5FlashLatestLiteral,\n Gemini1_5FlashLatestOptions,\n Gemini1_5FlashLatestSchema,\n type Gemini1_5FlashLatestOptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5FlashLiteral = \"gemini-1.5-flash\";\nconst Gemini1_5FlashDescription =\n \"Google's fastest, most cost-efficient multimodal model with great performance for high-frequency tasks. \\\n Optimized for fast and versatile performance across a diverse variety of tasks\";\n\nconst Gemini1_5FlashSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5FlashLiteral,\n description: Gemini1_5FlashDescription,\n maxInputTokens: 1000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5FlashLiteral],\n});\n\nconst Gemini1_5FlashOptions = BaseChatModelOptions;\ntype Gemini1_5FlashOptionsType = z.infer<typeof Gemini1_5FlashOptions>;\n\nclass Gemini1_5Flash extends BaseChatModel {\n constructor(options: Gemini1_5FlashOptionsType) {\n super(Gemini1_5FlashSchema, options);\n }\n}\n\nexport { Gemini1_5Flash, Gemini1_5FlashLiteral, Gemini1_5FlashOptions, Gemini1_5FlashSchema, type Gemini1_5FlashOptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5Pro001Literal = \"gemini-1.5-pro-001\";\nconst Gemini1_5Pro001Description =\n \"Google's best performing multimodal model with features for a wide variety of reasoning tasks. \\\n Optimized for complex reasoning tasks requiring more intelligence\";\n\nconst Gemini1_5Pro001Schema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5Pro001Literal,\n description: Gemini1_5Pro001Description,\n maxInputTokens: 2000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5Pro001Literal],\n});\n\nconst Gemini1_5Pro001Options = BaseChatModelOptions;\ntype Gemini1_5Pro001OptionsType = z.infer<typeof Gemini1_5Pro001Options>;\n\nclass Gemini1_5Pro001 extends BaseChatModel {\n constructor(options: Gemini1_5Pro001OptionsType) {\n super(Gemini1_5Pro001Schema, options);\n }\n}\n\nexport { Gemini1_5Pro001, Gemini1_5Pro001Literal, Gemini1_5Pro001Options, Gemini1_5Pro001Schema, type Gemini1_5Pro001OptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5Pro002Literal = \"gemini-1.5-pro-002\";\nconst Gemini1_5Pro002Description =\n \"Google's best performing multimodal model with features for a wide variety of reasoning tasks. \\\n Optimized for complex reasoning tasks requiring more intelligence\";\n\nconst Gemini1_5Pro002Schema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5Pro002Literal,\n description: Gemini1_5Pro002Description,\n maxInputTokens: 2000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5Pro002Literal],\n});\n\nconst Gemini1_5Pro002Options = BaseChatModelOptions;\ntype Gemini1_5Pro002OptionsType = z.infer<typeof Gemini1_5Pro002Options>;\n\nclass Gemini1_5Pro002 extends BaseChatModel {\n constructor(options: Gemini1_5Pro002OptionsType) {\n super(Gemini1_5Pro002Schema, options);\n }\n}\n\nexport { Gemini1_5Pro002, Gemini1_5Pro002Literal, Gemini1_5Pro002Options, Gemini1_5Pro002Schema, type Gemini1_5Pro002OptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5ProLatestLiteral = \"gemini-1.5-pro-latest\";\nconst Gemini1_5ProLatestDescription =\n \"Google's best performing multimodal model with features for a wide variety of reasoning tasks. \\\n Optimized for complex reasoning tasks requiring more intelligence\";\n\nconst Gemini1_5ProLatestSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5ProLatestLiteral,\n description: Gemini1_5ProLatestDescription,\n maxInputTokens: 2000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5ProLatestLiteral],\n});\n\nconst Gemini1_5ProLatestOptions = BaseChatModelOptions;\ntype Gemini1_5ProLatestOptionsType = z.infer<typeof Gemini1_5ProLatestOptions>;\n\nclass Gemini1_5ProLatest extends BaseChatModel {\n constructor(options: Gemini1_5ProLatestOptionsType) {\n super(Gemini1_5ProLatestSchema, options);\n }\n}\n\nexport {\n Gemini1_5ProLatest,\n Gemini1_5ProLatestLiteral,\n Gemini1_5ProLatestOptions,\n Gemini1_5ProLatestSchema,\n type Gemini1_5ProLatestOptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini1_5ProLiteral = \"gemini-1.5-pro\";\nconst Gemini1_5ProDescription =\n \"Google's best performing multimodal model with features for a wide variety of reasoning tasks. \\\n Optimized for complex reasoning tasks requiring more intelligence\";\n\nconst Gemini1_5ProSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini1_5ProLiteral,\n description: Gemini1_5ProDescription,\n maxInputTokens: 2000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini1_5ProLiteral],\n});\n\nconst Gemini1_5ProOptions = BaseChatModelOptions;\ntype Gemini1_5ProOptionsType = z.infer<typeof Gemini1_5ProOptions>;\n\nclass Gemini1_5Pro extends BaseChatModel {\n constructor(options: Gemini1_5ProOptionsType) {\n super(Gemini1_5ProSchema, options);\n }\n}\n\nexport { Gemini1_5Pro, Gemini1_5ProLiteral, Gemini1_5ProOptions, Gemini1_5ProSchema, type Gemini1_5ProOptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_0FlashExpLiteral = \"gemini-2.0-flash-exp\";\nconst Gemini2_0FlashExpDescription =\n \"Google's experimental multimodal model with enhanced capabilities. \\\n Designed for cutting-edge performance across complex and high-frequency tasks.\";\n\nconst Gemini2_0FlashExpSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_0FlashExpLiteral,\n description: Gemini2_0FlashExpDescription,\n maxInputTokens: 1000000,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini2_0FlashExpLiteral],\n});\n\nconst Gemini2_0FlashExpOptions = BaseChatModelOptions;\ntype Gemini2_0FlashExpOptionsType = z.infer<typeof Gemini2_0FlashExpOptions>;\n\nclass Gemini2_0FlashExp extends BaseChatModel {\n constructor(options: Gemini2_0FlashExpOptionsType) {\n super(Gemini2_0FlashExpSchema, options);\n }\n}\n\nexport {\n Gemini2_0FlashExp,\n Gemini2_0FlashExpLiteral,\n Gemini2_0FlashExpOptions,\n Gemini2_0FlashExpSchema,\n type Gemini2_0FlashExpOptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_0FlashLiteral = \"gemini-2.0-flash\";\nconst Gemini2_0FlashDescription =\n \"Google's Gemini 2.0 Flash model optimized for low-latency, high-performance tasks. \\\n Supports multimodal inputs including text, images, video, and audio with enhanced speed and efficiency.\";\n\nconst Gemini2_0FlashSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_0FlashLiteral,\n description: Gemini2_0FlashDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini2_0FlashLiteral],\n});\n\nconst Gemini2_0FlashOptions = BaseChatModelOptions;\ntype Gemini2_0FlashOptionsType = z.infer<typeof Gemini2_0FlashOptions>;\n\nclass Gemini2_0Flash extends BaseChatModel {\n constructor(options: Gemini2_0FlashOptionsType) {\n super(Gemini2_0FlashSchema, options);\n }\n}\n\nexport {\n Gemini2_0Flash,\n Gemini2_0FlashLiteral,\n Gemini2_0FlashOptions,\n Gemini2_0FlashSchema,\n type Gemini2_0FlashOptionsType\n};\n\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_0FlashLiteLiteral = \"gemini-2.0-flash-lite\";\nconst Gemini2_0FlashLiteDescription =\n \"Google's lightweight Gemini 2.0 Flash Lite model for high-throughput, low-cost text generation and classification workloads.\";\n\nconst Gemini2_0FlashLiteSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_0FlashLiteLiteral,\n description: Gemini2_0FlashLiteDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 8192,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 8192, 4, 0.95).schema,\n },\n price: pricingData[Gemini2_0FlashLiteLiteral],\n});\n\nconst Gemini2_0FlashLiteOptions = BaseChatModelOptions;\ntype Gemini2_0FlashLiteOptionsType = z.infer<typeof Gemini2_0FlashLiteOptions>;\n\nclass Gemini2_0FlashLite extends BaseChatModel {\n constructor(options: Gemini2_0FlashLiteOptionsType) {\n super(Gemini2_0FlashLiteSchema, options);\n }\n}\n\nexport {\n Gemini2_0FlashLite,\n Gemini2_0FlashLiteLiteral,\n Gemini2_0FlashLiteOptions,\n Gemini2_0FlashLiteSchema,\n type Gemini2_0FlashLiteOptionsType,\n};\n\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_5FlashLiteLiteral = \"gemini-2.5-flash-lite\";\nconst Gemini2_5FlashLiteDescription =\n \"Google's most cost-efficient and fastest model in the 2.5 series. \\\n Optimized for high-volume, latency-sensitive tasks like translation and classification with enhanced reasoning capabilities.\";\n\nconst Gemini2_5FlashLiteSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_5FlashLiteLiteral,\n description: Gemini2_5FlashLiteDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 65536, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 65536, 4, 0.95).schema,\n },\n price: pricingData[Gemini2_5FlashLiteLiteral],\n});\n\nconst Gemini2_5FlashLiteOptions = BaseChatModelOptions;\ntype Gemini2_5FlashLiteOptionsType = z.infer<typeof Gemini2_5FlashLiteOptions>;\n\nclass Gemini2_5FlashLite extends BaseChatModel {\n constructor(options: Gemini2_5FlashLiteOptionsType) {\n super(Gemini2_5FlashLiteSchema, options);\n }\n}\n\nexport {\n Gemini2_5FlashLite,\n Gemini2_5FlashLiteLiteral,\n Gemini2_5FlashLiteOptions,\n Gemini2_5FlashLiteSchema,\n type Gemini2_5FlashLiteOptionsType\n};\n\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_5FlashLitePreview092025Literal = \"gemini-2.5-flash-lite-preview-09-2025\";\nconst Gemini2_5FlashLitePreview092025Description =\n \"Google's preview Flash Lite variant in the Gemini 2.5 family, optimized for low-latency, high-volume tasks.\";\n\nconst Gemini2_5FlashLitePreview092025Schema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_5FlashLitePreview092025Literal,\n description: Gemini2_5FlashLitePreview092025Description,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 65536, 4, 0.95).def,\n schema: GoogleChatModelConfigs.responseSchema(2.0, 1.0, 65536, 4, 0.95).schema,\n },\n price: pricingData[Gemini2_5FlashLitePreview092025Literal],\n});\n\nconst Gemini2_5FlashLitePreview092025Options = BaseChatModelOptions;\ntype Gemini2_5FlashLitePreview092025OptionsType = z.infer<typeof Gemini2_5FlashLitePreview092025Options>;\n\nclass Gemini2_5FlashLitePreview092025 extends BaseChatModel {\n constructor(options: Gemini2_5FlashLitePreview092025OptionsType) {\n super(Gemini2_5FlashLitePreview092025Schema, options);\n }\n}\n\nexport {\n Gemini2_5FlashLitePreview092025,\n Gemini2_5FlashLitePreview092025Literal,\n Gemini2_5FlashLitePreview092025Options,\n Gemini2_5FlashLitePreview092025Schema,\n type Gemini2_5FlashLitePreview092025OptionsType,\n};\n\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_5FlashPreview0417Literal = \"gemini-2.5-flash-preview-04-17\";\nconst Gemini2_5FlashPreview0417Description =\n \"Google's best model in Gemini 2.5 family in terms of price-performance, offering well-rounded capabilities.\";\n\nconst Gemini2_5FlashPreview0417Schema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_5FlashPreview0417Literal,\n description: Gemini2_5FlashPreview0417Description,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 24576).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 24576).schema,\n },\n price: pricingData[Gemini2_5FlashPreview0417Literal],\n});\n\nconst Gemini2_5FlashPreview0417Options = BaseChatModelOptions;\ntype Gemini2_5FlashPreview0417OptionsType = z.infer<typeof Gemini2_5FlashPreview0417Options>;\n\nclass Gemini2_5FlashPreview0417 extends BaseChatModel {\n constructor(options: Gemini2_5FlashPreview0417OptionsType) {\n super(Gemini2_5FlashPreview0417Schema, options);\n }\n}\n\nexport {\n Gemini2_5FlashPreview0417,\n Gemini2_5FlashPreview0417Literal,\n Gemini2_5FlashPreview0417Options,\n Gemini2_5FlashPreview0417Schema,\n type Gemini2_5FlashPreview0417OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_5FlashLiteral = \"gemini-2.5-flash\";\nconst Gemini2_5FlashDescription =\n \"Google's Gemini 2.5 Flash model for enhanced thinking, reasoning, multimodal understanding, and advanced coding.\";\n\nconst Gemini2_5FlashSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_5FlashLiteral,\n description: Gemini2_5FlashDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 24576).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 24576).schema,\n },\n price: pricingData[Gemini2_5FlashLiteral],\n});\n\nconst Gemini2_5FlashOptions = BaseChatModelOptions;\ntype Gemini2_5FlashOptionsType = z.infer<typeof Gemini2_5FlashOptions>;\n\nclass Gemini2_5Flash extends BaseChatModel {\n constructor(options: Gemini2_5FlashOptionsType) {\n super(Gemini2_5FlashSchema, options);\n }\n}\n\nexport { Gemini2_5Flash, Gemini2_5FlashLiteral, Gemini2_5FlashOptions, Gemini2_5FlashSchema, type Gemini2_5FlashOptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_5ProPreview0325Literal = \"gemini-2.5-pro-preview-03-25\";\nconst Gemini2_5ProPreview0325Description =\n \"Google's preview model in Gemini 2.5 family for enhanced thinking, reasoning, multimodal understanding, and advanced coding.\";\n\nconst Gemini2_5ProPreview0325Schema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_5ProPreview0325Literal,\n description: Gemini2_5ProPreview0325Description,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).schema,\n },\n price: pricingData[Gemini2_5ProPreview0325Literal],\n});\n\nconst Gemini2_5ProPreview0325Options = BaseChatModelOptions;\ntype Gemini2_5ProPreview0325OptionsType = z.infer<typeof Gemini2_5ProPreview0325Options>;\n\nclass Gemini2_5ProPreview0325 extends BaseChatModel {\n constructor(options: Gemini2_5ProPreview0325OptionsType) {\n super(Gemini2_5ProPreview0325Schema, options);\n }\n}\n\nexport {\n Gemini2_5ProPreview0325,\n Gemini2_5ProPreview0325Literal,\n Gemini2_5ProPreview0325Options,\n Gemini2_5ProPreview0325Schema,\n type Gemini2_5ProPreview0325OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\nconst Gemini2_5ProLiteral = \"gemini-2.5-pro\";\nconst Gemini2_5ProDescription =\n \"Google's Gemini 2.5 Pro model for enhanced thinking, reasoning, multimodal understanding, and advanced coding.\";\n\nconst Gemini2_5ProSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini2_5ProLiteral,\n description: Gemini2_5ProDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).schema,\n },\n price: pricingData[Gemini2_5ProLiteral],\n});\n\nconst Gemini2_5ProOptions = BaseChatModelOptions;\ntype Gemini2_5ProOptionsType = z.infer<typeof Gemini2_5ProOptions>;\n\nclass Gemini2_5Pro extends BaseChatModel {\n constructor(options: Gemini2_5ProOptionsType) {\n super(Gemini2_5ProSchema, options);\n }\n}\n\nexport {\n Gemini2_5Pro,\n Gemini2_5ProLiteral,\n Gemini2_5ProOptions,\n Gemini2_5ProSchema,\n type Gemini2_5ProOptionsType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\n// Specs reference: https://ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview (retrieved 2026-02-25)\nconst Gemini3_1ProPreviewCustomtoolsLiteral = \"gemini-3.1-pro-preview-customtools\";\nconst Gemini3_1ProPreviewCustomtoolsDescription =\n \"Google's Gemini 3.1 Pro Preview variant optimized for the custom tools endpoint in the Gemini API.\";\n\nconst Gemini3_1ProPreviewCustomtoolsSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini3_1ProPreviewCustomtoolsLiteral,\n description: Gemini3_1ProPreviewCustomtoolsDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).schema,\n },\n price: pricingData[Gemini3_1ProPreviewCustomtoolsLiteral],\n});\n\nconst Gemini3_1ProPreviewCustomtoolsOptions = BaseChatModelOptions;\ntype Gemini3_1ProPreviewCustomtoolsOptionsType = z.infer<typeof Gemini3_1ProPreviewCustomtoolsOptions>;\n\nclass Gemini3_1ProPreviewCustomtools extends BaseChatModel {\n constructor(options: Gemini3_1ProPreviewCustomtoolsOptionsType) {\n super(Gemini3_1ProPreviewCustomtoolsSchema, options);\n }\n}\n\nexport {\n Gemini3_1ProPreviewCustomtools,\n Gemini3_1ProPreviewCustomtoolsLiteral,\n Gemini3_1ProPreviewCustomtoolsOptions,\n Gemini3_1ProPreviewCustomtoolsSchema,\n type Gemini3_1ProPreviewCustomtoolsOptionsType,\n};\n\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\n// Specs reference: https://ai.google.dev/gemini-api/docs/models/gemini-3.1-pro-preview (retrieved 2026-02-25)\nconst Gemini3_1ProPreviewLiteral = \"gemini-3.1-pro-preview\";\nconst Gemini3_1ProPreviewDescription =\n \"Google's Gemini 3.1 Pro Preview model for improved reliability and nuanced understanding in complex reasoning and multimodal tasks.\";\n\nconst Gemini3_1ProPreviewSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini3_1ProPreviewLiteral,\n description: Gemini3_1ProPreviewDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).schema,\n },\n price: pricingData[Gemini3_1ProPreviewLiteral],\n});\n\nconst Gemini3_1ProPreviewOptions = BaseChatModelOptions;\ntype Gemini3_1ProPreviewOptionsType = z.infer<typeof Gemini3_1ProPreviewOptions>;\n\nclass Gemini3_1ProPreview extends BaseChatModel {\n constructor(options: Gemini3_1ProPreviewOptionsType) {\n super(Gemini3_1ProPreviewSchema, options);\n }\n}\n\nexport {\n Gemini3_1ProPreview,\n Gemini3_1ProPreviewLiteral,\n Gemini3_1ProPreviewOptions,\n Gemini3_1ProPreviewSchema,\n type Gemini3_1ProPreviewOptionsType,\n};\n\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\n// Specs reference: https://ai.google.dev/models/gemini (retrieved 2025-12-19)\nconst Gemini3FlashPreviewLiteral = \"gemini-3-flash-preview\";\nconst Gemini3FlashPreviewDescription =\n \"Google's Gemini 3 Flash Preview model - a lightweight and efficient AI model with enhanced multimodal understanding, \\\n reasoning, and advanced coding capabilities. Optimized for speed and cost-effectiveness. \\\n Supports Text, Image, Video, Audio, and PDF inputs. Knowledge cutoff: January 2025.\";\n\nconst Gemini3FlashPreviewSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini3FlashPreviewLiteral,\n description: Gemini3FlashPreviewDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).schema,\n },\n price: pricingData[Gemini3FlashPreviewLiteral],\n});\n\nconst Gemini3FlashPreviewOptions = BaseChatModelOptions;\ntype Gemini3FlashPreviewOptionsType = z.infer<typeof Gemini3FlashPreviewOptions>;\n\nclass Gemini3FlashPreview extends BaseChatModel {\n constructor(options: Gemini3FlashPreviewOptionsType) {\n super(Gemini3FlashPreviewSchema, options);\n }\n}\n\nexport {\n Gemini3FlashPreview,\n Gemini3FlashPreviewLiteral,\n Gemini3FlashPreviewOptions,\n Gemini3FlashPreviewSchema,\n type Gemini3FlashPreviewOptionsType,\n};\n\n","import { z } from \"zod\";\n\nimport { ChatModelSchema } from \"@adaline/provider\";\n\nimport { GoogleChatModelConfigs } from \"../../configs\";\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModel, BaseChatModelOptions } from \"./base-chat-model.google\";\nimport { GoogleChatModelModalities, GoogleChatModelModalitiesEnum, GoogleChatModelRoles, GoogleChatModelRolesMap } from \"./types\";\n\n// Specs reference: https://ai.google.dev/models/gemini (retrieved 2025-11-18)\nconst Gemini3ProPreviewLiteral = \"gemini-3-pro-preview\";\nconst Gemini3ProPreviewDescription =\n \"Google's latest Gemini 3 Pro Preview model with enhanced multimodal understanding, reasoning, and thinking capabilities. \\\n Supports Text, Image, Video, Audio, and PDF inputs. Knowledge cutoff: January 2025.\";\n\nconst Gemini3ProPreviewSchema = ChatModelSchema(GoogleChatModelRoles, GoogleChatModelModalitiesEnum).parse({\n name: Gemini3ProPreviewLiteral,\n description: Gemini3ProPreviewDescription,\n maxInputTokens: 1048576,\n maxOutputTokens: 65536,\n roles: GoogleChatModelRolesMap,\n modalities: GoogleChatModelModalities,\n config: {\n def: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95, 1, 65536).schema,\n },\n price: pricingData[Gemini3ProPreviewLiteral],\n});\n\nconst Gemini3ProPreviewOptions = BaseChatModelOptions;\ntype Gemini3ProPreviewOptionsType = z.infer<typeof Gemini3ProPreviewOptions>;\n\nclass Gemini3ProPreview extends BaseChatModel {\n constructor(options: Gemini3ProPreviewOptionsType) {\n super(Gemini3ProPreviewSchema, options);\n }\n}\n\nexport {\n Gemini3ProPreview,\n Gemini3ProPreviewLiteral,\n Gemini3ProPreviewOptions,\n Gemini3ProPreviewSchema,\n type Gemini3ProPreviewOptionsType,\n};\n\n\n\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchemaType } from \"@adaline/provider\";\nimport { EmbeddingTextModalityLiteral } from \"@adaline/types\";\n\nconst GoogleEmbeddingModelModalities: EmbeddingModelSchemaType[\"modalities\"] = [EmbeddingTextModalityLiteral];\n\nconst GoogleEmbeddingModelModalitiesEnum = z.enum([EmbeddingTextModalityLiteral]);\n\nexport { GoogleEmbeddingModelModalitiesEnum, GoogleEmbeddingModelModalities };\n","import { z } from \"zod\";\n\nconst GoogleGetEmbeddingsResponse = z.object({\n embeddings: z.array(\n z.object({\n values: z.array(z.number()),\n })\n ),\n});\ntype GoogleGetEmbeddingsResponseType = z.infer<typeof GoogleGetEmbeddingsResponse>;\n\nexport { GoogleGetEmbeddingsResponse, type GoogleGetEmbeddingsResponseType };\n","import { z } from \"zod\";\n\nconst GoogleEmbeddingRequestInput = z.object({\n model: z.string().min(1),\n content: z.object({\n parts: z\n .array(\n z.object({\n text: z.string().min(1),\n })\n )\n .min(1),\n }),\n});\ntype GoogleEmbeddingRequestInputType = z.infer<typeof GoogleEmbeddingRequestInput>;\n\nconst GoogleEmbeddingRequest = z.object({\n model: z.string().min(1).optional(),\n requests: z.array(GoogleEmbeddingRequestInput).min(1),\n outputDimensionality: z.number().int().min(1).optional(),\n});\ntype GoogleEmbeddingRequestType = z.infer<typeof GoogleEmbeddingRequest>;\n\nexport { GoogleEmbeddingRequest, GoogleEmbeddingRequestInput, type GoogleEmbeddingRequestType, type GoogleEmbeddingRequestInputType };\n","import { z } from \"zod\";\n\nimport {\n EmbeddingModelSchemaType,\n EmbeddingModelV1,\n HeadersType,\n InvalidConfigError,\n InvalidEmbeddingRequestsError,\n InvalidModelRequestError,\n ModelResponseError,\n ParamsType,\n removeUndefinedEntries,\n UrlType,\n urlWithoutTrailingSlash,\n} from \"@adaline/provider\";\nimport {\n Config,\n ConfigType,\n EmbeddingRequests,\n EmbeddingRequestsType,\n EmbeddingResponseType,\n EmbeddingTextModalityLiteral,\n FloatEmbeddingLiteral,\n FloatEmbeddingType,\n} from \"@adaline/types\";\n\nimport { Google } from \"../../provider/provider.google\";\nimport { GoogleEmbeddingRequest, GoogleEmbeddingRequestInputType, GoogleGetEmbeddingsResponse } from \"./types\";\n\nconst BaseEmbeddingModelOptions = z.object({\n modelName: z.string(),\n apiKey: z.string(),\n baseUrl: z.string().url().optional(),\n getEmbeddingsUrl: z.string().url().optional(),\n});\ntype BaseEmbeddingModelOptionsType = z.infer<typeof BaseEmbeddingModelOptions>;\n\nclass BaseEmbeddingModel implements EmbeddingModelV1<EmbeddingModelSchemaType> {\n readonly version = \"v1\" as const;\n modelSchema: EmbeddingModelSchemaType;\n readonly modelName: string;\n\n private readonly apiKey: string;\n private readonly baseUrl: string;\n private readonly getEmbeddingsUrl: string;\n\n constructor(modelSchema: EmbeddingModelSchemaType, options: BaseEmbeddingModelOptionsType) {\n const parsedOptions = BaseEmbeddingModelOptions.parse(options);\n this.modelSchema = modelSchema;\n this.modelName = parsedOptions.modelName;\n this.apiKey = parsedOptions.apiKey;\n this.baseUrl = urlWithoutTrailingSlash(parsedOptions.baseUrl || Google.baseUrl);\n this.getEmbeddingsUrl = urlWithoutTrailingSlash(\n parsedOptions.getEmbeddingsUrl || `${this.baseUrl}/models/${this.modelName}:batchEmbedContents?key=${this.apiKey}`\n );\n }\n\n getDefaultBaseUrl(): UrlType {\n return this.baseUrl;\n }\n\n getDefaultHeaders(): HeadersType {\n return {\n \"Content-Type\": \"application/json\",\n };\n }\n\n getDefaultParams(): ParamsType {\n return {\n model: this.modelName,\n };\n }\n\n // Google returns retry delay information in the response body rather than headers.\n // The response body contains error.details with a RetryInfo object:\n // {\"@type\":\"type.googleapis.com/google.rpc.RetryInfo\",\"retryDelay\":\"45s\"}\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(_responseHeaders: HeadersType, responseData: unknown): { shouldRetry: boolean; delayMs: number } {\n const shouldRetry = true;\n let delayMs = 0;\n\n // parse duration from retryDelay value of format \"45s\" or \"1.5s\" or \"45.499282066s\"\n const parseDuration = (duration: string): number => {\n const match = duration.match(/^(\\d+(?:\\.\\d+)?)s$/);\n if (match) {\n return Math.ceil(parseFloat(match[1]) * 1000);\n }\n return 0;\n };\n\n if (responseData && typeof responseData === \"object\") {\n const data = responseData as { error?: { details?: Array<{ \"@type\"?: string; retryDelay?: string }> } };\n if (data.error?.details && Array.isArray(data.error.details)) {\n const retryInfo = data.error.details.find(\n (detail) => detail[\"@type\"] === \"type.googleapis.com/google.rpc.RetryInfo\"\n );\n if (retryInfo?.retryDelay) {\n delayMs = parseDuration(retryInfo.retryDelay);\n }\n }\n }\n\n return { shouldRetry, delayMs };\n }\n\n // TODO: unused method, not tested\n getTokenCount(requests: EmbeddingRequestsType): number {\n return requests.requests.reduce((acc, request) => acc + request.length, 0);\n }\n\n transformModelRequest(request: any): {\n modelName: string | undefined;\n config: ConfigType;\n embeddingRequests: EmbeddingRequestsType;\n } {\n const safeRequest = GoogleEmbeddingRequest.safeParse(request);\n if (!safeRequest.success) {\n throw new InvalidModelRequestError({ info: \"Invalid model request\", cause: safeRequest.error });\n }\n\n const parsedRequest = safeRequest.data;\n\n const modelName = parsedRequest.model;\n\n const _config = {\n outputDimensionality: parsedRequest.outputDimensionality,\n };\n const config = Config().parse(removeUndefinedEntries(_config));\n\n const embeddingRequests: EmbeddingRequestsType = {\n modality: EmbeddingTextModalityLiteral,\n requests: parsedRequest.requests.reduce((acc, request) => {\n acc.push(...request.content.parts.map((p) => p.text));\n return acc;\n }, [] as string[]),\n };\n\n return {\n modelName,\n config,\n embeddingRequests,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n transformConfig(config: ConfigType, requests?: EmbeddingRequestsType): ParamsType {\n const _parsedConfig = this.modelSchema.config.schema.safeParse(config);\n if (!_parsedConfig.success) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: _parsedConfig.error,\n });\n }\n\n const parsedConfig = _parsedConfig.data as ConfigType;\n Object.keys(parsedConfig as ConfigType).forEach((key) => {\n if (!this.modelSchema.config.def[key]) {\n throw new InvalidConfigError({\n info: `Invalid config for model : '${this.modelName}'`,\n cause: new Error(`Invalid config key : '${key}', \n available keys : [${Object.keys(this.modelSchema.config.def).join(\", \")}]`),\n });\n }\n });\n\n const transformedConfig = Object.keys(parsedConfig).reduce((acc, key) => {\n const def = this.modelSchema.config.def[key];\n const paramKey = def.param;\n const paramValue = parsedConfig[key];\n acc[paramKey] = paramValue;\n return acc;\n }, {} as ParamsType);\n\n return transformedConfig;\n }\n\n transformEmbeddingRequests(requests: EmbeddingRequestsType): ParamsType {\n const _parsedRequests = EmbeddingRequests().safeParse(requests);\n if (!_parsedRequests.success) {\n throw new InvalidEmbeddingRequestsError({ info: \"Invalid embedding requests\", cause: _parsedRequests.error });\n }\n\n if (requests.modality !== EmbeddingTextModalityLiteral) {\n throw new InvalidEmbeddingRequestsError({\n info: `Invalid embedding requests for model : '${this.modelName}'`,\n cause: new Error(`Only '${EmbeddingTextModalityLiteral}' modality is supported for model : '${this.modelName}'`),\n });\n }\n\n const _requests: GoogleEmbeddingRequestInputType[] = _parsedRequests.data.requests.map((request) => {\n return {\n model: `models/${this.modelName}`,\n content: { parts: [{ text: request as string }] },\n };\n });\n\n return {\n requests: _requests,\n };\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getGetEmbeddingsUrl(config?: ConfigType, requests?: EmbeddingRequestsType): Promise<UrlType> {\n return new Promise((resolve) => {\n resolve(this.getEmbeddingsUrl);\n });\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async getGetEmbeddingsHeaders(config?: ConfigType, requests?: EmbeddingRequestsType): Promise<HeadersType> {\n return new Promise((resolve) => {\n resolve(this.getDefaultHeaders());\n });\n }\n\n async getGetEmbeddingsData(config: ConfigType, requests: EmbeddingRequestsType): Promise<ParamsType> {\n return new Promise((resolve) => {\n const _config = this.transformConfig(config);\n const _requests = this.transformEmbeddingRequests(requests);\n\n if (requests.requests.length === 0) {\n throw new InvalidEmbeddingRequestsError({\n info: `Invalid embedding requests for model : '${this.modelName}'`,\n cause: new Error(\"requests cannot be empty\"),\n });\n }\n\n if (_config.outputDimensionality) {\n (_requests as any).requests.forEach((request: any) => {\n request.outputDimensionality = _config.outputDimensionality;\n });\n delete _config.outputDimensionality;\n }\n\n resolve({\n ...this.getDefaultParams(),\n ..._config,\n ..._requests,\n });\n });\n }\n\n transformGetEmbeddingsResponse(response: any): EmbeddingResponseType {\n const safe = GoogleGetEmbeddingsResponse.safeParse(response);\n if (safe.success) {\n const parsedResponse = safe.data;\n const embeddings = parsedResponse.embeddings.map((embedding, index) => {\n return {\n index,\n embedding: embedding.values,\n } as FloatEmbeddingType;\n });\n\n return {\n encodingFormat: FloatEmbeddingLiteral,\n embeddings: embeddings,\n } as EmbeddingResponseType;\n }\n\n throw new ModelResponseError({ info: \"Invalid response from model\", cause: safe.error });\n }\n}\n\nexport { BaseEmbeddingModel, BaseEmbeddingModelOptions, type BaseEmbeddingModelOptionsType };\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { GoogleEmbeddingModelConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.google\";\nimport { GoogleEmbeddingModelModalities, GoogleEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst Text_Embedding_001Literal = \"text-embedding-001\";\nconst Text_Embedding_001_Description = \"text-embedding-001\";\n\nconst Text_Embedding_001Schema = EmbeddingModelSchema(GoogleEmbeddingModelModalitiesEnum).parse({\n name: Text_Embedding_001Literal,\n description: Text_Embedding_001_Description,\n modalities: GoogleEmbeddingModelModalities,\n maxInputTokens: 2048,\n maxOutputTokens: 768,\n config: {\n def: GoogleEmbeddingModelConfigs.base(768).def,\n schema: GoogleEmbeddingModelConfigs.base(768).schema,\n },\n});\n\nconst Text_Embedding_001Options = BaseEmbeddingModelOptions;\ntype Text_Embedding_001OptionsType = z.infer<typeof Text_Embedding_001Options>;\n\nclass Text_Embedding_001 extends BaseEmbeddingModel {\n constructor(options: Text_Embedding_001OptionsType) {\n super(Text_Embedding_001Schema, options);\n }\n}\n\nexport {\n Text_Embedding_001,\n Text_Embedding_001Options,\n Text_Embedding_001Schema,\n Text_Embedding_001Literal,\n type Text_Embedding_001OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { GoogleEmbeddingModelConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.google\";\nimport { GoogleEmbeddingModelModalities, GoogleEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst Text_Embedding_004Literal = \"text-embedding-004\";\nconst Text_Embedding_004_Description = \"text-embedding-004\";\n\nconst Text_Embedding_004Schema = EmbeddingModelSchema(GoogleEmbeddingModelModalitiesEnum).parse({\n name: Text_Embedding_004Literal,\n description: Text_Embedding_004_Description,\n modalities: GoogleEmbeddingModelModalities,\n maxInputTokens: 2048,\n maxOutputTokens: 768,\n config: {\n def: GoogleEmbeddingModelConfigs.base(768).def,\n schema: GoogleEmbeddingModelConfigs.base(768).schema,\n },\n});\n\nconst Text_Embedding_004Options = BaseEmbeddingModelOptions;\ntype Text_Embedding_004OptionsType = z.infer<typeof Text_Embedding_004Options>;\n\nclass Text_Embedding_004 extends BaseEmbeddingModel {\n constructor(options: Text_Embedding_004OptionsType) {\n super(Text_Embedding_004Schema, options);\n }\n}\n\nexport {\n Text_Embedding_004,\n Text_Embedding_004Options,\n Text_Embedding_004Schema,\n Text_Embedding_004Literal,\n type Text_Embedding_004OptionsType,\n};\n"]}