@adaline/vertex 1.9.1 → 1.10.1
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.
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -12
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/models/chat-models/base-chat-model.vertex.ts","../../../../packages/types/src/message/roles.ts","../../../../packages/types/src/message/content/image-content.ts","../../../../packages/types/src/message/content/pdf-content.ts","../../../../packages/types/src/message/content/reasoning-content.ts","../../../../packages/types/src/message/content/text-content.ts","../../../../packages/types/src/message/content/tool-call-content.ts","../../../../packages/types/src/message/content/tool-response-content.ts","../../../../packages/types/src/message/content/content.ts","../../../../packages/types/src/message/message.ts","../../../../packages/types/src/chat/chat-response.ts","../../../../packages/types/src/config/config.ts","../../../../packages/types/src/config/mcp.config.ts","../../../../packages/types/src/config/response-schema.config.ts","../../../../packages/types/src/embedding/embedding-requests.ts","../../../../packages/types/src/embedding/embedding-response.ts","../../../../packages/types/src/errors/gateway-base.error.ts","../../../../packages/types/src/pricing/pricing-tiers.ts","../../../../packages/types/src/tool/function-tool.ts","../../../../packages/types/src/tool/tool.ts","../../../../packages/types/src/utils/create-message.ts","../../../../packages/provider/src/errors/provider.error.ts","../../../../packages/provider/src/errors/model.error.ts","../../../../packages/provider/src/errors/model-response.error.ts","../../../../packages/provider/src/errors/invalid-model-request.error.ts","../../../../packages/provider/src/errors/invalid-config.error.ts","../../../../packages/provider/src/errors/invalid-messages.error.ts","../../../../packages/provider/src/errors/invalid-tools.error.ts","../../../../packages/provider/src/errors/invalid-embedding-requests.error.ts","../../../../packages/provider/src/types/config/multi-string-config-item.ts","../../../../packages/provider/src/types/config/object-schema-config-item.ts","../../../../packages/provider/src/types/config/paired-select-config-item.ts","../../../../packages/provider/src/types/config/range-config-item.ts","../../../../packages/provider/src/types/config/select-boolean-config-item.ts","../../../../packages/provider/src/types/config/select-string-config-item.ts","../../../../packages/provider/src/types/config/config-item.ts","../../../../packages/provider/src/model/chat-model/chat-model.schema.v1.ts","../../../../packages/provider/src/model/embedding-model/embedding-model.schema.v1.ts","../../../../packages/provider/src/types/headers.ts","../../../../packages/provider/src/types/params.ts","../../../../packages/provider/src/types/url.ts","../../../../packages/provider/src/utils/common-config.def.chat-model.ts","../../../../packages/provider/src/utils/common-config.def.word-embedding.ts","../../../../packages/provider/src/utils/remove-undefined-entries.ts","../../../../packages/provider/src/utils/is-running-in-browser.ts","../../../../packages/provider/src/utils/base64.ts","../../../../packages/provider/src/utils/url.ts","../../google/src/configs/chat-model/base.config.chat-model.google.ts","../../google/src/configs/chat-model/common.config.chat-model.google.ts","../../google/src/configs/chat-model/response-schema.config.chat-model.google.ts","../../google/src/configs/chat-model/reasoning.config.chat-model.google.ts","../../google/src/configs/embedding-model/base.config.embedding-model.google.ts","../../google/src/configs/embedding-model/common.config.embedding-model.google.ts","../../google/src/configs/configs.google.ts","../../google/src/provider/provider.google.ts","../../google/src/models/pricing.json","../../google/src/models/chat-models/types/roles.chat-model.google.ts","../../google/src/models/chat-models/types/modalities.chat-model.google.ts","../../google/src/models/chat-models/types/response.chat-model.google.ts","../../google/src/models/chat-models/types/request.chat-model.google.ts","../../google/src/models/chat-models/base-chat-model.google.ts","../../google/src/models/chat-models/gemini-1.5-flash-001.google.ts","../../google/src/models/chat-models/gemini-1.5-flash-002.google.ts","../../google/src/models/chat-models/gemini-1.5-flash-latest.google.ts","../../google/src/models/chat-models/gemini-1.5-flash.google.ts","../../google/src/models/chat-models/gemini-1.5-pro-001.google.ts","../../google/src/models/chat-models/gemini-1.5-pro-002.google.ts","../../google/src/models/chat-models/gemini-1.5-pro-latest.google.ts","../../google/src/models/chat-models/gemini-1.5-pro.google.ts","../../google/src/models/chat-models/gemini-2.0-flash-exp.google.ts","../../google/src/models/chat-models/gemini-2.0-flash.google.ts","../../google/src/models/chat-models/gemini-2.5-flash-lite.google.ts","../../google/src/models/chat-models/gemini-2.5-flash-preview-04-17.google.ts","../../google/src/models/chat-models/gemini-2.5-flash.google.ts","../../google/src/models/chat-models/gemini-2.5-pro-preview-03-25.google.ts","../../google/src/models/chat-models/gemini-2.5-pro.google.ts","../../google/src/models/chat-models/gemini-3-pro-preview.google.ts","../../google/src/models/embedding-models/types/modalitites.embedding-model.google.ts","../../google/src/models/embedding-models/types/response.embedding-model.google.ts","../../google/src/models/embedding-models/types/request.embedding-model.google.ts","../../google/src/models/embedding-models/base-embedding-model.google.ts","../../google/src/models/embedding-models/text-embedding-001.google.ts","../../google/src/models/embedding-models/text-embedding-004.google.ts","../src/provider/provider.vertex.ts","../src/models/pricing.json","../src/models/chat-models/gemini-1-5-flash-001.vertex.ts","../src/models/chat-models/gemini-1-5-flash-002.vertex.ts","../src/models/chat-models/gemini-1-5-flash.vertex.ts","../src/models/chat-models/gemini-1-5-pro-001.vertex.ts","../src/models/chat-models/gemini-1-5-pro-002.vertex.ts","../src/models/chat-models/gemini-1-5-pro.vertex.ts","../src/models/chat-models/gemini-1.5-flash-latest.vertex.ts","../src/models/chat-models/gemini-1.5-pro-latest.vertex.ts","../src/models/chat-models/gemini-2-0-flash-exp.vertex.ts","../src/models/chat-models/gemini-2-0-flash.vertex.ts","../src/models/chat-models/gemini-2-5-flash-lite.vertex.ts","../src/models/chat-models/gemini-2.5-flash-preview-04-17.vertex.ts","../src/models/chat-models/gemini-2.5-flash.vertex.ts","../src/models/chat-models/gemini-2.5-pro-preview-03-25.vertex.ts","../src/models/chat-models/gemini-2.5-pro.vertex.ts","../src/models/chat-models/gemini-3-pro-preview.vertex.ts","../src/models/embedding-models/types/modalitites.embedding-model.vertex.ts","../src/models/embedding-models/types/response.embedding-model.vertex.ts","../src/models/embedding-models/types/request.embedding-model.vertex.ts","../src/models/embedding-models/base-embedding-model.vertex.ts","../src/configs/embedding-model/common.config.embedding-model.vertex.ts","../src/configs/embedding-model/base.config.embedding-model.vertex.ts","../src/configs/configs.vertex.ts","../src/models/embedding-models/text-embedding-004.vertex.ts","../src/models/embedding-models/text-multilingual-embedding-002.vertex.ts","../src/models/embedding-models/textembedding-gecko-multilingual-001.vertex.ts","../src/models/embedding-models/textembedding-gecko-003.vertex.ts"],"names":["SystemRoleLiteral","UserRoleLiteral","AssistantRoleLiteral","ToolRoleLiteral","RoleLiterals","RoleEnum","z","PartialRoleLiterals","PartialRoleEnum","ImageModalityLiteral","Base64ImageContentTypeLiteral","Base64ImageContentMediaTypeLiterals","Base64ImageContentValue","UrlImageContentTypeLiteral","UrlImageContentValue","ImageContentValue","ImageContentDetails","ImageContentDetailsLiteral","ImageContent","Metadata","PdfModalityLiteral","Base64PdfContentTypeLiteral","Base64PdfContentValue","UrlPdfContentTypeLiteral","UrlPdfContentValue","PdfContentValue","PdfContent","ReasoningModalityLiteral","PartialReasoningModalityLiteral","ReasoningContentTypeLiteral","RedactedReasoningContentTypeLiteral","ReasoningContentValue","RedactedReasoningContentValue","ReasoningContentValueUnion","ReasoningContent","PartialReasoningContentValue","PartialReasoningContentValueUnion","PartialReasoningContent","TextModalityLiteral","TextContent","PartialTextModalityLiteral","PartialTextContent","ToolCallModalityLiteral","ToolCallContent","PartialToolCallModalityLiteral","PartialToolCallContent","ToolResponseModalityLiteral","ToolResponseContent","PartialToolResponseModalityLiteral","PartialToolResponseContent","ModalityLiterals","ModalityEnum","Content","TextContentMetadata","ImageContentMetadata","PdfContentMetadata","ToolCallContentMetadata","ToolResponseContentMetadata","ReasoningContentMetadata","PartialModalityLiterals","PartialModalityEnum","PartialContent","PartialTextContentMetadata","PartialToolCallContentMetadata","PartialReasoningContentMetadata","PartialToolResponseContentMetadata","Message","Role","MessageMetadata","PartialMessage","ChatUsage","ChatBaseLogProb","ChatLogProb","ChatLogProbs","PartialChatUsage","PartialChatResponse","Config","McpServerToolConfiguration","McpServer","url","ResponseSchemaTypes","ResponseSchemaTypesLiteral","ResponseSchemaProperty","ResponseSchemaStructure","ResponseSchema","EmbeddingTextModalityLiteral","EmbeddingTokenModalityLiteral","EmbeddingModalityLiterals","EmbeddingModalityEnum","TextEmbeddingRequests","TokenEmbeddingRequests","EmbeddingRequests","FloatEmbeddingLiteral","FloatEmbedding","Base64EmbeddingLiteral","Base64Embedding","EmbeddingsUsage","safeStringify","obj","seen","key","value","getErrorMessage","error","GatewayBaseErrorLiteral","GatewayBaseError","_GatewayBaseError","info","cause","name","ChatModelTokenPairPrice","ChatModelTokenTypePrice","ChatModelTokenRangePrice","t","ChatModelPrice","data","ctx","tokenRanges","i","prev","curr","last","FunctionToolLiteral","FunctionParameterTypesLiteral","FunctionParameter","FunctionParameters","Function","ToolTypesLiteral","FunctionRequestRetry","FunctionRequestHttp","FunctionRequest","FunctionTool","ToolLiterals","Tool","FunctionToolMetadata","createTextContent","content","createToolCallContent","index","id","args","serverName","createPartialTextMessage","role","createPartialToolCallMessage","ProviderErrorLiteral","ProviderError","_ProviderError","ModelErrorLiteral","ModelError","_ModelError","ModelResponseErrorLiteral","ModelResponseError","_ModelResponseError","InvalidModelRequestErrorLiteral","InvalidModelRequestError","_InvalidModelRequestError","InvalidConfigErrorLiteral","InvalidConfigError","_InvalidConfigError","InvalidMessagesErrorLiteral","InvalidMessagesError","_InvalidMessagesError","InvalidToolsErrorLiteral","InvalidToolsError","_InvalidToolsError","InvalidEmbeddingRequestsErrorLiteral","InvalidEmbeddingRequestsError","_InvalidEmbeddingRequestsError","MultiStringConfigItemTypeLiteral","MultiStringConfigItemDef","MultiStringConfigItemSchema","max","MultiStringConfigItem","__spreadValues","ObjectSchemaConfigItemTypeLiteral","ObjectSchemaConfigItemDef","ObjectSchemaConfigItemSchema","schema","ObjectSchemaConfigItem","PairedSelectConfigItemTypeLiteral","PairedSelectChoice","PairedSelectFieldDef","PairedSelectConfigItemDef","createFieldEnum","choices","values","choice","first","rest","PairedSelectConfigItemSchema","fields","shape","acc","field","PairedSelectConfigItem","parsed","fieldKeys","RangeConfigItemTypeLiteral","RangeConfigItemDef","RangeConfigItemSchema","min","step","defaultValue","RangeConfigItem","SelectBooleanConfigItemTypeLiteral","SelectBooleanConfigItemDef","SelectBooleanConfigItemSchema","SelectBooleanConfigItem","SelectStringConfigItemTypeLiteral","SelectStringConfigItemDef","SelectStringConfigItemSchema","SelectStringConfigItem","ConfigItemLiterals","ConfigItemDef","ChatModelSchema","Roles","Modalities","config","_a","_b","defKeys","schemaKeys","EmbeddingModelSchema","Params","Url","TEMPERATURE","MAX_TOKENS","MAX_REASONING_TOKENS","STOP","TOP_A","TOP_P","TOP_K","MIN_P","FREQUENCY_PENALTY","PRESENCE_PENALTY","SEED","REPETITION_PENALTY","LOG_PROBS","TOP_LOG_PROBS","ECHO","RESPONSE_FORMAT","RESPONSE_FORMAT_WITH_SCHEMA","RESPONSE_SCHEMA","MCP_SERVERS","CHAT_CONFIG","DIMENSIONS","ENCODING_FORMAT","EMBEDDING_CONFIG","removeUndefinedEntries","record","_","isRunningInBrowser","convertBase64ToUint8Array","base64String","base64Url","latin1string","byte","urlWithoutTrailingSlash","bt","Pt","_t","Po","St","Et","W","a","Ot","_o","N","l","r","n","s","m","So","qe","p","h","P","y","Eo","GOOGLE_SAFETY_CATEGORIES","GOOGLE_SAFETY_THRESHOLDS","formatSafetyLabel","prefix","letter","GOOGLE_SAFETY_CATEGORY_OPTIONS","category","GOOGLE_SAFETY_THRESHOLD_OPTIONS","threshold","temperature","_default","maxTokens","maxOutputTokens","stop","maxSequences","topP","presencePenalty","seed","toolChoice","safetySettings","reasoningEnabled","ChatModelBaseConfigSchema","maxTemperature","defaultTemperature","defaultTopP","ChatModelBaseConfigDef","responseSchema","responseFormat","GoogleChatModelResponseSchemaConfigDef","__spreadProps","GoogleChatModelResponseSchemaConfigSchema","ChatModelReasoningConfigSchema","ChatModelReasoningConfigDef","dimensions","maxDimensions","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","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","options","modelName","model","parsedOptions","pricing_default","GoogleChatModelRoles","GoogleChatAssistantRoleLiteral","GoogleChatToolRoleLiteral","GoogleChatModelRolesMap","GoogleChatModelModalities","GoogleChatModelModalitiesEnum","GoogleCompleteChatTextResponse","GoogleCompleteChatToolResponse","GoogleCompleteChatResponse","GoogleStreamChatTextResponse","GoogleStreamChatToolResponse","GoogleStreamChatResponse","GoogleChatContentPartText","GoogleChatContentPartInlineData","GoogleChatContentPartFileData","GoogleChatContentPartFunctionCall","GoogleChatContentPartFunctionResponse","GoogleChatContent","GoogleChatSystemInstruction","GoogleChatTool","GoogleChatToolConfig","GoogleChatGenerationConfig","GoogleChatSafetySettings","GoogleChatRequest","BaseChatModelOptions","BaseChatModel","modelSchema","responseHeaders","messages","message","__async","downloadPdf","headers","response","arrayBuffer","existsInGoogleFiles","fileId","existingFile","file","uploadPdfToGoogleFiles","pdfBuffer","uploadResponse","uploadUrl","uploadHeaders","fileUploadResponse","getGoogleFilesUrl","existingFileUri","base64Data","pdfBase64Prefix","processedMessages","processedContent","fileUri","request","safeRequest","parsedRequest","systemInstruction","generationConfig","toolConfig","_config","part","_content","c","tools","tool","_toolChoice","_parsedConfig","parsedConfig","transformedConfig","def","paramKey","paramValue","configToolChoice","responseSchemaConfig","stripBase64Prefix","prefixMatch","parsedMessages","parsedMessage","nonSystemMessages","assistantContent","userContent","toolResponseContent","getNextExpectedRoles","parsedTool","resolve","transformedMessages","transformedTools","safe","parsedResponse","usage","contentItem","safetyRatings","rating","chunk","buffer","__asyncGenerator","lines","line","completeLine","structuredLine","partialResponse","messagePart","toolCall","query","__yieldStar","newData","newBuffer","currentIndex","newlineIndex","jsonStr","sanitizedHeaders","Gemini1_5Flash001Description","Gemini1_5Flash002Description","Gemini1_5FlashLatestDescription","Gemini1_5FlashDescription","Gemini1_5Pro001Description","Gemini1_5Pro002Description","Gemini1_5ProLatestDescription","Gemini1_5ProDescription","Gemini2_0FlashExpLiteral","Gemini2_0FlashExpDescription","Gemini2_0FlashExpSchema","Gemini2_0FlashDescription","Gemini2_5FlashLiteDescription","Gemini2_5FlashPreview0417Description","Gemini2_5FlashDescription","Gemini2_5ProPreview0325Description","Gemini2_5ProDescription","Gemini3ProPreviewDescription","GoogleEmbeddingModelModalities","GoogleEmbeddingModelModalitiesEnum","GoogleGetEmbeddingsResponse","GoogleEmbeddingRequestInput","GoogleEmbeddingRequest","BaseEmbeddingModelOptions","BaseEmbeddingModel","requests","embeddingRequests","_parsedRequests","_requests","embeddings","embedding","Text_Embedding_001_Description","Text_Embedding_004_Description","Vertex","Gemini2_0FlashExp","Gemini2_0FlashExpOptions","Text_Multilingual_Embedding_002Literal","Text_Multilingual_Embedding_002","Text_Multilingual_Embedding_002Options","Text_Multilingual_Embedding_002Schema","Text_Embedding_Gecko_003Literal","Text_Embedding_Gecko_003","Text_Embedding_Gecko_003Options","Text_Embedding_Gecko_003Schema","Text_Embedding_Gecko_Multilingual_001Literal","Text_Embedding_Gecko_Multilingual_001","Text_Embedding_Gecko_Multilingual_001Options","Text_Embedding_Gecko_Multilingual_001Schema","D","location","projectId","publisher","BaseChatModelVertex","u","baseUrl","A","serviceAccountConfig","now","token","SignJWT","tokenResponse","errorText","tokenData","privateKeyPem","privateKeyRaw","binaryString","bytes","Ze","Qe","oo","to","no","so","eo","io","Fn","ao","ro","lo","mo","po","co","go","VertexEmbeddingModelModalities","Je","VertexEmbeddingModelModalitiesEnum","VertexGetEmbeddingsResponse","VertexEmbeddingRequest","_c","_d","q","wt","dn","instance","G","Gt","prediction","An","Tt","ln","autoTruncate","VertexEmbeddingModelConfigs","Yt","Text_Multilingual_Embedding_002_Description","Text_Embedding_Gecko_Multilingual_001_Description","Text_Embedding_Gecko_003_Description"],"mappings":"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","file":"index.js","sourcesContent":["import { SignJWT } from \"jose\";\nimport { z } from \"zod\";\n\nimport { BaseChatModel } from \"@adaline/google\";\nimport { ChatModelSchemaType, HeadersType, ModelError, ModelResponseError } from \"@adaline/provider\";\nimport { ChatModelPriceType } from \"@adaline/types\";\n\nimport { Vertex } from \"../../provider/provider.vertex\";\nimport pricingData from \"../pricing.json\";\n\nconst BaseChatModelOptions = z.discriminatedUnion(\"authType\", [\n z.object({\n authType: z.literal(\"accessToken\"),\n accessToken: z.string(),\n modelName: z.string(),\n baseUrl: z.string().url().optional(),\n location: z.string().optional(),\n projectId: z.string().optional(),\n publisher: z.string().optional(),\n }),\n z.object({\n authType: z.literal(\"serviceAccount\"),\n serviceAccount: z.object({\n client_email: z.string().email(),\n private_key: z.string(),\n type: z.string().optional(),\n project_id: z.string().optional(),\n private_key_id: z.string().optional(),\n client_id: z.string().optional(),\n auth_uri: z.string().url().optional(),\n token_uri: z.string().url().optional(),\n auth_provider_x509_cert_url: z.string().url().optional(),\n client_x509_cert_url: z.string().url().optional(),\n universe_domain: z.string().optional(),\n }),\n\n modelName: z.string(),\n baseUrl: z.string().url().optional(),\n location: z.string().optional(),\n projectId: z.string().optional(),\n publisher: z.string().optional(),\n tokenLifetimeHours: z.number().min(0.1).max(24).default(1),\n }),\n]);\ntype BaseChatModelOptionsType = z.infer<typeof BaseChatModelOptions>;\n\nclass BaseChatModelVertex extends BaseChatModel {\n readonly version = \"v1\" as const;\n modelSchema: ChatModelSchemaType;\n modelName: string;\n\n private readonly authOptions: BaseChatModelOptionsType;\n private readonly location: string | undefined;\n private readonly projectId: string | undefined;\n private readonly publisher: string | undefined;\n private accessToken: string | null = null;\n private tokenExpiry: number | null = null;\n\n constructor(modelSchema: ChatModelSchemaType, options: BaseChatModelOptionsType) {\n const parsedOptions = BaseChatModelOptions.parse(options);\n let baseUrl: string | undefined;\n\n if (parsedOptions.baseUrl) {\n baseUrl = parsedOptions.baseUrl;\n } else if (parsedOptions.location && parsedOptions.projectId) {\n baseUrl = Vertex.baseUrl(parsedOptions.location, parsedOptions.projectId, parsedOptions.publisher);\n } else {\n throw new ModelError({\n info: \"Either 'baseUrl' must be provided or 'location' and 'projectId' must be provided\",\n cause: new Error(\"Either 'baseUrl' must be provided or 'location' and 'projectId' must be provided\"),\n });\n }\n\n super(modelSchema, {\n modelName: parsedOptions.modelName,\n apiKey: \"random-api-key\",\n completeChatUrl: `${baseUrl}/models/${parsedOptions.modelName}:generateContent`,\n streamChatUrl: `${baseUrl}/models/${parsedOptions.modelName}:streamGenerateContent`,\n });\n\n this.modelSchema = modelSchema;\n this.modelName = parsedOptions.modelName;\n this.authOptions = parsedOptions;\n this.location = parsedOptions.location;\n this.projectId = parsedOptions.projectId;\n this.publisher = parsedOptions.publisher;\n\n // Initialize access token for accessToken auth type\n if (parsedOptions.authType === \"accessToken\") {\n this.accessToken = parsedOptions.accessToken;\n }\n }\n\n private async getAccessToken(): Promise<string> {\n // If we have a valid access token, return it\n if (this.accessToken && this.tokenExpiry && Date.now() < this.tokenExpiry) {\n return this.accessToken;\n }\n\n // For service account auth, generate a new token\n if (this.authOptions.authType === \"serviceAccount\") {\n try {\n const serviceAccountConfig = this.authOptions.serviceAccount;\n\n // Create JWT token for Google service account\n const now = Math.floor(Date.now() / 1000);\n const token = await new SignJWT({\n scope: \"https://www.googleapis.com/auth/cloud-platform\",\n aud: \"https://oauth2.googleapis.com/token\",\n })\n .setProtectedHeader({ alg: \"RS256\", typ: \"JWT\" })\n .setIssuedAt(now)\n .setExpirationTime(now + this.authOptions.tokenLifetimeHours * 3600)\n .setIssuer(serviceAccountConfig.client_email)\n .setSubject(serviceAccountConfig.client_email)\n .sign(await this.importPrivateKey(serviceAccountConfig.private_key));\n\n // Exchange JWT for access token\n const tokenResponse = await fetch(\"https://oauth2.googleapis.com/token\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n body: new URLSearchParams({\n grant_type: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\n assertion: token,\n }),\n });\n\n if (!tokenResponse.ok) {\n const errorText = await tokenResponse.text();\n throw new Error(`Token exchange failed: ${tokenResponse.status} ${errorText}`);\n }\n\n const tokenData = (await tokenResponse.json()) as { access_token?: string; error?: string };\n\n if (!tokenData.access_token) {\n throw new Error(`No access token received from Google OAuth: ${tokenData.error || \"Unknown error\"}`);\n }\n\n this.tokenExpiry = Date.now() + this.authOptions.tokenLifetimeHours * 3600 * 1000 - 5 * 60 * 1000;\n this.accessToken = tokenData.access_token;\n return this.accessToken;\n } catch (error) {\n throw new ModelError({\n info: `Failed to generate service account token: ${error instanceof Error ? error.message : String(error)}`,\n cause: error instanceof Error ? error : new Error(String(error)),\n });\n }\n }\n\n // For access token auth, return the stored token\n if (this.accessToken) {\n return this.accessToken;\n }\n\n throw new ModelError({\n info: \"No valid access token available\",\n cause: new Error(\"No valid access token available\"),\n });\n }\n\n private async importPrivateKey(privateKeyPem: string): Promise<CryptoKey> {\n // Remove PEM headers and convert to raw key\n const privateKeyRaw = privateKeyPem\n .replace(/-----BEGIN PRIVATE KEY-----/, \"\")\n .replace(/-----END PRIVATE KEY-----/, \"\")\n .replace(/\\s/g, \"\");\n\n // Convert base64 to ArrayBuffer\n const binaryString = atob(privateKeyRaw);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n\n // Import the private key\n return await crypto.subtle.importKey(\n \"pkcs8\",\n bytes,\n {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: \"SHA-256\",\n },\n false,\n [\"sign\"]\n );\n }\n\n async ensureToken(): Promise<void> {\n if (this.authOptions.authType === \"serviceAccount\") {\n await this.getAccessToken();\n }\n }\n\n getDefaultHeaders(): HeadersType {\n return {\n ...super.getDefaultHeaders(),\n Authorization: `Bearer ${this.accessToken}`,\n };\n }\n\n async getCompleteChatHeaders(config?: any, messages?: any, tools?: any): Promise<HeadersType> {\n await this.ensureToken();\n return this.getDefaultHeaders();\n }\n\n async getStreamChatHeaders(config?: any, messages?: any, tools?: any): Promise<HeadersType> {\n await this.ensureToken();\n return this.getDefaultHeaders();\n }\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 { BaseChatModelOptions, BaseChatModelVertex, type BaseChatModelOptionsType };\n","import { z } from \"zod\";\n\nconst SystemRoleLiteral = \"system\" as const;\nconst UserRoleLiteral = \"user\" as const;\nconst AssistantRoleLiteral = \"assistant\" as const;\nconst ToolRoleLiteral = \"tool\" as const;\n\nconst RoleLiterals = [SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral] as const;\nconst RoleEnum = z.enum(RoleLiterals);\ntype RoleEnumType = z.infer<typeof RoleEnum>;\n\nconst PartialRoleLiterals = [AssistantRoleLiteral] as const;\nconst PartialRoleEnum = z.enum(PartialRoleLiterals);\ntype PartialRoleEnumType = z.infer<typeof PartialRoleEnum>;\n\nexport {\n UserRoleLiteral,\n ToolRoleLiteral,\n SystemRoleLiteral,\n AssistantRoleLiteral,\n RoleEnum,\n RoleLiterals,\n PartialRoleEnum,\n PartialRoleLiterals,\n type RoleEnumType,\n type PartialRoleEnumType,\n};\n","import { z } from \"zod\";\n\nconst ImageModalityLiteral = \"image\" as const;\n\nconst Base64ImageContentTypeLiteral = \"base64\" as const;\nconst Base64ImageContentMediaTypeLiterals = [\"png\", \"jpeg\", \"webp\", \"gif\"] as const;\nconst Base64ImageContentValue = z.object({\n type: z.literal(Base64ImageContentTypeLiteral),\n base64: z.string(),\n mediaType: z.enum(Base64ImageContentMediaTypeLiterals),\n});\ntype Base64ImageContentValueType = z.infer<typeof Base64ImageContentValue>;\n\nconst UrlImageContentTypeLiteral = \"url\" as const;\nconst UrlImageContentValue = z.object({\n type: z.literal(UrlImageContentTypeLiteral),\n url: z.string(),\n});\ntype UrlImageContentValueType = z.infer<typeof UrlImageContentValue>;\n\nconst ImageContentValue = z.discriminatedUnion(\"type\", [Base64ImageContentValue, UrlImageContentValue]);\ntype ImageContentValueType = z.infer<typeof ImageContentValue>;\n\nconst ImageContentDetails = [\"low\", \"medium\", \"high\", \"auto\"] as const;\nconst ImageContentDetailsLiteral = z.enum(ImageContentDetails);\ntype ImageContentDetailsLiteralType = z.infer<typeof ImageContentDetailsLiteral>;\nconst ImageContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ImageModalityLiteral),\n detail: ImageContentDetailsLiteral,\n value: ImageContentValue,\n metadata: Metadata,\n });\ntype ImageContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ImageContent<M>>>;\n\nexport {\n Base64ImageContentValue,\n ImageContent,\n ImageContentDetails,\n ImageContentDetailsLiteral,\n ImageModalityLiteral,\n UrlImageContentValue,\n UrlImageContentTypeLiteral,\n Base64ImageContentTypeLiteral,\n Base64ImageContentMediaTypeLiterals,\n type Base64ImageContentValueType,\n type ImageContentDetailsLiteralType,\n type ImageContentType,\n type ImageContentValueType,\n type UrlImageContentValueType,\n};\n","import { z } from \"zod\";\n\nconst PdfModalityLiteral = \"pdf\" as const;\n\nconst Base64PdfContentTypeLiteral = \"base64\" as const;\nconst Base64PdfContentValue = z.object({\n type: z.literal(Base64PdfContentTypeLiteral),\n base64: z.string(),\n});\ntype Base64PdfContentValueType = z.infer<typeof Base64PdfContentValue>;\n\nconst UrlPdfContentTypeLiteral = \"url\" as const;\nconst UrlPdfContentValue = z.object({\n type: z.literal(UrlPdfContentTypeLiteral),\n url: z.string(),\n});\ntype UrlPdfContentValueType = z.infer<typeof UrlPdfContentValue>;\n\nconst PdfContentValue = z.discriminatedUnion(\"type\", [Base64PdfContentValue, UrlPdfContentValue]);\ntype PdfContentValueType = z.infer<typeof PdfContentValue>;\n\nconst PdfContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PdfModalityLiteral),\n value: PdfContentValue,\n file: z.object({\n name: z.string(),\n id: z.string(),\n size: z.number().optional(),\n }),\n metadata: Metadata,\n });\ntype PdfContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PdfContent<M>>>;\n\nexport {\n Base64PdfContentValue,\n PdfContent,\n PdfModalityLiteral,\n UrlPdfContentValue,\n UrlPdfContentTypeLiteral,\n Base64PdfContentTypeLiteral,\n type Base64PdfContentValueType,\n type PdfContentType,\n type PdfContentValueType,\n type UrlPdfContentValueType,\n};\n","import { z } from \"zod\";\n\nconst ReasoningModalityLiteral = \"reasoning\" as const;\nconst PartialReasoningModalityLiteral = \"partial-reasoning\" as const;\n\nconst ReasoningContentTypeLiteral = \"thinking\" as const;\nconst RedactedReasoningContentTypeLiteral = \"redacted\" as const;\n\nconst ReasoningContentValue = z.object({\n type: z.literal(ReasoningContentTypeLiteral),\n thinking: z.string(),\n signature: z.string(),\n});\ntype ReasoningContentValueType = z.infer<typeof ReasoningContentValue>;\n\nconst RedactedReasoningContentValue = z.object({\n type: z.literal(RedactedReasoningContentTypeLiteral),\n data: z.string()\n});\ntype RedactedReasoningContentValueType = z.infer<typeof RedactedReasoningContentValue>;\n\nconst ReasoningContentValueUnion = z.discriminatedUnion(\"type\", [ ReasoningContentValue, RedactedReasoningContentValue ]);\ntype ReasoningContentValueUnionType = z.infer<typeof ReasoningContentValueUnion>;\n\nconst ReasoningContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ReasoningModalityLiteral),\n value: ReasoningContentValueUnion,\n metadata: Metadata,\n });\n\ntype ReasoningContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ReasoningContent<M>>>;\n\nconst PartialReasoningContentValue = z.object({\n type: z.literal(ReasoningContentTypeLiteral),\n thinking: ReasoningContentValue.shape.thinking.optional(),\n signature: ReasoningContentValue.shape.signature.optional(),\n});\nconst PartialReasoningContentValueUnion = z.discriminatedUnion(\"type\", [ \n PartialReasoningContentValue, \n RedactedReasoningContentValue \n]);\n\nconst PartialReasoningContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialReasoningModalityLiteral),\n value: PartialReasoningContentValueUnion,\n metadata: Metadata,\n });\ntype PartialReasoningContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialReasoningContent<M>>>;\n\nexport {\n ReasoningContent,\n PartialReasoningContent,\n PartialReasoningModalityLiteral,\n ReasoningContentTypeLiteral,\n ReasoningContentValue,\n PartialReasoningContentValue,\n ReasoningContentValueUnion,\n PartialReasoningContentValueUnion,\n ReasoningModalityLiteral,\n RedactedReasoningContentTypeLiteral,\n RedactedReasoningContentValue,\n type PartialReasoningContentType,\n type ReasoningContentType,\n type ReasoningContentValueType,\n type ReasoningContentValueUnionType,\n type RedactedReasoningContentValueType,\n};\n","import { z } from \"zod\";\n\nconst TextModalityLiteral = \"text\" as const;\n\nconst TextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(TextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype TextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof TextContent<M>>>;\nconst PartialTextModalityLiteral = \"partial-text\" as const;\n\nconst PartialTextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialTextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype PartialTextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialTextContent<M>>>;\n\nexport {\n TextContent,\n PartialTextContent,\n TextModalityLiteral,\n PartialTextModalityLiteral,\n type TextContentType,\n type PartialTextContentType,\n};\n","import { z } from \"zod\";\n\nconst ToolCallModalityLiteral = \"tool-call\" as const;\n\nconst ToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n arguments: z.string(),\n serverName: z.string().optional(),\n metadata: Metadata,\n });\ntype ToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolCallContent<M>>>;\nconst PartialToolCallModalityLiteral = \"partial-tool-call\" as const;\n\nconst PartialToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().optional(),\n name: z.string().optional(),\n arguments: z.string().optional(),\n serverName: z.string().optional(),\n metadata: Metadata,\n });\ntype PartialToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialToolCallContent<M>>>;\n\nexport {\n PartialToolCallContent,\n PartialToolCallModalityLiteral,\n ToolCallContent,\n ToolCallModalityLiteral,\n type PartialToolCallContentType,\n type ToolCallContentType,\n};\n","import { z } from \"zod\";\n\nconst ToolResponseModalityLiteral = \"tool-response\" as const;\n\nconst ToolResponseContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolResponseModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n data: z.string(),\n apiResponse: z\n .object({\n statusCode: z.number().int().nonnegative(),\n })\n .optional(),\n metadata: Metadata,\n });\ntype ToolResponseContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolResponseContent<M>>>;\n\nconst PartialToolResponseModalityLiteral = \"partial-tool-response\" as const;\n\nconst PartialToolResponseContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialToolResponseModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().optional(),\n name: z.string().optional(),\n data: z.string().optional(),\n apiResponse: z\n .object({\n statusCode: z.number().int().nonnegative(),\n })\n .optional(),\n metadata: Metadata,\n });\ntype PartialToolResponseContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialToolResponseContent<M>>>;\n\nexport {\n PartialToolResponseContent,\n PartialToolResponseModalityLiteral,\n ToolResponseContent,\n ToolResponseModalityLiteral,\n type PartialToolResponseContentType,\n type ToolResponseContentType,\n};\n","import { z } from \"zod\";\n\nimport { ImageContent, ImageModalityLiteral } from \"./image-content\";\nimport { PdfContent, PdfModalityLiteral } from \"./pdf-content\";\nimport { PartialReasoningContent, PartialReasoningModalityLiteral, ReasoningContent, ReasoningModalityLiteral } from \"./reasoning-content\";\nimport { PartialTextContent, PartialTextModalityLiteral, TextContent, TextModalityLiteral } from \"./text-content\";\nimport { PartialToolCallContent, PartialToolCallModalityLiteral, ToolCallContent, ToolCallModalityLiteral } from \"./tool-call-content\";\nimport { PartialToolResponseContent, ToolResponseContent, ToolResponseModalityLiteral } from \"./tool-response-content\";\n\nconst ModalityLiterals = [\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ReasoningModalityLiteral,\n] as const;\nconst ModalityEnum = z.enum(ModalityLiterals);\ntype ModalityEnumType = z.infer<typeof ModalityEnum>;\n\nconst Content = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n PCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n TCCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n PdfContentMetadata: PCM = z.undefined() as PCM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM,\n ReasoningContentMetadata: TCCM = z.undefined() as TCCM\n) =>\n z.discriminatedUnion(\"modality\", [\n TextContent(TextContentMetadata),\n ImageContent(ImageContentMetadata),\n PdfContent(PdfContentMetadata),\n ToolCallContent(ToolCallContentMetadata),\n ToolResponseContent(ToolResponseContentMetadata),\n ReasoningContent(ReasoningContentMetadata),\n ]);\ntype ContentType<\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Content<TCM, ICM, CCM, RCM>>>;\n\nconst PartialModalityLiterals = [PartialTextModalityLiteral, PartialToolCallModalityLiteral, PartialReasoningModalityLiteral] as const;\nconst PartialModalityEnum = z.enum(PartialModalityLiterals);\ntype PartialModalityEnumType = z.infer<typeof PartialModalityEnum>;\n\nconst PartialContent = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n PartialTextContentMetadata: TCM = z.undefined() as TCM,\n PartialToolCallContentMetadata: CCM = z.undefined() as CCM,\n PartialReasoningContentMetadata: z.ZodTypeAny = z.undefined() as z.ZodTypeAny as RCM,\n PartialToolResponseContentMetadata: TPCM = z.undefined() as TPCM\n) =>\n z.discriminatedUnion(\"modality\", [\n PartialTextContent(PartialTextContentMetadata),\n PartialToolCallContent(PartialToolCallContentMetadata),\n PartialReasoningContent(PartialReasoningContentMetadata),\n PartialToolResponseContent(PartialToolResponseContentMetadata),\n ]);\ntype PartialContentType<\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof PartialContent<TCM, CCM, TPCM>>>;\n\nexport {\n Content,\n ModalityEnum,\n ModalityLiterals,\n PartialContent,\n PartialModalityEnum,\n PartialModalityLiterals,\n type ContentType,\n type ModalityEnumType,\n type PartialContentType,\n type PartialModalityEnumType,\n};\n","import { z } from \"zod\";\n\nimport { Content, PartialContent } from \"./content\";\nimport { PartialRoleEnum, RoleEnum } from \"./roles\";\n\nconst Message = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n PCCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = RoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM,\n PdfContentMetadata: PCCM = z.undefined() as PCCM,\n ReasoningContentMetadata: z.ZodTypeAny = z.undefined() as RTCM,\n MessageMetadata: MM = z.undefined() as MM\n) =>\n z.object({\n role: Role,\n content: z.array(\n Content(\n TextContentMetadata,\n ImageContentMetadata,\n ToolCallContentMetadata,\n ToolResponseContentMetadata,\n ReasoningContentMetadata,\n PdfContentMetadata\n )\n ),\n metadata: MessageMetadata,\n });\ntype MessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n PCCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Message<R, TCM, ICM, CCM, RCM, PCCM, RTCM, MM>>>;\n\nconst PartialMessage = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = PartialRoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ReasoningContentMetadata: z.ZodTypeAny = z.undefined() as RTCM,\n MessageMetadata: MM = z.undefined() as MM,\n ToolResponseContentMetadata: TPCM = z.undefined() as TPCM\n) =>\n z.object({\n role: Role,\n partialContent: PartialContent(TextContentMetadata, ToolCallContentMetadata, ReasoningContentMetadata, ToolResponseContentMetadata),\n metadata: MessageMetadata,\n });\ntype PartialMessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof PartialMessage<R, TCM, CCM, MM, RTCM, TPCM>>>;\n\nexport { Message, PartialMessage, type MessageType, type PartialMessageType };\n","import { z } from \"zod\";\n\nimport { Message, PartialMessage } from \"./../message\";\n\nconst ChatUsage = z.object({\n promptTokens: z.number().nonnegative(),\n completionTokens: z.number().nonnegative(),\n totalTokens: z.number().nonnegative(),\n});\ntype ChatUsageType = z.infer<typeof ChatUsage>;\n\nconst ChatBaseLogProb = z.object({\n token: z.string(),\n logProb: z.number(),\n bytes: z.array(z.number().int()).nullable(),\n});\ntype ChatBaseLogProbType = z.infer<typeof ChatBaseLogProb>;\n\nconst ChatLogProb = ChatBaseLogProb.extend({\n topLogProbs: z.array(ChatBaseLogProb),\n});\ntype ChatLogProbType = z.infer<typeof ChatLogProb>;\n\nconst ChatLogProbs = z.array(ChatLogProb);\ntype ChatLogProbsType = z.infer<typeof ChatLogProbs>;\n\nconst ChatResponse = z.object({\n messages: z.array(Message()),\n usage: ChatUsage.optional(),\n logProbs: ChatLogProbs.optional(),\n});\ntype ChatResponseType = z.infer<typeof ChatResponse>;\n\nconst PartialChatUsage = z.object({\n promptTokens: z.number().nonnegative().optional(),\n completionTokens: z.number().nonnegative().optional(),\n totalTokens: z.number().nonnegative().optional(),\n});\n\ntype PartialChatUsageType = z.infer<typeof PartialChatUsage>;\n\nconst PartialChatResponse = z.object({\n partialMessages: z.array(PartialMessage()),\n usage: PartialChatUsage.optional(),\n logProbs: ChatLogProbs.optional(),\n});\ntype PartialChatResponseType = z.infer<typeof PartialChatResponse>;\n\nexport {\n ChatBaseLogProb,\n ChatLogProb,\n ChatLogProbs,\n ChatResponse,\n ChatUsage,\n PartialChatResponse,\n PartialChatUsage,\n type ChatBaseLogProbType,\n type ChatLogProbsType,\n type ChatLogProbType,\n type ChatResponseType,\n type ChatUsageType,\n type PartialChatResponseType,\n type PartialChatUsageType,\n};\n","import { z } from \"zod\";\n\nconst Config = <C extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>>(\n Config: C = z.record(z.string(), z.any()).optional() as unknown as C\n) => Config;\ntype ConfigType<C extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>> = z.infer<ReturnType<typeof Config<C>>>;\n\nexport { Config, type ConfigType };\n","import { z } from \"zod\";\n\nconst McpServerToolConfiguration = z.object({\n enabled: z.boolean().default(true),\n allowedTools: z.array(z.string().min(1)),\n});\ntype McpServerToolConfigurationType = z.infer<typeof McpServerToolConfiguration>;\n\nconst McpServer = z.object({\n type: z.literal(\"url\"),\n url: z\n .string()\n .url()\n .refine((url) => url.startsWith(\"https://\"), {\n message: \"MCP server URL must start with https://\",\n }),\n name: z.string().min(1),\n toolConfiguration: McpServerToolConfiguration.optional(),\n authorizationToken: z.string().min(1).optional(),\n});\ntype McpServerType = z.infer<typeof McpServer>;\n\nexport { McpServer, McpServerToolConfiguration, type McpServerToolConfigurationType, type McpServerType };\n","import { z } from \"zod\";\n\n// TODO: move to json schema 7 type and validator when implemented for tool types\nconst ResponseSchemaTypes = [\"object\", \"array\", \"number\", \"string\", \"boolean\", \"enum\"] as const;\nconst ResponseSchemaTypesLiteral = z.enum(ResponseSchemaTypes);\ntype ResponseSchemaTypesType = z.infer<typeof ResponseSchemaTypesLiteral>;\n\nconst ResponseSchemaProperty = z.object({\n anyOf: z.array(z.any()).optional(),\n type: z.union([ResponseSchemaTypesLiteral, z.array(z.union([ResponseSchemaTypesLiteral, z.literal(\"null\")]))]).optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n description: z.string().max(4096).optional(),\n properties: z.record(z.any()).optional(),\n required: z.array(z.string()).optional(),\n minItems: z.number().int().min(0).optional(),\n maxItems: z.number().int().optional(),\n items: z.record(z.any()).optional(), // Recursive structure to handle nested arrays and objects\n enum: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(), // Enum for allowed values\n minimum: z.number().optional(), // Minimum value for number\n maximum: z.number().optional(), // Maximum value for number\n minLength: z.number().int().min(0).optional(), // Minimum length for string\n maxLength: z.number().int().optional(), // Maximum length for string\n $ref: z.string().optional(), // Reference to another schema\n});\ntype ResponseSchemaPropertyType = z.infer<typeof ResponseSchemaProperty>;\n\nconst ResponseSchemaStructure = z.object({\n type: z.enum([\"object\"]),\n required: z.array(z.string()),\n $defs: z.record(z.any()).optional(),\n properties: z.record(ResponseSchemaProperty),\n additionalProperties: z.literal(false),\n});\ntype ResponseSchemaStructureType = z.infer<typeof ResponseSchemaStructure>;\n\nconst ResponseSchema = z\n .object({\n name: z\n .string()\n .regex(/^[a-zA-Z0-9_]{1,64}$/)\n .max(64),\n description: z.string().max(4096),\n strict: z.boolean().optional(),\n schema: ResponseSchemaStructure,\n })\n .optional();\ntype ResponseSchemaType = z.infer<typeof ResponseSchema>;\n\nexport {\n ResponseSchema,\n ResponseSchemaProperty,\n ResponseSchemaStructure,\n ResponseSchemaTypes,\n ResponseSchemaTypesLiteral,\n type ResponseSchemaTypesType,\n type ResponseSchemaType,\n type ResponseSchemaPropertyType,\n type ResponseSchemaStructureType,\n};\n","import { z } from \"zod\";\n\nconst EmbeddingTextModalityLiteral = \"text\" as const;\nconst EmbeddingTokenModalityLiteral = \"token\" as const;\n\nconst EmbeddingModalityLiterals = [EmbeddingTextModalityLiteral, EmbeddingTokenModalityLiteral] as const;\nconst EmbeddingModalityEnum = z.enum(EmbeddingModalityLiterals);\ntype EmbeddingModalityEnumType = z.infer<typeof EmbeddingModalityEnum>;\n\nconst TextEmbeddingRequests = z.array(z.string().min(1));\ntype TextEmbeddingRequestsType = z.infer<typeof TextEmbeddingRequests>;\n\nconst TokenEmbeddingRequests = z.array(z.array(z.number().int().nonnegative()));\ntype TokenEmbeddingRequestsType = z.infer<typeof TokenEmbeddingRequests>;\n\nconst EmbeddingRequests = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.discriminatedUnion(\"modality\", [\n z.object({\n modality: z.literal(EmbeddingTextModalityLiteral),\n metadata: Metadata,\n requests: TextEmbeddingRequests,\n }),\n z.object({\n modality: z.literal(EmbeddingTokenModalityLiteral),\n metadata: Metadata,\n requests: TokenEmbeddingRequests,\n }),\n ]);\ntype EmbeddingRequestsType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof EmbeddingRequests<M>>>;\n\nexport {\n EmbeddingTextModalityLiteral,\n EmbeddingTokenModalityLiteral,\n EmbeddingModalityLiterals,\n EmbeddingModalityEnum,\n TextEmbeddingRequests,\n TokenEmbeddingRequests,\n EmbeddingRequests,\n type EmbeddingRequestsType,\n type EmbeddingModalityEnumType,\n type TextEmbeddingRequestsType,\n type TokenEmbeddingRequestsType,\n};\n","import { z } from \"zod\";\n\nconst FloatEmbeddingLiteral = \"float\" as const;\nconst FloatEmbedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.array(z.number()),\n});\ntype FloatEmbeddingType = z.infer<typeof FloatEmbedding>;\n\nconst Base64EmbeddingLiteral = \"base64\" as const;\nconst Base64Embedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.string().base64(),\n});\ntype Base64EmbeddingType = z.infer<typeof Base64Embedding>;\n\nconst EmbeddingsUsage = z.object({\n totalTokens: z.number().int().nonnegative(),\n});\ntype EmbeddingsUsageType = z.infer<typeof EmbeddingsUsage>;\n\nconst EmbeddingResponse = z.discriminatedUnion(\"encodingFormat\", [\n z.object({\n encodingFormat: z.literal(FloatEmbeddingLiteral),\n embeddings: z.array(FloatEmbedding),\n usage: EmbeddingsUsage.optional(),\n }),\n z.object({\n encodingFormat: z.literal(Base64EmbeddingLiteral),\n embeddings: z.array(Base64Embedding),\n usage: EmbeddingsUsage.optional(),\n }),\n]);\ntype EmbeddingResponseType = z.infer<typeof EmbeddingResponse>;\n\nexport {\n FloatEmbeddingLiteral,\n Base64EmbeddingLiteral,\n FloatEmbedding,\n Base64Embedding,\n EmbeddingsUsage,\n EmbeddingResponse,\n type FloatEmbeddingType,\n type Base64EmbeddingType,\n type EmbeddingsUsageType,\n type EmbeddingResponseType,\n};\n","const safeStringify = (obj: unknown) => {\n const seen = new WeakSet();\n return JSON.stringify(obj, (key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) {\n return; // Skip circular reference\n }\n seen.add(value);\n }\n return value;\n });\n};\n\nconst getErrorMessage = (error: unknown | undefined): string => {\n if (error == null) return \"unknown error\";\n if (typeof error === \"string\") return error;\n if (error instanceof Error) return error.message;\n return safeStringify(error);\n};\n\nconst GatewayBaseErrorLiteral = \"GatewayBaseError\" as const;\nclass GatewayBaseError extends Error {\n readonly name: string = GatewayBaseErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }, name?: string) {\n super(`[${name ?? GatewayBaseErrorLiteral}]: ${info}\\nMessage: ${getErrorMessage(cause)}`);\n this.info = info;\n this.cause = cause;\n this.name = name ?? GatewayBaseErrorLiteral;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isGatewayBaseError(error: unknown): error is GatewayBaseError {\n return error instanceof GatewayBaseError;\n }\n\n toJSON(): object {\n return {\n name: this.name,\n info: this.info,\n cause: this.cause,\n message: this.message,\n stack: this.stack,\n };\n }\n}\n\nexport { GatewayBaseError };\n","import { z } from \"zod\";\n\n/**\n * A pair of per‑million‑token rates for a single price category (e.g., base input/output).\n * Represents the input and output cost for 1 million tokens within a specific category (like 'base') of a pricing tier.\n */\nconst ChatModelTokenPairPrice = z\n .object({\n inputPricePerMillion: z.number().nonnegative().describe(\"Price per 1M input tokens\"),\n outputPricePerMillion: z.number().nonnegative().describe(\"Price per 1M output tokens\"),\n })\n .describe(\"Input/output price pair (per 1M tokens) for a specific category within a ChatModel pricing tier.\");\n\ntype ChatModelTokenPairPriceType = z.infer<typeof ChatModelTokenPairPrice>;\n\n/**\n * Defines the price categories (e.g., base) applicable within a single pricing tier (`ChatModelTokenRangePrice`).\n * Each category holds a `ChatModelTokenPairPrice`.\n */\nconst ChatModelTokenTypePrice = z\n .object({\n base: ChatModelTokenPairPrice.describe(\"Base (uncached, non‑reasoning) rates\"),\n // Add optional 'cached' and 'reasoning' here if they become standard\n })\n .describe(\"Holds the `ChatModelTokenPairPrice` for different categories (e.g., base) within a single pricing tier.\");\n\ntype ChatModelTokenTypePriceType = z.infer<typeof ChatModelTokenTypePrice>;\n\n/**\n * Defines a single tier in a model's pricing schedule (`ChatModelPrice`), based on token count range.\n * - `minTokens`: inclusive lower bound (integer ≥ 0).\n * - `maxTokens`: exclusive upper bound (integer > minTokens), or `null` for ∞.\n * - `prices`: the `ChatModelTokenTypePrice` (categories and their rates) applicable to this tier.\n */\nconst ChatModelTokenRangePrice = z\n .object({\n minTokens: z.number().int().nonnegative().describe(\"Inclusive lower token bound for this tier.\"),\n maxTokens: z.number().int().nullable().optional().describe(\"Exclusive upper token bound; `null` means ∞.\"),\n prices: ChatModelTokenTypePrice.describe(\"Price categories and rates for this specific token range.\"),\n })\n .refine((t) => t.maxTokens === null || (typeof t.maxTokens === \"number\" && t.maxTokens > t.minTokens), {\n message: \"maxTokens must be > minTokens (or null for infinite).\",\n path: [\"maxTokens\"],\n })\n .describe(\"A single pricing tier defined by a token range and associated prices.\");\n\ntype ChatModelTokenRangePriceType = z.infer<typeof ChatModelTokenRangePrice>;\n\n/**\n * Full pricing schedule for a specific chat model, potentially with multiple `ChatModelTokenRangePrice` tiers.\n * Ensures tiers are contiguous and cover the full range from 0 to infinity.\n * - First tier must start at 0 tokens.\n * - `tokenRanges` must be contiguous: each tier.minTokens === previous.maxTokens.\n * - Last `tokenRange` must have maxTokens = null (infinite).\n */\nconst ChatModelPrice = z\n .object({\n modelName: z.string().describe(\"Model name this schedule applies to.\"),\n currency: z.string().default(\"USD\").describe(\"Currency code (e.g., USD).\"),\n tokenRanges: z\n .array(ChatModelTokenRangePrice)\n .min(1)\n .describe(\"Pricing tiers (`ChatModelTokenRangePrice`) schedule, sorted by minTokens.\"),\n })\n .superRefine((data, ctx) => {\n const { tokenRanges } = data;\n\n // 1) First tier starts at 0\n if (tokenRanges[0].minTokens !== 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", 0, \"minTokens\"],\n message: \"The first tier must have minTokens = 0.\",\n });\n }\n\n // 2) tokenRanges must be sorted and contiguous\n for (let i = 1; i < tokenRanges.length; i++) {\n const prev = tokenRanges[i - 1];\n const curr = tokenRanges[i];\n\n if (prev.maxTokens === null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i - 1, \"maxTokens\"],\n message: \"Cannot define any tokenRanges after an infinite tier (maxTokens = null).\",\n });\n break; // Stop further checks if structure is already invalid\n }\n\n if (curr.minTokens !== prev.maxTokens) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i, \"minTokens\"],\n message: `Tier ${i} minTokens (${curr.minTokens}) must equal previous tier's maxTokens (${prev.maxTokens}) for contiguity.`,\n });\n }\n\n // Ensure sorting (although contiguity check often implies this)\n if (curr.minTokens < prev.minTokens) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i, \"minTokens\"],\n message: `tokenRanges must be sorted by ascending minTokens. Tier ${i} (${curr.minTokens}) starts before Tier ${i - 1} (${prev.minTokens}).`,\n });\n }\n }\n\n // 3) Last tier must be infinite\n const last = tokenRanges[tokenRanges.length - 1];\n // Check last.maxTokens only if the loop didn't break early due to a previous infinite tier\n if (tokenRanges.every((t) => t.maxTokens !== null || t === last) && last.maxTokens !== null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", tokenRanges.length - 1, \"maxTokens\"],\n message: \"The final tier must have maxTokens = null (representing infinity).\",\n });\n }\n })\n .describe(\"Complete pricing schedule for a single chat model, including all its token-based tiers.\");\n\ntype ChatModelPriceType = z.infer<typeof ChatModelPrice>;\n\n// Export the schemas and types\nexport { ChatModelPrice, ChatModelTokenPairPrice, ChatModelTokenRangePrice, ChatModelTokenTypePrice };\nexport type { ChatModelPriceType, ChatModelTokenPairPriceType, ChatModelTokenRangePriceType, ChatModelTokenTypePriceType };\n","import { z } from \"zod\";\n\nconst FunctionToolLiteral = \"function\" as const;\n\nconst FunctionParameterTypes = [\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"];\nconst FunctionParameterTypesLiteral = z.enum([\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"]);\ntype FunctionParameterTypesType = z.infer<typeof FunctionParameterTypesLiteral>;\n\nconst FunctionParameter = z.object({\n anyOf: z.array(z.any()).optional(),\n type: FunctionParameterTypesLiteral.optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n description: z.string().max(4096).optional(),\n properties: z.record(z.any()).optional(),\n required: z.array(z.string()).optional(),\n minItems: z.number().int().min(0).optional(),\n maxItems: z.number().int().optional(),\n items: z.record(z.any()).optional(), // Recursive structure to handle nested arrays and objects\n enum: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(), // Enum for allowed values\n minimum: z.number().optional(), // Minimum value for number\n maximum: z.number().optional(), // Maximum value for number\n minLength: z.number().int().min(0).optional(), // Minimum length for string\n maxLength: z.number().int().optional(), // Maximum length for string\n});\ntype FunctionParameterType = z.infer<typeof FunctionParameter>;\n\nconst FunctionParameters = z.object({\n type: z.enum([\"object\"]),\n title: z.string().optional(),\n $defs: z.record(z.any()).optional(),\n properties: z.record(FunctionParameter).optional(),\n required: z.array(z.string()).optional(),\n});\ntype FunctionParametersType = z.infer<typeof FunctionParameters>;\n\nconst Function = z.object({\n name: z\n .string()\n .regex(/^[a-zA-Z0-9_]{1,64}$/)\n .max(64),\n description: z.string().max(4096),\n parameters: z.any(),\n strict: z.boolean().optional(),\n});\ntype FunctionType = z.infer<typeof Function>;\n\nconst ToolTypes = [\"function\"];\nconst ToolTypesLiteral = z.enum([\"function\"]);\ntype ToolTypesType = z.infer<typeof ToolTypesLiteral>;\n\nconst FunctionRequestRetry = z.object({\n maxAttempts: z.number().int().positive(),\n initialDelay: z.number().int().positive(),\n exponentialFactor: z.number().int().positive(),\n});\n\nconst FunctionRequestHttp = z.object({\n type: z.literal(\"http\"),\n method: z.enum([\"get\", \"post\"]),\n url: z.string().url(),\n headers: z.record(z.string()).optional(),\n query: z.record(z.string()).optional(),\n body: z.record(z.any()).optional(),\n proxyUrl: z.string().url().optional(),\n proxyHeaders: z.record(z.string()).optional(),\n retry: FunctionRequestRetry.optional(),\n});\n\nconst FunctionRequest = z.discriminatedUnion(\"type\", [FunctionRequestHttp]);\n\nconst FunctionTool = z.object({\n type: ToolTypesLiteral,\n definition: z.object({\n schema: Function,\n }),\n request: FunctionRequest.optional(),\n});\ntype FunctionToolType = z.infer<typeof FunctionTool>;\n\nexport {\n Function,\n FunctionParameter,\n FunctionParameters,\n FunctionParameterTypes,\n FunctionParameterTypesLiteral,\n FunctionRequestHttp,\n FunctionRequest,\n FunctionRequestRetry,\n ToolTypes,\n ToolTypesLiteral,\n type FunctionParametersType,\n type FunctionParameterType,\n type FunctionParameterTypesType,\n type FunctionType,\n type ToolTypesType,\n};\n\nexport { FunctionTool, FunctionToolLiteral, type FunctionToolType };\n","import { z } from \"zod\";\n\nimport { FunctionTool, FunctionToolLiteral } from \"./function-tool\";\n\nconst ToolLiterals = [FunctionToolLiteral] as const;\nconst ToolEnum = z.enum(ToolLiterals);\ntype ToolEnumType = z.infer<typeof ToolEnum>;\n\nconst Tool = <FTM extends z.ZodTypeAny>(FunctionToolMetadata: FTM = z.undefined() as FTM) =>\n z.discriminatedUnion(\"type\", [FunctionTool.extend({ metadata: FunctionToolMetadata })]);\ntype ToolType<FTM extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof Tool<FTM>>>;\n\nexport { Tool, ToolEnum, ToolLiterals, type ToolEnumType, type ToolType };\n","import {\n Base64ImageContentTypeLiteral,\n ContentType,\n ImageContent,\n ImageContentDetailsLiteralType,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialMessage,\n PartialMessageType,\n PartialReasoningContent,\n PartialReasoningModalityLiteral,\n PartialTextContent,\n PartialTextModalityLiteral,\n PartialToolCallContent,\n PartialToolCallModalityLiteral,\n PartialToolResponseContent,\n PartialToolResponseModalityLiteral,\n ReasoningContent,\n ReasoningContentTypeLiteral,\n ReasoningModalityLiteral,\n RedactedReasoningContentTypeLiteral,\n RoleEnumType,\n TextContent,\n TextModalityLiteral,\n ToolCallContent,\n ToolCallModalityLiteral,\n ToolResponseContent,\n ToolResponseModalityLiteral,\n UrlImageContentTypeLiteral,\n} from \"./../message\";\n\nconst createTextContent = (content: string): ContentType => {\n return TextContent().parse({\n modality: TextModalityLiteral,\n value: content,\n });\n};\n\nconst createToolCallContent = (index: number, id: string, name: string, args: string, serverName?: string): ContentType => {\n return ToolCallContent().parse({\n modality: ToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n serverName: serverName,\n });\n};\n\nconst createToolResponseContent = (\n index: number,\n id: string,\n name: string,\n data: string,\n apiResponse?: { statusCode: number },\n metadata?: any\n): ContentType => {\n return ToolResponseContent().parse({\n modality: ToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n apiResponse: apiResponse,\n metadata: metadata,\n });\n};\n\nconst createTextMessage = (role: RoleEnumType, content: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n TextContent().parse({\n modality: TextModalityLiteral,\n value: content,\n }),\n ],\n });\n};\n\nconst createUrlImageMessage = (role: RoleEnumType, url: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: UrlImageContentTypeLiteral,\n url: url,\n },\n }),\n ],\n });\n};\n\nconst createBase64ImageMessage = (role: RoleEnumType, base64: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: Base64ImageContentTypeLiteral,\n base64: base64,\n },\n }),\n ],\n });\n};\n\nconst createToolCallMessage = (role: RoleEnumType, index: number, id: string, name: string, args: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ToolCallContent().parse({\n modality: ToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n }),\n ],\n });\n};\n\nconst createToolResponseMessage = (role: RoleEnumType, index: number, id: string, name: string, data: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ToolResponseContent().parse({\n modality: ToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n }),\n ],\n });\n};\n\nconst createPartialTextMessage = (role: RoleEnumType, content: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialTextContent().parse({\n modality: PartialTextModalityLiteral,\n value: content,\n }),\n });\n};\n\nconst createPartialToolCallMessage = (\n role: RoleEnumType,\n index: number,\n id?: string,\n name?: string,\n args?: string,\n serverName?: string\n): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialToolCallContent().parse({\n modality: PartialToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n serverName: serverName,\n }),\n });\n};\n\nconst createPartialToolResponseMessage = (\n role: RoleEnumType,\n index: number,\n id: string,\n name: string,\n data: string\n): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialToolResponseContent().parse({\n modality: PartialToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n }),\n });\n};\nconst createReasoningContent = (thinking: string, signature: string): ContentType => {\n return ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n });\n};\n\nconst createReasoningMessage = (role: RoleEnumType, thinking: string, signature: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n }),\n ],\n });\n};\n// Redacted Reasoning Content\nconst createRedactedReasoningContent = (data: string): ContentType => {\n return ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n });\n};\n\nconst createRedactedReasoningMessage = (role: RoleEnumType, data: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n }),\n ],\n });\n};\n\nconst createPartialReasoningMessage = (role: RoleEnumType, thinking?: string, signature?: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialReasoningContent().parse({\n modality: PartialReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n // metadata is optional; omit or provide if needed\n }),\n });\n};\n\n// Create a partial redacted reasoning message\nconst createPartialRedactedReasoningMessage = (role: RoleEnumType, data: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialReasoningContent().parse({\n modality: PartialReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n // metadata is optional; omit or provide if needed\n }),\n });\n};\n\nexport {\n createBase64ImageMessage,\n createPartialReasoningMessage,\n createPartialRedactedReasoningMessage,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createPartialToolResponseMessage,\n createReasoningContent,\n createReasoningMessage,\n createRedactedReasoningContent,\n createRedactedReasoningMessage,\n createTextContent,\n createTextMessage,\n createToolCallContent,\n createToolCallMessage,\n createToolResponseContent,\n createToolResponseMessage,\n createUrlImageMessage,\n};\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ProviderErrorLiteral = \"ProviderError\" as const;\nexport class ProviderError extends GatewayBaseError {\n readonly name = ProviderErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ProviderErrorLiteral);\n this.info = info;\n this.cause = cause;\n }\n\n static isProviderError(error: unknown): error is ProviderError {\n return error instanceof ProviderError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ModelErrorLiteral = \"ModelError\" as const;\nexport class ModelError extends GatewayBaseError {\n readonly name = ModelErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ModelErrorLiteral);\n this.info = info;\n this.cause = cause;\n }\n\n static isModelError(error: unknown): error is ModelError {\n return error instanceof ModelError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ModelResponseErrorLiteral = \"ModelResponseError\" as const;\nexport class ModelResponseError extends GatewayBaseError {\n readonly name = ModelResponseErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ModelResponseErrorLiteral);\n this.cause = cause;\n this.info = info;\n }\n\n static isModelResponseError(error: unknown): error is ModelResponseError {\n return error instanceof ModelResponseError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidModelRequestErrorLiteral = \"InvalidModelRequestError\" as const;\nexport class InvalidModelRequestError extends GatewayBaseError {\n readonly name = InvalidModelRequestErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidModelRequestErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidModelRequestError(error: unknown): error is InvalidModelRequestError {\n return error instanceof InvalidModelRequestError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidConfigErrorLiteral = \"InvalidConfigError\" as const;\nexport class InvalidConfigError extends GatewayBaseError {\n readonly name = InvalidConfigErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidConfigErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidConfigError(error: unknown): error is InvalidConfigError {\n return error instanceof InvalidConfigError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidMessagesErrorLiteral = \"InvalidMessagesError\" as const;\nexport class InvalidMessagesError extends GatewayBaseError {\n readonly name = InvalidMessagesErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidMessagesErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidMessagesError(error: unknown): error is InvalidMessagesError {\n return error instanceof InvalidMessagesError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidToolsErrorLiteral = \"InvalidToolsError\" as const;\nexport class InvalidToolsError extends GatewayBaseError {\n readonly name = InvalidToolsErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidToolsErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidToolsError(error: unknown): error is InvalidToolsError {\n return error instanceof InvalidToolsError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidEmbeddingRequestsErrorLiteral = \"InvalidEmbeddingRequestsError\" as const;\nexport class InvalidEmbeddingRequestsError extends GatewayBaseError {\n readonly name = InvalidEmbeddingRequestsErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidEmbeddingRequestsErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidEmbeddingRequestsError(error: unknown): error is InvalidEmbeddingRequestsError {\n return error instanceof InvalidEmbeddingRequestsError;\n }\n}\n","import { z } from \"zod\";\n\nconst MultiStringConfigItemTypeLiteral = \"multi-string\" as const;\n\nconst MultiStringConfigItemDef = z.object({\n type: z.literal(MultiStringConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n max: z.number().int().positive(),\n});\ntype MultiStringConfigItemType = z.infer<typeof MultiStringConfigItemDef>;\n\nconst MultiStringConfigItemSchema = (max: number) => z.array(z.string()).max(max).default([]).optional();\ntype MultiStringConfigItemSchemaType = z.infer<ReturnType<typeof MultiStringConfigItemSchema>>;\n\nconst MultiStringConfigItem = (data: Omit<MultiStringConfigItemType, \"type\">) => {\n return {\n def: MultiStringConfigItemDef.parse({\n type: MultiStringConfigItemTypeLiteral,\n ...data,\n }),\n schema: MultiStringConfigItemSchema(data.max),\n };\n};\n\nexport {\n MultiStringConfigItem,\n MultiStringConfigItemDef,\n MultiStringConfigItemSchema,\n MultiStringConfigItemTypeLiteral,\n type MultiStringConfigItemSchemaType,\n type MultiStringConfigItemType,\n};\n","import { z } from \"zod\";\n\nconst ObjectSchemaConfigItemTypeLiteral = \"object-schema\" as const;\n\nconst ObjectSchemaConfigItemDef = z.object({\n type: z.literal(ObjectSchemaConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n objectSchema: z.any(),\n});\ntype ObjectSchemaConfigItemType = z.infer<typeof ObjectSchemaConfigItemDef>;\n\nconst ObjectSchemaConfigItemSchema = <S extends z.ZodRawShape>(schema: z.ZodObject<S>) => schema.optional();\ntype ObjectSchemaConfigItemSchemaType<S extends z.ZodRawShape = z.ZodRawShape> = z.infer<\n ReturnType<typeof ObjectSchemaConfigItemSchema<S>>\n>;\n\nconst ObjectSchemaConfigItem = (data: Omit<ObjectSchemaConfigItemType, \"type\">) => {\n return {\n def: ObjectSchemaConfigItemDef.parse({\n type: ObjectSchemaConfigItemTypeLiteral,\n ...data,\n }),\n schema: ObjectSchemaConfigItemSchema(data.objectSchema),\n };\n};\n\nexport {\n ObjectSchemaConfigItem,\n ObjectSchemaConfigItemDef,\n ObjectSchemaConfigItemSchema,\n ObjectSchemaConfigItemTypeLiteral,\n type ObjectSchemaConfigItemType,\n type ObjectSchemaConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst PairedSelectConfigItemTypeLiteral = \"paired-select\" as const;\n\nconst PairedSelectChoice = z.object({\n value: z.string().min(1),\n label: z.string().min(1),\n});\ntype PairedSelectChoiceType = z.infer<typeof PairedSelectChoice>;\n\nconst PairedSelectFieldDef = z.object({\n key: z.string().min(1),\n label: z.string().min(1),\n description: z.string().min(1).max(500).optional(),\n choices: z.array(PairedSelectChoice).min(1),\n});\ntype PairedSelectFieldDefType = z.infer<typeof PairedSelectFieldDef>;\n\nconst PairedSelectConfigItemDef = z.object({\n type: z.literal(PairedSelectConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n fields: z.tuple([PairedSelectFieldDef, PairedSelectFieldDef]),\n uniqueByField: z.string().min(1).optional(),\n});\ntype PairedSelectConfigItemType = z.infer<typeof PairedSelectConfigItemDef>;\n\nconst createFieldEnum = (choices: PairedSelectChoiceType[]) => {\n const values = choices.map((choice) => choice.value);\n if (values.length === 0) {\n throw new Error(\"PairedSelectConfigItem fields must define at least one choice\");\n }\n const [first, ...rest] = values as [string, ...string[]];\n return z.enum([first, ...rest]);\n};\n\nconst PairedSelectConfigItemSchema = (fields: readonly [PairedSelectFieldDefType, PairedSelectFieldDefType]) => {\n const shape = fields.reduce<z.ZodRawShape>((acc, field) => {\n acc[field.key] = createFieldEnum(field.choices);\n return acc;\n }, {});\n return z.array(z.object(shape)).optional();\n};\ntype PairedSelectConfigItemSchemaType = z.infer<ReturnType<typeof PairedSelectConfigItemSchema>>;\n\nconst PairedSelectConfigItem = (data: Omit<PairedSelectConfigItemType, \"type\">) => {\n const parsed = PairedSelectConfigItemDef.parse({\n type: PairedSelectConfigItemTypeLiteral,\n ...data,\n });\n\n const fieldKeys = new Set(parsed.fields.map((field) => field.key));\n if (fieldKeys.size !== parsed.fields.length) {\n throw new Error(\"PairedSelectConfigItem fields must have unique keys\");\n }\n\n if (parsed.uniqueByField && !fieldKeys.has(parsed.uniqueByField)) {\n throw new Error(\"uniqueByField must reference one of the defined field keys\");\n }\n\n return {\n def: parsed,\n schema: PairedSelectConfigItemSchema(parsed.fields),\n };\n};\n\nexport {\n PairedSelectChoice,\n PairedSelectConfigItem,\n PairedSelectConfigItemDef,\n PairedSelectConfigItemSchema,\n PairedSelectConfigItemTypeLiteral,\n PairedSelectFieldDef,\n type PairedSelectChoiceType,\n type PairedSelectConfigItemSchemaType,\n type PairedSelectConfigItemType,\n type PairedSelectFieldDefType,\n};\n","import { z } from \"zod\";\n\nconst RangeConfigItemTypeLiteral = \"range\" as const;\n\nconst RangeConfigItemDef = z.object({\n type: z.literal(RangeConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n min: z.number().int(),\n max: z.number().int(),\n step: z.number().positive(),\n default: z.number(),\n});\ntype RangeConfigItemDefType = z.infer<typeof RangeConfigItemDef>;\n\nconst RangeConfigItemSchema = (min: number, max: number, step: number, defaultValue: number) =>\n z.number().min(min).max(max).step(step).default(defaultValue).optional();\ntype RangeConfigItemSchemaType = z.infer<ReturnType<typeof RangeConfigItemSchema>>;\n\nconst RangeConfigItem = (data: Omit<RangeConfigItemDefType, \"type\">) => {\n return {\n def: RangeConfigItemDef.parse({\n type: RangeConfigItemTypeLiteral,\n ...data,\n }),\n schema: RangeConfigItemSchema(data.min, data.max, data.step, data.default),\n };\n};\n\nexport {\n RangeConfigItem,\n RangeConfigItemDef,\n RangeConfigItemSchema,\n RangeConfigItemTypeLiteral,\n type RangeConfigItemDefType,\n type RangeConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst SelectBooleanConfigItemTypeLiteral = \"select-boolean\" as const;\n\nconst SelectBooleanConfigItemDef = z.object({\n type: z.literal(SelectBooleanConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n default: z.boolean().nullable(),\n});\ntype SelectBooleanConfigItemDefType = z.infer<typeof SelectBooleanConfigItemDef>;\n\nconst SelectBooleanConfigItemSchema = (defaultValue: boolean | null) => z.boolean().nullable().default(defaultValue).optional();\ntype SelectBooleanConfigItemSchemaType = z.infer<ReturnType<typeof SelectBooleanConfigItemSchema>>;\n\nconst SelectBooleanConfigItem = (data: Omit<SelectBooleanConfigItemDefType, \"type\">) => {\n return {\n def: SelectBooleanConfigItemDef.parse({\n type: SelectBooleanConfigItemTypeLiteral,\n ...data,\n }),\n schema: SelectBooleanConfigItemSchema(data.default),\n };\n};\n\nexport {\n SelectBooleanConfigItem,\n SelectBooleanConfigItemDef,\n SelectBooleanConfigItemSchema,\n SelectBooleanConfigItemTypeLiteral,\n type SelectBooleanConfigItemDefType,\n type SelectBooleanConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst SelectStringConfigItemTypeLiteral = \"select-string\" as const;\n\nconst SelectStringConfigItemDef = z.object({\n type: z.literal(SelectStringConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n default: z.string(),\n choices: z.array(z.string()),\n});\ntype SelectStringConfigItemDefType = z.infer<typeof SelectStringConfigItemDef>;\n\nconst SelectStringConfigItemSchema = (defaultValue: string | null, choices: string[]) =>\n z\n .enum(choices as [string, ...string[]])\n .nullable()\n .default(defaultValue)\n .optional();\ntype SelectStringConfigItemSchemaType = z.infer<ReturnType<typeof SelectStringConfigItemSchema>>;\n\nconst SelectStringConfigItem = (data: Omit<SelectStringConfigItemDefType, \"type\">) => {\n return {\n def: SelectStringConfigItemDef.parse({\n type: SelectStringConfigItemTypeLiteral,\n ...data,\n }),\n schema: SelectStringConfigItemSchema(data.default, data.choices),\n };\n};\n\nexport {\n SelectStringConfigItem,\n SelectStringConfigItemDef,\n SelectStringConfigItemSchema,\n SelectStringConfigItemTypeLiteral,\n type SelectStringConfigItemDefType,\n type SelectStringConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nimport { MultiStringConfigItemDef, MultiStringConfigItemTypeLiteral } from \"./multi-string-config-item\";\nimport { ObjectSchemaConfigItemDef, ObjectSchemaConfigItemTypeLiteral } from \"./object-schema-config-item\";\nimport { PairedSelectConfigItemDef, PairedSelectConfigItemTypeLiteral } from \"./paired-select-config-item\";\nimport { RangeConfigItemDef, RangeConfigItemTypeLiteral } from \"./range-config-item\";\nimport { SelectBooleanConfigItemDef, SelectBooleanConfigItemTypeLiteral } from \"./select-boolean-config-item\";\nimport { SelectStringConfigItemDef, SelectStringConfigItemTypeLiteral } from \"./select-string-config-item\";\n\nconst ConfigItemLiterals = [\n RangeConfigItemTypeLiteral,\n MultiStringConfigItemTypeLiteral,\n SelectStringConfigItemTypeLiteral,\n ObjectSchemaConfigItemTypeLiteral,\n SelectBooleanConfigItemTypeLiteral,\n PairedSelectConfigItemTypeLiteral,\n] as const;\nconst ConfigItemEnum = z.enum(ConfigItemLiterals);\ntype ConfigItemEnumType = z.infer<typeof ConfigItemEnum>;\n\nconst ConfigItemDef = z.discriminatedUnion(\"type\", [\n RangeConfigItemDef,\n MultiStringConfigItemDef,\n SelectStringConfigItemDef,\n SelectBooleanConfigItemDef,\n ObjectSchemaConfigItemDef,\n PairedSelectConfigItemDef,\n]);\ntype ConfigItemDefType = z.infer<typeof ConfigItemDef>;\n\nexport { ConfigItemDef, ConfigItemEnum, ConfigItemLiterals, type ConfigItemDefType, type ConfigItemEnumType };\n","import { z } from \"zod\";\n\nimport { ChatModelPriceType, ModalityEnum, RoleEnum } from \"@adaline/types\";\n\nimport { ConfigItemDef } from \"../../types/config\";\n\nconst ChatModelSchema = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n M extends z.ZodEnum<[string, ...string[]]> = typeof ModalityEnum,\n>(\n Roles: R = RoleEnum as unknown as R,\n Modalities: M = ModalityEnum as unknown as M\n) =>\n z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n roles: z.record(Roles, z.string().min(1).optional()),\n modalities: z.array(Modalities).nonempty(),\n maxInputTokens: z.number().int().positive().min(1),\n maxOutputTokens: z.number().int().positive().min(1),\n maxReasoningTokens: z.number().int().positive().min(1).optional(),\n config: z\n .object({\n def: z.record(z.string().min(1), ConfigItemDef),\n schema: z.instanceof(z.ZodObject),\n })\n .refine(\n (config) => {\n const defKeys = Object.keys(config.def);\n const schemaKeys = Object.keys(config.schema?.shape ?? {});\n return defKeys.every((key) => schemaKeys.includes(key)) && schemaKeys.every((key) => defKeys.includes(key));\n },\n {\n message: \"Keys in 'config.def' must exactly match keys in 'config.schema'\",\n }\n ),\n price: z.custom<ChatModelPriceType>(),\n });\ntype ChatModelSchemaType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n M extends z.ZodEnum<[string, ...string[]]> = typeof ModalityEnum,\n> = z.infer<ReturnType<typeof ChatModelSchema<R, M>>>;\n\nexport { ChatModelSchema, type ChatModelSchemaType };\n","import { z } from \"zod\";\n\nimport { EmbeddingModalityEnum } from \"@adaline/types\";\n\nimport { ConfigItemDef } from \"../../types/config\";\n\n// TODO: add embedding model properties (dimensions, etc)\nconst EmbeddingModelSchema = <M extends z.ZodEnum<[string, ...string[]]> = typeof EmbeddingModalityEnum>(\n Modalities: M = EmbeddingModalityEnum as unknown as M\n) =>\n z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n modalities: z.array(Modalities).nonempty(),\n maxInputTokens: z.number().int().positive().min(1),\n maxOutputTokens: z.number().int().positive().min(1),\n config: z\n .object({\n def: z.record(z.string().min(1), ConfigItemDef),\n schema: z.instanceof(z.ZodObject),\n })\n .refine(\n (config) => {\n const defKeys = Object.keys(config.def);\n const schemaKeys = Object.keys(config.schema?.shape ?? {});\n return defKeys.every((key) => schemaKeys.includes(key)) && schemaKeys.every((key) => defKeys.includes(key));\n },\n {\n message: \"Keys in 'config.def' must exactly match keys in 'config.schema'\",\n }\n ),\n });\ntype EmbeddingModelSchemaType<M extends z.ZodEnum<[string, ...string[]]> = typeof EmbeddingModalityEnum> = z.infer<\n ReturnType<typeof EmbeddingModelSchema<M>>\n>;\n\nexport { EmbeddingModelSchema, type EmbeddingModelSchemaType };\n","import { z } from \"zod\";\n\nconst Headers = z.record(z.string());\ntype HeadersType = z.infer<typeof Headers>;\n\nexport { Headers, type HeadersType };\n","import { z } from \"zod\";\n\nconst Params = z.record(\n z.union([\n z.boolean(),\n z.string(),\n z.number(),\n z.object({}),\n z.array(z.any()),\n z.null(),\n z.undefined(),\n ])\n);\ntype ParamsType = z.infer<typeof Params>;\n\nexport { Params, type ParamsType };\n","import { z } from \"zod\";\n\nconst Url = z.string().url();\ntype UrlType = z.infer<typeof Url>;\n\nexport { Url, type UrlType };\n","const TEMPERATURE = {\n type: \"range\",\n title: \"Temperature\",\n description:\n \"Adjusts the model's creativity level. With a setting of 0, the model strictly picks the most probable next word. \\\n For endeavors that benefit from a dash of inventiveness, consider dialing it up to 0.7 or higher, enabling the model to produce text \\\n that's unexpectedly fresh.\",\n} as const;\n\nconst MAX_TOKENS = {\n type: \"range\",\n title: \"Max tokens\",\n description:\n \"Specify the total tokens for generation, where one token approximates four English characters. \\\n Setting this to 0 defaults to the model's maximum capacity.\",\n} as const;\n\nconst MAX_REASONING_TOKENS = {\n type: \"range\",\n title: \"Max reasoning tokens\",\n description: \"Specify the total tokens for reasoning, where one token approximates four English characters.\",\n} as const;\n\nconst STOP = (max: number) =>\n ({\n type: \"multi\",\n title: \"Stop sequence\",\n description: `Enter up to ${max} sequences that will halt additional text output. \\\n The generated text will exclude these sequences.`,\n }) as const;\n\nconst TOP_A = {\n type: \"range\",\n title: \"Top A\",\n description:\n \"Considers only the top tokens that have 'sufficiently high' probabilities relative to the most likely token, \\\n functioning like a dynamic Top-P. \\\n A lower Top-A value narrows down the token choices based on the highest probability token, \\\n while a higher Top-A value refines the filtering without necessarily impacting the creativity of the output.\",\n} as const;\n\nconst TOP_P = {\n type: \"range\",\n title: \"Top P\",\n description:\n \"Selects a subset of likely tokens for generation, restricting choices to the top-P fraction of possibilities, \\\n such as the top 10% when P=0.1. \\\n This approach can limit the variety of the output. By default, it's set to 1, indicating no restriction. \\\n It's advised to adjust this parameter or temperature to modulate output diversity, but not to modify both simultaneously.\",\n} as const;\n\nconst TOP_K = {\n type: \"range\",\n title: \"Top K\",\n description:\n \"Select only from the highest K probabilities for each following word, effectively eliminating the less likely 'long tail' options.\",\n} as const;\n\nconst MIN_P = {\n type: \"range\",\n title: \"Min P\",\n description:\n \"Specifies the minimum probability a token must have to be considered, in relation to the probability of the most likely token. \\\n (This value varies based on the confidence level of the top token.) \\\n For example, if Min-P is set to 0.1, only tokens with at least 1/10th the probability of the highest-ranked token will be considered.\",\n} as const;\n\nconst FREQUENCY_PENALTY = {\n type: \"range\",\n title: \"Frequency penalty\",\n description:\n \"Minimize redundancy.\\\n By assigning a penalty to frequently used tokens within the text, the likelihood of repeating identical phrases is reduced. \\\n The default setting for this penalty is zero.\",\n} as const;\n\nconst PRESENCE_PENALTY = {\n type: \"range\",\n title: \"Presence penalty\",\n description:\n \"Enhance the introduction of novel subjects by reducing the preference for tokens that have already appeared in the text, \\\n thus boosting the chances of exploring fresh topics. \\\n The standard setting for this is zero.\",\n} as const;\n\nconst SEED = {\n type: \"range\",\n title: \"Seed\",\n description:\n \"When seed is fixed to a specific value, the model makes a best effort to provide the same response for repeated requests. \\\n Deterministic output isn't guaranteed. \\\n Also, changing the model or parameter settings, such as the temperature, \\\n can cause variations in the response even when you use the same seed value. \\\n By default, a random seed value is used.\",\n} as const;\n\nconst REPETITION_PENALTY = {\n type: \"range\",\n title: \"Repetition penalty\",\n description:\n \"Reduces the likelihood of repeating tokens from the input. \\\n Increasing this value makes the model less prone to repetition, but setting it too high may lead to less coherent output, \\\n often resulting in run-on sentences missing smaller words. \\\n The token penalty is scaled according to the original token's probability.\",\n} as const;\n\nconst LOG_PROBS = {\n type: \"boolean\",\n title: \"Log probs\",\n description:\n \"Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned.\",\n} as const;\n\nconst TOP_LOG_PROBS = {\n type: \"range\",\n title: \"Top log probs\",\n description:\n \"The number of most likely tokens to return at each token position, each with an associated log probability. \\\n 'logprobs' must be set to true if this parameter is used.\",\n} as const;\n\nconst ECHO = {\n type: \"boolean\",\n title: \"Echo\",\n description: \"If true, the response will contain the prompt.\",\n} as const;\n\nconst RESPONSE_FORMAT = {\n type: \"select\",\n title: \"Response format\",\n description:\n \"Choose the response format of your model. For JSON, you must include the string 'JSON' in some form within your system / user prompt.\",\n} as const;\n\nconst RESPONSE_FORMAT_WITH_SCHEMA = {\n type: \"select\",\n title: \"Response format\",\n description:\n \"Choose the response format of your model. 'json_object' colloquially known as JSON mode, instructs the model to respond with a valid \\\n JSON (must include the term 'json' in prompt). 'json_schema' colloquially known as structured outputs, allows you to specify a strict \\\n response schema that the model will adhere to.\",\n} as const;\n\nconst RESPONSE_SCHEMA = {\n type: \"object\",\n title: \"Response schema\",\n description: \"When response format is set to 'json_schema', the model will return a JSON object of the specified schema.\",\n} as const;\n\nconst MCP_SERVERS = {\n type: \"object\",\n title: \"MCP servers\",\n description: \"MCP servers to use for the model.\",\n} as const;\n\nconst CHAT_CONFIG = {\n TEMPERATURE,\n MAX_TOKENS,\n STOP,\n TOP_A,\n TOP_P,\n TOP_K,\n MIN_P,\n FREQUENCY_PENALTY,\n PRESENCE_PENALTY,\n REPETITION_PENALTY,\n SEED,\n LOG_PROBS,\n TOP_LOG_PROBS,\n ECHO,\n RESPONSE_FORMAT,\n RESPONSE_FORMAT_WITH_SCHEMA,\n RESPONSE_SCHEMA,\n MAX_REASONING_TOKENS,\n MCP_SERVERS,\n};\n\nexport { CHAT_CONFIG };\n","const DIMENSIONS = {\n type: \"range\",\n title: \"Dimensions\",\n description: \"Select the number of dimensions for the word embedding.\",\n} as const;\n\nconst ENCODING_FORMAT = {\n type: \"select\",\n title: \"Encoding format\",\n description: \"Select the encoding format for the word embedding.\",\n} as const;\n\nconst EMBEDDING_CONFIG = {\n DIMENSIONS,\n ENCODING_FORMAT,\n};\n\nexport { EMBEDDING_CONFIG };\n","const removeUndefinedEntries = <T = unknown>(record: Record<string, T | undefined>): Record<string, T> => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return Object.fromEntries(Object.entries(record).filter(([_, value]) => value != null)) as Record<string, T>;\n};\n\nexport { removeUndefinedEntries };\n","const isRunningInBrowser = () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof navigator !== \"undefined\";\n};\n\nexport { isRunningInBrowser };\n","import { isRunningInBrowser } from \"./is-running-in-browser\";\n\nconst convertBase64ToUint8Array = (base64String: string): Uint8Array => {\n const base64Url = base64String.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const latin1string = globalThis.atob(base64Url);\n return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0)!);\n};\n\nconst convertUint8ArrayToBase64 = (array: Uint8Array): string => {\n let latin1string = \"\";\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return globalThis.btoa(latin1string);\n};\n\nconst encodedBase64ToString = (base64: string): string => {\n if (isRunningInBrowser()) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n const decoder = new TextDecoder(\"utf-8\");\n return decoder.decode(bytes);\n } else {\n return Buffer.from(base64, \"base64\").toString(\"utf-8\");\n }\n};\n\nconst getMimeTypeFromBase64 = (base64: string): string => {\n const mimeTypePrefix = base64.split(\";\")[0];\n const mimeType = mimeTypePrefix.split(\"/\")[1];\n return mimeType;\n};\n\nexport { convertBase64ToUint8Array, convertUint8ArrayToBase64, encodedBase64ToString, getMimeTypeFromBase64 };\n","const urlWithoutTrailingSlash = (url: string): string => {\n return url?.replace(/\\/$/, \"\");\n};\n\nexport { urlWithoutTrailingSlash };\n","import { z } from \"zod\";\n\nimport { 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 });\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 }) 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\nexport {\n GOOGLE_SAFETY_CATEGORIES,\n GOOGLE_SAFETY_CATEGORY_OPTIONS,\n GOOGLE_SAFETY_THRESHOLDS,\n GOOGLE_SAFETY_THRESHOLD_OPTIONS,\n frequencyPenalty,\n maxTokens,\n presencePenalty,\n reasoningEnabled,\n safetySettings,\n seed,\n stop,\n temperature,\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 { reasoningEnabled } 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) =>\n GoogleChatModelResponseSchemaConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP).extend({\n reasoningEnabled: reasoningEnabled.schema,\n });\n\nconst ChatModelReasoningConfigDef = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number,\n) =>\n ({\n ...GoogleChatModelResponseSchemaConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n reasoningEnabled: reasoningEnabled.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 ) => ({\n def: ChatModelReasoningConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n schema: ChatModelReasoningConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\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.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}\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 { ImageModalityLiteral, PdfModalityLiteral, TextModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral } from \"@adaline/types\";\n\nconst GoogleChatModelModalities: ChatModelSchemaType[\"modalities\"] = [\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n];\n\nconst GoogleChatModelModalitiesEnum = z.enum([\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\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 GoogleCompleteChatTextResponse = z.object({\n text: z.string(),\n});\n\nconst GoogleCompleteChatToolResponse = z.object({\n functionCall: z.object({\n name: z.string(),\n args: z.record(z.any()),\n }),\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 })\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});\n\nconst GoogleStreamChatToolResponse = z.object({\n functionCall: z.object({\n name: z.string(),\n args: z.record(z.any()),\n }),\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 })\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\nexport {\n GoogleCompleteChatResponse,\n GoogleCompleteChatTextResponse,\n GoogleCompleteChatToolResponse,\n GoogleStreamChatResponse,\n GoogleStreamChatTextResponse,\n GoogleStreamChatToolResponse,\n type GoogleCompleteChatResponseType,\n type GoogleStreamChatResponseType,\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});\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 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 ])\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 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 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});\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 })\n .optional(),\n toolConfig: GoogleChatToolConfig.optional(),\n tool_config: GoogleChatToolConfig.optional(),\n});\ntype GoogleChatRequestType = z.infer<typeof GoogleChatRequest>;\n\nexport {\n GoogleChatContent,\n GoogleChatContentPartFunctionCall,\n GoogleChatContentPartFunctionResponse,\n GoogleChatContentPartInlineData,\n GoogleChatContentPartFileData,\n GoogleChatContentPartText,\n GoogleChatGenerationConfig,\n GoogleChatRequest,\n GoogleChatSystemInstruction,\n GoogleChatTool,\n GoogleChatToolConfig,\n GoogleChatSafetySettings,\n type GoogleChatContentPartTextType,\n type GoogleChatContentPartFunctionCallType,\n type GoogleChatContentPartFunctionResponseType,\n type GoogleChatContentPartInlineDataType,\n type GoogleChatContentPartFileDataType,\n type GoogleChatToolType,\n type GoogleChatToolConfigType,\n type GoogleChatGenerationConfigType,\n type GoogleChatRequestType,\n type GoogleChatContentType,\n type GoogleChatSystemInstructionType,\n type GoogleChatSafetySettingsType,\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 ChatUsageType,\n Config,\n ConfigType,\n ContentType,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createTextContent,\n createToolCallContent,\n ImageContentType,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialChatResponseType,\n PdfContentType,\n PdfModalityLiteral,\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(responseHeaders: HeadersType): { shouldRetry: boolean; delayMs: number } {\n return { shouldRetry: false, delayMs: 0 };\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 includeThoughts: paramValue,\n };\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 (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 const safetySettings = transformedConfig.safetySettings;\n delete transformedConfig.safetySettings;\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 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 assistantContent.push({\n function_call: {\n name: content.name,\n args: JSON.parse(content.arguments),\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 // TODO: add logic to fetch image from url, remove this error\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 transformTools(tools: ToolType[]): 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 && tools.length === 0)) {\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 parameters: tool.definition.schema.parameters,\n }));\n\n return {\n tools: [\n {\n function_declarations: transformedTools,\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 = tools ? this.transformTools(tools) : {};\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 parsedResponse: GoogleCompleteChatResponseType = safe.data;\n const messages: MessageType[] = [];\n let usage: ChatUsageType | undefined;\n const _content = parsedResponse.candidates[0].content;\n if (_content) {\n const content = _content.parts.map((contentItem: any, index: any) => {\n if (\"text\" in contentItem && contentItem.text !== undefined) {\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 );\n }\n }) as ContentType[];\n\n messages.push({\n role: AssistantRoleLiteral,\n content: content,\n });\n\n if (parsedResponse.usageMetadata) {\n usage = {\n promptTokens: parsedResponse.usageMetadata.promptTokenCount,\n totalTokens: parsedResponse.usageMetadata.totalTokenCount,\n completionTokens: parsedResponse.usageMetadata.candidatesTokenCount || 0,\n };\n }\n\n return {\n messages: messages,\n usage: usage,\n logProbs: undefined,\n };\n }\n\n const safetyRatings = parsedResponse.candidates[0].safetyRatings;\n if (safetyRatings && safetyRatings.length > 0) {\n safetyRatings.forEach((rating) => {\n if (rating.blocked) {\n throw new ModelResponseError({\n info: `Blocked content for category: ${rating.category} with probability: ${rating.probability}`,\n cause: new Error(`Blocked content for category: ${rating.category} with probability: ${rating.probability}`),\n });\n }\n });\n }\n\n const finishReason = parsedResponse.candidates[0].finishReason;\n if (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 = tools ? this.transformTools(tools) : {};\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 partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, messagePart.text));\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 )\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 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 let 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 partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, messagePart.text));\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 )\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 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.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_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.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_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 {\n Gemini2_5Flash,\n Gemini2_5FlashLiteral,\n Gemini2_5FlashOptions,\n Gemini2_5FlashSchema,\n type Gemini2_5FlashOptionsType,\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_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).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95).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).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95).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-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).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95).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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(responseHeaders: HeadersType): { shouldRetry: boolean; delayMs: number } {\n return { shouldRetry: false, delayMs: 0 };\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","import { z } from \"zod\";\n\nimport { ChatModelSchemaType, ChatModelV1, EmbeddingModelSchemaType, EmbeddingModelV1, ProviderError, ProviderV1 } from \"@adaline/provider\";\n\nimport * as Models from \"../models\";\n\nconst ProviderLiteral = \"vertex\";\nclass Vertex<C extends Models.BaseChatModelOptionsType, E extends Models.BaseEmbeddingModelOptionsType> implements ProviderV1<C, E> {\n readonly version = \"v1\" as const;\n readonly name = ProviderLiteral;\n\n static readonly baseUrl = (location: string, projectId: string, publisher: string = \"google\") =>\n `https://${location}-aiplatform.googleapis.com/v1/projects/${projectId}/locations/${location}/publishers/${publisher}`;\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 [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_5FlashLiteLiteral]: {\n model: Models.Gemini2_5FlashLite,\n modelOptions: Models.Gemini2_5FlashLiteOptions,\n modelSchema: Models.Gemini2_5FlashLiteSchema,\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.Gemini3ProPreviewLiteral]: {\n model: Models.Gemini3ProPreview,\n modelOptions: Models.Gemini3ProPreviewOptions,\n modelSchema: Models.Gemini3ProPreviewSchema,\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_004Literal]: {\n model: Models.Text_Embedding_004,\n modelOptions: Models.Text_Embedding_004Options,\n modelSchema: Models.Text_Embedding_004Schema,\n },\n [Models.Text_Multilingual_Embedding_002Literal]: {\n model: Models.Text_Multilingual_Embedding_002,\n modelOptions: Models.Text_Multilingual_Embedding_002Options,\n modelSchema: Models.Text_Multilingual_Embedding_002Schema,\n },\n [Models.Text_Embedding_Gecko_003Literal]: {\n model: Models.Text_Embedding_Gecko_003,\n modelOptions: Models.Text_Embedding_Gecko_003Options,\n modelSchema: Models.Text_Embedding_Gecko_003Schema,\n },\n [Models.Text_Embedding_Gecko_Multilingual_001Literal]: {\n model: Models.Text_Embedding_Gecko_Multilingual_001,\n modelOptions: Models.Text_Embedding_Gecko_Multilingual_001Options,\n modelSchema: Models.Text_Embedding_Gecko_Multilingual_001Schema,\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: `Vertex chat model: ${modelName} not found`,\n cause: new Error(`Vertex 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: `Vertex embedding model: ${modelName} not found`,\n cause: new Error(`Vertex 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 { Vertex };\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-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\": {\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\": {\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.15,\n \"outputPricePerMillion\": 0.6\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.15,\n \"outputPricePerMillion\": 0.6\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-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.01875,\n \"outputPricePerMillion\": 0.075\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.0375,\n \"outputPricePerMillion\": 0.15\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\": 0.3125,\n \"outputPricePerMillion\": 1.25\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.625,\n \"outputPricePerMillion\": 2.5\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.5,\n \"outputPricePerMillion\": 2\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-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.5-pro\": {\n \"modelName\": \"gemini-2.5-pro\",\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-3-pro-preview\": {\n \"modelName\": \"gemini-3-pro-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 200000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 12\n }\n }\n },\n {\n \"minTokens\": 200001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 18\n }\n }\n }\n ]\n }\n}\n","import { z } from \"zod\";\n\nimport { Gemini1_5Flash001Schema as Google_Gemini1_5Flash001Schema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5Flash001Literal = \"gemini-1.5-flash-001\" as const;\nconst Gemini1_5Flash001Schema = {\n ...Google_Gemini1_5Flash001Schema,\n price: pricingData[Gemini1_5Flash001Literal],\n} as const;\nconst Gemini1_5Flash001Options = BaseChatModelOptions;\ntype Gemini1_5Flash001OptionsType = z.infer<typeof Gemini1_5Flash001Options>;\n\nclass Gemini1_5Flash001 extends BaseChatModelVertex {\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 { Gemini1_5Flash002Schema as Google_Gemini1_5Flash002Schema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5Flash002Literal = \"gemini-1.5-flash-002\" as const;\nconst Gemini1_5Flash002Schema = {\n ...Google_Gemini1_5Flash002Schema,\n price: pricingData[Gemini1_5Flash002Literal],\n};\nconst Gemini1_5Flash002Options = BaseChatModelOptions;\ntype Gemini1_5Flash002OptionsType = z.infer<typeof Gemini1_5Flash002Options>;\n\nclass Gemini1_5Flash002 extends BaseChatModelVertex {\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 { Gemini1_5FlashSchema as Google_Gemini1_5FlashSchema } from \"@adaline/google\";\nimport { ChatModelSchemaType } from \"@adaline/provider\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5FlashLiteral = \"gemini-1.5-flash\" as const;\n\n// Override the schema\nconst Gemini1_5FlashSchema: ChatModelSchemaType = {\n ...Google_Gemini1_5FlashSchema,\n price: pricingData[Gemini1_5FlashLiteral],\n};\n\nconst Gemini1_5FlashOptions = BaseChatModelOptions;\ntype Gemini1_5FlashOptionsType = z.infer<typeof Gemini1_5FlashOptions>;\n\nclass Gemini1_5Flash extends BaseChatModelVertex {\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 { Gemini1_5Pro001Schema as Google_Gemini1_5Pro001Schema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5Pro001Literal = \"gemini-1.5-pro-001\" as const;\nconst Gemini1_5Pro001Schema = {\n ...Google_Gemini1_5Pro001Schema,\n price: pricingData[Gemini1_5Pro001Literal],\n} as const;\nconst Gemini1_5Pro001Options = BaseChatModelOptions;\ntype Gemini1_5Pro001OptionsType = z.infer<typeof Gemini1_5Pro001Options>;\n\nclass Gemini1_5Pro001 extends BaseChatModelVertex {\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 { Gemini1_5Pro002Schema as Google_Gemini1_5Pro002Schema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5Pro002Literal = \"gemini-1.5-pro-002\" as const;\n\nconst Gemini1_5Pro002Schema = {\n ...Google_Gemini1_5Pro002Schema,\n price: pricingData[Gemini1_5Pro002Literal],\n} as const;\nconst Gemini1_5Pro002Options = BaseChatModelOptions;\ntype Gemini1_5Pro002OptionsType = z.infer<typeof Gemini1_5Pro002Options>;\n\nclass Gemini1_5Pro002 extends BaseChatModelVertex {\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 { Gemini1_5ProSchema as Google_Gemini1_5ProSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5ProLiteral = \"gemini-1.5-pro\" as const;\nconst Gemini1_5ProSchema = {\n ...Google_Gemini1_5ProSchema,\n price: pricingData[Gemini1_5ProLiteral],\n} as const;\n\nconst Gemini1_5ProOptions = BaseChatModelOptions;\ntype Gemini1_5ProOptionsType = z.infer<typeof Gemini1_5ProOptions>;\n\nclass Gemini1_5Pro extends BaseChatModelVertex {\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 { Gemini1_5FlashLatestSchema as Google_Gemini1_5FlashLatestSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5FlashLatestLiteral = \"gemini-1.5-flash-latest\" as const;\nconst Gemini1_5FlashLatestSchema = {\n ...Google_Gemini1_5FlashLatestSchema,\n price: pricingData[Gemini1_5FlashLatestLiteral],\n} as const;\nconst Gemini1_5FlashLatestOptions = BaseChatModelOptions;\ntype Gemini1_5FlashLatestOptionsType = z.infer<typeof Gemini1_5FlashLatestOptions>;\n\nclass Gemini1_5FlashLatest extends BaseChatModelVertex {\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 { Gemini1_5ProLatestSchema as Google_Gemini1_5ProLatestSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5ProLatestLiteral = \"gemini-1.5-pro-latest\" as const;\nconst Gemini1_5ProLatestSchema = {\n ...Google_Gemini1_5ProLatestSchema,\n price: pricingData[Gemini1_5ProLatestLiteral],\n} as const;\nconst Gemini1_5ProLatestOptions = BaseChatModelOptions;\ntype Gemini1_5ProLatestOptionsType = z.infer<typeof Gemini1_5ProLatestOptions>;\n\nclass Gemini1_5ProLatest extends BaseChatModelVertex {\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 { Gemini2_0FlashExpSchema as Google_Gemini2_0FlashExpSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_0FlashExpLiteral = \"gemini-2.0-flash-exp\" as const;\n\nconst Gemini2_0FlashExpSchema = {\n ...Google_Gemini2_0FlashExpSchema,\n price: pricingData[Gemini2_0FlashExpLiteral],\n} as const;\nconst Gemini2_0FlashExpOptions = BaseChatModelOptions;\ntype Gemini2_0FlashExpOptionsType = z.infer<typeof Gemini2_0FlashExpOptions>;\n\nclass Gemini2_0FlashExp extends BaseChatModelVertex {\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 { Gemini2_0FlashSchema as Google_Gemini2_0FlashSchema } from \"@adaline/google\";\nimport { ChatModelSchemaType } from \"@adaline/provider\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_0FlashLiteral = \"gemini-2.0-flash\" as const;\n\n// Override the schema\nconst Gemini2_0FlashSchema: ChatModelSchemaType = {\n ...Google_Gemini2_0FlashSchema,\n price: pricingData[Gemini2_0FlashLiteral],\n};\n\nconst Gemini2_0FlashOptions = BaseChatModelOptions;\ntype Gemini2_0FlashOptionsType = z.infer<typeof Gemini2_0FlashOptions>;\n\nclass Gemini2_0Flash extends BaseChatModelVertex {\n constructor(options: Gemini2_0FlashOptionsType) {\n super(Gemini2_0FlashSchema, options);\n }\n}\n\nexport { Gemini2_0Flash, Gemini2_0FlashLiteral, Gemini2_0FlashOptions, Gemini2_0FlashSchema, type Gemini2_0FlashOptionsType };\n","import { z } from \"zod\";\n\nimport { Gemini2_5FlashLiteSchema as Google_Gemini2_5FlashLiteSchema } from \"@adaline/google\";\nimport { ChatModelSchemaType } from \"@adaline/provider\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_5FlashLiteLiteral = \"gemini-2.5-flash-lite\" as const;\n\n// Override the schema\nconst Gemini2_5FlashLiteSchema: ChatModelSchemaType = {\n ...Google_Gemini2_5FlashLiteSchema,\n price: pricingData[Gemini2_5FlashLiteLiteral],\n};\n\nconst Gemini2_5FlashLiteOptions = BaseChatModelOptions;\ntype Gemini2_5FlashLiteOptionsType = z.infer<typeof Gemini2_5FlashLiteOptions>;\n\nclass Gemini2_5FlashLite extends BaseChatModelVertex {\n constructor(options: Gemini2_5FlashLiteOptionsType) {\n super(Gemini2_5FlashLiteSchema, options);\n }\n}\n\nexport { Gemini2_5FlashLite, Gemini2_5FlashLiteLiteral, Gemini2_5FlashLiteOptions, Gemini2_5FlashLiteSchema, type Gemini2_5FlashLiteOptionsType };\n","import { z } from \"zod\";\n\nimport { Gemini2_5FlashPreview0417Schema as Google_Gemini2_5FlashPreview0417Schema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_5FlashPreview0417Literal = \"gemini-2.5-flash-preview-04-17\" as const;\nconst Gemini2_5FlashPreview0417Schema = {\n ...Google_Gemini2_5FlashPreview0417Schema,\n price: pricingData[Gemini2_5FlashPreview0417Literal],\n} as const;\nconst Gemini2_5FlashPreview0417Options = BaseChatModelOptions;\ntype Gemini2_5FlashPreview0417OptionsType = z.infer<typeof Gemini2_5FlashPreview0417Options>;\n\nclass Gemini2_5FlashPreview0417 extends BaseChatModelVertex {\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 { Gemini2_5FlashSchema as Google_Gemini2_5FlashSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_5FlashLiteral = \"gemini-2.5-flash\" as const;\nconst Gemini2_5FlashSchema = {\n ...Google_Gemini2_5FlashSchema,\n price: pricingData[Gemini2_5FlashLiteral],\n} as const;\nconst Gemini2_5FlashOptions = BaseChatModelOptions;\ntype Gemini2_5FlashOptionsType = z.infer<typeof Gemini2_5FlashOptions>;\n\nclass Gemini2_5Flash extends BaseChatModelVertex {\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 { Gemini2_5ProPreview0325Schema as Google_Gemini2_5ProPreview0325Schema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_5ProPreview0325Literal = \"gemini-2.5-pro-preview-03-25\" as const;\nconst Gemini2_5ProPreview0325Schema = {\n ...Google_Gemini2_5ProPreview0325Schema,\n price: pricingData[Gemini2_5ProPreview0325Literal],\n} as const;\nconst Gemini2_5ProPreview0325Options = BaseChatModelOptions;\ntype Gemini2_5ProPreview0325OptionsType = z.infer<typeof Gemini2_5ProPreview0325Options>;\n\nclass Gemini2_5ProPreview0325 extends BaseChatModelVertex {\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 { Gemini2_5ProSchema as Google_Gemini2_5ProSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_5ProLiteral = \"gemini-2.5-pro\" as const;\nconst Gemini2_5ProSchema = {\n ...Google_Gemini2_5ProSchema,\n price: pricingData[Gemini2_5ProLiteral],\n} as const;\nconst Gemini2_5ProOptions = BaseChatModelOptions;\ntype Gemini2_5ProOptionsType = z.infer<typeof Gemini2_5ProOptions>;\n\nclass Gemini2_5Pro extends BaseChatModelVertex {\n constructor(options: Gemini2_5ProOptionsType) {\n super(Gemini2_5ProSchema, options);\n }\n}\n\nexport { Gemini2_5Pro, Gemini2_5ProLiteral, Gemini2_5ProOptions, Gemini2_5ProSchema, type Gemini2_5ProOptionsType };\n","import { z } from \"zod\";\n\nimport { Gemini3ProPreviewSchema as Google_Gemini3ProPreviewSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini3ProPreviewLiteral = \"gemini-3-pro-preview\" as const;\nconst Gemini3ProPreviewSchema = {\n ...Google_Gemini3ProPreviewSchema,\n price: pricingData[Gemini3ProPreviewLiteral],\n} as const;\nconst Gemini3ProPreviewOptions = BaseChatModelOptions;\ntype Gemini3ProPreviewOptionsType = z.infer<typeof Gemini3ProPreviewOptions>;\n\nclass Gemini3ProPreview extends BaseChatModelVertex {\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","import { z } from \"zod\";\n\nimport { EmbeddingModelSchemaType } from \"@adaline/provider\";\nimport { EmbeddingTextModalityLiteral } from \"@adaline/types\";\n\nconst VertexEmbeddingModelModalities: EmbeddingModelSchemaType[\"modalities\"] = [EmbeddingTextModalityLiteral];\n\nconst VertexEmbeddingModelModalitiesEnum = z.enum([EmbeddingTextModalityLiteral]);\n\nexport { VertexEmbeddingModelModalitiesEnum, VertexEmbeddingModelModalities };\n","import { z } from \"zod\";\n\nconst VertexGetEmbeddingsResponse = z.object({\n predictions: z.array(\n z.object({\n embeddings: z.object({\n values: z.array(z.number()),\n statistics: z.object({\n token_count: z.number(),\n truncated: z.boolean(),\n }),\n }),\n })\n ),\n});\n\ntype VertexGetEmbeddingsResponseType = z.infer<typeof VertexGetEmbeddingsResponse>;\n\nexport { VertexGetEmbeddingsResponse, type VertexGetEmbeddingsResponseType };\n","import { z } from \"zod\";\n\nconst VertexEmbeddingRequest = z.object({\n model: z.string().min(1).optional(),\n instances: z\n .array(\n z.object({\n content: z.string().min(1),\n })\n )\n .min(1),\n parameters: z\n .object({\n auto_truncate: z.boolean().optional(),\n output_dimensionality: z.number().int().min(1).optional(),\n autoTruncate: z.boolean().optional(),\n outputDimensionality: z.number().int().min(1).optional(),\n })\n .optional(),\n});\n\ntype VertexEmbeddingRequestType = z.infer<typeof VertexEmbeddingRequest>;\n\nexport { VertexEmbeddingRequest, type VertexEmbeddingRequestType };\n","import { z } from \"zod\";\n\nimport {\n EmbeddingModelSchemaType,\n EmbeddingModelV1,\n HeadersType,\n InvalidConfigError,\n InvalidEmbeddingRequestsError,\n InvalidModelRequestError,\n ModelError,\n ModelResponseError,\n ParamsType,\n removeUndefinedEntries,\n UrlType,\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 { Vertex } from \"../../provider/provider.vertex\";\nimport { VertexEmbeddingRequest, VertexGetEmbeddingsResponse } from \"./types\";\n\nconst BaseEmbeddingModelOptions = z.object({\n accessToken: z.string(),\n modelName: z.string(),\n baseUrl: z.string().url().optional(),\n location: z.string().optional(),\n projectId: z.string().optional(),\n publisher: z.string().optional(),\n});\ntype BaseEmbeddingModelOptionsType = z.infer<typeof BaseEmbeddingModelOptions>;\n\nclass BaseEmbeddingModel implements EmbeddingModelV1<EmbeddingModelSchemaType> {\n readonly version = \"v1\" as const;\n modelSchema: EmbeddingModelSchemaType;\n modelName: string;\n\n private readonly accessToken: string;\n private readonly baseUrl: string;\n private readonly getEmbeddingsUrl: string;\n private readonly location: string | undefined;\n private readonly projectId: string | undefined;\n private readonly publisher: string | undefined;\n\n constructor(modelSchema: EmbeddingModelSchemaType, options: BaseEmbeddingModelOptionsType) {\n const parsedOptions = BaseEmbeddingModelOptions.parse(options);\n this.modelSchema = modelSchema;\n this.modelName = parsedOptions.modelName;\n this.accessToken = parsedOptions.accessToken;\n\n let baseUrl: string | undefined;\n if (parsedOptions.baseUrl) {\n baseUrl = parsedOptions.baseUrl;\n } else if (parsedOptions.location && parsedOptions.projectId) {\n baseUrl = Vertex.baseUrl(parsedOptions.location, parsedOptions.projectId, parsedOptions.publisher);\n } else {\n throw new ModelError({\n info: \"Either 'baseUrl' must be provided or 'location' and 'projectId' must be provided\",\n cause: new Error(\"Either 'baseUrl' must be provided or 'location' and 'projectId' must be provided\"),\n });\n }\n\n this.baseUrl = baseUrl;\n this.getEmbeddingsUrl = `${this.baseUrl}/models/${parsedOptions.modelName}:predict`;\n this.location = parsedOptions.location;\n this.projectId = parsedOptions.projectId;\n }\n\n getDefaultBaseUrl(): UrlType {\n return this.baseUrl;\n }\n\n getDefaultHeaders(): HeadersType {\n return {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.accessToken}`,\n };\n }\n\n getDefaultParams(): ParamsType {\n return {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(responseHeaders: HeadersType): { shouldRetry: boolean; delayMs: number } {\n return { shouldRetry: false, delayMs: 0 };\n }\n\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 = VertexEmbeddingRequest.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 autoTruncate: parsedRequest.parameters?.auto_truncate || parsedRequest.parameters?.autoTruncate,\n dimensions: parsedRequest.parameters?.output_dimensionality || parsedRequest.parameters?.outputDimensionality,\n };\n const config = Config().parse(removeUndefinedEntries(_config));\n\n const embeddingRequests: EmbeddingRequestsType = {\n modality: EmbeddingTextModalityLiteral,\n requests: parsedRequest.instances.map((instance) => instance.content),\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 {\n parameters: transformedConfig,\n };\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 instances = _parsedRequests.data.requests.map((request) => {\n return {\n content: request as string,\n };\n });\n\n return {\n instances,\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 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 resolve({\n ...this.getDefaultParams(),\n ...this.transformConfig(config),\n ...this.transformEmbeddingRequests(requests),\n });\n });\n }\n\n transformGetEmbeddingsResponse(response: any): EmbeddingResponseType {\n const safe = VertexGetEmbeddingsResponse.safeParse(response);\n if (safe.success) {\n const parsedResponse = safe.data;\n const embeddings = parsedResponse.predictions.map((prediction, index) => {\n return {\n index,\n embedding: prediction.embeddings.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 { EMBEDDING_CONFIG, RangeConfigItem, SelectBooleanConfigItem } from \"@adaline/provider\";\n\nconst dimensions = (maxDimensions: number) =>\n RangeConfigItem({\n param: \"output_dimensionality\",\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\nconst autoTruncate = SelectBooleanConfigItem({\n param: \"auto_truncate\",\n title: \"Auto truncate\",\n description:\n \"When set to true, input text will be truncated. \\\n When set to false, an error is returned if the input text is longer than the maximum length supported by the model.\",\n default: true,\n});\n\nexport { dimensions, autoTruncate };\n","import { z } from \"zod\";\n\nimport { autoTruncate, dimensions } from \"./common.config.embedding-model.vertex\";\n\nconst EmbeddingModelBaseConfigSchema = (maxDimensions: number) =>\n z.object({\n dimensions: dimensions(maxDimensions).schema,\n autoTruncate: autoTruncate.schema,\n });\n\nconst EmbeddingModelBaseConfigDef = (maxDimensions: number) =>\n ({\n dimensions: dimensions(maxDimensions).def,\n autoTruncate: autoTruncate.def,\n }) as const;\n\nexport { EmbeddingModelBaseConfigDef, EmbeddingModelBaseConfigSchema };\n","import { EmbeddingModelBaseConfigDef, EmbeddingModelBaseConfigSchema } from \"./embedding-model\";\n\nconst VertexEmbeddingModelConfigs = {\n base: (maxDimensions: number) => ({\n def: EmbeddingModelBaseConfigDef(maxDimensions),\n schema: EmbeddingModelBaseConfigSchema(maxDimensions),\n }),\n} as const;\n\nexport { VertexEmbeddingModelConfigs };\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { VertexEmbeddingModelConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.vertex\";\nimport { VertexEmbeddingModelModalities, VertexEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst Text_Embedding_004Literal = \"text-embedding-004\";\nconst Text_Embedding_004_Description = \"text-embedding-004\";\n\nconst Text_Embedding_004Schema = EmbeddingModelSchema(VertexEmbeddingModelModalitiesEnum).parse({\n name: Text_Embedding_004Literal,\n description: Text_Embedding_004_Description,\n modalities: VertexEmbeddingModelModalities,\n maxInputTokens: 2048,\n maxOutputTokens: 768,\n config: {\n def: VertexEmbeddingModelConfigs.base(768).def,\n schema: VertexEmbeddingModelConfigs.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","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { VertexEmbeddingModelConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.vertex\";\nimport { VertexEmbeddingModelModalities, VertexEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst Text_Multilingual_Embedding_002Literal = \"text-multilingual-embedding-002\";\nconst Text_Multilingual_Embedding_002_Description = \"text-multilingual-embedding-002\";\n\nconst Text_Multilingual_Embedding_002Schema = EmbeddingModelSchema(VertexEmbeddingModelModalitiesEnum).parse({\n name: Text_Multilingual_Embedding_002Literal,\n description: Text_Multilingual_Embedding_002_Description,\n modalities: VertexEmbeddingModelModalities,\n maxInputTokens: 2048,\n maxOutputTokens: 768,\n config: {\n def: VertexEmbeddingModelConfigs.base(768).def,\n schema: VertexEmbeddingModelConfigs.base(768).schema,\n },\n});\n\nconst Text_Multilingual_Embedding_002Options = BaseEmbeddingModelOptions;\ntype Text_Multilingual_Embedding_002OptionsType = z.infer<typeof Text_Multilingual_Embedding_002Options>;\n\nclass Text_Multilingual_Embedding_002 extends BaseEmbeddingModel {\n constructor(options: Text_Multilingual_Embedding_002OptionsType) {\n super(Text_Multilingual_Embedding_002Schema, options);\n }\n}\n\nexport {\n Text_Multilingual_Embedding_002,\n Text_Multilingual_Embedding_002Options,\n Text_Multilingual_Embedding_002Schema,\n Text_Multilingual_Embedding_002Literal,\n type Text_Multilingual_Embedding_002OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { VertexEmbeddingModelConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.vertex\";\nimport { VertexEmbeddingModelModalities, VertexEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst Text_Embedding_Gecko_Multilingual_001Literal = \"textembedding-gecko-multilingual@001\";\nconst Text_Embedding_Gecko_Multilingual_001_Description = \"textembedding-gecko-multilingual@001\";\n\nconst Text_Embedding_Gecko_Multilingual_001Schema = EmbeddingModelSchema(VertexEmbeddingModelModalitiesEnum).parse({\n name: Text_Embedding_Gecko_Multilingual_001Literal,\n description: Text_Embedding_Gecko_Multilingual_001_Description,\n modalities: VertexEmbeddingModelModalities,\n maxInputTokens: 2048,\n maxOutputTokens: 768,\n config: {\n def: VertexEmbeddingModelConfigs.base(768).def,\n schema: VertexEmbeddingModelConfigs.base(768).schema,\n },\n});\n\nconst Text_Embedding_Gecko_Multilingual_001Options = BaseEmbeddingModelOptions;\ntype Text_Embedding_Gecko_Multilingual_001OptionsType = z.infer<typeof Text_Embedding_Gecko_Multilingual_001Options>;\n\nclass Text_Embedding_Gecko_Multilingual_001 extends BaseEmbeddingModel {\n constructor(options: Text_Embedding_Gecko_Multilingual_001OptionsType) {\n super(Text_Embedding_Gecko_Multilingual_001Schema, options);\n }\n}\n\nexport {\n Text_Embedding_Gecko_Multilingual_001,\n Text_Embedding_Gecko_Multilingual_001Options,\n Text_Embedding_Gecko_Multilingual_001Schema,\n Text_Embedding_Gecko_Multilingual_001Literal,\n type Text_Embedding_Gecko_Multilingual_001OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { VertexEmbeddingModelConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.vertex\";\nimport { VertexEmbeddingModelModalities, VertexEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst Text_Embedding_Gecko_003Literal = \"textembedding-gecko@003\";\nconst Text_Embedding_Gecko_003_Description = \"textembedding-gecko@003\";\n\nconst Text_Embedding_Gecko_003Schema = EmbeddingModelSchema(VertexEmbeddingModelModalitiesEnum).parse({\n name: Text_Embedding_Gecko_003Literal,\n description: Text_Embedding_Gecko_003_Description,\n modalities: VertexEmbeddingModelModalities,\n maxInputTokens: 2048,\n maxOutputTokens: 768,\n config: {\n def: VertexEmbeddingModelConfigs.base(768).def,\n schema: VertexEmbeddingModelConfigs.base(768).schema,\n },\n});\n\nconst Text_Embedding_Gecko_003Options = BaseEmbeddingModelOptions;\ntype Text_Embedding_Gecko_003OptionsType = z.infer<typeof Text_Embedding_Gecko_003Options>;\n\nclass Text_Embedding_Gecko_003 extends BaseEmbeddingModel {\n constructor(options: Text_Embedding_Gecko_003OptionsType) {\n super(Text_Embedding_Gecko_003Schema, options);\n }\n}\n\nexport {\n Text_Embedding_Gecko_003,\n Text_Embedding_Gecko_003Options,\n Text_Embedding_Gecko_003Schema,\n Text_Embedding_Gecko_003Literal,\n type Text_Embedding_Gecko_003OptionsType,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/models/chat-models/base-chat-model.vertex.ts","../../../../packages/types/src/message/roles.ts","../../../../packages/types/src/message/content/image-content.ts","../../../../packages/types/src/message/content/pdf-content.ts","../../../../packages/types/src/message/content/reasoning-content.ts","../../../../packages/types/src/message/content/text-content.ts","../../../../packages/types/src/message/content/tool-call-content.ts","../../../../packages/types/src/message/content/tool-response-content.ts","../../../../packages/types/src/message/content/content.ts","../../../../packages/types/src/message/message.ts","../../../../packages/types/src/chat/chat-response.ts","../../../../packages/types/src/config/config.ts","../../../../packages/types/src/config/mcp.config.ts","../../../../packages/types/src/config/response-schema.config.ts","../../../../packages/types/src/embedding/embedding-requests.ts","../../../../packages/types/src/embedding/embedding-response.ts","../../../../packages/types/src/errors/gateway-base.error.ts","../../../../packages/types/src/pricing/pricing-tiers.ts","../../../../packages/types/src/tool/function-tool.ts","../../../../packages/types/src/tool/tool.ts","../../../../packages/types/src/utils/create-message.ts","../../../../packages/provider/src/errors/provider.error.ts","../../../../packages/provider/src/errors/model.error.ts","../../../../packages/provider/src/errors/model-response.error.ts","../../../../packages/provider/src/errors/invalid-model-request.error.ts","../../../../packages/provider/src/errors/invalid-config.error.ts","../../../../packages/provider/src/errors/invalid-messages.error.ts","../../../../packages/provider/src/errors/invalid-tools.error.ts","../../../../packages/provider/src/errors/invalid-embedding-requests.error.ts","../../../../packages/provider/src/types/config/multi-string-config-item.ts","../../../../packages/provider/src/types/config/object-schema-config-item.ts","../../../../packages/provider/src/types/config/paired-select-config-item.ts","../../../../packages/provider/src/types/config/range-config-item.ts","../../../../packages/provider/src/types/config/select-boolean-config-item.ts","../../../../packages/provider/src/types/config/select-string-config-item.ts","../../../../packages/provider/src/types/config/config-item.ts","../../../../packages/provider/src/model/chat-model/chat-model.schema.v1.ts","../../../../packages/provider/src/model/embedding-model/embedding-model.schema.v1.ts","../../../../packages/provider/src/types/headers.ts","../../../../packages/provider/src/types/params.ts","../../../../packages/provider/src/types/url.ts","../../../../packages/provider/src/utils/common-config.def.chat-model.ts","../../../../packages/provider/src/utils/common-config.def.word-embedding.ts","../../../../packages/provider/src/utils/remove-undefined-entries.ts","../../../../packages/provider/src/utils/is-running-in-browser.ts","../../../../packages/provider/src/utils/base64.ts","../../../../packages/provider/src/utils/url.ts","../../google/src/configs/chat-model/base.config.chat-model.google.ts","../../google/src/configs/chat-model/common.config.chat-model.google.ts","../../google/src/configs/chat-model/response-schema.config.chat-model.google.ts","../../google/src/configs/chat-model/reasoning.config.chat-model.google.ts","../../google/src/configs/embedding-model/base.config.embedding-model.google.ts","../../google/src/configs/embedding-model/common.config.embedding-model.google.ts","../../google/src/configs/configs.google.ts","../../google/src/provider/provider.google.ts","../../google/src/models/pricing.json","../../google/src/models/chat-models/types/roles.chat-model.google.ts","../../google/src/models/chat-models/types/modalities.chat-model.google.ts","../../google/src/models/chat-models/types/response.chat-model.google.ts","../../google/src/models/chat-models/types/request.chat-model.google.ts","../../google/src/models/chat-models/base-chat-model.google.ts","../../google/src/models/chat-models/gemini-1.5-flash-001.google.ts","../../google/src/models/chat-models/gemini-1.5-flash-002.google.ts","../../google/src/models/chat-models/gemini-1.5-flash-latest.google.ts","../../google/src/models/chat-models/gemini-1.5-flash.google.ts","../../google/src/models/chat-models/gemini-1.5-pro-001.google.ts","../../google/src/models/chat-models/gemini-1.5-pro-002.google.ts","../../google/src/models/chat-models/gemini-1.5-pro-latest.google.ts","../../google/src/models/chat-models/gemini-1.5-pro.google.ts","../../google/src/models/chat-models/gemini-2.0-flash-exp.google.ts","../../google/src/models/chat-models/gemini-2.0-flash.google.ts","../../google/src/models/chat-models/gemini-2.5-flash-lite.google.ts","../../google/src/models/chat-models/gemini-2.5-flash-preview-04-17.google.ts","../../google/src/models/chat-models/gemini-2.5-flash.google.ts","../../google/src/models/chat-models/gemini-2.5-pro-preview-03-25.google.ts","../../google/src/models/chat-models/gemini-2.5-pro.google.ts","../../google/src/models/chat-models/gemini-3-pro-preview.google.ts","../../google/src/models/embedding-models/types/modalitites.embedding-model.google.ts","../../google/src/models/embedding-models/types/response.embedding-model.google.ts","../../google/src/models/embedding-models/types/request.embedding-model.google.ts","../../google/src/models/embedding-models/base-embedding-model.google.ts","../../google/src/models/embedding-models/text-embedding-001.google.ts","../../google/src/models/embedding-models/text-embedding-004.google.ts","../src/provider/provider.vertex.ts","../src/models/pricing.json","../src/models/chat-models/gemini-1-5-flash-001.vertex.ts","../src/models/chat-models/gemini-1-5-flash-002.vertex.ts","../src/models/chat-models/gemini-1-5-flash.vertex.ts","../src/models/chat-models/gemini-1-5-pro-001.vertex.ts","../src/models/chat-models/gemini-1-5-pro-002.vertex.ts","../src/models/chat-models/gemini-1-5-pro.vertex.ts","../src/models/chat-models/gemini-1.5-flash-latest.vertex.ts","../src/models/chat-models/gemini-1.5-pro-latest.vertex.ts","../src/models/chat-models/gemini-2-0-flash-exp.vertex.ts","../src/models/chat-models/gemini-2-0-flash.vertex.ts","../src/models/chat-models/gemini-2-5-flash-lite.vertex.ts","../src/models/chat-models/gemini-2.5-flash-preview-04-17.vertex.ts","../src/models/chat-models/gemini-2.5-flash.vertex.ts","../src/models/chat-models/gemini-2.5-pro-preview-03-25.vertex.ts","../src/models/chat-models/gemini-2.5-pro.vertex.ts","../src/models/chat-models/gemini-3-pro-preview.vertex.ts","../src/models/embedding-models/types/modalitites.embedding-model.vertex.ts","../src/models/embedding-models/types/response.embedding-model.vertex.ts","../src/models/embedding-models/types/request.embedding-model.vertex.ts","../src/models/embedding-models/base-embedding-model.vertex.ts","../src/configs/embedding-model/common.config.embedding-model.vertex.ts","../src/configs/embedding-model/base.config.embedding-model.vertex.ts","../src/configs/configs.vertex.ts","../src/models/embedding-models/text-embedding-004.vertex.ts","../src/models/embedding-models/text-multilingual-embedding-002.vertex.ts","../src/models/embedding-models/textembedding-gecko-multilingual-001.vertex.ts","../src/models/embedding-models/textembedding-gecko-003.vertex.ts"],"names":["SystemRoleLiteral","UserRoleLiteral","AssistantRoleLiteral","ToolRoleLiteral","RoleLiterals","RoleEnum","z","PartialRoleLiterals","PartialRoleEnum","ImageModalityLiteral","Base64ImageContentTypeLiteral","Base64ImageContentMediaTypeLiterals","Base64ImageContentValue","UrlImageContentTypeLiteral","UrlImageContentValue","ImageContentValue","ImageContentDetails","ImageContentDetailsLiteral","ImageContent","Metadata","PdfModalityLiteral","Base64PdfContentTypeLiteral","Base64PdfContentValue","UrlPdfContentTypeLiteral","UrlPdfContentValue","PdfContentValue","PdfContent","ReasoningModalityLiteral","PartialReasoningModalityLiteral","ReasoningContentTypeLiteral","RedactedReasoningContentTypeLiteral","ReasoningContentValue","RedactedReasoningContentValue","ReasoningContentValueUnion","ReasoningContent","PartialReasoningContentValue","PartialReasoningContentValueUnion","PartialReasoningContent","TextModalityLiteral","TextContent","PartialTextModalityLiteral","PartialTextContent","ToolCallModalityLiteral","ToolCallContent","PartialToolCallModalityLiteral","PartialToolCallContent","ToolResponseModalityLiteral","ToolResponseContent","PartialToolResponseModalityLiteral","PartialToolResponseContent","ModalityLiterals","ModalityEnum","Content","TextContentMetadata","ImageContentMetadata","PdfContentMetadata","ToolCallContentMetadata","ToolResponseContentMetadata","ReasoningContentMetadata","PartialModalityLiterals","PartialModalityEnum","PartialContent","PartialTextContentMetadata","PartialToolCallContentMetadata","PartialReasoningContentMetadata","PartialToolResponseContentMetadata","Message","Role","MessageMetadata","PartialMessage","ChatUsage","ChatBaseLogProb","ChatLogProb","ChatLogProbs","PartialChatUsage","PartialChatResponse","Config","McpServerToolConfiguration","McpServer","url","ResponseSchemaTypes","ResponseSchemaTypesLiteral","ResponseSchemaProperty","ResponseSchemaStructure","ResponseSchema","EmbeddingTextModalityLiteral","EmbeddingTokenModalityLiteral","EmbeddingModalityLiterals","EmbeddingModalityEnum","TextEmbeddingRequests","TokenEmbeddingRequests","EmbeddingRequests","FloatEmbeddingLiteral","FloatEmbedding","Base64EmbeddingLiteral","Base64Embedding","EmbeddingsUsage","safeStringify","obj","seen","key","value","getErrorMessage","error","GatewayBaseErrorLiteral","GatewayBaseError","_GatewayBaseError","info","cause","name","ChatModelTokenPairPrice","ChatModelTokenTypePrice","ChatModelTokenRangePrice","t","ChatModelPrice","data","ctx","tokenRanges","i","prev","curr","last","FunctionToolLiteral","FunctionParameterTypesLiteral","FunctionParameter","FunctionParameters","Function","ToolTypesLiteral","FunctionRequestRetry","FunctionRequestHttp","FunctionRequest","FunctionTool","ToolLiterals","Tool","FunctionToolMetadata","createTextContent","content","createToolCallContent","index","id","args","serverName","createPartialTextMessage","role","createPartialToolCallMessage","ProviderErrorLiteral","ProviderError","_ProviderError","ModelErrorLiteral","ModelError","_ModelError","ModelResponseErrorLiteral","ModelResponseError","_ModelResponseError","InvalidModelRequestErrorLiteral","InvalidModelRequestError","_InvalidModelRequestError","InvalidConfigErrorLiteral","InvalidConfigError","_InvalidConfigError","InvalidMessagesErrorLiteral","InvalidMessagesError","_InvalidMessagesError","InvalidToolsErrorLiteral","InvalidToolsError","_InvalidToolsError","InvalidEmbeddingRequestsErrorLiteral","InvalidEmbeddingRequestsError","_InvalidEmbeddingRequestsError","MultiStringConfigItemTypeLiteral","MultiStringConfigItemDef","MultiStringConfigItemSchema","max","MultiStringConfigItem","__spreadValues","ObjectSchemaConfigItemTypeLiteral","ObjectSchemaConfigItemDef","ObjectSchemaConfigItemSchema","schema","ObjectSchemaConfigItem","PairedSelectConfigItemTypeLiteral","PairedSelectChoice","PairedSelectFieldDef","PairedSelectConfigItemDef","createFieldEnum","choices","values","choice","first","rest","PairedSelectConfigItemSchema","fields","shape","acc","field","PairedSelectConfigItem","parsed","fieldKeys","RangeConfigItemTypeLiteral","RangeConfigItemDef","RangeConfigItemSchema","min","step","defaultValue","RangeConfigItem","SelectBooleanConfigItemTypeLiteral","SelectBooleanConfigItemDef","SelectBooleanConfigItemSchema","SelectBooleanConfigItem","SelectStringConfigItemTypeLiteral","SelectStringConfigItemDef","SelectStringConfigItemSchema","SelectStringConfigItem","ConfigItemLiterals","ConfigItemDef","ChatModelSchema","Roles","Modalities","config","_a","_b","defKeys","schemaKeys","EmbeddingModelSchema","Params","Url","TEMPERATURE","MAX_TOKENS","MAX_REASONING_TOKENS","STOP","TOP_A","TOP_P","TOP_K","MIN_P","FREQUENCY_PENALTY","PRESENCE_PENALTY","SEED","REPETITION_PENALTY","LOG_PROBS","TOP_LOG_PROBS","ECHO","RESPONSE_FORMAT","RESPONSE_FORMAT_WITH_SCHEMA","RESPONSE_SCHEMA","MCP_SERVERS","CHAT_CONFIG","DIMENSIONS","ENCODING_FORMAT","EMBEDDING_CONFIG","removeUndefinedEntries","record","_","isRunningInBrowser","convertBase64ToUint8Array","base64String","base64Url","latin1string","byte","urlWithoutTrailingSlash","bt","Pt","_t","Po","St","Et","W","a","e","Ot","_o","N","o","l","r","n","s","m","So","qe","p","h","P","y","Eo","GOOGLE_SAFETY_CATEGORIES","GOOGLE_SAFETY_THRESHOLDS","formatSafetyLabel","prefix","letter","GOOGLE_SAFETY_CATEGORY_OPTIONS","category","GOOGLE_SAFETY_THRESHOLD_OPTIONS","threshold","temperature","_default","maxTokens","maxOutputTokens","stop","maxSequences","topP","presencePenalty","seed","toolChoice","safetySettings","reasoningEnabled","ChatModelBaseConfigSchema","maxTemperature","defaultTemperature","defaultTopP","ChatModelBaseConfigDef","responseSchema","responseFormat","GoogleChatModelResponseSchemaConfigDef","__spreadProps","GoogleChatModelResponseSchemaConfigSchema","ChatModelReasoningConfigSchema","ChatModelReasoningConfigDef","dimensions","maxDimensions","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","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","options","modelName","model","parsedOptions","pricing_default","GoogleChatModelRoles","GoogleChatAssistantRoleLiteral","GoogleChatToolRoleLiteral","GoogleChatModelRolesMap","GoogleChatModelModalities","GoogleChatModelModalitiesEnum","GoogleCompleteChatTextResponse","GoogleCompleteChatToolResponse","GoogleCompleteChatResponse","GoogleStreamChatTextResponse","GoogleStreamChatToolResponse","GoogleStreamChatResponse","GoogleChatContentPartText","GoogleChatContentPartInlineData","GoogleChatContentPartFileData","GoogleChatContentPartFunctionCall","GoogleChatContentPartFunctionResponse","GoogleChatContent","GoogleChatSystemInstruction","GoogleChatTool","GoogleChatToolConfig","GoogleChatGenerationConfig","GoogleChatSafetySettings","GoogleChatRequest","BaseChatModelOptions","BaseChatModel","modelSchema","responseHeaders","messages","message","__async","downloadPdf","headers","response","arrayBuffer","existsInGoogleFiles","fileId","existingFile","file","uploadPdfToGoogleFiles","pdfBuffer","uploadResponse","uploadUrl","uploadHeaders","fileUploadResponse","getGoogleFilesUrl","existingFileUri","base64Data","pdfBase64Prefix","processedMessages","processedContent","fileUri","request","safeRequest","parsedRequest","systemInstruction","generationConfig","toolConfig","_config","part","_content","c","tools","tool","_toolChoice","_parsedConfig","parsedConfig","transformedConfig","def","paramKey","paramValue","configToolChoice","responseSchemaConfig","stripBase64Prefix","prefixMatch","parsedMessages","parsedMessage","nonSystemMessages","assistantContent","userContent","toolResponseContent","getNextExpectedRoles","item","result","parsedTool","resolve","transformedMessages","transformedTools","safe","parsedResponse","usage","contentItem","safetyRatings","rating","chunk","buffer","__asyncGenerator","lines","line","completeLine","structuredLine","partialResponse","messagePart","toolCall","query","__yieldStar","newData","newBuffer","currentIndex","newlineIndex","jsonStr","sanitizedHeaders","Gemini1_5Flash001Description","Gemini1_5Flash002Description","Gemini1_5FlashLatestDescription","Gemini1_5FlashDescription","Gemini1_5Pro001Description","Gemini1_5Pro002Description","Gemini1_5ProLatestDescription","Gemini1_5ProDescription","Gemini2_0FlashExpLiteral","Gemini2_0FlashExpDescription","Gemini2_0FlashExpSchema","Gemini2_0FlashDescription","Gemini2_5FlashLiteDescription","Gemini2_5FlashPreview0417Description","Gemini2_5FlashDescription","Gemini2_5ProPreview0325Description","Gemini2_5ProDescription","Gemini3ProPreviewDescription","GoogleEmbeddingModelModalities","GoogleEmbeddingModelModalitiesEnum","GoogleGetEmbeddingsResponse","GoogleEmbeddingRequestInput","GoogleEmbeddingRequest","BaseEmbeddingModelOptions","BaseEmbeddingModel","requests","embeddingRequests","_parsedRequests","_requests","embeddings","embedding","Text_Embedding_001_Description","Text_Embedding_004_Description","Vertex","Gemini2_0FlashExp","Gemini2_0FlashExpOptions","Text_Multilingual_Embedding_002Literal","Text_Multilingual_Embedding_002","Text_Multilingual_Embedding_002Options","Text_Multilingual_Embedding_002Schema","Text_Embedding_Gecko_003Literal","Text_Embedding_Gecko_003","Text_Embedding_Gecko_003Options","Text_Embedding_Gecko_003Schema","Text_Embedding_Gecko_Multilingual_001Literal","Text_Embedding_Gecko_Multilingual_001","Text_Embedding_Gecko_Multilingual_001Options","Text_Embedding_Gecko_Multilingual_001Schema","D","location","projectId","publisher","BaseChatModelVertex","u","baseUrl","A","serviceAccountConfig","now","token","SignJWT","tokenResponse","errorText","tokenData","privateKeyPem","privateKeyRaw","binaryString","bytes","Ze","Qe","oo","to","no","so","eo","io","Fn","ao","ro","lo","mo","po","co","go","VertexEmbeddingModelModalities","Je","VertexEmbeddingModelModalitiesEnum","VertexGetEmbeddingsResponse","VertexEmbeddingRequest","_c","_d","q","wt","dn","instance","G","Gt","prediction","An","Tt","ln","autoTruncate","VertexEmbeddingModelConfigs","Yt","Text_Multilingual_Embedding_002_Description","Text_Embedding_Gecko_Multilingual_001_Description","Text_Embedding_Gecko_003_Description"],"mappings":"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","file":"index.js","sourcesContent":["import { SignJWT } from \"jose\";\nimport { z } from \"zod\";\n\nimport { BaseChatModel } from \"@adaline/google\";\nimport { ChatModelSchemaType, HeadersType, ModelError, ModelResponseError } from \"@adaline/provider\";\nimport { ChatModelPriceType } from \"@adaline/types\";\n\nimport { Vertex } from \"../../provider/provider.vertex\";\nimport pricingData from \"../pricing.json\";\n\nconst BaseChatModelOptions = z.discriminatedUnion(\"authType\", [\n z.object({\n authType: z.literal(\"accessToken\"),\n accessToken: z.string(),\n modelName: z.string(),\n baseUrl: z.string().url().optional(),\n location: z.string().optional(),\n projectId: z.string().optional(),\n publisher: z.string().optional(),\n }),\n z.object({\n authType: z.literal(\"serviceAccount\"),\n serviceAccount: z.object({\n client_email: z.string().email(),\n private_key: z.string(),\n type: z.string().optional(),\n project_id: z.string().optional(),\n private_key_id: z.string().optional(),\n client_id: z.string().optional(),\n auth_uri: z.string().url().optional(),\n token_uri: z.string().url().optional(),\n auth_provider_x509_cert_url: z.string().url().optional(),\n client_x509_cert_url: z.string().url().optional(),\n universe_domain: z.string().optional(),\n }),\n\n modelName: z.string(),\n baseUrl: z.string().url().optional(),\n location: z.string().optional(),\n projectId: z.string().optional(),\n publisher: z.string().optional(),\n tokenLifetimeHours: z.number().min(0.1).max(24).default(1),\n }),\n]);\ntype BaseChatModelOptionsType = z.infer<typeof BaseChatModelOptions>;\n\nclass BaseChatModelVertex extends BaseChatModel {\n readonly version = \"v1\" as const;\n modelSchema: ChatModelSchemaType;\n modelName: string;\n\n private readonly authOptions: BaseChatModelOptionsType;\n private readonly location: string | undefined;\n private readonly projectId: string | undefined;\n private readonly publisher: string | undefined;\n private accessToken: string | null = null;\n private tokenExpiry: number | null = null;\n\n constructor(modelSchema: ChatModelSchemaType, options: BaseChatModelOptionsType) {\n const parsedOptions = BaseChatModelOptions.parse(options);\n let baseUrl: string | undefined;\n\n if (parsedOptions.baseUrl) {\n baseUrl = parsedOptions.baseUrl;\n } else if (parsedOptions.location && parsedOptions.projectId) {\n baseUrl = Vertex.baseUrl(parsedOptions.location, parsedOptions.projectId, parsedOptions.publisher);\n } else {\n throw new ModelError({\n info: \"Either 'baseUrl' must be provided or 'location' and 'projectId' must be provided\",\n cause: new Error(\"Either 'baseUrl' must be provided or 'location' and 'projectId' must be provided\"),\n });\n }\n\n super(modelSchema, {\n modelName: parsedOptions.modelName,\n apiKey: \"random-api-key\",\n completeChatUrl: `${baseUrl}/models/${parsedOptions.modelName}:generateContent`,\n streamChatUrl: `${baseUrl}/models/${parsedOptions.modelName}:streamGenerateContent`,\n });\n\n this.modelSchema = modelSchema;\n this.modelName = parsedOptions.modelName;\n this.authOptions = parsedOptions;\n this.location = parsedOptions.location;\n this.projectId = parsedOptions.projectId;\n this.publisher = parsedOptions.publisher;\n\n // Initialize access token for accessToken auth type\n if (parsedOptions.authType === \"accessToken\") {\n this.accessToken = parsedOptions.accessToken;\n }\n }\n\n private async getAccessToken(): Promise<string> {\n // If we have a valid access token, return it\n if (this.accessToken && this.tokenExpiry && Date.now() < this.tokenExpiry) {\n return this.accessToken;\n }\n\n // For service account auth, generate a new token\n if (this.authOptions.authType === \"serviceAccount\") {\n try {\n const serviceAccountConfig = this.authOptions.serviceAccount;\n\n // Create JWT token for Google service account\n const now = Math.floor(Date.now() / 1000);\n const token = await new SignJWT({\n scope: \"https://www.googleapis.com/auth/cloud-platform\",\n aud: \"https://oauth2.googleapis.com/token\",\n })\n .setProtectedHeader({ alg: \"RS256\", typ: \"JWT\" })\n .setIssuedAt(now)\n .setExpirationTime(now + this.authOptions.tokenLifetimeHours * 3600)\n .setIssuer(serviceAccountConfig.client_email)\n .setSubject(serviceAccountConfig.client_email)\n .sign(await this.importPrivateKey(serviceAccountConfig.private_key));\n\n // Exchange JWT for access token\n const tokenResponse = await fetch(\"https://oauth2.googleapis.com/token\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n },\n body: new URLSearchParams({\n grant_type: \"urn:ietf:params:oauth:grant-type:jwt-bearer\",\n assertion: token,\n }),\n });\n\n if (!tokenResponse.ok) {\n const errorText = await tokenResponse.text();\n throw new Error(`Token exchange failed: ${tokenResponse.status} ${errorText}`);\n }\n\n const tokenData = (await tokenResponse.json()) as { access_token?: string; error?: string };\n\n if (!tokenData.access_token) {\n throw new Error(`No access token received from Google OAuth: ${tokenData.error || \"Unknown error\"}`);\n }\n\n this.tokenExpiry = Date.now() + this.authOptions.tokenLifetimeHours * 3600 * 1000 - 5 * 60 * 1000;\n this.accessToken = tokenData.access_token;\n return this.accessToken;\n } catch (error) {\n throw new ModelError({\n info: `Failed to generate service account token: ${error instanceof Error ? error.message : String(error)}`,\n cause: error instanceof Error ? error : new Error(String(error)),\n });\n }\n }\n\n // For access token auth, return the stored token\n if (this.accessToken) {\n return this.accessToken;\n }\n\n throw new ModelError({\n info: \"No valid access token available\",\n cause: new Error(\"No valid access token available\"),\n });\n }\n\n private async importPrivateKey(privateKeyPem: string): Promise<CryptoKey> {\n // Remove PEM headers and convert to raw key\n const privateKeyRaw = privateKeyPem\n .replace(/-----BEGIN PRIVATE KEY-----/, \"\")\n .replace(/-----END PRIVATE KEY-----/, \"\")\n .replace(/\\s/g, \"\");\n\n // Convert base64 to ArrayBuffer\n const binaryString = atob(privateKeyRaw);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n\n // Import the private key\n return await crypto.subtle.importKey(\n \"pkcs8\",\n bytes,\n {\n name: \"RSASSA-PKCS1-v1_5\",\n hash: \"SHA-256\",\n },\n false,\n [\"sign\"]\n );\n }\n\n async ensureToken(): Promise<void> {\n if (this.authOptions.authType === \"serviceAccount\") {\n await this.getAccessToken();\n }\n }\n\n getDefaultHeaders(): HeadersType {\n return {\n ...super.getDefaultHeaders(),\n Authorization: `Bearer ${this.accessToken}`,\n };\n }\n\n async getCompleteChatHeaders(config?: any, messages?: any, tools?: any): Promise<HeadersType> {\n await this.ensureToken();\n return this.getDefaultHeaders();\n }\n\n async getStreamChatHeaders(config?: any, messages?: any, tools?: any): Promise<HeadersType> {\n await this.ensureToken();\n return this.getDefaultHeaders();\n }\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 { BaseChatModelOptions, BaseChatModelVertex, type BaseChatModelOptionsType };\n","import { z } from \"zod\";\n\nconst SystemRoleLiteral = \"system\" as const;\nconst UserRoleLiteral = \"user\" as const;\nconst AssistantRoleLiteral = \"assistant\" as const;\nconst ToolRoleLiteral = \"tool\" as const;\n\nconst RoleLiterals = [SystemRoleLiteral, UserRoleLiteral, AssistantRoleLiteral, ToolRoleLiteral] as const;\nconst RoleEnum = z.enum(RoleLiterals);\ntype RoleEnumType = z.infer<typeof RoleEnum>;\n\nconst PartialRoleLiterals = [AssistantRoleLiteral] as const;\nconst PartialRoleEnum = z.enum(PartialRoleLiterals);\ntype PartialRoleEnumType = z.infer<typeof PartialRoleEnum>;\n\nexport {\n UserRoleLiteral,\n ToolRoleLiteral,\n SystemRoleLiteral,\n AssistantRoleLiteral,\n RoleEnum,\n RoleLiterals,\n PartialRoleEnum,\n PartialRoleLiterals,\n type RoleEnumType,\n type PartialRoleEnumType,\n};\n","import { z } from \"zod\";\n\nconst ImageModalityLiteral = \"image\" as const;\n\nconst Base64ImageContentTypeLiteral = \"base64\" as const;\nconst Base64ImageContentMediaTypeLiterals = [\"png\", \"jpeg\", \"webp\", \"gif\"] as const;\nconst Base64ImageContentValue = z.object({\n type: z.literal(Base64ImageContentTypeLiteral),\n base64: z.string(),\n mediaType: z.enum(Base64ImageContentMediaTypeLiterals),\n});\ntype Base64ImageContentValueType = z.infer<typeof Base64ImageContentValue>;\n\nconst UrlImageContentTypeLiteral = \"url\" as const;\nconst UrlImageContentValue = z.object({\n type: z.literal(UrlImageContentTypeLiteral),\n url: z.string(),\n});\ntype UrlImageContentValueType = z.infer<typeof UrlImageContentValue>;\n\nconst ImageContentValue = z.discriminatedUnion(\"type\", [Base64ImageContentValue, UrlImageContentValue]);\ntype ImageContentValueType = z.infer<typeof ImageContentValue>;\n\nconst ImageContentDetails = [\"low\", \"medium\", \"high\", \"auto\"] as const;\nconst ImageContentDetailsLiteral = z.enum(ImageContentDetails);\ntype ImageContentDetailsLiteralType = z.infer<typeof ImageContentDetailsLiteral>;\nconst ImageContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ImageModalityLiteral),\n detail: ImageContentDetailsLiteral,\n value: ImageContentValue,\n metadata: Metadata,\n });\ntype ImageContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ImageContent<M>>>;\n\nexport {\n Base64ImageContentValue,\n ImageContent,\n ImageContentDetails,\n ImageContentDetailsLiteral,\n ImageModalityLiteral,\n UrlImageContentValue,\n UrlImageContentTypeLiteral,\n Base64ImageContentTypeLiteral,\n Base64ImageContentMediaTypeLiterals,\n type Base64ImageContentValueType,\n type ImageContentDetailsLiteralType,\n type ImageContentType,\n type ImageContentValueType,\n type UrlImageContentValueType,\n};\n","import { z } from \"zod\";\n\nconst PdfModalityLiteral = \"pdf\" as const;\n\nconst Base64PdfContentTypeLiteral = \"base64\" as const;\nconst Base64PdfContentValue = z.object({\n type: z.literal(Base64PdfContentTypeLiteral),\n base64: z.string(),\n});\ntype Base64PdfContentValueType = z.infer<typeof Base64PdfContentValue>;\n\nconst UrlPdfContentTypeLiteral = \"url\" as const;\nconst UrlPdfContentValue = z.object({\n type: z.literal(UrlPdfContentTypeLiteral),\n url: z.string(),\n});\ntype UrlPdfContentValueType = z.infer<typeof UrlPdfContentValue>;\n\nconst PdfContentValue = z.discriminatedUnion(\"type\", [Base64PdfContentValue, UrlPdfContentValue]);\ntype PdfContentValueType = z.infer<typeof PdfContentValue>;\n\nconst PdfContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PdfModalityLiteral),\n value: PdfContentValue,\n file: z.object({\n name: z.string(),\n id: z.string(),\n size: z.number().optional(),\n }),\n metadata: Metadata,\n });\ntype PdfContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PdfContent<M>>>;\n\nexport {\n Base64PdfContentValue,\n PdfContent,\n PdfModalityLiteral,\n UrlPdfContentValue,\n UrlPdfContentTypeLiteral,\n Base64PdfContentTypeLiteral,\n type Base64PdfContentValueType,\n type PdfContentType,\n type PdfContentValueType,\n type UrlPdfContentValueType,\n};\n","import { z } from \"zod\";\n\nconst ReasoningModalityLiteral = \"reasoning\" as const;\nconst PartialReasoningModalityLiteral = \"partial-reasoning\" as const;\n\nconst ReasoningContentTypeLiteral = \"thinking\" as const;\nconst RedactedReasoningContentTypeLiteral = \"redacted\" as const;\n\nconst ReasoningContentValue = z.object({\n type: z.literal(ReasoningContentTypeLiteral),\n thinking: z.string(),\n signature: z.string(),\n});\ntype ReasoningContentValueType = z.infer<typeof ReasoningContentValue>;\n\nconst RedactedReasoningContentValue = z.object({\n type: z.literal(RedactedReasoningContentTypeLiteral),\n data: z.string()\n});\ntype RedactedReasoningContentValueType = z.infer<typeof RedactedReasoningContentValue>;\n\nconst ReasoningContentValueUnion = z.discriminatedUnion(\"type\", [ ReasoningContentValue, RedactedReasoningContentValue ]);\ntype ReasoningContentValueUnionType = z.infer<typeof ReasoningContentValueUnion>;\n\nconst ReasoningContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ReasoningModalityLiteral),\n value: ReasoningContentValueUnion,\n metadata: Metadata,\n });\n\ntype ReasoningContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ReasoningContent<M>>>;\n\nconst PartialReasoningContentValue = z.object({\n type: z.literal(ReasoningContentTypeLiteral),\n thinking: ReasoningContentValue.shape.thinking.optional(),\n signature: ReasoningContentValue.shape.signature.optional(),\n});\nconst PartialReasoningContentValueUnion = z.discriminatedUnion(\"type\", [ \n PartialReasoningContentValue, \n RedactedReasoningContentValue \n]);\n\nconst PartialReasoningContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialReasoningModalityLiteral),\n value: PartialReasoningContentValueUnion,\n metadata: Metadata,\n });\ntype PartialReasoningContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialReasoningContent<M>>>;\n\nexport {\n ReasoningContent,\n PartialReasoningContent,\n PartialReasoningModalityLiteral,\n ReasoningContentTypeLiteral,\n ReasoningContentValue,\n PartialReasoningContentValue,\n ReasoningContentValueUnion,\n PartialReasoningContentValueUnion,\n ReasoningModalityLiteral,\n RedactedReasoningContentTypeLiteral,\n RedactedReasoningContentValue,\n type PartialReasoningContentType,\n type ReasoningContentType,\n type ReasoningContentValueType,\n type ReasoningContentValueUnionType,\n type RedactedReasoningContentValueType,\n};\n","import { z } from \"zod\";\n\nconst TextModalityLiteral = \"text\" as const;\n\nconst TextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(TextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype TextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof TextContent<M>>>;\nconst PartialTextModalityLiteral = \"partial-text\" as const;\n\nconst PartialTextContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialTextModalityLiteral),\n value: z.string(),\n metadata: Metadata,\n });\ntype PartialTextContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialTextContent<M>>>;\n\nexport {\n TextContent,\n PartialTextContent,\n TextModalityLiteral,\n PartialTextModalityLiteral,\n type TextContentType,\n type PartialTextContentType,\n};\n","import { z } from \"zod\";\n\nconst ToolCallModalityLiteral = \"tool-call\" as const;\n\nconst ToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n arguments: z.string(),\n serverName: z.string().optional(),\n metadata: Metadata,\n });\ntype ToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolCallContent<M>>>;\nconst PartialToolCallModalityLiteral = \"partial-tool-call\" as const;\n\nconst PartialToolCallContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialToolCallModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().optional(),\n name: z.string().optional(),\n arguments: z.string().optional(),\n serverName: z.string().optional(),\n metadata: Metadata,\n });\ntype PartialToolCallContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialToolCallContent<M>>>;\n\nexport {\n PartialToolCallContent,\n PartialToolCallModalityLiteral,\n ToolCallContent,\n ToolCallModalityLiteral,\n type PartialToolCallContentType,\n type ToolCallContentType,\n};\n","import { z } from \"zod\";\n\nconst ToolResponseModalityLiteral = \"tool-response\" as const;\n\nconst ToolResponseContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(ToolResponseModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().min(1),\n name: z.string().min(1),\n data: z.string(),\n apiResponse: z\n .object({\n statusCode: z.number().int().nonnegative(),\n })\n .optional(),\n metadata: Metadata,\n });\ntype ToolResponseContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof ToolResponseContent<M>>>;\n\nconst PartialToolResponseModalityLiteral = \"partial-tool-response\" as const;\n\nconst PartialToolResponseContent = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.object({\n modality: z.literal(PartialToolResponseModalityLiteral),\n index: z.number().int().nonnegative(),\n id: z.string().optional(),\n name: z.string().optional(),\n data: z.string().optional(),\n apiResponse: z\n .object({\n statusCode: z.number().int().nonnegative(),\n })\n .optional(),\n metadata: Metadata,\n });\ntype PartialToolResponseContentType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof PartialToolResponseContent<M>>>;\n\nexport {\n PartialToolResponseContent,\n PartialToolResponseModalityLiteral,\n ToolResponseContent,\n ToolResponseModalityLiteral,\n type PartialToolResponseContentType,\n type ToolResponseContentType,\n};\n","import { z } from \"zod\";\n\nimport { ImageContent, ImageModalityLiteral } from \"./image-content\";\nimport { PdfContent, PdfModalityLiteral } from \"./pdf-content\";\nimport { PartialReasoningContent, PartialReasoningModalityLiteral, ReasoningContent, ReasoningModalityLiteral } from \"./reasoning-content\";\nimport { PartialTextContent, PartialTextModalityLiteral, TextContent, TextModalityLiteral } from \"./text-content\";\nimport { PartialToolCallContent, PartialToolCallModalityLiteral, ToolCallContent, ToolCallModalityLiteral } from \"./tool-call-content\";\nimport { PartialToolResponseContent, ToolResponseContent, ToolResponseModalityLiteral } from \"./tool-response-content\";\n\nconst ModalityLiterals = [\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n ReasoningModalityLiteral,\n] as const;\nconst ModalityEnum = z.enum(ModalityLiterals);\ntype ModalityEnumType = z.infer<typeof ModalityEnum>;\n\nconst Content = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n PCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n TCCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n PdfContentMetadata: PCM = z.undefined() as PCM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM,\n ReasoningContentMetadata: TCCM = z.undefined() as TCCM\n) =>\n z.discriminatedUnion(\"modality\", [\n TextContent(TextContentMetadata),\n ImageContent(ImageContentMetadata),\n PdfContent(PdfContentMetadata),\n ToolCallContent(ToolCallContentMetadata),\n ToolResponseContent(ToolResponseContentMetadata),\n ReasoningContent(ReasoningContentMetadata),\n ]);\ntype ContentType<\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Content<TCM, ICM, CCM, RCM>>>;\n\nconst PartialModalityLiterals = [PartialTextModalityLiteral, PartialToolCallModalityLiteral, PartialReasoningModalityLiteral] as const;\nconst PartialModalityEnum = z.enum(PartialModalityLiterals);\ntype PartialModalityEnumType = z.infer<typeof PartialModalityEnum>;\n\nconst PartialContent = <\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n PartialTextContentMetadata: TCM = z.undefined() as TCM,\n PartialToolCallContentMetadata: CCM = z.undefined() as CCM,\n PartialReasoningContentMetadata: z.ZodTypeAny = z.undefined() as z.ZodTypeAny as RCM,\n PartialToolResponseContentMetadata: TPCM = z.undefined() as TPCM\n) =>\n z.discriminatedUnion(\"modality\", [\n PartialTextContent(PartialTextContentMetadata),\n PartialToolCallContent(PartialToolCallContentMetadata),\n PartialReasoningContent(PartialReasoningContentMetadata),\n PartialToolResponseContent(PartialToolResponseContentMetadata),\n ]);\ntype PartialContentType<\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof PartialContent<TCM, CCM, TPCM>>>;\n\nexport {\n Content,\n ModalityEnum,\n ModalityLiterals,\n PartialContent,\n PartialModalityEnum,\n PartialModalityLiterals,\n type ContentType,\n type ModalityEnumType,\n type PartialContentType,\n type PartialModalityEnumType,\n};\n","import { z } from \"zod\";\n\nimport { Content, PartialContent } from \"./content\";\nimport { PartialRoleEnum, RoleEnum } from \"./roles\";\n\nconst Message = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n PCCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = RoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ImageContentMetadata: ICM = z.undefined() as ICM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ToolResponseContentMetadata: RCM = z.undefined() as RCM,\n PdfContentMetadata: PCCM = z.undefined() as PCCM,\n ReasoningContentMetadata: z.ZodTypeAny = z.undefined() as RTCM,\n MessageMetadata: MM = z.undefined() as MM\n) =>\n z.object({\n role: Role,\n content: z.array(\n Content(\n TextContentMetadata,\n ImageContentMetadata,\n ToolCallContentMetadata,\n ToolResponseContentMetadata,\n ReasoningContentMetadata,\n PdfContentMetadata\n )\n ),\n metadata: MessageMetadata,\n });\ntype MessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n ICM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n RCM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n PCCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof Message<R, TCM, ICM, CCM, RCM, PCCM, RTCM, MM>>>;\n\nconst PartialMessage = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n>(\n Role: R = PartialRoleEnum as unknown as R,\n TextContentMetadata: TCM = z.undefined() as TCM,\n ToolCallContentMetadata: CCM = z.undefined() as CCM,\n ReasoningContentMetadata: z.ZodTypeAny = z.undefined() as RTCM,\n MessageMetadata: MM = z.undefined() as MM,\n ToolResponseContentMetadata: TPCM = z.undefined() as TPCM\n) =>\n z.object({\n role: Role,\n partialContent: PartialContent(TextContentMetadata, ToolCallContentMetadata, ReasoningContentMetadata, ToolResponseContentMetadata),\n metadata: MessageMetadata,\n });\ntype PartialMessageType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof PartialRoleEnum,\n TCM extends z.ZodTypeAny = z.ZodUndefined,\n CCM extends z.ZodTypeAny = z.ZodUndefined,\n MM extends z.ZodTypeAny = z.ZodUndefined,\n RTCM extends z.ZodTypeAny = z.ZodUndefined,\n TPCM extends z.ZodTypeAny = z.ZodUndefined,\n> = z.infer<ReturnType<typeof PartialMessage<R, TCM, CCM, MM, RTCM, TPCM>>>;\n\nexport { Message, PartialMessage, type MessageType, type PartialMessageType };\n","import { z } from \"zod\";\n\nimport { Message, PartialMessage } from \"./../message\";\n\nconst ChatUsage = z.object({\n promptTokens: z.number().nonnegative(),\n completionTokens: z.number().nonnegative(),\n totalTokens: z.number().nonnegative(),\n});\ntype ChatUsageType = z.infer<typeof ChatUsage>;\n\nconst ChatBaseLogProb = z.object({\n token: z.string(),\n logProb: z.number(),\n bytes: z.array(z.number().int()).nullable(),\n});\ntype ChatBaseLogProbType = z.infer<typeof ChatBaseLogProb>;\n\nconst ChatLogProb = ChatBaseLogProb.extend({\n topLogProbs: z.array(ChatBaseLogProb),\n});\ntype ChatLogProbType = z.infer<typeof ChatLogProb>;\n\nconst ChatLogProbs = z.array(ChatLogProb);\ntype ChatLogProbsType = z.infer<typeof ChatLogProbs>;\n\nconst ChatResponse = z.object({\n messages: z.array(Message()),\n usage: ChatUsage.optional(),\n logProbs: ChatLogProbs.optional(),\n});\ntype ChatResponseType = z.infer<typeof ChatResponse>;\n\nconst PartialChatUsage = z.object({\n promptTokens: z.number().nonnegative().optional(),\n completionTokens: z.number().nonnegative().optional(),\n totalTokens: z.number().nonnegative().optional(),\n});\n\ntype PartialChatUsageType = z.infer<typeof PartialChatUsage>;\n\nconst PartialChatResponse = z.object({\n partialMessages: z.array(PartialMessage()),\n usage: PartialChatUsage.optional(),\n logProbs: ChatLogProbs.optional(),\n});\ntype PartialChatResponseType = z.infer<typeof PartialChatResponse>;\n\nexport {\n ChatBaseLogProb,\n ChatLogProb,\n ChatLogProbs,\n ChatResponse,\n ChatUsage,\n PartialChatResponse,\n PartialChatUsage,\n type ChatBaseLogProbType,\n type ChatLogProbsType,\n type ChatLogProbType,\n type ChatResponseType,\n type ChatUsageType,\n type PartialChatResponseType,\n type PartialChatUsageType,\n};\n","import { z } from \"zod\";\n\nconst Config = <C extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>>(\n Config: C = z.record(z.string(), z.any()).optional() as unknown as C\n) => Config;\ntype ConfigType<C extends z.ZodRecord<z.ZodString, z.ZodAny> = z.ZodRecord<z.ZodString, z.ZodAny>> = z.infer<ReturnType<typeof Config<C>>>;\n\nexport { Config, type ConfigType };\n","import { z } from \"zod\";\n\nconst McpServerToolConfiguration = z.object({\n enabled: z.boolean().default(true),\n allowedTools: z.array(z.string().min(1)),\n});\ntype McpServerToolConfigurationType = z.infer<typeof McpServerToolConfiguration>;\n\nconst McpServer = z.object({\n type: z.literal(\"url\"),\n url: z\n .string()\n .url()\n .refine((url) => url.startsWith(\"https://\"), {\n message: \"MCP server URL must start with https://\",\n }),\n name: z.string().min(1),\n toolConfiguration: McpServerToolConfiguration.optional(),\n authorizationToken: z.string().min(1).optional(),\n});\ntype McpServerType = z.infer<typeof McpServer>;\n\nexport { McpServer, McpServerToolConfiguration, type McpServerToolConfigurationType, type McpServerType };\n","import { z } from \"zod\";\n\n// TODO: move to json schema 7 type and validator when implemented for tool types\nconst ResponseSchemaTypes = [\"object\", \"array\", \"number\", \"string\", \"boolean\", \"enum\"] as const;\nconst ResponseSchemaTypesLiteral = z.enum(ResponseSchemaTypes);\ntype ResponseSchemaTypesType = z.infer<typeof ResponseSchemaTypesLiteral>;\n\nconst ResponseSchemaProperty = z.object({\n anyOf: z.array(z.any()).optional(),\n type: z.union([ResponseSchemaTypesLiteral, z.array(z.union([ResponseSchemaTypesLiteral, z.literal(\"null\")]))]).optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n description: z.string().max(4096).optional(),\n properties: z.record(z.any()).optional(),\n required: z.array(z.string()).optional(),\n minItems: z.number().int().min(0).optional(),\n maxItems: z.number().int().optional(),\n items: z.record(z.any()).optional(), // Recursive structure to handle nested arrays and objects\n enum: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(), // Enum for allowed values\n minimum: z.number().optional(), // Minimum value for number\n maximum: z.number().optional(), // Maximum value for number\n minLength: z.number().int().min(0).optional(), // Minimum length for string\n maxLength: z.number().int().optional(), // Maximum length for string\n $ref: z.string().optional(), // Reference to another schema\n});\ntype ResponseSchemaPropertyType = z.infer<typeof ResponseSchemaProperty>;\n\nconst ResponseSchemaStructure = z.object({\n type: z.enum([\"object\"]),\n required: z.array(z.string()),\n $defs: z.record(z.any()).optional(),\n properties: z.record(ResponseSchemaProperty),\n additionalProperties: z.literal(false),\n});\ntype ResponseSchemaStructureType = z.infer<typeof ResponseSchemaStructure>;\n\nconst ResponseSchema = z\n .object({\n name: z\n .string()\n .regex(/^[a-zA-Z0-9_]{1,64}$/)\n .max(64),\n description: z.string().max(4096),\n strict: z.boolean().optional(),\n schema: ResponseSchemaStructure,\n })\n .optional();\ntype ResponseSchemaType = z.infer<typeof ResponseSchema>;\n\nexport {\n ResponseSchema,\n ResponseSchemaProperty,\n ResponseSchemaStructure,\n ResponseSchemaTypes,\n ResponseSchemaTypesLiteral,\n type ResponseSchemaTypesType,\n type ResponseSchemaType,\n type ResponseSchemaPropertyType,\n type ResponseSchemaStructureType,\n};\n","import { z } from \"zod\";\n\nconst EmbeddingTextModalityLiteral = \"text\" as const;\nconst EmbeddingTokenModalityLiteral = \"token\" as const;\n\nconst EmbeddingModalityLiterals = [EmbeddingTextModalityLiteral, EmbeddingTokenModalityLiteral] as const;\nconst EmbeddingModalityEnum = z.enum(EmbeddingModalityLiterals);\ntype EmbeddingModalityEnumType = z.infer<typeof EmbeddingModalityEnum>;\n\nconst TextEmbeddingRequests = z.array(z.string().min(1));\ntype TextEmbeddingRequestsType = z.infer<typeof TextEmbeddingRequests>;\n\nconst TokenEmbeddingRequests = z.array(z.array(z.number().int().nonnegative()));\ntype TokenEmbeddingRequestsType = z.infer<typeof TokenEmbeddingRequests>;\n\nconst EmbeddingRequests = <M extends z.ZodTypeAny = z.ZodUndefined>(Metadata: M = z.undefined() as M) =>\n z.discriminatedUnion(\"modality\", [\n z.object({\n modality: z.literal(EmbeddingTextModalityLiteral),\n metadata: Metadata,\n requests: TextEmbeddingRequests,\n }),\n z.object({\n modality: z.literal(EmbeddingTokenModalityLiteral),\n metadata: Metadata,\n requests: TokenEmbeddingRequests,\n }),\n ]);\ntype EmbeddingRequestsType<M extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof EmbeddingRequests<M>>>;\n\nexport {\n EmbeddingTextModalityLiteral,\n EmbeddingTokenModalityLiteral,\n EmbeddingModalityLiterals,\n EmbeddingModalityEnum,\n TextEmbeddingRequests,\n TokenEmbeddingRequests,\n EmbeddingRequests,\n type EmbeddingRequestsType,\n type EmbeddingModalityEnumType,\n type TextEmbeddingRequestsType,\n type TokenEmbeddingRequestsType,\n};\n","import { z } from \"zod\";\n\nconst FloatEmbeddingLiteral = \"float\" as const;\nconst FloatEmbedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.array(z.number()),\n});\ntype FloatEmbeddingType = z.infer<typeof FloatEmbedding>;\n\nconst Base64EmbeddingLiteral = \"base64\" as const;\nconst Base64Embedding = z.object({\n index: z.number().int().nonnegative(),\n embedding: z.string().base64(),\n});\ntype Base64EmbeddingType = z.infer<typeof Base64Embedding>;\n\nconst EmbeddingsUsage = z.object({\n totalTokens: z.number().int().nonnegative(),\n});\ntype EmbeddingsUsageType = z.infer<typeof EmbeddingsUsage>;\n\nconst EmbeddingResponse = z.discriminatedUnion(\"encodingFormat\", [\n z.object({\n encodingFormat: z.literal(FloatEmbeddingLiteral),\n embeddings: z.array(FloatEmbedding),\n usage: EmbeddingsUsage.optional(),\n }),\n z.object({\n encodingFormat: z.literal(Base64EmbeddingLiteral),\n embeddings: z.array(Base64Embedding),\n usage: EmbeddingsUsage.optional(),\n }),\n]);\ntype EmbeddingResponseType = z.infer<typeof EmbeddingResponse>;\n\nexport {\n FloatEmbeddingLiteral,\n Base64EmbeddingLiteral,\n FloatEmbedding,\n Base64Embedding,\n EmbeddingsUsage,\n EmbeddingResponse,\n type FloatEmbeddingType,\n type Base64EmbeddingType,\n type EmbeddingsUsageType,\n type EmbeddingResponseType,\n};\n","const safeStringify = (obj: unknown) => {\n const seen = new WeakSet();\n return JSON.stringify(obj, (key, value) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) {\n return; // Skip circular reference\n }\n seen.add(value);\n }\n return value;\n });\n};\n\nconst getErrorMessage = (error: unknown | undefined): string => {\n if (error == null) return \"unknown error\";\n if (typeof error === \"string\") return error;\n if (error instanceof Error) return error.message;\n return safeStringify(error);\n};\n\nconst GatewayBaseErrorLiteral = \"GatewayBaseError\" as const;\nclass GatewayBaseError extends Error {\n readonly name: string = GatewayBaseErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }, name?: string) {\n super(`[${name ?? GatewayBaseErrorLiteral}]: ${info}\\nMessage: ${getErrorMessage(cause)}`);\n this.info = info;\n this.cause = cause;\n this.name = name ?? GatewayBaseErrorLiteral;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isGatewayBaseError(error: unknown): error is GatewayBaseError {\n return error instanceof GatewayBaseError;\n }\n\n toJSON(): object {\n return {\n name: this.name,\n info: this.info,\n cause: this.cause,\n message: this.message,\n stack: this.stack,\n };\n }\n}\n\nexport { GatewayBaseError };\n","import { z } from \"zod\";\n\n/**\n * A pair of per‑million‑token rates for a single price category (e.g., base input/output).\n * Represents the input and output cost for 1 million tokens within a specific category (like 'base') of a pricing tier.\n */\nconst ChatModelTokenPairPrice = z\n .object({\n inputPricePerMillion: z.number().nonnegative().describe(\"Price per 1M input tokens\"),\n outputPricePerMillion: z.number().nonnegative().describe(\"Price per 1M output tokens\"),\n })\n .describe(\"Input/output price pair (per 1M tokens) for a specific category within a ChatModel pricing tier.\");\n\ntype ChatModelTokenPairPriceType = z.infer<typeof ChatModelTokenPairPrice>;\n\n/**\n * Defines the price categories (e.g., base) applicable within a single pricing tier (`ChatModelTokenRangePrice`).\n * Each category holds a `ChatModelTokenPairPrice`.\n */\nconst ChatModelTokenTypePrice = z\n .object({\n base: ChatModelTokenPairPrice.describe(\"Base (uncached, non‑reasoning) rates\"),\n // Add optional 'cached' and 'reasoning' here if they become standard\n })\n .describe(\"Holds the `ChatModelTokenPairPrice` for different categories (e.g., base) within a single pricing tier.\");\n\ntype ChatModelTokenTypePriceType = z.infer<typeof ChatModelTokenTypePrice>;\n\n/**\n * Defines a single tier in a model's pricing schedule (`ChatModelPrice`), based on token count range.\n * - `minTokens`: inclusive lower bound (integer ≥ 0).\n * - `maxTokens`: exclusive upper bound (integer > minTokens), or `null` for ∞.\n * - `prices`: the `ChatModelTokenTypePrice` (categories and their rates) applicable to this tier.\n */\nconst ChatModelTokenRangePrice = z\n .object({\n minTokens: z.number().int().nonnegative().describe(\"Inclusive lower token bound for this tier.\"),\n maxTokens: z.number().int().nullable().optional().describe(\"Exclusive upper token bound; `null` means ∞.\"),\n prices: ChatModelTokenTypePrice.describe(\"Price categories and rates for this specific token range.\"),\n })\n .refine((t) => t.maxTokens === null || (typeof t.maxTokens === \"number\" && t.maxTokens > t.minTokens), {\n message: \"maxTokens must be > minTokens (or null for infinite).\",\n path: [\"maxTokens\"],\n })\n .describe(\"A single pricing tier defined by a token range and associated prices.\");\n\ntype ChatModelTokenRangePriceType = z.infer<typeof ChatModelTokenRangePrice>;\n\n/**\n * Full pricing schedule for a specific chat model, potentially with multiple `ChatModelTokenRangePrice` tiers.\n * Ensures tiers are contiguous and cover the full range from 0 to infinity.\n * - First tier must start at 0 tokens.\n * - `tokenRanges` must be contiguous: each tier.minTokens === previous.maxTokens.\n * - Last `tokenRange` must have maxTokens = null (infinite).\n */\nconst ChatModelPrice = z\n .object({\n modelName: z.string().describe(\"Model name this schedule applies to.\"),\n currency: z.string().default(\"USD\").describe(\"Currency code (e.g., USD).\"),\n tokenRanges: z\n .array(ChatModelTokenRangePrice)\n .min(1)\n .describe(\"Pricing tiers (`ChatModelTokenRangePrice`) schedule, sorted by minTokens.\"),\n })\n .superRefine((data, ctx) => {\n const { tokenRanges } = data;\n\n // 1) First tier starts at 0\n if (tokenRanges[0].minTokens !== 0) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", 0, \"minTokens\"],\n message: \"The first tier must have minTokens = 0.\",\n });\n }\n\n // 2) tokenRanges must be sorted and contiguous\n for (let i = 1; i < tokenRanges.length; i++) {\n const prev = tokenRanges[i - 1];\n const curr = tokenRanges[i];\n\n if (prev.maxTokens === null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i - 1, \"maxTokens\"],\n message: \"Cannot define any tokenRanges after an infinite tier (maxTokens = null).\",\n });\n break; // Stop further checks if structure is already invalid\n }\n\n if (curr.minTokens !== prev.maxTokens) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i, \"minTokens\"],\n message: `Tier ${i} minTokens (${curr.minTokens}) must equal previous tier's maxTokens (${prev.maxTokens}) for contiguity.`,\n });\n }\n\n // Ensure sorting (although contiguity check often implies this)\n if (curr.minTokens < prev.minTokens) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", i, \"minTokens\"],\n message: `tokenRanges must be sorted by ascending minTokens. Tier ${i} (${curr.minTokens}) starts before Tier ${i - 1} (${prev.minTokens}).`,\n });\n }\n }\n\n // 3) Last tier must be infinite\n const last = tokenRanges[tokenRanges.length - 1];\n // Check last.maxTokens only if the loop didn't break early due to a previous infinite tier\n if (tokenRanges.every((t) => t.maxTokens !== null || t === last) && last.maxTokens !== null) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n path: [\"tokenRanges\", tokenRanges.length - 1, \"maxTokens\"],\n message: \"The final tier must have maxTokens = null (representing infinity).\",\n });\n }\n })\n .describe(\"Complete pricing schedule for a single chat model, including all its token-based tiers.\");\n\ntype ChatModelPriceType = z.infer<typeof ChatModelPrice>;\n\n// Export the schemas and types\nexport { ChatModelPrice, ChatModelTokenPairPrice, ChatModelTokenRangePrice, ChatModelTokenTypePrice };\nexport type { ChatModelPriceType, ChatModelTokenPairPriceType, ChatModelTokenRangePriceType, ChatModelTokenTypePriceType };\n","import { z } from \"zod\";\n\nconst FunctionToolLiteral = \"function\" as const;\n\nconst FunctionParameterTypes = [\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"];\nconst FunctionParameterTypesLiteral = z.enum([\"object\", \"array\", \"number\", \"string\", \"boolean\", \"null\"]);\ntype FunctionParameterTypesType = z.infer<typeof FunctionParameterTypesLiteral>;\n\nconst FunctionParameter = z.object({\n anyOf: z.array(z.any()).optional(),\n type: FunctionParameterTypesLiteral.optional(),\n default: z.any().optional(),\n title: z.string().optional(),\n description: z.string().max(4096).optional(),\n properties: z.record(z.any()).optional(),\n required: z.array(z.string()).optional(),\n minItems: z.number().int().min(0).optional(),\n maxItems: z.number().int().optional(),\n items: z.record(z.any()).optional(), // Recursive structure to handle nested arrays and objects\n enum: z.array(z.union([z.string(), z.number(), z.boolean(), z.null()])).optional(), // Enum for allowed values\n minimum: z.number().optional(), // Minimum value for number\n maximum: z.number().optional(), // Maximum value for number\n minLength: z.number().int().min(0).optional(), // Minimum length for string\n maxLength: z.number().int().optional(), // Maximum length for string\n});\ntype FunctionParameterType = z.infer<typeof FunctionParameter>;\n\nconst FunctionParameters = z.object({\n type: z.enum([\"object\"]),\n title: z.string().optional(),\n $defs: z.record(z.any()).optional(),\n properties: z.record(FunctionParameter).optional(),\n required: z.array(z.string()).optional(),\n});\ntype FunctionParametersType = z.infer<typeof FunctionParameters>;\n\nconst Function = z.object({\n name: z\n .string()\n .regex(/^[a-zA-Z0-9_]{1,64}$/)\n .max(64),\n description: z.string().max(4096),\n parameters: z.any(),\n strict: z.boolean().optional(),\n});\ntype FunctionType = z.infer<typeof Function>;\n\nconst ToolTypes = [\"function\"];\nconst ToolTypesLiteral = z.enum([\"function\"]);\ntype ToolTypesType = z.infer<typeof ToolTypesLiteral>;\n\nconst FunctionRequestRetry = z.object({\n maxAttempts: z.number().int().positive(),\n initialDelay: z.number().int().positive(),\n exponentialFactor: z.number().int().positive(),\n});\n\nconst FunctionRequestHttp = z.object({\n type: z.literal(\"http\"),\n method: z.enum([\"get\", \"post\"]),\n url: z.string().url(),\n headers: z.record(z.string()).optional(),\n query: z.record(z.string()).optional(),\n body: z.record(z.any()).optional(),\n proxyUrl: z.string().url().optional(),\n proxyHeaders: z.record(z.string()).optional(),\n retry: FunctionRequestRetry.optional(),\n});\n\nconst FunctionRequest = z.discriminatedUnion(\"type\", [FunctionRequestHttp]);\n\nconst FunctionTool = z.object({\n type: ToolTypesLiteral,\n definition: z.object({\n schema: Function,\n }),\n request: FunctionRequest.optional(),\n});\ntype FunctionToolType = z.infer<typeof FunctionTool>;\n\nexport {\n Function,\n FunctionParameter,\n FunctionParameters,\n FunctionParameterTypes,\n FunctionParameterTypesLiteral,\n FunctionRequestHttp,\n FunctionRequest,\n FunctionRequestRetry,\n ToolTypes,\n ToolTypesLiteral,\n type FunctionParametersType,\n type FunctionParameterType,\n type FunctionParameterTypesType,\n type FunctionType,\n type ToolTypesType,\n};\n\nexport { FunctionTool, FunctionToolLiteral, type FunctionToolType };\n","import { z } from \"zod\";\n\nimport { FunctionTool, FunctionToolLiteral } from \"./function-tool\";\n\nconst ToolLiterals = [FunctionToolLiteral] as const;\nconst ToolEnum = z.enum(ToolLiterals);\ntype ToolEnumType = z.infer<typeof ToolEnum>;\n\nconst Tool = <FTM extends z.ZodTypeAny>(FunctionToolMetadata: FTM = z.undefined() as FTM) =>\n z.discriminatedUnion(\"type\", [FunctionTool.extend({ metadata: FunctionToolMetadata })]);\ntype ToolType<FTM extends z.ZodTypeAny = z.ZodUndefined> = z.infer<ReturnType<typeof Tool<FTM>>>;\n\nexport { Tool, ToolEnum, ToolLiterals, type ToolEnumType, type ToolType };\n","import {\n Base64ImageContentTypeLiteral,\n ContentType,\n ImageContent,\n ImageContentDetailsLiteralType,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialMessage,\n PartialMessageType,\n PartialReasoningContent,\n PartialReasoningModalityLiteral,\n PartialTextContent,\n PartialTextModalityLiteral,\n PartialToolCallContent,\n PartialToolCallModalityLiteral,\n PartialToolResponseContent,\n PartialToolResponseModalityLiteral,\n ReasoningContent,\n ReasoningContentTypeLiteral,\n ReasoningModalityLiteral,\n RedactedReasoningContentTypeLiteral,\n RoleEnumType,\n TextContent,\n TextModalityLiteral,\n ToolCallContent,\n ToolCallModalityLiteral,\n ToolResponseContent,\n ToolResponseModalityLiteral,\n UrlImageContentTypeLiteral,\n} from \"./../message\";\n\nconst createTextContent = (content: string): ContentType => {\n return TextContent().parse({\n modality: TextModalityLiteral,\n value: content,\n });\n};\n\nconst createToolCallContent = (index: number, id: string, name: string, args: string, serverName?: string): ContentType => {\n return ToolCallContent().parse({\n modality: ToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n serverName: serverName,\n });\n};\n\nconst createToolResponseContent = (\n index: number,\n id: string,\n name: string,\n data: string,\n apiResponse?: { statusCode: number },\n metadata?: any\n): ContentType => {\n return ToolResponseContent().parse({\n modality: ToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n apiResponse: apiResponse,\n metadata: metadata,\n });\n};\n\nconst createTextMessage = (role: RoleEnumType, content: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n TextContent().parse({\n modality: TextModalityLiteral,\n value: content,\n }),\n ],\n });\n};\n\nconst createUrlImageMessage = (role: RoleEnumType, url: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: UrlImageContentTypeLiteral,\n url: url,\n },\n }),\n ],\n });\n};\n\nconst createBase64ImageMessage = (role: RoleEnumType, base64: string, detail: ImageContentDetailsLiteralType): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ImageContent().parse({\n modality: ImageModalityLiteral,\n detail: detail,\n value: {\n type: Base64ImageContentTypeLiteral,\n base64: base64,\n },\n }),\n ],\n });\n};\n\nconst createToolCallMessage = (role: RoleEnumType, index: number, id: string, name: string, args: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ToolCallContent().parse({\n modality: ToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n }),\n ],\n });\n};\n\nconst createToolResponseMessage = (role: RoleEnumType, index: number, id: string, name: string, data: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ToolResponseContent().parse({\n modality: ToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n }),\n ],\n });\n};\n\nconst createPartialTextMessage = (role: RoleEnumType, content: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialTextContent().parse({\n modality: PartialTextModalityLiteral,\n value: content,\n }),\n });\n};\n\nconst createPartialToolCallMessage = (\n role: RoleEnumType,\n index: number,\n id?: string,\n name?: string,\n args?: string,\n serverName?: string\n): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialToolCallContent().parse({\n modality: PartialToolCallModalityLiteral,\n index: index,\n id: id,\n name: name,\n arguments: args,\n serverName: serverName,\n }),\n });\n};\n\nconst createPartialToolResponseMessage = (\n role: RoleEnumType,\n index: number,\n id: string,\n name: string,\n data: string\n): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialToolResponseContent().parse({\n modality: PartialToolResponseModalityLiteral,\n index: index,\n id: id,\n name: name,\n data: data,\n }),\n });\n};\nconst createReasoningContent = (thinking: string, signature: string): ContentType => {\n return ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n });\n};\n\nconst createReasoningMessage = (role: RoleEnumType, thinking: string, signature: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n }),\n ],\n });\n};\n// Redacted Reasoning Content\nconst createRedactedReasoningContent = (data: string): ContentType => {\n return ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n });\n};\n\nconst createRedactedReasoningMessage = (role: RoleEnumType, data: string): MessageType => {\n return Message().parse({\n role: role,\n content: [\n ReasoningContent().parse({\n modality: ReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n }),\n ],\n });\n};\n\nconst createPartialReasoningMessage = (role: RoleEnumType, thinking?: string, signature?: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialReasoningContent().parse({\n modality: PartialReasoningModalityLiteral,\n value: {\n type: ReasoningContentTypeLiteral,\n thinking,\n signature,\n },\n // metadata is optional; omit or provide if needed\n }),\n });\n};\n\n// Create a partial redacted reasoning message\nconst createPartialRedactedReasoningMessage = (role: RoleEnumType, data: string): PartialMessageType => {\n return PartialMessage().parse({\n role: role,\n partialContent: PartialReasoningContent().parse({\n modality: PartialReasoningModalityLiteral,\n value: {\n type: RedactedReasoningContentTypeLiteral,\n data,\n },\n // metadata is optional; omit or provide if needed\n }),\n });\n};\n\nexport {\n createBase64ImageMessage,\n createPartialReasoningMessage,\n createPartialRedactedReasoningMessage,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createPartialToolResponseMessage,\n createReasoningContent,\n createReasoningMessage,\n createRedactedReasoningContent,\n createRedactedReasoningMessage,\n createTextContent,\n createTextMessage,\n createToolCallContent,\n createToolCallMessage,\n createToolResponseContent,\n createToolResponseMessage,\n createUrlImageMessage,\n};\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ProviderErrorLiteral = \"ProviderError\" as const;\nexport class ProviderError extends GatewayBaseError {\n readonly name = ProviderErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ProviderErrorLiteral);\n this.info = info;\n this.cause = cause;\n }\n\n static isProviderError(error: unknown): error is ProviderError {\n return error instanceof ProviderError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ModelErrorLiteral = \"ModelError\" as const;\nexport class ModelError extends GatewayBaseError {\n readonly name = ModelErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ModelErrorLiteral);\n this.info = info;\n this.cause = cause;\n }\n\n static isModelError(error: unknown): error is ModelError {\n return error instanceof ModelError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst ModelResponseErrorLiteral = \"ModelResponseError\" as const;\nexport class ModelResponseError extends GatewayBaseError {\n readonly name = ModelResponseErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, ModelResponseErrorLiteral);\n this.cause = cause;\n this.info = info;\n }\n\n static isModelResponseError(error: unknown): error is ModelResponseError {\n return error instanceof ModelResponseError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidModelRequestErrorLiteral = \"InvalidModelRequestError\" as const;\nexport class InvalidModelRequestError extends GatewayBaseError {\n readonly name = InvalidModelRequestErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidModelRequestErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidModelRequestError(error: unknown): error is InvalidModelRequestError {\n return error instanceof InvalidModelRequestError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidConfigErrorLiteral = \"InvalidConfigError\" as const;\nexport class InvalidConfigError extends GatewayBaseError {\n readonly name = InvalidConfigErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidConfigErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidConfigError(error: unknown): error is InvalidConfigError {\n return error instanceof InvalidConfigError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidMessagesErrorLiteral = \"InvalidMessagesError\" as const;\nexport class InvalidMessagesError extends GatewayBaseError {\n readonly name = InvalidMessagesErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidMessagesErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidMessagesError(error: unknown): error is InvalidMessagesError {\n return error instanceof InvalidMessagesError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidToolsErrorLiteral = \"InvalidToolsError\" as const;\nexport class InvalidToolsError extends GatewayBaseError {\n readonly name = InvalidToolsErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidToolsErrorLiteral);\n this.cause = cause;\n this.info = info;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidToolsError(error: unknown): error is InvalidToolsError {\n return error instanceof InvalidToolsError;\n }\n}\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst InvalidEmbeddingRequestsErrorLiteral = \"InvalidEmbeddingRequestsError\" as const;\nexport class InvalidEmbeddingRequestsError extends GatewayBaseError {\n readonly name = InvalidEmbeddingRequestsErrorLiteral;\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, InvalidEmbeddingRequestsErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isInvalidEmbeddingRequestsError(error: unknown): error is InvalidEmbeddingRequestsError {\n return error instanceof InvalidEmbeddingRequestsError;\n }\n}\n","import { z } from \"zod\";\n\nconst MultiStringConfigItemTypeLiteral = \"multi-string\" as const;\n\nconst MultiStringConfigItemDef = z.object({\n type: z.literal(MultiStringConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n max: z.number().int().positive(),\n});\ntype MultiStringConfigItemType = z.infer<typeof MultiStringConfigItemDef>;\n\nconst MultiStringConfigItemSchema = (max: number) => z.array(z.string()).max(max).default([]).optional();\ntype MultiStringConfigItemSchemaType = z.infer<ReturnType<typeof MultiStringConfigItemSchema>>;\n\nconst MultiStringConfigItem = (data: Omit<MultiStringConfigItemType, \"type\">) => {\n return {\n def: MultiStringConfigItemDef.parse({\n type: MultiStringConfigItemTypeLiteral,\n ...data,\n }),\n schema: MultiStringConfigItemSchema(data.max),\n };\n};\n\nexport {\n MultiStringConfigItem,\n MultiStringConfigItemDef,\n MultiStringConfigItemSchema,\n MultiStringConfigItemTypeLiteral,\n type MultiStringConfigItemSchemaType,\n type MultiStringConfigItemType,\n};\n","import { z } from \"zod\";\n\nconst ObjectSchemaConfigItemTypeLiteral = \"object-schema\" as const;\n\nconst ObjectSchemaConfigItemDef = z.object({\n type: z.literal(ObjectSchemaConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n objectSchema: z.any(),\n});\ntype ObjectSchemaConfigItemType = z.infer<typeof ObjectSchemaConfigItemDef>;\n\nconst ObjectSchemaConfigItemSchema = <S extends z.ZodRawShape>(schema: z.ZodObject<S>) => schema.optional();\ntype ObjectSchemaConfigItemSchemaType<S extends z.ZodRawShape = z.ZodRawShape> = z.infer<\n ReturnType<typeof ObjectSchemaConfigItemSchema<S>>\n>;\n\nconst ObjectSchemaConfigItem = (data: Omit<ObjectSchemaConfigItemType, \"type\">) => {\n return {\n def: ObjectSchemaConfigItemDef.parse({\n type: ObjectSchemaConfigItemTypeLiteral,\n ...data,\n }),\n schema: ObjectSchemaConfigItemSchema(data.objectSchema),\n };\n};\n\nexport {\n ObjectSchemaConfigItem,\n ObjectSchemaConfigItemDef,\n ObjectSchemaConfigItemSchema,\n ObjectSchemaConfigItemTypeLiteral,\n type ObjectSchemaConfigItemType,\n type ObjectSchemaConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst PairedSelectConfigItemTypeLiteral = \"paired-select\" as const;\n\nconst PairedSelectChoice = z.object({\n value: z.string().min(1),\n label: z.string().min(1),\n});\ntype PairedSelectChoiceType = z.infer<typeof PairedSelectChoice>;\n\nconst PairedSelectFieldDef = z.object({\n key: z.string().min(1),\n label: z.string().min(1),\n description: z.string().min(1).max(500).optional(),\n choices: z.array(PairedSelectChoice).min(1),\n});\ntype PairedSelectFieldDefType = z.infer<typeof PairedSelectFieldDef>;\n\nconst PairedSelectConfigItemDef = z.object({\n type: z.literal(PairedSelectConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n fields: z.tuple([PairedSelectFieldDef, PairedSelectFieldDef]),\n uniqueByField: z.string().min(1).optional(),\n});\ntype PairedSelectConfigItemType = z.infer<typeof PairedSelectConfigItemDef>;\n\nconst createFieldEnum = (choices: PairedSelectChoiceType[]) => {\n const values = choices.map((choice) => choice.value);\n if (values.length === 0) {\n throw new Error(\"PairedSelectConfigItem fields must define at least one choice\");\n }\n const [first, ...rest] = values as [string, ...string[]];\n return z.enum([first, ...rest]);\n};\n\nconst PairedSelectConfigItemSchema = (fields: readonly [PairedSelectFieldDefType, PairedSelectFieldDefType]) => {\n const shape = fields.reduce<z.ZodRawShape>((acc, field) => {\n acc[field.key] = createFieldEnum(field.choices);\n return acc;\n }, {});\n return z.array(z.object(shape)).optional();\n};\ntype PairedSelectConfigItemSchemaType = z.infer<ReturnType<typeof PairedSelectConfigItemSchema>>;\n\nconst PairedSelectConfigItem = (data: Omit<PairedSelectConfigItemType, \"type\">) => {\n const parsed = PairedSelectConfigItemDef.parse({\n type: PairedSelectConfigItemTypeLiteral,\n ...data,\n });\n\n const fieldKeys = new Set(parsed.fields.map((field) => field.key));\n if (fieldKeys.size !== parsed.fields.length) {\n throw new Error(\"PairedSelectConfigItem fields must have unique keys\");\n }\n\n if (parsed.uniqueByField && !fieldKeys.has(parsed.uniqueByField)) {\n throw new Error(\"uniqueByField must reference one of the defined field keys\");\n }\n\n return {\n def: parsed,\n schema: PairedSelectConfigItemSchema(parsed.fields),\n };\n};\n\nexport {\n PairedSelectChoice,\n PairedSelectConfigItem,\n PairedSelectConfigItemDef,\n PairedSelectConfigItemSchema,\n PairedSelectConfigItemTypeLiteral,\n PairedSelectFieldDef,\n type PairedSelectChoiceType,\n type PairedSelectConfigItemSchemaType,\n type PairedSelectConfigItemType,\n type PairedSelectFieldDefType,\n};\n","import { z } from \"zod\";\n\nconst RangeConfigItemTypeLiteral = \"range\" as const;\n\nconst RangeConfigItemDef = z.object({\n type: z.literal(RangeConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n min: z.number().int(),\n max: z.number().int(),\n step: z.number().positive(),\n default: z.number(),\n});\ntype RangeConfigItemDefType = z.infer<typeof RangeConfigItemDef>;\n\nconst RangeConfigItemSchema = (min: number, max: number, step: number, defaultValue: number) =>\n z.number().min(min).max(max).step(step).default(defaultValue).optional();\ntype RangeConfigItemSchemaType = z.infer<ReturnType<typeof RangeConfigItemSchema>>;\n\nconst RangeConfigItem = (data: Omit<RangeConfigItemDefType, \"type\">) => {\n return {\n def: RangeConfigItemDef.parse({\n type: RangeConfigItemTypeLiteral,\n ...data,\n }),\n schema: RangeConfigItemSchema(data.min, data.max, data.step, data.default),\n };\n};\n\nexport {\n RangeConfigItem,\n RangeConfigItemDef,\n RangeConfigItemSchema,\n RangeConfigItemTypeLiteral,\n type RangeConfigItemDefType,\n type RangeConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst SelectBooleanConfigItemTypeLiteral = \"select-boolean\" as const;\n\nconst SelectBooleanConfigItemDef = z.object({\n type: z.literal(SelectBooleanConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n default: z.boolean().nullable(),\n});\ntype SelectBooleanConfigItemDefType = z.infer<typeof SelectBooleanConfigItemDef>;\n\nconst SelectBooleanConfigItemSchema = (defaultValue: boolean | null) => z.boolean().nullable().default(defaultValue).optional();\ntype SelectBooleanConfigItemSchemaType = z.infer<ReturnType<typeof SelectBooleanConfigItemSchema>>;\n\nconst SelectBooleanConfigItem = (data: Omit<SelectBooleanConfigItemDefType, \"type\">) => {\n return {\n def: SelectBooleanConfigItemDef.parse({\n type: SelectBooleanConfigItemTypeLiteral,\n ...data,\n }),\n schema: SelectBooleanConfigItemSchema(data.default),\n };\n};\n\nexport {\n SelectBooleanConfigItem,\n SelectBooleanConfigItemDef,\n SelectBooleanConfigItemSchema,\n SelectBooleanConfigItemTypeLiteral,\n type SelectBooleanConfigItemDefType,\n type SelectBooleanConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nconst SelectStringConfigItemTypeLiteral = \"select-string\" as const;\n\nconst SelectStringConfigItemDef = z.object({\n type: z.literal(SelectStringConfigItemTypeLiteral),\n param: z.string().min(1),\n title: z.string().min(1),\n description: z.string().min(1).max(500),\n default: z.string(),\n choices: z.array(z.string()),\n});\ntype SelectStringConfigItemDefType = z.infer<typeof SelectStringConfigItemDef>;\n\nconst SelectStringConfigItemSchema = (defaultValue: string | null, choices: string[]) =>\n z\n .enum(choices as [string, ...string[]])\n .nullable()\n .default(defaultValue)\n .optional();\ntype SelectStringConfigItemSchemaType = z.infer<ReturnType<typeof SelectStringConfigItemSchema>>;\n\nconst SelectStringConfigItem = (data: Omit<SelectStringConfigItemDefType, \"type\">) => {\n return {\n def: SelectStringConfigItemDef.parse({\n type: SelectStringConfigItemTypeLiteral,\n ...data,\n }),\n schema: SelectStringConfigItemSchema(data.default, data.choices),\n };\n};\n\nexport {\n SelectStringConfigItem,\n SelectStringConfigItemDef,\n SelectStringConfigItemSchema,\n SelectStringConfigItemTypeLiteral,\n type SelectStringConfigItemDefType,\n type SelectStringConfigItemSchemaType,\n};\n","import { z } from \"zod\";\n\nimport { MultiStringConfigItemDef, MultiStringConfigItemTypeLiteral } from \"./multi-string-config-item\";\nimport { ObjectSchemaConfigItemDef, ObjectSchemaConfigItemTypeLiteral } from \"./object-schema-config-item\";\nimport { PairedSelectConfigItemDef, PairedSelectConfigItemTypeLiteral } from \"./paired-select-config-item\";\nimport { RangeConfigItemDef, RangeConfigItemTypeLiteral } from \"./range-config-item\";\nimport { SelectBooleanConfigItemDef, SelectBooleanConfigItemTypeLiteral } from \"./select-boolean-config-item\";\nimport { SelectStringConfigItemDef, SelectStringConfigItemTypeLiteral } from \"./select-string-config-item\";\n\nconst ConfigItemLiterals = [\n RangeConfigItemTypeLiteral,\n MultiStringConfigItemTypeLiteral,\n SelectStringConfigItemTypeLiteral,\n ObjectSchemaConfigItemTypeLiteral,\n SelectBooleanConfigItemTypeLiteral,\n PairedSelectConfigItemTypeLiteral,\n] as const;\nconst ConfigItemEnum = z.enum(ConfigItemLiterals);\ntype ConfigItemEnumType = z.infer<typeof ConfigItemEnum>;\n\nconst ConfigItemDef = z.discriminatedUnion(\"type\", [\n RangeConfigItemDef,\n MultiStringConfigItemDef,\n SelectStringConfigItemDef,\n SelectBooleanConfigItemDef,\n ObjectSchemaConfigItemDef,\n PairedSelectConfigItemDef,\n]);\ntype ConfigItemDefType = z.infer<typeof ConfigItemDef>;\n\nexport { ConfigItemDef, ConfigItemEnum, ConfigItemLiterals, type ConfigItemDefType, type ConfigItemEnumType };\n","import { z } from \"zod\";\n\nimport { ChatModelPriceType, ModalityEnum, RoleEnum } from \"@adaline/types\";\n\nimport { ConfigItemDef } from \"../../types/config\";\n\nconst ChatModelSchema = <\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n M extends z.ZodEnum<[string, ...string[]]> = typeof ModalityEnum,\n>(\n Roles: R = RoleEnum as unknown as R,\n Modalities: M = ModalityEnum as unknown as M\n) =>\n z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n roles: z.record(Roles, z.string().min(1).optional()),\n modalities: z.array(Modalities).nonempty(),\n maxInputTokens: z.number().int().positive().min(1),\n maxOutputTokens: z.number().int().positive().min(1),\n maxReasoningTokens: z.number().int().positive().min(1).optional(),\n config: z\n .object({\n def: z.record(z.string().min(1), ConfigItemDef),\n schema: z.instanceof(z.ZodObject),\n })\n .refine(\n (config) => {\n const defKeys = Object.keys(config.def);\n const schemaKeys = Object.keys(config.schema?.shape ?? {});\n return defKeys.every((key) => schemaKeys.includes(key)) && schemaKeys.every((key) => defKeys.includes(key));\n },\n {\n message: \"Keys in 'config.def' must exactly match keys in 'config.schema'\",\n }\n ),\n price: z.custom<ChatModelPriceType>(),\n });\ntype ChatModelSchemaType<\n R extends z.ZodEnum<[string, ...string[]]> = typeof RoleEnum,\n M extends z.ZodEnum<[string, ...string[]]> = typeof ModalityEnum,\n> = z.infer<ReturnType<typeof ChatModelSchema<R, M>>>;\n\nexport { ChatModelSchema, type ChatModelSchemaType };\n","import { z } from \"zod\";\n\nimport { EmbeddingModalityEnum } from \"@adaline/types\";\n\nimport { ConfigItemDef } from \"../../types/config\";\n\n// TODO: add embedding model properties (dimensions, etc)\nconst EmbeddingModelSchema = <M extends z.ZodEnum<[string, ...string[]]> = typeof EmbeddingModalityEnum>(\n Modalities: M = EmbeddingModalityEnum as unknown as M\n) =>\n z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n modalities: z.array(Modalities).nonempty(),\n maxInputTokens: z.number().int().positive().min(1),\n maxOutputTokens: z.number().int().positive().min(1),\n config: z\n .object({\n def: z.record(z.string().min(1), ConfigItemDef),\n schema: z.instanceof(z.ZodObject),\n })\n .refine(\n (config) => {\n const defKeys = Object.keys(config.def);\n const schemaKeys = Object.keys(config.schema?.shape ?? {});\n return defKeys.every((key) => schemaKeys.includes(key)) && schemaKeys.every((key) => defKeys.includes(key));\n },\n {\n message: \"Keys in 'config.def' must exactly match keys in 'config.schema'\",\n }\n ),\n });\ntype EmbeddingModelSchemaType<M extends z.ZodEnum<[string, ...string[]]> = typeof EmbeddingModalityEnum> = z.infer<\n ReturnType<typeof EmbeddingModelSchema<M>>\n>;\n\nexport { EmbeddingModelSchema, type EmbeddingModelSchemaType };\n","import { z } from \"zod\";\n\nconst Headers = z.record(z.string());\ntype HeadersType = z.infer<typeof Headers>;\n\nexport { Headers, type HeadersType };\n","import { z } from \"zod\";\n\nconst Params = z.record(\n z.union([\n z.boolean(),\n z.string(),\n z.number(),\n z.object({}),\n z.array(z.any()),\n z.null(),\n z.undefined(),\n ])\n);\ntype ParamsType = z.infer<typeof Params>;\n\nexport { Params, type ParamsType };\n","import { z } from \"zod\";\n\nconst Url = z.string().url();\ntype UrlType = z.infer<typeof Url>;\n\nexport { Url, type UrlType };\n","const TEMPERATURE = {\n type: \"range\",\n title: \"Temperature\",\n description:\n \"Adjusts the model's creativity level. With a setting of 0, the model strictly picks the most probable next word. \\\n For endeavors that benefit from a dash of inventiveness, consider dialing it up to 0.7 or higher, enabling the model to produce text \\\n that's unexpectedly fresh.\",\n} as const;\n\nconst MAX_TOKENS = {\n type: \"range\",\n title: \"Max tokens\",\n description:\n \"Specify the total tokens for generation, where one token approximates four English characters. \\\n Setting this to 0 defaults to the model's maximum capacity.\",\n} as const;\n\nconst MAX_REASONING_TOKENS = {\n type: \"range\",\n title: \"Max reasoning tokens\",\n description: \"Specify the total tokens for reasoning, where one token approximates four English characters.\",\n} as const;\n\nconst STOP = (max: number) =>\n ({\n type: \"multi\",\n title: \"Stop sequence\",\n description: `Enter up to ${max} sequences that will halt additional text output. \\\n The generated text will exclude these sequences.`,\n }) as const;\n\nconst TOP_A = {\n type: \"range\",\n title: \"Top A\",\n description:\n \"Considers only the top tokens that have 'sufficiently high' probabilities relative to the most likely token, \\\n functioning like a dynamic Top-P. \\\n A lower Top-A value narrows down the token choices based on the highest probability token, \\\n while a higher Top-A value refines the filtering without necessarily impacting the creativity of the output.\",\n} as const;\n\nconst TOP_P = {\n type: \"range\",\n title: \"Top P\",\n description:\n \"Selects a subset of likely tokens for generation, restricting choices to the top-P fraction of possibilities, \\\n such as the top 10% when P=0.1. \\\n This approach can limit the variety of the output. By default, it's set to 1, indicating no restriction. \\\n It's advised to adjust this parameter or temperature to modulate output diversity, but not to modify both simultaneously.\",\n} as const;\n\nconst TOP_K = {\n type: \"range\",\n title: \"Top K\",\n description:\n \"Select only from the highest K probabilities for each following word, effectively eliminating the less likely 'long tail' options.\",\n} as const;\n\nconst MIN_P = {\n type: \"range\",\n title: \"Min P\",\n description:\n \"Specifies the minimum probability a token must have to be considered, in relation to the probability of the most likely token. \\\n (This value varies based on the confidence level of the top token.) \\\n For example, if Min-P is set to 0.1, only tokens with at least 1/10th the probability of the highest-ranked token will be considered.\",\n} as const;\n\nconst FREQUENCY_PENALTY = {\n type: \"range\",\n title: \"Frequency penalty\",\n description:\n \"Minimize redundancy.\\\n By assigning a penalty to frequently used tokens within the text, the likelihood of repeating identical phrases is reduced. \\\n The default setting for this penalty is zero.\",\n} as const;\n\nconst PRESENCE_PENALTY = {\n type: \"range\",\n title: \"Presence penalty\",\n description:\n \"Enhance the introduction of novel subjects by reducing the preference for tokens that have already appeared in the text, \\\n thus boosting the chances of exploring fresh topics. \\\n The standard setting for this is zero.\",\n} as const;\n\nconst SEED = {\n type: \"range\",\n title: \"Seed\",\n description:\n \"When seed is fixed to a specific value, the model makes a best effort to provide the same response for repeated requests. \\\n Deterministic output isn't guaranteed. \\\n Also, changing the model or parameter settings, such as the temperature, \\\n can cause variations in the response even when you use the same seed value. \\\n By default, a random seed value is used.\",\n} as const;\n\nconst REPETITION_PENALTY = {\n type: \"range\",\n title: \"Repetition penalty\",\n description:\n \"Reduces the likelihood of repeating tokens from the input. \\\n Increasing this value makes the model less prone to repetition, but setting it too high may lead to less coherent output, \\\n often resulting in run-on sentences missing smaller words. \\\n The token penalty is scaled according to the original token's probability.\",\n} as const;\n\nconst LOG_PROBS = {\n type: \"boolean\",\n title: \"Log probs\",\n description:\n \"Whether to return log probabilities of the output tokens or not. If true, returns the log probabilities of each output token returned.\",\n} as const;\n\nconst TOP_LOG_PROBS = {\n type: \"range\",\n title: \"Top log probs\",\n description:\n \"The number of most likely tokens to return at each token position, each with an associated log probability. \\\n 'logprobs' must be set to true if this parameter is used.\",\n} as const;\n\nconst ECHO = {\n type: \"boolean\",\n title: \"Echo\",\n description: \"If true, the response will contain the prompt.\",\n} as const;\n\nconst RESPONSE_FORMAT = {\n type: \"select\",\n title: \"Response format\",\n description:\n \"Choose the response format of your model. For JSON, you must include the string 'JSON' in some form within your system / user prompt.\",\n} as const;\n\nconst RESPONSE_FORMAT_WITH_SCHEMA = {\n type: \"select\",\n title: \"Response format\",\n description:\n \"Choose the response format of your model. 'json_object' colloquially known as JSON mode, instructs the model to respond with a valid \\\n JSON (must include the term 'json' in prompt). 'json_schema' colloquially known as structured outputs, allows you to specify a strict \\\n response schema that the model will adhere to.\",\n} as const;\n\nconst RESPONSE_SCHEMA = {\n type: \"object\",\n title: \"Response schema\",\n description: \"When response format is set to 'json_schema', the model will return a JSON object of the specified schema.\",\n} as const;\n\nconst MCP_SERVERS = {\n type: \"object\",\n title: \"MCP servers\",\n description: \"MCP servers to use for the model.\",\n} as const;\n\nconst CHAT_CONFIG = {\n TEMPERATURE,\n MAX_TOKENS,\n STOP,\n TOP_A,\n TOP_P,\n TOP_K,\n MIN_P,\n FREQUENCY_PENALTY,\n PRESENCE_PENALTY,\n REPETITION_PENALTY,\n SEED,\n LOG_PROBS,\n TOP_LOG_PROBS,\n ECHO,\n RESPONSE_FORMAT,\n RESPONSE_FORMAT_WITH_SCHEMA,\n RESPONSE_SCHEMA,\n MAX_REASONING_TOKENS,\n MCP_SERVERS,\n};\n\nexport { CHAT_CONFIG };\n","const DIMENSIONS = {\n type: \"range\",\n title: \"Dimensions\",\n description: \"Select the number of dimensions for the word embedding.\",\n} as const;\n\nconst ENCODING_FORMAT = {\n type: \"select\",\n title: \"Encoding format\",\n description: \"Select the encoding format for the word embedding.\",\n} as const;\n\nconst EMBEDDING_CONFIG = {\n DIMENSIONS,\n ENCODING_FORMAT,\n};\n\nexport { EMBEDDING_CONFIG };\n","const removeUndefinedEntries = <T = unknown>(record: Record<string, T | undefined>): Record<string, T> => {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return Object.fromEntries(Object.entries(record).filter(([_, value]) => value != null)) as Record<string, T>;\n};\n\nexport { removeUndefinedEntries };\n","const isRunningInBrowser = () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof navigator !== \"undefined\";\n};\n\nexport { isRunningInBrowser };\n","import { isRunningInBrowser } from \"./is-running-in-browser\";\n\nconst convertBase64ToUint8Array = (base64String: string): Uint8Array => {\n const base64Url = base64String.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const latin1string = globalThis.atob(base64Url);\n return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0)!);\n};\n\nconst convertUint8ArrayToBase64 = (array: Uint8Array): string => {\n let latin1string = \"\";\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return globalThis.btoa(latin1string);\n};\n\nconst encodedBase64ToString = (base64: string): string => {\n if (isRunningInBrowser()) {\n const binaryString = atob(base64);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n const decoder = new TextDecoder(\"utf-8\");\n return decoder.decode(bytes);\n } else {\n return Buffer.from(base64, \"base64\").toString(\"utf-8\");\n }\n};\n\nconst getMimeTypeFromBase64 = (base64: string): string => {\n const mimeTypePrefix = base64.split(\";\")[0];\n const mimeType = mimeTypePrefix.split(\"/\")[1];\n return mimeType;\n};\n\nexport { convertBase64ToUint8Array, convertUint8ArrayToBase64, encodedBase64ToString, getMimeTypeFromBase64 };\n","const urlWithoutTrailingSlash = (url: string): string => {\n return url?.replace(/\\/$/, \"\");\n};\n\nexport { urlWithoutTrailingSlash };\n","import { z } from \"zod\";\n\nimport { 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 });\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 }) 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\nexport {\n GOOGLE_SAFETY_CATEGORIES,\n GOOGLE_SAFETY_CATEGORY_OPTIONS,\n GOOGLE_SAFETY_THRESHOLDS,\n GOOGLE_SAFETY_THRESHOLD_OPTIONS,\n frequencyPenalty,\n maxTokens,\n presencePenalty,\n reasoningEnabled,\n safetySettings,\n seed,\n stop,\n temperature,\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 { reasoningEnabled } 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) =>\n GoogleChatModelResponseSchemaConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP).extend({\n reasoningEnabled: reasoningEnabled.schema,\n });\n\nconst ChatModelReasoningConfigDef = (\n maxTemperature: number,\n defaultTemperature: number,\n maxOutputTokens: number,\n maxSequences: number,\n defaultTopP: number,\n) =>\n ({\n ...GoogleChatModelResponseSchemaConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n reasoningEnabled: reasoningEnabled.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 ) => ({\n def: ChatModelReasoningConfigDef(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\n schema: ChatModelReasoningConfigSchema(maxTemperature, defaultTemperature, maxOutputTokens, maxSequences, defaultTopP),\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.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}\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 { ImageModalityLiteral, PdfModalityLiteral, TextModalityLiteral, ToolCallModalityLiteral, ToolResponseModalityLiteral } from \"@adaline/types\";\n\nconst GoogleChatModelModalities: ChatModelSchemaType[\"modalities\"] = [\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\n];\n\nconst GoogleChatModelModalitiesEnum = z.enum([\n TextModalityLiteral,\n ImageModalityLiteral,\n PdfModalityLiteral,\n ToolCallModalityLiteral,\n ToolResponseModalityLiteral,\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 GoogleCompleteChatTextResponse = z.object({\n text: z.string(),\n});\n\nconst GoogleCompleteChatToolResponse = z.object({\n functionCall: z.object({\n name: z.string(),\n args: z.record(z.any()),\n }),\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 })\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});\n\nconst GoogleStreamChatToolResponse = z.object({\n functionCall: z.object({\n name: z.string(),\n args: z.record(z.any()),\n }),\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 })\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\nexport {\n GoogleCompleteChatResponse,\n GoogleCompleteChatTextResponse,\n GoogleCompleteChatToolResponse,\n GoogleStreamChatResponse,\n GoogleStreamChatTextResponse,\n GoogleStreamChatToolResponse,\n type GoogleCompleteChatResponseType,\n type GoogleStreamChatResponseType,\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});\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 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 ])\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 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 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});\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 })\n .optional(),\n toolConfig: GoogleChatToolConfig.optional(),\n tool_config: GoogleChatToolConfig.optional(),\n});\ntype GoogleChatRequestType = z.infer<typeof GoogleChatRequest>;\n\nexport {\n GoogleChatContent,\n GoogleChatContentPartFunctionCall,\n GoogleChatContentPartFunctionResponse,\n GoogleChatContentPartInlineData,\n GoogleChatContentPartFileData,\n GoogleChatContentPartText,\n GoogleChatGenerationConfig,\n GoogleChatRequest,\n GoogleChatSystemInstruction,\n GoogleChatTool,\n GoogleChatToolConfig,\n GoogleChatSafetySettings,\n type GoogleChatContentPartTextType,\n type GoogleChatContentPartFunctionCallType,\n type GoogleChatContentPartFunctionResponseType,\n type GoogleChatContentPartInlineDataType,\n type GoogleChatContentPartFileDataType,\n type GoogleChatToolType,\n type GoogleChatToolConfigType,\n type GoogleChatGenerationConfigType,\n type GoogleChatRequestType,\n type GoogleChatContentType,\n type GoogleChatSystemInstructionType,\n type GoogleChatSafetySettingsType,\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 ChatUsageType,\n Config,\n ConfigType,\n ContentType,\n createPartialTextMessage,\n createPartialToolCallMessage,\n createTextContent,\n createToolCallContent,\n ImageContentType,\n ImageModalityLiteral,\n Message,\n MessageType,\n PartialChatResponseType,\n PdfContentType,\n PdfModalityLiteral,\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(responseHeaders: HeadersType): { shouldRetry: boolean; delayMs: number } {\n return { shouldRetry: false, delayMs: 0 };\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 includeThoughts: paramValue,\n };\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 (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 const safetySettings = transformedConfig.safetySettings;\n delete transformedConfig.safetySettings;\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 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 assistantContent.push({\n function_call: {\n name: content.name,\n args: JSON.parse(content.arguments),\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[]): 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 && tools.length === 0)) {\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 function_declarations: transformedTools,\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 = tools ? this.transformTools(tools) : {};\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 parsedResponse: GoogleCompleteChatResponseType = safe.data;\n const messages: MessageType[] = [];\n let usage: ChatUsageType | undefined;\n const _content = parsedResponse.candidates[0].content;\n if (_content) {\n const content = _content.parts.map((contentItem: any, index: any) => {\n if (\"text\" in contentItem && contentItem.text !== undefined) {\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 );\n }\n }) as ContentType[];\n\n messages.push({\n role: AssistantRoleLiteral,\n content: content,\n });\n\n if (parsedResponse.usageMetadata) {\n usage = {\n promptTokens: parsedResponse.usageMetadata.promptTokenCount,\n totalTokens: parsedResponse.usageMetadata.totalTokenCount,\n completionTokens: parsedResponse.usageMetadata.candidatesTokenCount || 0,\n };\n }\n\n return {\n messages: messages,\n usage: usage,\n logProbs: undefined,\n };\n }\n\n const safetyRatings = parsedResponse.candidates[0].safetyRatings;\n if (safetyRatings && safetyRatings.length > 0) {\n safetyRatings.forEach((rating) => {\n if (rating.blocked) {\n throw new ModelResponseError({\n info: `Blocked content for category: ${rating.category} with probability: ${rating.probability}`,\n cause: new Error(`Blocked content for category: ${rating.category} with probability: ${rating.probability}`),\n });\n }\n });\n }\n\n const finishReason = parsedResponse.candidates[0].finishReason;\n if (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 = tools ? this.transformTools(tools) : {};\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 partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, messagePart.text));\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 )\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 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 partialResponse.partialMessages.push(createPartialTextMessage(AssistantRoleLiteral, messagePart.text));\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 )\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 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.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_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.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_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 {\n Gemini2_5Flash,\n Gemini2_5FlashLiteral,\n Gemini2_5FlashOptions,\n Gemini2_5FlashSchema,\n type Gemini2_5FlashOptionsType,\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_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).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95).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).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95).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-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).def,\n schema: GoogleChatModelConfigs.reasoning(2.0, 1.0, 65536, 4, 0.95).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 // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(responseHeaders: HeadersType): { shouldRetry: boolean; delayMs: number } {\n return { shouldRetry: false, delayMs: 0 };\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","import { z } from \"zod\";\n\nimport { ChatModelSchemaType, ChatModelV1, EmbeddingModelSchemaType, EmbeddingModelV1, ProviderError, ProviderV1 } from \"@adaline/provider\";\n\nimport * as Models from \"../models\";\n\nconst ProviderLiteral = \"vertex\";\nclass Vertex<C extends Models.BaseChatModelOptionsType, E extends Models.BaseEmbeddingModelOptionsType> implements ProviderV1<C, E> {\n readonly version = \"v1\" as const;\n readonly name = ProviderLiteral;\n\n static readonly baseUrl = (location: string, projectId: string, publisher: string = \"google\") =>\n `https://${location}-aiplatform.googleapis.com/v1/projects/${projectId}/locations/${location}/publishers/${publisher}`;\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 [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_5FlashLiteLiteral]: {\n model: Models.Gemini2_5FlashLite,\n modelOptions: Models.Gemini2_5FlashLiteOptions,\n modelSchema: Models.Gemini2_5FlashLiteSchema,\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.Gemini3ProPreviewLiteral]: {\n model: Models.Gemini3ProPreview,\n modelOptions: Models.Gemini3ProPreviewOptions,\n modelSchema: Models.Gemini3ProPreviewSchema,\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_004Literal]: {\n model: Models.Text_Embedding_004,\n modelOptions: Models.Text_Embedding_004Options,\n modelSchema: Models.Text_Embedding_004Schema,\n },\n [Models.Text_Multilingual_Embedding_002Literal]: {\n model: Models.Text_Multilingual_Embedding_002,\n modelOptions: Models.Text_Multilingual_Embedding_002Options,\n modelSchema: Models.Text_Multilingual_Embedding_002Schema,\n },\n [Models.Text_Embedding_Gecko_003Literal]: {\n model: Models.Text_Embedding_Gecko_003,\n modelOptions: Models.Text_Embedding_Gecko_003Options,\n modelSchema: Models.Text_Embedding_Gecko_003Schema,\n },\n [Models.Text_Embedding_Gecko_Multilingual_001Literal]: {\n model: Models.Text_Embedding_Gecko_Multilingual_001,\n modelOptions: Models.Text_Embedding_Gecko_Multilingual_001Options,\n modelSchema: Models.Text_Embedding_Gecko_Multilingual_001Schema,\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: `Vertex chat model: ${modelName} not found`,\n cause: new Error(`Vertex 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: `Vertex embedding model: ${modelName} not found`,\n cause: new Error(`Vertex 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 { Vertex };\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-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\": {\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\": {\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.15,\n \"outputPricePerMillion\": 0.6\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.15,\n \"outputPricePerMillion\": 0.6\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-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.01875,\n \"outputPricePerMillion\": 0.075\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.0375,\n \"outputPricePerMillion\": 0.15\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\": 0.3125,\n \"outputPricePerMillion\": 1.25\n }\n }\n },\n {\n \"minTokens\": 128001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 0.625,\n \"outputPricePerMillion\": 2.5\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.5,\n \"outputPricePerMillion\": 2\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-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.5-pro\": {\n \"modelName\": \"gemini-2.5-pro\",\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-3-pro-preview\": {\n \"modelName\": \"gemini-3-pro-preview\",\n \"currency\": \"USD\",\n \"tokenRanges\": [\n {\n \"minTokens\": 0,\n \"maxTokens\": 200000,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 2,\n \"outputPricePerMillion\": 12\n }\n }\n },\n {\n \"minTokens\": 200001,\n \"maxTokens\": null,\n \"prices\": {\n \"base\": {\n \"inputPricePerMillion\": 4,\n \"outputPricePerMillion\": 18\n }\n }\n }\n ]\n }\n}\n","import { z } from \"zod\";\n\nimport { Gemini1_5Flash001Schema as Google_Gemini1_5Flash001Schema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5Flash001Literal = \"gemini-1.5-flash-001\" as const;\nconst Gemini1_5Flash001Schema = {\n ...Google_Gemini1_5Flash001Schema,\n price: pricingData[Gemini1_5Flash001Literal],\n} as const;\nconst Gemini1_5Flash001Options = BaseChatModelOptions;\ntype Gemini1_5Flash001OptionsType = z.infer<typeof Gemini1_5Flash001Options>;\n\nclass Gemini1_5Flash001 extends BaseChatModelVertex {\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 { Gemini1_5Flash002Schema as Google_Gemini1_5Flash002Schema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5Flash002Literal = \"gemini-1.5-flash-002\" as const;\nconst Gemini1_5Flash002Schema = {\n ...Google_Gemini1_5Flash002Schema,\n price: pricingData[Gemini1_5Flash002Literal],\n};\nconst Gemini1_5Flash002Options = BaseChatModelOptions;\ntype Gemini1_5Flash002OptionsType = z.infer<typeof Gemini1_5Flash002Options>;\n\nclass Gemini1_5Flash002 extends BaseChatModelVertex {\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 { Gemini1_5FlashSchema as Google_Gemini1_5FlashSchema } from \"@adaline/google\";\nimport { ChatModelSchemaType } from \"@adaline/provider\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5FlashLiteral = \"gemini-1.5-flash\" as const;\n\n// Override the schema\nconst Gemini1_5FlashSchema: ChatModelSchemaType = {\n ...Google_Gemini1_5FlashSchema,\n price: pricingData[Gemini1_5FlashLiteral],\n};\n\nconst Gemini1_5FlashOptions = BaseChatModelOptions;\ntype Gemini1_5FlashOptionsType = z.infer<typeof Gemini1_5FlashOptions>;\n\nclass Gemini1_5Flash extends BaseChatModelVertex {\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 { Gemini1_5Pro001Schema as Google_Gemini1_5Pro001Schema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5Pro001Literal = \"gemini-1.5-pro-001\" as const;\nconst Gemini1_5Pro001Schema = {\n ...Google_Gemini1_5Pro001Schema,\n price: pricingData[Gemini1_5Pro001Literal],\n} as const;\nconst Gemini1_5Pro001Options = BaseChatModelOptions;\ntype Gemini1_5Pro001OptionsType = z.infer<typeof Gemini1_5Pro001Options>;\n\nclass Gemini1_5Pro001 extends BaseChatModelVertex {\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 { Gemini1_5Pro002Schema as Google_Gemini1_5Pro002Schema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5Pro002Literal = \"gemini-1.5-pro-002\" as const;\n\nconst Gemini1_5Pro002Schema = {\n ...Google_Gemini1_5Pro002Schema,\n price: pricingData[Gemini1_5Pro002Literal],\n} as const;\nconst Gemini1_5Pro002Options = BaseChatModelOptions;\ntype Gemini1_5Pro002OptionsType = z.infer<typeof Gemini1_5Pro002Options>;\n\nclass Gemini1_5Pro002 extends BaseChatModelVertex {\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 { Gemini1_5ProSchema as Google_Gemini1_5ProSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5ProLiteral = \"gemini-1.5-pro\" as const;\nconst Gemini1_5ProSchema = {\n ...Google_Gemini1_5ProSchema,\n price: pricingData[Gemini1_5ProLiteral],\n} as const;\n\nconst Gemini1_5ProOptions = BaseChatModelOptions;\ntype Gemini1_5ProOptionsType = z.infer<typeof Gemini1_5ProOptions>;\n\nclass Gemini1_5Pro extends BaseChatModelVertex {\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 { Gemini1_5FlashLatestSchema as Google_Gemini1_5FlashLatestSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5FlashLatestLiteral = \"gemini-1.5-flash-latest\" as const;\nconst Gemini1_5FlashLatestSchema = {\n ...Google_Gemini1_5FlashLatestSchema,\n price: pricingData[Gemini1_5FlashLatestLiteral],\n} as const;\nconst Gemini1_5FlashLatestOptions = BaseChatModelOptions;\ntype Gemini1_5FlashLatestOptionsType = z.infer<typeof Gemini1_5FlashLatestOptions>;\n\nclass Gemini1_5FlashLatest extends BaseChatModelVertex {\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 { Gemini1_5ProLatestSchema as Google_Gemini1_5ProLatestSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini1_5ProLatestLiteral = \"gemini-1.5-pro-latest\" as const;\nconst Gemini1_5ProLatestSchema = {\n ...Google_Gemini1_5ProLatestSchema,\n price: pricingData[Gemini1_5ProLatestLiteral],\n} as const;\nconst Gemini1_5ProLatestOptions = BaseChatModelOptions;\ntype Gemini1_5ProLatestOptionsType = z.infer<typeof Gemini1_5ProLatestOptions>;\n\nclass Gemini1_5ProLatest extends BaseChatModelVertex {\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 { Gemini2_0FlashExpSchema as Google_Gemini2_0FlashExpSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_0FlashExpLiteral = \"gemini-2.0-flash-exp\" as const;\n\nconst Gemini2_0FlashExpSchema = {\n ...Google_Gemini2_0FlashExpSchema,\n price: pricingData[Gemini2_0FlashExpLiteral],\n} as const;\nconst Gemini2_0FlashExpOptions = BaseChatModelOptions;\ntype Gemini2_0FlashExpOptionsType = z.infer<typeof Gemini2_0FlashExpOptions>;\n\nclass Gemini2_0FlashExp extends BaseChatModelVertex {\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 { Gemini2_0FlashSchema as Google_Gemini2_0FlashSchema } from \"@adaline/google\";\nimport { ChatModelSchemaType } from \"@adaline/provider\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_0FlashLiteral = \"gemini-2.0-flash\" as const;\n\n// Override the schema\nconst Gemini2_0FlashSchema: ChatModelSchemaType = {\n ...Google_Gemini2_0FlashSchema,\n price: pricingData[Gemini2_0FlashLiteral],\n};\n\nconst Gemini2_0FlashOptions = BaseChatModelOptions;\ntype Gemini2_0FlashOptionsType = z.infer<typeof Gemini2_0FlashOptions>;\n\nclass Gemini2_0Flash extends BaseChatModelVertex {\n constructor(options: Gemini2_0FlashOptionsType) {\n super(Gemini2_0FlashSchema, options);\n }\n}\n\nexport { Gemini2_0Flash, Gemini2_0FlashLiteral, Gemini2_0FlashOptions, Gemini2_0FlashSchema, type Gemini2_0FlashOptionsType };\n","import { z } from \"zod\";\n\nimport { Gemini2_5FlashLiteSchema as Google_Gemini2_5FlashLiteSchema } from \"@adaline/google\";\nimport { ChatModelSchemaType } from \"@adaline/provider\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_5FlashLiteLiteral = \"gemini-2.5-flash-lite\" as const;\n\n// Override the schema\nconst Gemini2_5FlashLiteSchema: ChatModelSchemaType = {\n ...Google_Gemini2_5FlashLiteSchema,\n price: pricingData[Gemini2_5FlashLiteLiteral],\n};\n\nconst Gemini2_5FlashLiteOptions = BaseChatModelOptions;\ntype Gemini2_5FlashLiteOptionsType = z.infer<typeof Gemini2_5FlashLiteOptions>;\n\nclass Gemini2_5FlashLite extends BaseChatModelVertex {\n constructor(options: Gemini2_5FlashLiteOptionsType) {\n super(Gemini2_5FlashLiteSchema, options);\n }\n}\n\nexport { Gemini2_5FlashLite, Gemini2_5FlashLiteLiteral, Gemini2_5FlashLiteOptions, Gemini2_5FlashLiteSchema, type Gemini2_5FlashLiteOptionsType };\n","import { z } from \"zod\";\n\nimport { Gemini2_5FlashPreview0417Schema as Google_Gemini2_5FlashPreview0417Schema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_5FlashPreview0417Literal = \"gemini-2.5-flash-preview-04-17\" as const;\nconst Gemini2_5FlashPreview0417Schema = {\n ...Google_Gemini2_5FlashPreview0417Schema,\n price: pricingData[Gemini2_5FlashPreview0417Literal],\n} as const;\nconst Gemini2_5FlashPreview0417Options = BaseChatModelOptions;\ntype Gemini2_5FlashPreview0417OptionsType = z.infer<typeof Gemini2_5FlashPreview0417Options>;\n\nclass Gemini2_5FlashPreview0417 extends BaseChatModelVertex {\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 { Gemini2_5FlashSchema as Google_Gemini2_5FlashSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_5FlashLiteral = \"gemini-2.5-flash\" as const;\nconst Gemini2_5FlashSchema = {\n ...Google_Gemini2_5FlashSchema,\n price: pricingData[Gemini2_5FlashLiteral],\n} as const;\nconst Gemini2_5FlashOptions = BaseChatModelOptions;\ntype Gemini2_5FlashOptionsType = z.infer<typeof Gemini2_5FlashOptions>;\n\nclass Gemini2_5Flash extends BaseChatModelVertex {\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 { Gemini2_5ProPreview0325Schema as Google_Gemini2_5ProPreview0325Schema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_5ProPreview0325Literal = \"gemini-2.5-pro-preview-03-25\" as const;\nconst Gemini2_5ProPreview0325Schema = {\n ...Google_Gemini2_5ProPreview0325Schema,\n price: pricingData[Gemini2_5ProPreview0325Literal],\n} as const;\nconst Gemini2_5ProPreview0325Options = BaseChatModelOptions;\ntype Gemini2_5ProPreview0325OptionsType = z.infer<typeof Gemini2_5ProPreview0325Options>;\n\nclass Gemini2_5ProPreview0325 extends BaseChatModelVertex {\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 { Gemini2_5ProSchema as Google_Gemini2_5ProSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini2_5ProLiteral = \"gemini-2.5-pro\" as const;\nconst Gemini2_5ProSchema = {\n ...Google_Gemini2_5ProSchema,\n price: pricingData[Gemini2_5ProLiteral],\n} as const;\nconst Gemini2_5ProOptions = BaseChatModelOptions;\ntype Gemini2_5ProOptionsType = z.infer<typeof Gemini2_5ProOptions>;\n\nclass Gemini2_5Pro extends BaseChatModelVertex {\n constructor(options: Gemini2_5ProOptionsType) {\n super(Gemini2_5ProSchema, options);\n }\n}\n\nexport { Gemini2_5Pro, Gemini2_5ProLiteral, Gemini2_5ProOptions, Gemini2_5ProSchema, type Gemini2_5ProOptionsType };\n","import { z } from \"zod\";\n\nimport { Gemini3ProPreviewSchema as Google_Gemini3ProPreviewSchema } from \"@adaline/google\";\n\nimport pricingData from \"../pricing.json\";\nimport { BaseChatModelOptions, BaseChatModelVertex } from \"./base-chat-model.vertex\";\n\nconst Gemini3ProPreviewLiteral = \"gemini-3-pro-preview\" as const;\nconst Gemini3ProPreviewSchema = {\n ...Google_Gemini3ProPreviewSchema,\n price: pricingData[Gemini3ProPreviewLiteral],\n} as const;\nconst Gemini3ProPreviewOptions = BaseChatModelOptions;\ntype Gemini3ProPreviewOptionsType = z.infer<typeof Gemini3ProPreviewOptions>;\n\nclass Gemini3ProPreview extends BaseChatModelVertex {\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","import { z } from \"zod\";\n\nimport { EmbeddingModelSchemaType } from \"@adaline/provider\";\nimport { EmbeddingTextModalityLiteral } from \"@adaline/types\";\n\nconst VertexEmbeddingModelModalities: EmbeddingModelSchemaType[\"modalities\"] = [EmbeddingTextModalityLiteral];\n\nconst VertexEmbeddingModelModalitiesEnum = z.enum([EmbeddingTextModalityLiteral]);\n\nexport { VertexEmbeddingModelModalitiesEnum, VertexEmbeddingModelModalities };\n","import { z } from \"zod\";\n\nconst VertexGetEmbeddingsResponse = z.object({\n predictions: z.array(\n z.object({\n embeddings: z.object({\n values: z.array(z.number()),\n statistics: z.object({\n token_count: z.number(),\n truncated: z.boolean(),\n }),\n }),\n })\n ),\n});\n\ntype VertexGetEmbeddingsResponseType = z.infer<typeof VertexGetEmbeddingsResponse>;\n\nexport { VertexGetEmbeddingsResponse, type VertexGetEmbeddingsResponseType };\n","import { z } from \"zod\";\n\nconst VertexEmbeddingRequest = z.object({\n model: z.string().min(1).optional(),\n instances: z\n .array(\n z.object({\n content: z.string().min(1),\n })\n )\n .min(1),\n parameters: z\n .object({\n auto_truncate: z.boolean().optional(),\n output_dimensionality: z.number().int().min(1).optional(),\n autoTruncate: z.boolean().optional(),\n outputDimensionality: z.number().int().min(1).optional(),\n })\n .optional(),\n});\n\ntype VertexEmbeddingRequestType = z.infer<typeof VertexEmbeddingRequest>;\n\nexport { VertexEmbeddingRequest, type VertexEmbeddingRequestType };\n","import { z } from \"zod\";\n\nimport {\n EmbeddingModelSchemaType,\n EmbeddingModelV1,\n HeadersType,\n InvalidConfigError,\n InvalidEmbeddingRequestsError,\n InvalidModelRequestError,\n ModelError,\n ModelResponseError,\n ParamsType,\n removeUndefinedEntries,\n UrlType,\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 { Vertex } from \"../../provider/provider.vertex\";\nimport { VertexEmbeddingRequest, VertexGetEmbeddingsResponse } from \"./types\";\n\nconst BaseEmbeddingModelOptions = z.object({\n accessToken: z.string(),\n modelName: z.string(),\n baseUrl: z.string().url().optional(),\n location: z.string().optional(),\n projectId: z.string().optional(),\n publisher: z.string().optional(),\n});\ntype BaseEmbeddingModelOptionsType = z.infer<typeof BaseEmbeddingModelOptions>;\n\nclass BaseEmbeddingModel implements EmbeddingModelV1<EmbeddingModelSchemaType> {\n readonly version = \"v1\" as const;\n modelSchema: EmbeddingModelSchemaType;\n modelName: string;\n\n private readonly accessToken: string;\n private readonly baseUrl: string;\n private readonly getEmbeddingsUrl: string;\n private readonly location: string | undefined;\n private readonly projectId: string | undefined;\n private readonly publisher: string | undefined;\n\n constructor(modelSchema: EmbeddingModelSchemaType, options: BaseEmbeddingModelOptionsType) {\n const parsedOptions = BaseEmbeddingModelOptions.parse(options);\n this.modelSchema = modelSchema;\n this.modelName = parsedOptions.modelName;\n this.accessToken = parsedOptions.accessToken;\n\n let baseUrl: string | undefined;\n if (parsedOptions.baseUrl) {\n baseUrl = parsedOptions.baseUrl;\n } else if (parsedOptions.location && parsedOptions.projectId) {\n baseUrl = Vertex.baseUrl(parsedOptions.location, parsedOptions.projectId, parsedOptions.publisher);\n } else {\n throw new ModelError({\n info: \"Either 'baseUrl' must be provided or 'location' and 'projectId' must be provided\",\n cause: new Error(\"Either 'baseUrl' must be provided or 'location' and 'projectId' must be provided\"),\n });\n }\n\n this.baseUrl = baseUrl;\n this.getEmbeddingsUrl = `${this.baseUrl}/models/${parsedOptions.modelName}:predict`;\n this.location = parsedOptions.location;\n this.projectId = parsedOptions.projectId;\n }\n\n getDefaultBaseUrl(): UrlType {\n return this.baseUrl;\n }\n\n getDefaultHeaders(): HeadersType {\n return {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${this.accessToken}`,\n };\n }\n\n getDefaultParams(): ParamsType {\n return {};\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getRetryDelay(responseHeaders: HeadersType): { shouldRetry: boolean; delayMs: number } {\n return { shouldRetry: false, delayMs: 0 };\n }\n\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 = VertexEmbeddingRequest.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 autoTruncate: parsedRequest.parameters?.auto_truncate || parsedRequest.parameters?.autoTruncate,\n dimensions: parsedRequest.parameters?.output_dimensionality || parsedRequest.parameters?.outputDimensionality,\n };\n const config = Config().parse(removeUndefinedEntries(_config));\n\n const embeddingRequests: EmbeddingRequestsType = {\n modality: EmbeddingTextModalityLiteral,\n requests: parsedRequest.instances.map((instance) => instance.content),\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 {\n parameters: transformedConfig,\n };\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 instances = _parsedRequests.data.requests.map((request) => {\n return {\n content: request as string,\n };\n });\n\n return {\n instances,\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 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 resolve({\n ...this.getDefaultParams(),\n ...this.transformConfig(config),\n ...this.transformEmbeddingRequests(requests),\n });\n });\n }\n\n transformGetEmbeddingsResponse(response: any): EmbeddingResponseType {\n const safe = VertexGetEmbeddingsResponse.safeParse(response);\n if (safe.success) {\n const parsedResponse = safe.data;\n const embeddings = parsedResponse.predictions.map((prediction, index) => {\n return {\n index,\n embedding: prediction.embeddings.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 { EMBEDDING_CONFIG, RangeConfigItem, SelectBooleanConfigItem } from \"@adaline/provider\";\n\nconst dimensions = (maxDimensions: number) =>\n RangeConfigItem({\n param: \"output_dimensionality\",\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\nconst autoTruncate = SelectBooleanConfigItem({\n param: \"auto_truncate\",\n title: \"Auto truncate\",\n description:\n \"When set to true, input text will be truncated. \\\n When set to false, an error is returned if the input text is longer than the maximum length supported by the model.\",\n default: true,\n});\n\nexport { dimensions, autoTruncate };\n","import { z } from \"zod\";\n\nimport { autoTruncate, dimensions } from \"./common.config.embedding-model.vertex\";\n\nconst EmbeddingModelBaseConfigSchema = (maxDimensions: number) =>\n z.object({\n dimensions: dimensions(maxDimensions).schema,\n autoTruncate: autoTruncate.schema,\n });\n\nconst EmbeddingModelBaseConfigDef = (maxDimensions: number) =>\n ({\n dimensions: dimensions(maxDimensions).def,\n autoTruncate: autoTruncate.def,\n }) as const;\n\nexport { EmbeddingModelBaseConfigDef, EmbeddingModelBaseConfigSchema };\n","import { EmbeddingModelBaseConfigDef, EmbeddingModelBaseConfigSchema } from \"./embedding-model\";\n\nconst VertexEmbeddingModelConfigs = {\n base: (maxDimensions: number) => ({\n def: EmbeddingModelBaseConfigDef(maxDimensions),\n schema: EmbeddingModelBaseConfigSchema(maxDimensions),\n }),\n} as const;\n\nexport { VertexEmbeddingModelConfigs };\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { VertexEmbeddingModelConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.vertex\";\nimport { VertexEmbeddingModelModalities, VertexEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst Text_Embedding_004Literal = \"text-embedding-004\";\nconst Text_Embedding_004_Description = \"text-embedding-004\";\n\nconst Text_Embedding_004Schema = EmbeddingModelSchema(VertexEmbeddingModelModalitiesEnum).parse({\n name: Text_Embedding_004Literal,\n description: Text_Embedding_004_Description,\n modalities: VertexEmbeddingModelModalities,\n maxInputTokens: 2048,\n maxOutputTokens: 768,\n config: {\n def: VertexEmbeddingModelConfigs.base(768).def,\n schema: VertexEmbeddingModelConfigs.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","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { VertexEmbeddingModelConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.vertex\";\nimport { VertexEmbeddingModelModalities, VertexEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst Text_Multilingual_Embedding_002Literal = \"text-multilingual-embedding-002\";\nconst Text_Multilingual_Embedding_002_Description = \"text-multilingual-embedding-002\";\n\nconst Text_Multilingual_Embedding_002Schema = EmbeddingModelSchema(VertexEmbeddingModelModalitiesEnum).parse({\n name: Text_Multilingual_Embedding_002Literal,\n description: Text_Multilingual_Embedding_002_Description,\n modalities: VertexEmbeddingModelModalities,\n maxInputTokens: 2048,\n maxOutputTokens: 768,\n config: {\n def: VertexEmbeddingModelConfigs.base(768).def,\n schema: VertexEmbeddingModelConfigs.base(768).schema,\n },\n});\n\nconst Text_Multilingual_Embedding_002Options = BaseEmbeddingModelOptions;\ntype Text_Multilingual_Embedding_002OptionsType = z.infer<typeof Text_Multilingual_Embedding_002Options>;\n\nclass Text_Multilingual_Embedding_002 extends BaseEmbeddingModel {\n constructor(options: Text_Multilingual_Embedding_002OptionsType) {\n super(Text_Multilingual_Embedding_002Schema, options);\n }\n}\n\nexport {\n Text_Multilingual_Embedding_002,\n Text_Multilingual_Embedding_002Options,\n Text_Multilingual_Embedding_002Schema,\n Text_Multilingual_Embedding_002Literal,\n type Text_Multilingual_Embedding_002OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { VertexEmbeddingModelConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.vertex\";\nimport { VertexEmbeddingModelModalities, VertexEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst Text_Embedding_Gecko_Multilingual_001Literal = \"textembedding-gecko-multilingual@001\";\nconst Text_Embedding_Gecko_Multilingual_001_Description = \"textembedding-gecko-multilingual@001\";\n\nconst Text_Embedding_Gecko_Multilingual_001Schema = EmbeddingModelSchema(VertexEmbeddingModelModalitiesEnum).parse({\n name: Text_Embedding_Gecko_Multilingual_001Literal,\n description: Text_Embedding_Gecko_Multilingual_001_Description,\n modalities: VertexEmbeddingModelModalities,\n maxInputTokens: 2048,\n maxOutputTokens: 768,\n config: {\n def: VertexEmbeddingModelConfigs.base(768).def,\n schema: VertexEmbeddingModelConfigs.base(768).schema,\n },\n});\n\nconst Text_Embedding_Gecko_Multilingual_001Options = BaseEmbeddingModelOptions;\ntype Text_Embedding_Gecko_Multilingual_001OptionsType = z.infer<typeof Text_Embedding_Gecko_Multilingual_001Options>;\n\nclass Text_Embedding_Gecko_Multilingual_001 extends BaseEmbeddingModel {\n constructor(options: Text_Embedding_Gecko_Multilingual_001OptionsType) {\n super(Text_Embedding_Gecko_Multilingual_001Schema, options);\n }\n}\n\nexport {\n Text_Embedding_Gecko_Multilingual_001,\n Text_Embedding_Gecko_Multilingual_001Options,\n Text_Embedding_Gecko_Multilingual_001Schema,\n Text_Embedding_Gecko_Multilingual_001Literal,\n type Text_Embedding_Gecko_Multilingual_001OptionsType,\n};\n","import { z } from \"zod\";\n\nimport { EmbeddingModelSchema } from \"@adaline/provider\";\n\nimport { VertexEmbeddingModelConfigs } from \"../../configs\";\nimport { BaseEmbeddingModel, BaseEmbeddingModelOptions } from \"./base-embedding-model.vertex\";\nimport { VertexEmbeddingModelModalities, VertexEmbeddingModelModalitiesEnum } from \"./types\";\n\nconst Text_Embedding_Gecko_003Literal = \"textembedding-gecko@003\";\nconst Text_Embedding_Gecko_003_Description = \"textembedding-gecko@003\";\n\nconst Text_Embedding_Gecko_003Schema = EmbeddingModelSchema(VertexEmbeddingModelModalitiesEnum).parse({\n name: Text_Embedding_Gecko_003Literal,\n description: Text_Embedding_Gecko_003_Description,\n modalities: VertexEmbeddingModelModalities,\n maxInputTokens: 2048,\n maxOutputTokens: 768,\n config: {\n def: VertexEmbeddingModelConfigs.base(768).def,\n schema: VertexEmbeddingModelConfigs.base(768).schema,\n },\n});\n\nconst Text_Embedding_Gecko_003Options = BaseEmbeddingModelOptions;\ntype Text_Embedding_Gecko_003OptionsType = z.infer<typeof Text_Embedding_Gecko_003Options>;\n\nclass Text_Embedding_Gecko_003 extends BaseEmbeddingModel {\n constructor(options: Text_Embedding_Gecko_003OptionsType) {\n super(Text_Embedding_Gecko_003Schema, options);\n }\n}\n\nexport {\n Text_Embedding_Gecko_003,\n Text_Embedding_Gecko_003Options,\n Text_Embedding_Gecko_003Schema,\n Text_Embedding_Gecko_003Literal,\n type Text_Embedding_Gecko_003OptionsType,\n};\n"]}
|