@truefoundry/ai-gateway-sdk 0.0.0-stage → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +192 -2
- package/dist/adapters/bedrock-converse/index.d.ts +9 -0
- package/dist/adapters/bedrock-converse/index.js +121 -0
- package/dist/adapters/bedrock-converse/index.js.map +1 -0
- package/dist/adapters/bedrock-converse/requestTransform.d.ts +111 -0
- package/dist/adapters/bedrock-converse/requestTransform.js +187 -0
- package/dist/adapters/bedrock-converse/requestTransform.js.map +1 -0
- package/dist/adapters/bedrock-converse/responseTransform.d.ts +7 -0
- package/dist/adapters/bedrock-converse/responseTransform.js +104 -0
- package/dist/adapters/bedrock-converse/responseTransform.js.map +1 -0
- package/dist/adapters/bedrock-converse/streamTransform.d.ts +34 -0
- package/dist/adapters/bedrock-converse/streamTransform.js +204 -0
- package/dist/adapters/bedrock-converse/streamTransform.js.map +1 -0
- package/dist/adapters/constants.d.ts +15 -0
- package/dist/adapters/constants.js +26 -0
- package/dist/adapters/constants.js.map +1 -0
- package/dist/adapters/gemini/index.d.ts +9 -0
- package/dist/adapters/gemini/index.js +146 -0
- package/dist/adapters/gemini/index.js.map +1 -0
- package/dist/adapters/gemini/requestTransform.d.ts +72 -0
- package/dist/adapters/gemini/requestTransform.js +227 -0
- package/dist/adapters/gemini/requestTransform.js.map +1 -0
- package/dist/adapters/gemini/responseTransform.d.ts +7 -0
- package/dist/adapters/gemini/responseTransform.js +113 -0
- package/dist/adapters/gemini/responseTransform.js.map +1 -0
- package/dist/adapters/gemini/streamTransform.d.ts +22 -0
- package/dist/adapters/gemini/streamTransform.js +174 -0
- package/dist/adapters/gemini/streamTransform.js.map +1 -0
- package/dist/adapters/guardrailHelpers.d.ts +49 -0
- package/dist/adapters/guardrailHelpers.js +23 -0
- package/dist/adapters/guardrailHelpers.js.map +1 -0
- package/dist/adapters/index.d.ts +28 -0
- package/dist/adapters/index.js +62 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/messages/index.d.ts +9 -0
- package/dist/adapters/messages/index.js +112 -0
- package/dist/adapters/messages/index.js.map +1 -0
- package/dist/adapters/messages/requestTransform.d.ts +8 -0
- package/dist/adapters/messages/requestTransform.js +206 -0
- package/dist/adapters/messages/requestTransform.js.map +1 -0
- package/dist/adapters/messages/responseTransform.d.ts +8 -0
- package/dist/adapters/messages/responseTransform.js +104 -0
- package/dist/adapters/messages/responseTransform.js.map +1 -0
- package/dist/adapters/messages/streamTransform.d.ts +26 -0
- package/dist/adapters/messages/streamTransform.js +174 -0
- package/dist/adapters/messages/streamTransform.js.map +1 -0
- package/dist/adapters/registry.d.ts +67 -0
- package/dist/adapters/registry.js +232 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/adapters/responses/encryptedContentAffinity.d.ts +12 -0
- package/dist/adapters/responses/encryptedContentAffinity.js +55 -0
- package/dist/adapters/responses/encryptedContentAffinity.js.map +1 -0
- package/dist/adapters/responses/index.d.ts +6 -0
- package/dist/adapters/responses/index.js +201 -0
- package/dist/adapters/responses/index.js.map +1 -0
- package/dist/adapters/responses/requestTransform.d.ts +7 -0
- package/dist/adapters/responses/requestTransform.js +190 -0
- package/dist/adapters/responses/requestTransform.js.map +1 -0
- package/dist/adapters/responses/responseTransform.d.ts +30 -0
- package/dist/adapters/responses/responseTransform.js +174 -0
- package/dist/adapters/responses/responseTransform.js.map +1 -0
- package/dist/adapters/responses/streamTransform.d.ts +40 -0
- package/dist/adapters/responses/streamTransform.js +301 -0
- package/dist/adapters/responses/streamTransform.js.map +1 -0
- package/dist/adapters/types.d.ts +79 -0
- package/dist/adapters/types.js +2 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/autogen/decoders.d.ts +956 -0
- package/dist/autogen/decoders.js +10502 -0
- package/dist/autogen/decoders.js.map +1 -0
- package/dist/autogen/helpers.d.ts +5 -0
- package/dist/autogen/helpers.js +3 -0
- package/dist/autogen/helpers.js.map +1 -0
- package/dist/autogen/meta.d.ts +961 -0
- package/dist/autogen/meta.js +960 -0
- package/dist/autogen/meta.js.map +1 -0
- package/dist/autogen/models.d.ts +24388 -0
- package/dist/autogen/models.js +9 -0
- package/dist/autogen/models.js.map +1 -0
- package/dist/autogen/schema.json +30705 -0
- package/dist/autogen/validate.d.ts +6 -0
- package/dist/autogen/validate.js +15 -0
- package/dist/autogen/validate.js.map +1 -0
- package/dist/cache/port.d.ts +31 -0
- package/dist/cache/port.js +44 -0
- package/dist/cache/port.js.map +1 -0
- package/dist/catalog/snapshots.d.ts +19 -0
- package/dist/catalog/snapshots.js +14 -0
- package/dist/catalog/snapshots.js.map +1 -0
- package/dist/config.d.ts +89 -0
- package/dist/config.js +195 -0
- package/dist/config.js.map +1 -0
- package/dist/constants/jsonRpc.d.ts +30 -0
- package/dist/constants/jsonRpc.js +11 -0
- package/dist/constants/jsonRpc.js.map +1 -0
- package/dist/constants.d.ts +26 -0
- package/dist/constants.js +27 -0
- package/dist/constants.js.map +1 -0
- package/dist/entities/Authentication.d.ts +37 -0
- package/dist/entities/Authentication.js +11 -0
- package/dist/entities/Authentication.js.map +1 -0
- package/dist/entities/Model.d.ts +105 -0
- package/dist/entities/Model.js +55 -0
- package/dist/entities/Model.js.map +1 -0
- package/dist/entities/Provider.d.ts +46 -0
- package/dist/entities/Provider.js +48 -0
- package/dist/entities/Provider.js.map +1 -0
- package/dist/entities/ProviderAccount.d.ts +23 -0
- package/dist/entities/ProviderAccount.js +2 -0
- package/dist/entities/ProviderAccount.js.map +1 -0
- package/dist/errors.d.ts +190 -0
- package/dist/errors.js +300 -0
- package/dist/errors.js.map +1 -0
- package/dist/globals.d.ts +452 -0
- package/dist/globals.js +782 -0
- package/dist/globals.js.map +1 -0
- package/dist/handlers/handlerUtils.d.ts +2 -0
- package/dist/handlers/handlerUtils.js +240 -0
- package/dist/handlers/handlerUtils.js.map +1 -0
- package/dist/handlers/retryFromExecution.d.ts +12 -0
- package/dist/handlers/retryFromExecution.js +21 -0
- package/dist/handlers/retryFromExecution.js.map +1 -0
- package/dist/handlers/retryHandler.d.ts +20 -0
- package/dist/handlers/retryHandler.js +276 -0
- package/dist/handlers/retryHandler.js.map +1 -0
- package/dist/handlers/streamHandler.d.ts +6 -0
- package/dist/handlers/streamHandler.js +29 -0
- package/dist/handlers/streamHandler.js.map +1 -0
- package/dist/handlers/streamHandlerUtils.d.ts +21 -0
- package/dist/handlers/streamHandlerUtils.js +220 -0
- package/dist/handlers/streamHandlerUtils.js.map +1 -0
- package/dist/handlers/tfyUtils.d.ts +24 -0
- package/dist/handlers/tfyUtils.js +221 -0
- package/dist/handlers/tfyUtils.js.map +1 -0
- package/dist/http/createSafeDispatcher.d.ts +29 -0
- package/dist/http/createSafeDispatcher.js +49 -0
- package/dist/http/createSafeDispatcher.js.map +1 -0
- package/dist/http/errors.d.ts +23 -0
- package/dist/http/errors.js +128 -0
- package/dist/http/errors.js.map +1 -0
- package/dist/http/guardedLookup.d.ts +18 -0
- package/dist/http/guardedLookup.js +72 -0
- package/dist/http/guardedLookup.js.map +1 -0
- package/dist/http/index.d.ts +7 -0
- package/dist/http/index.js +7 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/isPublicIp.d.ts +1 -0
- package/dist/http/isPublicIp.js +63 -0
- package/dist/http/isPublicIp.js.map +1 -0
- package/dist/http/loopbackDispatcher.d.ts +32 -0
- package/dist/http/loopbackDispatcher.js +40 -0
- package/dist/http/loopbackDispatcher.js.map +1 -0
- package/dist/http/loopbackFetch.d.ts +18 -0
- package/dist/http/loopbackFetch.js +47 -0
- package/dist/http/loopbackFetch.js.map +1 -0
- package/dist/http/meshTls.d.ts +153 -0
- package/dist/http/meshTls.js +274 -0
- package/dist/http/meshTls.js.map +1 -0
- package/dist/http/safeFetch.d.ts +49 -0
- package/dist/http/safeFetch.js +226 -0
- package/dist/http/safeFetch.js.map +1 -0
- package/dist/http/types.d.ts +10 -0
- package/dist/http/types.js +2 -0
- package/dist/http/types.js.map +1 -0
- package/dist/http/urlverify/config.d.ts +20 -0
- package/dist/http/urlverify/config.js +66 -0
- package/dist/http/urlverify/config.js.map +1 -0
- package/dist/http/urlverify/hostname.d.ts +10 -0
- package/dist/http/urlverify/hostname.js +29 -0
- package/dist/http/urlverify/hostname.js.map +1 -0
- package/dist/http/urlverify/ip.d.ts +13 -0
- package/dist/http/urlverify/ip.js +115 -0
- package/dist/http/urlverify/ip.js.map +1 -0
- package/dist/http/urlverify/mode.d.ts +20 -0
- package/dist/http/urlverify/mode.js +22 -0
- package/dist/http/urlverify/mode.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/loadbalancer_utils.d.ts +6 -0
- package/dist/loadbalancer_utils.js +2 -0
- package/dist/loadbalancer_utils.js.map +1 -0
- package/dist/logger.d.ts +18 -0
- package/dist/logger.js +93 -0
- package/dist/logger.js.map +1 -0
- package/dist/parity/transformCapturedProviderResponse.d.ts +42 -0
- package/dist/parity/transformCapturedProviderResponse.js +52 -0
- package/dist/parity/transformCapturedProviderResponse.js.map +1 -0
- package/dist/providers/ai21/api.d.ts +3 -0
- package/dist/providers/ai21/api.js +21 -0
- package/dist/providers/ai21/api.js.map +1 -0
- package/dist/providers/ai21/chatComplete.d.ts +4 -0
- package/dist/providers/ai21/chatComplete.js +170 -0
- package/dist/providers/ai21/chatComplete.js.map +1 -0
- package/dist/providers/ai21/index.d.ts +8 -0
- package/dist/providers/ai21/index.js +11 -0
- package/dist/providers/ai21/index.js.map +1 -0
- package/dist/providers/anthropic/anthropicBetas.d.ts +51 -0
- package/dist/providers/anthropic/anthropicBetas.js +95 -0
- package/dist/providers/anthropic/anthropicBetas.js.map +1 -0
- package/dist/providers/anthropic/api.d.ts +22 -0
- package/dist/providers/anthropic/api.js +87 -0
- package/dist/providers/anthropic/api.js.map +1 -0
- package/dist/providers/anthropic/betaTracing.d.ts +10 -0
- package/dist/providers/anthropic/betaTracing.js +30 -0
- package/dist/providers/anthropic/betaTracing.js.map +1 -0
- package/dist/providers/anthropic/chatComplete.d.ts +137 -0
- package/dist/providers/anthropic/chatComplete.js +1395 -0
- package/dist/providers/anthropic/chatComplete.js.map +1 -0
- package/dist/providers/anthropic/complete.d.ts +32 -0
- package/dist/providers/anthropic/complete.js +110 -0
- package/dist/providers/anthropic/complete.js.map +1 -0
- package/dist/providers/anthropic/deleteFile.d.ts +7 -0
- package/dist/providers/anthropic/deleteFile.js +23 -0
- package/dist/providers/anthropic/deleteFile.js.map +1 -0
- package/dist/providers/anthropic/fileTypes.d.ts +64 -0
- package/dist/providers/anthropic/fileTypes.js +7 -0
- package/dist/providers/anthropic/fileTypes.js.map +1 -0
- package/dist/providers/anthropic/fileUtils.d.ts +14 -0
- package/dist/providers/anthropic/fileUtils.js +22 -0
- package/dist/providers/anthropic/fileUtils.js.map +1 -0
- package/dist/providers/anthropic/index.d.ts +8 -0
- package/dist/providers/anthropic/index.js +33 -0
- package/dist/providers/anthropic/index.js.map +1 -0
- package/dist/providers/anthropic/listFiles.d.ts +7 -0
- package/dist/providers/anthropic/listFiles.js +26 -0
- package/dist/providers/anthropic/listFiles.js.map +1 -0
- package/dist/providers/anthropic/messages.d.ts +5 -0
- package/dist/providers/anthropic/messages.js +19 -0
- package/dist/providers/anthropic/messages.js.map +1 -0
- package/dist/providers/anthropic/retrieveFile.d.ts +7 -0
- package/dist/providers/anthropic/retrieveFile.js +19 -0
- package/dist/providers/anthropic/retrieveFile.js.map +1 -0
- package/dist/providers/anthropic/retrieveFileContent.d.ts +4 -0
- package/dist/providers/anthropic/retrieveFileContent.js +17 -0
- package/dist/providers/anthropic/retrieveFileContent.js.map +1 -0
- package/dist/providers/anthropic/serverTools.d.ts +10 -0
- package/dist/providers/anthropic/serverTools.js +70 -0
- package/dist/providers/anthropic/serverTools.js.map +1 -0
- package/dist/providers/anthropic/types.d.ts +119 -0
- package/dist/providers/anthropic/types.js +11 -0
- package/dist/providers/anthropic/types.js.map +1 -0
- package/dist/providers/anthropic/uploadFile.d.ts +7 -0
- package/dist/providers/anthropic/uploadFile.js +47 -0
- package/dist/providers/anthropic/uploadFile.js.map +1 -0
- package/dist/providers/anthropic/uploadFileUtils.d.ts +20 -0
- package/dist/providers/anthropic/uploadFileUtils.js +60 -0
- package/dist/providers/anthropic/uploadFileUtils.js.map +1 -0
- package/dist/providers/anthropic/utils.d.ts +52 -0
- package/dist/providers/anthropic/utils.js +119 -0
- package/dist/providers/anthropic/utils.js.map +1 -0
- package/dist/providers/anthropic-base/constants.d.ts +12 -0
- package/dist/providers/anthropic-base/constants.js +53 -0
- package/dist/providers/anthropic-base/constants.js.map +1 -0
- package/dist/providers/anthropic-base/messages.d.ts +12 -0
- package/dist/providers/anthropic-base/messages.js +81 -0
- package/dist/providers/anthropic-base/messages.js.map +1 -0
- package/dist/providers/anthropic-base/types.d.ts +49 -0
- package/dist/providers/anthropic-base/types.js +2 -0
- package/dist/providers/anthropic-base/types.js.map +1 -0
- package/dist/providers/anthropic-base/utils/streamGenerator.d.ts +7 -0
- package/dist/providers/anthropic-base/utils/streamGenerator.js +135 -0
- package/dist/providers/anthropic-base/utils/streamGenerator.js.map +1 -0
- package/dist/providers/anyscale/api.d.ts +12 -0
- package/dist/providers/anyscale/api.js +26 -0
- package/dist/providers/anyscale/api.js.map +1 -0
- package/dist/providers/anyscale/chatComplete.d.ts +29 -0
- package/dist/providers/anyscale/chatComplete.js +163 -0
- package/dist/providers/anyscale/chatComplete.js.map +1 -0
- package/dist/providers/anyscale/complete.d.ts +8 -0
- package/dist/providers/anyscale/complete.js +111 -0
- package/dist/providers/anyscale/complete.js.map +1 -0
- package/dist/providers/anyscale/embed.d.ts +7 -0
- package/dist/providers/anyscale/embed.js +40 -0
- package/dist/providers/anyscale/embed.js.map +1 -0
- package/dist/providers/anyscale/index.d.ts +8 -0
- package/dist/providers/anyscale/index.js +19 -0
- package/dist/providers/anyscale/index.js.map +1 -0
- package/dist/providers/aws-bedrock-mantle/api.d.ts +14 -0
- package/dist/providers/aws-bedrock-mantle/api.js +200 -0
- package/dist/providers/aws-bedrock-mantle/api.js.map +1 -0
- package/dist/providers/aws-bedrock-mantle/index.d.ts +5 -0
- package/dist/providers/aws-bedrock-mantle/index.js +91 -0
- package/dist/providers/aws-bedrock-mantle/index.js.map +1 -0
- package/dist/providers/aws-bedrock-mantle/modelFamily.d.ts +5 -0
- package/dist/providers/aws-bedrock-mantle/modelFamily.js +11 -0
- package/dist/providers/aws-bedrock-mantle/modelFamily.js.map +1 -0
- package/dist/providers/aws-bedrock-mantle/responsesLite.d.ts +14 -0
- package/dist/providers/aws-bedrock-mantle/responsesLite.js +210 -0
- package/dist/providers/aws-bedrock-mantle/responsesLite.js.map +1 -0
- package/dist/providers/aws-claude-platform/api.d.ts +3 -0
- package/dist/providers/aws-claude-platform/api.js +105 -0
- package/dist/providers/aws-claude-platform/api.js.map +1 -0
- package/dist/providers/aws-claude-platform/index.d.ts +3 -0
- package/dist/providers/aws-claude-platform/index.js +21 -0
- package/dist/providers/aws-claude-platform/index.js.map +1 -0
- package/dist/providers/aws-claude-platform/uploadFile.d.ts +21 -0
- package/dist/providers/aws-claude-platform/uploadFile.js +58 -0
- package/dist/providers/aws-claude-platform/uploadFile.js.map +1 -0
- package/dist/providers/azure-ai-inference/api.d.ts +4 -0
- package/dist/providers/azure-ai-inference/api.js +209 -0
- package/dist/providers/azure-ai-inference/api.js.map +1 -0
- package/dist/providers/azure-ai-inference/chatComplete.d.ts +6 -0
- package/dist/providers/azure-ai-inference/chatComplete.js +78 -0
- package/dist/providers/azure-ai-inference/chatComplete.js.map +1 -0
- package/dist/providers/azure-ai-inference/complete.d.ts +6 -0
- package/dist/providers/azure-ai-inference/complete.js +63 -0
- package/dist/providers/azure-ai-inference/complete.js.map +1 -0
- package/dist/providers/azure-ai-inference/createSpeech.d.ts +5 -0
- package/dist/providers/azure-ai-inference/createSpeech.js +58 -0
- package/dist/providers/azure-ai-inference/createSpeech.js.map +1 -0
- package/dist/providers/azure-ai-inference/createTranscription.d.ts +4 -0
- package/dist/providers/azure-ai-inference/createTranscription.js +29 -0
- package/dist/providers/azure-ai-inference/createTranscription.js.map +1 -0
- package/dist/providers/azure-ai-inference/createTranslation.d.ts +4 -0
- package/dist/providers/azure-ai-inference/createTranslation.js +29 -0
- package/dist/providers/azure-ai-inference/createTranslation.js.map +1 -0
- package/dist/providers/azure-ai-inference/embed.d.ts +12 -0
- package/dist/providers/azure-ai-inference/embed.js +24 -0
- package/dist/providers/azure-ai-inference/embed.js.map +1 -0
- package/dist/providers/azure-ai-inference/index.d.ts +4 -0
- package/dist/providers/azure-ai-inference/index.js +69 -0
- package/dist/providers/azure-ai-inference/index.js.map +1 -0
- package/dist/providers/azure-ai-inference/messages.d.ts +5 -0
- package/dist/providers/azure-ai-inference/messages.js +21 -0
- package/dist/providers/azure-ai-inference/messages.js.map +1 -0
- package/dist/providers/azure-ai-inference/rerank.d.ts +30 -0
- package/dist/providers/azure-ai-inference/rerank.js +61 -0
- package/dist/providers/azure-ai-inference/rerank.js.map +1 -0
- package/dist/providers/azure-openai/api.d.ts +3 -0
- package/dist/providers/azure-openai/api.js +227 -0
- package/dist/providers/azure-openai/api.js.map +1 -0
- package/dist/providers/azure-openai/chatComplete.d.ts +6 -0
- package/dist/providers/azure-openai/chatComplete.js +168 -0
- package/dist/providers/azure-openai/chatComplete.js.map +1 -0
- package/dist/providers/azure-openai/complete.d.ts +6 -0
- package/dist/providers/azure-openai/complete.js +78 -0
- package/dist/providers/azure-openai/complete.js.map +1 -0
- package/dist/providers/azure-openai/createBatch.d.ts +3 -0
- package/dist/providers/azure-openai/createBatch.js +47 -0
- package/dist/providers/azure-openai/createBatch.js.map +1 -0
- package/dist/providers/azure-openai/createFinetune.d.ts +37 -0
- package/dist/providers/azure-openai/createFinetune.js +12 -0
- package/dist/providers/azure-openai/createFinetune.js.map +1 -0
- package/dist/providers/azure-openai/createSpeech.d.ts +3 -0
- package/dist/providers/azure-openai/createSpeech.js +40 -0
- package/dist/providers/azure-openai/createSpeech.js.map +1 -0
- package/dist/providers/azure-openai/createTranscription.d.ts +9 -0
- package/dist/providers/azure-openai/createTranscription.js +41 -0
- package/dist/providers/azure-openai/createTranscription.js.map +1 -0
- package/dist/providers/azure-openai/createTranslation.d.ts +9 -0
- package/dist/providers/azure-openai/createTranslation.js +41 -0
- package/dist/providers/azure-openai/createTranslation.js.map +1 -0
- package/dist/providers/azure-openai/embed.d.ts +7 -0
- package/dist/providers/azure-openai/embed.js +34 -0
- package/dist/providers/azure-openai/embed.js.map +1 -0
- package/dist/providers/azure-openai/getBatchOutput.d.ts +2 -0
- package/dist/providers/azure-openai/getBatchOutput.js +120 -0
- package/dist/providers/azure-openai/getBatchOutput.js.map +1 -0
- package/dist/providers/azure-openai/imageEdit.d.ts +4 -0
- package/dist/providers/azure-openai/imageEdit.js +40 -0
- package/dist/providers/azure-openai/imageEdit.js.map +1 -0
- package/dist/providers/azure-openai/imageGenerate.d.ts +12 -0
- package/dist/providers/azure-openai/imageGenerate.js +45 -0
- package/dist/providers/azure-openai/imageGenerate.js.map +1 -0
- package/dist/providers/azure-openai/index.d.ts +6 -0
- package/dist/providers/azure-openai/index.js +125 -0
- package/dist/providers/azure-openai/index.js.map +1 -0
- package/dist/providers/azure-openai/utils.d.ts +19 -0
- package/dist/providers/azure-openai/utils.js +99 -0
- package/dist/providers/azure-openai/utils.js.map +1 -0
- package/dist/providers/azure-openai/wifAuth.d.ts +1 -0
- package/dist/providers/azure-openai/wifAuth.js +19 -0
- package/dist/providers/azure-openai/wifAuth.js.map +1 -0
- package/dist/providers/baseten/api.d.ts +3 -0
- package/dist/providers/baseten/api.js +24 -0
- package/dist/providers/baseten/api.js.map +1 -0
- package/dist/providers/baseten/index.d.ts +3 -0
- package/dist/providers/baseten/index.js +19 -0
- package/dist/providers/baseten/index.js.map +1 -0
- package/dist/providers/bedrock/api.d.ts +25 -0
- package/dist/providers/bedrock/api.js +470 -0
- package/dist/providers/bedrock/api.js.map +1 -0
- package/dist/providers/bedrock/cancelBatch.d.ts +10 -0
- package/dist/providers/bedrock/cancelBatch.js +20 -0
- package/dist/providers/bedrock/cancelBatch.js.map +1 -0
- package/dist/providers/bedrock/chatComplete.d.ts +70 -0
- package/dist/providers/bedrock/chatComplete.js +1375 -0
- package/dist/providers/bedrock/chatComplete.js.map +1 -0
- package/dist/providers/bedrock/complete.d.ts +136 -0
- package/dist/providers/bedrock/complete.js +868 -0
- package/dist/providers/bedrock/complete.js.map +1 -0
- package/dist/providers/bedrock/constants.d.ts +72 -0
- package/dist/providers/bedrock/constants.js +99 -0
- package/dist/providers/bedrock/constants.js.map +1 -0
- package/dist/providers/bedrock/countTokens.d.ts +16 -0
- package/dist/providers/bedrock/countTokens.js +61 -0
- package/dist/providers/bedrock/countTokens.js.map +1 -0
- package/dist/providers/bedrock/createBatch.d.ts +4 -0
- package/dist/providers/bedrock/createBatch.js +75 -0
- package/dist/providers/bedrock/createBatch.js.map +1 -0
- package/dist/providers/bedrock/createFinetune.d.ts +11 -0
- package/dist/providers/bedrock/createFinetune.js +88 -0
- package/dist/providers/bedrock/createFinetune.js.map +1 -0
- package/dist/providers/bedrock/deleteFile.d.ts +2 -0
- package/dist/providers/bedrock/deleteFile.js +10 -0
- package/dist/providers/bedrock/deleteFile.js.map +1 -0
- package/dist/providers/bedrock/embed.d.ts +68 -0
- package/dist/providers/bedrock/embed.js +345 -0
- package/dist/providers/bedrock/embed.js.map +1 -0
- package/dist/providers/bedrock/getBatchOutput.d.ts +5 -0
- package/dist/providers/bedrock/getBatchOutput.js +112 -0
- package/dist/providers/bedrock/getBatchOutput.js.map +1 -0
- package/dist/providers/bedrock/imageEdit.d.ts +18 -0
- package/dist/providers/bedrock/imageEdit.js +493 -0
- package/dist/providers/bedrock/imageEdit.js.map +1 -0
- package/dist/providers/bedrock/imageGenerate.d.ts +36 -0
- package/dist/providers/bedrock/imageGenerate.js +151 -0
- package/dist/providers/bedrock/imageGenerate.js.map +1 -0
- package/dist/providers/bedrock/imageVariation.d.ts +9 -0
- package/dist/providers/bedrock/imageVariation.js +117 -0
- package/dist/providers/bedrock/imageVariation.js.map +1 -0
- package/dist/providers/bedrock/index.d.ts +6 -0
- package/dist/providers/bedrock/index.js +328 -0
- package/dist/providers/bedrock/index.js.map +1 -0
- package/dist/providers/bedrock/listBatches.d.ts +4 -0
- package/dist/providers/bedrock/listBatches.js +33 -0
- package/dist/providers/bedrock/listBatches.js.map +1 -0
- package/dist/providers/bedrock/listFiles.d.ts +2 -0
- package/dist/providers/bedrock/listFiles.js +10 -0
- package/dist/providers/bedrock/listFiles.js.map +1 -0
- package/dist/providers/bedrock/listFinetunes.d.ts +7 -0
- package/dist/providers/bedrock/listFinetunes.js +16 -0
- package/dist/providers/bedrock/listFinetunes.js.map +1 -0
- package/dist/providers/bedrock/messages.d.ts +21 -0
- package/dist/providers/bedrock/messages.js +436 -0
- package/dist/providers/bedrock/messages.js.map +1 -0
- package/dist/providers/bedrock/modelFamily.d.ts +9 -0
- package/dist/providers/bedrock/modelFamily.js +12 -0
- package/dist/providers/bedrock/modelFamily.js.map +1 -0
- package/dist/providers/bedrock/requestHandlerFetch.d.ts +9 -0
- package/dist/providers/bedrock/requestHandlerFetch.js +35 -0
- package/dist/providers/bedrock/requestHandlerFetch.js.map +1 -0
- package/dist/providers/bedrock/rerank.d.ts +18 -0
- package/dist/providers/bedrock/rerank.js +126 -0
- package/dist/providers/bedrock/rerank.js.map +1 -0
- package/dist/providers/bedrock/retrieveBatch.d.ts +4 -0
- package/dist/providers/bedrock/retrieveBatch.js +43 -0
- package/dist/providers/bedrock/retrieveBatch.js.map +1 -0
- package/dist/providers/bedrock/retrieveFile.d.ts +2 -0
- package/dist/providers/bedrock/retrieveFile.js +66 -0
- package/dist/providers/bedrock/retrieveFile.js.map +1 -0
- package/dist/providers/bedrock/retrieveFileContent.d.ts +3 -0
- package/dist/providers/bedrock/retrieveFileContent.js +61 -0
- package/dist/providers/bedrock/retrieveFileContent.js.map +1 -0
- package/dist/providers/bedrock/retrieveFinetune.d.ts +7 -0
- package/dist/providers/bedrock/retrieveFinetune.js +9 -0
- package/dist/providers/bedrock/retrieveFinetune.js.map +1 -0
- package/dist/providers/bedrock/types.d.ts +291 -0
- package/dist/providers/bedrock/types.js +28 -0
- package/dist/providers/bedrock/types.js.map +1 -0
- package/dist/providers/bedrock/uploadFile.d.ts +11 -0
- package/dist/providers/bedrock/uploadFile.js +471 -0
- package/dist/providers/bedrock/uploadFile.js.map +1 -0
- package/dist/providers/bedrock/uploadFileUtils.d.ts +68 -0
- package/dist/providers/bedrock/uploadFileUtils.js +952 -0
- package/dist/providers/bedrock/uploadFileUtils.js.map +1 -0
- package/dist/providers/bedrock/utils/messagesUtils.d.ts +35 -0
- package/dist/providers/bedrock/utils/messagesUtils.js +73 -0
- package/dist/providers/bedrock/utils/messagesUtils.js.map +1 -0
- package/dist/providers/bedrock/utils.d.ts +72 -0
- package/dist/providers/bedrock/utils.js +652 -0
- package/dist/providers/bedrock/utils.js.map +1 -0
- package/dist/providers/cartesia/api.d.ts +13 -0
- package/dist/providers/cartesia/api.js +27 -0
- package/dist/providers/cartesia/api.js.map +1 -0
- package/dist/providers/cartesia/index.d.ts +13 -0
- package/dist/providers/cartesia/index.js +16 -0
- package/dist/providers/cartesia/index.js.map +1 -0
- package/dist/providers/cerebras/api.d.ts +2 -0
- package/dist/providers/cerebras/api.js +19 -0
- package/dist/providers/cerebras/api.js.map +1 -0
- package/dist/providers/cerebras/index.d.ts +3 -0
- package/dist/providers/cerebras/index.js +19 -0
- package/dist/providers/cerebras/index.js.map +1 -0
- package/dist/providers/cloudera/api.d.ts +3 -0
- package/dist/providers/cloudera/api.js +34 -0
- package/dist/providers/cloudera/api.js.map +1 -0
- package/dist/providers/cloudera/chatComplete.d.ts +14 -0
- package/dist/providers/cloudera/chatComplete.js +63 -0
- package/dist/providers/cloudera/chatComplete.js.map +1 -0
- package/dist/providers/cloudera/embed.d.ts +5 -0
- package/dist/providers/cloudera/embed.js +29 -0
- package/dist/providers/cloudera/embed.js.map +1 -0
- package/dist/providers/cloudera/index.d.ts +8 -0
- package/dist/providers/cloudera/index.js +15 -0
- package/dist/providers/cloudera/index.js.map +1 -0
- package/dist/providers/cloudera/utils.d.ts +1 -0
- package/dist/providers/cloudera/utils.js +261 -0
- package/dist/providers/cloudera/utils.js.map +1 -0
- package/dist/providers/cohere/api.d.ts +3 -0
- package/dist/providers/cohere/api.js +52 -0
- package/dist/providers/cohere/api.js.map +1 -0
- package/dist/providers/cohere/cancelBatch.d.ts +8 -0
- package/dist/providers/cohere/cancelBatch.js +12 -0
- package/dist/providers/cohere/cancelBatch.js.map +1 -0
- package/dist/providers/cohere/chatComplete.d.ts +6 -0
- package/dist/providers/cohere/chatComplete.js +315 -0
- package/dist/providers/cohere/chatComplete.js.map +1 -0
- package/dist/providers/cohere/complete.d.ts +39 -0
- package/dist/providers/cohere/complete.js +116 -0
- package/dist/providers/cohere/complete.js.map +1 -0
- package/dist/providers/cohere/createBatch.d.ts +4 -0
- package/dist/providers/cohere/createBatch.js +51 -0
- package/dist/providers/cohere/createBatch.js.map +1 -0
- package/dist/providers/cohere/deleteFile.d.ts +8 -0
- package/dist/providers/cohere/deleteFile.js +13 -0
- package/dist/providers/cohere/deleteFile.js.map +1 -0
- package/dist/providers/cohere/embed.d.ts +94 -0
- package/dist/providers/cohere/embed.js +137 -0
- package/dist/providers/cohere/embed.js.map +1 -0
- package/dist/providers/cohere/getBatchOutput.d.ts +2 -0
- package/dist/providers/cohere/getBatchOutput.js +117 -0
- package/dist/providers/cohere/getBatchOutput.js.map +1 -0
- package/dist/providers/cohere/getFiles.d.ts +4 -0
- package/dist/providers/cohere/getFiles.js +51 -0
- package/dist/providers/cohere/getFiles.js.map +1 -0
- package/dist/providers/cohere/index.d.ts +10 -0
- package/dist/providers/cohere/index.js +46 -0
- package/dist/providers/cohere/index.js.map +1 -0
- package/dist/providers/cohere/listBatches.d.ts +3 -0
- package/dist/providers/cohere/listBatches.js +30 -0
- package/dist/providers/cohere/listBatches.js.map +1 -0
- package/dist/providers/cohere/rerank.d.ts +46 -0
- package/dist/providers/cohere/rerank.js +41 -0
- package/dist/providers/cohere/rerank.js.map +1 -0
- package/dist/providers/cohere/retrieveBatch.d.ts +3 -0
- package/dist/providers/cohere/retrieveBatch.js +33 -0
- package/dist/providers/cohere/retrieveBatch.js.map +1 -0
- package/dist/providers/cohere/types.d.ts +264 -0
- package/dist/providers/cohere/types.js +10 -0
- package/dist/providers/cohere/types.js.map +1 -0
- package/dist/providers/cohere/uploadFile.d.ts +13 -0
- package/dist/providers/cohere/uploadFile.js +40 -0
- package/dist/providers/cohere/uploadFile.js.map +1 -0
- package/dist/providers/cohere/utils.d.ts +2 -0
- package/dist/providers/cohere/utils.js +15 -0
- package/dist/providers/cohere/utils.js.map +1 -0
- package/dist/providers/cortex/api.d.ts +3 -0
- package/dist/providers/cortex/api.js +25 -0
- package/dist/providers/cortex/api.js.map +1 -0
- package/dist/providers/cortex/index.d.ts +3 -0
- package/dist/providers/cortex/index.js +37 -0
- package/dist/providers/cortex/index.js.map +1 -0
- package/dist/providers/databricks/api.d.ts +3 -0
- package/dist/providers/databricks/api.js +69 -0
- package/dist/providers/databricks/api.js.map +1 -0
- package/dist/providers/databricks/chatComplete.d.ts +17 -0
- package/dist/providers/databricks/chatComplete.js +174 -0
- package/dist/providers/databricks/chatComplete.js.map +1 -0
- package/dist/providers/databricks/createModelResponse.d.ts +12 -0
- package/dist/providers/databricks/createModelResponse.js +24 -0
- package/dist/providers/databricks/createModelResponse.js.map +1 -0
- package/dist/providers/databricks/embed.d.ts +6 -0
- package/dist/providers/databricks/embed.js +27 -0
- package/dist/providers/databricks/embed.js.map +1 -0
- package/dist/providers/databricks/index.d.ts +3 -0
- package/dist/providers/databricks/index.js +66 -0
- package/dist/providers/databricks/index.js.map +1 -0
- package/dist/providers/databricks/messages.d.ts +5 -0
- package/dist/providers/databricks/messages.js +23 -0
- package/dist/providers/databricks/messages.js.map +1 -0
- package/dist/providers/databricks/utils.d.ts +3 -0
- package/dist/providers/databricks/utils.js +46 -0
- package/dist/providers/databricks/utils.js.map +1 -0
- package/dist/providers/deepgram/api.d.ts +13 -0
- package/dist/providers/deepgram/api.js +26 -0
- package/dist/providers/deepgram/api.js.map +1 -0
- package/dist/providers/deepgram/index.d.ts +13 -0
- package/dist/providers/deepgram/index.js +16 -0
- package/dist/providers/deepgram/index.js.map +1 -0
- package/dist/providers/deepinfra/api.d.ts +3 -0
- package/dist/providers/deepinfra/api.js +21 -0
- package/dist/providers/deepinfra/api.js.map +1 -0
- package/dist/providers/deepinfra/chatComplete.d.ts +23 -0
- package/dist/providers/deepinfra/chatComplete.js +150 -0
- package/dist/providers/deepinfra/chatComplete.js.map +1 -0
- package/dist/providers/deepinfra/embed.d.ts +5 -0
- package/dist/providers/deepinfra/embed.js +28 -0
- package/dist/providers/deepinfra/embed.js.map +1 -0
- package/dist/providers/deepinfra/index.d.ts +8 -0
- package/dist/providers/deepinfra/index.js +15 -0
- package/dist/providers/deepinfra/index.js.map +1 -0
- package/dist/providers/deepinfra/utils.d.ts +3 -0
- package/dist/providers/deepinfra/utils.js +25 -0
- package/dist/providers/deepinfra/utils.js.map +1 -0
- package/dist/providers/elevenlabs/api.d.ts +8 -0
- package/dist/providers/elevenlabs/api.js +21 -0
- package/dist/providers/elevenlabs/api.js.map +1 -0
- package/dist/providers/elevenlabs/index.d.ts +8 -0
- package/dist/providers/elevenlabs/index.js +11 -0
- package/dist/providers/elevenlabs/index.js.map +1 -0
- package/dist/providers/google/api.d.ts +8 -0
- package/dist/providers/google/api.js +52 -0
- package/dist/providers/google/api.js.map +1 -0
- package/dist/providers/google/chatComplete.d.ts +131 -0
- package/dist/providers/google/chatComplete.js +935 -0
- package/dist/providers/google/chatComplete.js.map +1 -0
- package/dist/providers/google/createSpeech.d.ts +30 -0
- package/dist/providers/google/createSpeech.js +227 -0
- package/dist/providers/google/createSpeech.js.map +1 -0
- package/dist/providers/google/embed.d.ts +11 -0
- package/dist/providers/google/embed.js +77 -0
- package/dist/providers/google/embed.js.map +1 -0
- package/dist/providers/google/imageEdit.d.ts +5 -0
- package/dist/providers/google/imageEdit.js +165 -0
- package/dist/providers/google/imageEdit.js.map +1 -0
- package/dist/providers/google/imageGenerate.d.ts +16 -0
- package/dist/providers/google/imageGenerate.js +181 -0
- package/dist/providers/google/imageGenerate.js.map +1 -0
- package/dist/providers/google/index.d.ts +8 -0
- package/dist/providers/google/index.js +44 -0
- package/dist/providers/google/index.js.map +1 -0
- package/dist/providers/google/responseFormatHandlers.d.ts +13 -0
- package/dist/providers/google/responseFormatHandlers.js +30 -0
- package/dist/providers/google/responseFormatHandlers.js.map +1 -0
- package/dist/providers/google/types.d.ts +48 -0
- package/dist/providers/google/types.js +16 -0
- package/dist/providers/google/types.js.map +1 -0
- package/dist/providers/google-vertex-ai/api.d.ts +14 -0
- package/dist/providers/google-vertex-ai/api.js +330 -0
- package/dist/providers/google-vertex-ai/api.js.map +1 -0
- package/dist/providers/google-vertex-ai/cancelBatch.d.ts +6 -0
- package/dist/providers/google-vertex-ai/cancelBatch.js +9 -0
- package/dist/providers/google-vertex-ai/cancelBatch.js.map +1 -0
- package/dist/providers/google-vertex-ai/chatComplete.d.ts +50 -0
- package/dist/providers/google-vertex-ai/chatComplete.js +1512 -0
- package/dist/providers/google-vertex-ai/chatComplete.js.map +1 -0
- package/dist/providers/google-vertex-ai/createBatch.d.ts +186 -0
- package/dist/providers/google-vertex-ai/createBatch.js +101 -0
- package/dist/providers/google-vertex-ai/createBatch.js.map +1 -0
- package/dist/providers/google-vertex-ai/createFinetune.d.ts +44 -0
- package/dist/providers/google-vertex-ai/createFinetune.js +44 -0
- package/dist/providers/google-vertex-ai/createFinetune.js.map +1 -0
- package/dist/providers/google-vertex-ai/createSpeech.d.ts +16 -0
- package/dist/providers/google-vertex-ai/createSpeech.js +185 -0
- package/dist/providers/google-vertex-ai/createSpeech.js.map +1 -0
- package/dist/providers/google-vertex-ai/embed.d.ts +32 -0
- package/dist/providers/google-vertex-ai/embed.js +275 -0
- package/dist/providers/google-vertex-ai/embed.js.map +1 -0
- package/dist/providers/google-vertex-ai/getBatchOutput.d.ts +3 -0
- package/dist/providers/google-vertex-ai/getBatchOutput.js +160 -0
- package/dist/providers/google-vertex-ai/getBatchOutput.js.map +1 -0
- package/dist/providers/google-vertex-ai/imageEdit.d.ts +56 -0
- package/dist/providers/google-vertex-ai/imageEdit.js +559 -0
- package/dist/providers/google-vertex-ai/imageEdit.js.map +1 -0
- package/dist/providers/google-vertex-ai/imageGenerate.d.ts +75 -0
- package/dist/providers/google-vertex-ai/imageGenerate.js +384 -0
- package/dist/providers/google-vertex-ai/imageGenerate.js.map +1 -0
- package/dist/providers/google-vertex-ai/index.d.ts +20 -0
- package/dist/providers/google-vertex-ai/index.js +207 -0
- package/dist/providers/google-vertex-ai/index.js.map +1 -0
- package/dist/providers/google-vertex-ai/listBatches.d.ts +429 -0
- package/dist/providers/google-vertex-ai/listBatches.js +23 -0
- package/dist/providers/google-vertex-ai/listBatches.js.map +1 -0
- package/dist/providers/google-vertex-ai/listFiles.d.ts +2 -0
- package/dist/providers/google-vertex-ai/listFiles.js +16 -0
- package/dist/providers/google-vertex-ai/listFiles.js.map +1 -0
- package/dist/providers/google-vertex-ai/listFinetunes.d.ts +58 -0
- package/dist/providers/google-vertex-ai/listFinetunes.js +22 -0
- package/dist/providers/google-vertex-ai/listFinetunes.js.map +1 -0
- package/dist/providers/google-vertex-ai/messages.d.ts +5 -0
- package/dist/providers/google-vertex-ai/messages.js +39 -0
- package/dist/providers/google-vertex-ai/messages.js.map +1 -0
- package/dist/providers/google-vertex-ai/messagesCountTokens.d.ts +8 -0
- package/dist/providers/google-vertex-ai/messagesCountTokens.js +13 -0
- package/dist/providers/google-vertex-ai/messagesCountTokens.js.map +1 -0
- package/dist/providers/google-vertex-ai/retrieveBatch.d.ts +189 -0
- package/dist/providers/google-vertex-ai/retrieveBatch.js +14 -0
- package/dist/providers/google-vertex-ai/retrieveBatch.js.map +1 -0
- package/dist/providers/google-vertex-ai/retrieveFile.d.ts +3 -0
- package/dist/providers/google-vertex-ai/retrieveFile.js +52 -0
- package/dist/providers/google-vertex-ai/retrieveFile.js.map +1 -0
- package/dist/providers/google-vertex-ai/retrieveFileContent.d.ts +1 -0
- package/dist/providers/google-vertex-ai/retrieveFileContent.js +13 -0
- package/dist/providers/google-vertex-ai/retrieveFileContent.js.map +1 -0
- package/dist/providers/google-vertex-ai/retrieveFinetune.d.ts +19 -0
- package/dist/providers/google-vertex-ai/retrieveFinetune.js +8 -0
- package/dist/providers/google-vertex-ai/retrieveFinetune.js.map +1 -0
- package/dist/providers/google-vertex-ai/transformGenerationConfig.d.ts +14 -0
- package/dist/providers/google-vertex-ai/transformGenerationConfig.js +136 -0
- package/dist/providers/google-vertex-ai/transformGenerationConfig.js.map +1 -0
- package/dist/providers/google-vertex-ai/types.d.ts +364 -0
- package/dist/providers/google-vertex-ai/types.js +20 -0
- package/dist/providers/google-vertex-ai/types.js.map +1 -0
- package/dist/providers/google-vertex-ai/uploadFile.d.ts +7 -0
- package/dist/providers/google-vertex-ai/uploadFile.js +193 -0
- package/dist/providers/google-vertex-ai/uploadFile.js.map +1 -0
- package/dist/providers/google-vertex-ai/utils.d.ts +654 -0
- package/dist/providers/google-vertex-ai/utils.js +1151 -0
- package/dist/providers/google-vertex-ai/utils.js.map +1 -0
- package/dist/providers/google-vertex-ai/wifAuth.d.ts +2 -0
- package/dist/providers/google-vertex-ai/wifAuth.js +237 -0
- package/dist/providers/google-vertex-ai/wifAuth.js.map +1 -0
- package/dist/providers/groq/api.d.ts +3 -0
- package/dist/providers/groq/api.js +59 -0
- package/dist/providers/groq/api.js.map +1 -0
- package/dist/providers/groq/cancelBatch.d.ts +2 -0
- package/dist/providers/groq/cancelBatch.js +9 -0
- package/dist/providers/groq/cancelBatch.js.map +1 -0
- package/dist/providers/groq/chatComplete.d.ts +39 -0
- package/dist/providers/groq/chatComplete.js +142 -0
- package/dist/providers/groq/chatComplete.js.map +1 -0
- package/dist/providers/groq/complete.d.ts +13 -0
- package/dist/providers/groq/complete.js +213 -0
- package/dist/providers/groq/complete.js.map +1 -0
- package/dist/providers/groq/createBatch.d.ts +3 -0
- package/dist/providers/groq/createBatch.js +28 -0
- package/dist/providers/groq/createBatch.js.map +1 -0
- package/dist/providers/groq/createSpeech.d.ts +8 -0
- package/dist/providers/groq/createSpeech.js +37 -0
- package/dist/providers/groq/createSpeech.js.map +1 -0
- package/dist/providers/groq/createTranscription.d.ts +7 -0
- package/dist/providers/groq/createTranscription.js +31 -0
- package/dist/providers/groq/createTranscription.js.map +1 -0
- package/dist/providers/groq/createTranslation.d.ts +7 -0
- package/dist/providers/groq/createTranslation.js +31 -0
- package/dist/providers/groq/createTranslation.js.map +1 -0
- package/dist/providers/groq/deleteFile.d.ts +2 -0
- package/dist/providers/groq/deleteFile.js +9 -0
- package/dist/providers/groq/deleteFile.js.map +1 -0
- package/dist/providers/groq/index.d.ts +3 -0
- package/dist/providers/groq/index.js +70 -0
- package/dist/providers/groq/index.js.map +1 -0
- package/dist/providers/groq/listBatches.d.ts +2 -0
- package/dist/providers/groq/listBatches.js +9 -0
- package/dist/providers/groq/listBatches.js.map +1 -0
- package/dist/providers/groq/listFiles.d.ts +2 -0
- package/dist/providers/groq/listFiles.js +9 -0
- package/dist/providers/groq/listFiles.js.map +1 -0
- package/dist/providers/groq/retrieveBatch.d.ts +2 -0
- package/dist/providers/groq/retrieveBatch.js +9 -0
- package/dist/providers/groq/retrieveBatch.js.map +1 -0
- package/dist/providers/groq/retrieveFile.d.ts +2 -0
- package/dist/providers/groq/retrieveFile.js +9 -0
- package/dist/providers/groq/retrieveFile.js.map +1 -0
- package/dist/providers/groq/retrieveFileContent.d.ts +2 -0
- package/dist/providers/groq/retrieveFileContent.js +9 -0
- package/dist/providers/groq/retrieveFileContent.js.map +1 -0
- package/dist/providers/groq/uploadFile.d.ts +3 -0
- package/dist/providers/groq/uploadFile.js +12 -0
- package/dist/providers/groq/uploadFile.js.map +1 -0
- package/dist/providers/groq/utils.d.ts +2 -0
- package/dist/providers/groq/utils.js +7 -0
- package/dist/providers/groq/utils.js.map +1 -0
- package/dist/providers/index.d.ts +5 -0
- package/dist/providers/index.js +88 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/microsoft-foundry/api.d.ts +11 -0
- package/dist/providers/microsoft-foundry/api.js +270 -0
- package/dist/providers/microsoft-foundry/api.js.map +1 -0
- package/dist/providers/microsoft-foundry/createBatch.d.ts +10 -0
- package/dist/providers/microsoft-foundry/createBatch.js +40 -0
- package/dist/providers/microsoft-foundry/createBatch.js.map +1 -0
- package/dist/providers/microsoft-foundry/createTranscription.d.ts +3 -0
- package/dist/providers/microsoft-foundry/createTranscription.js +23 -0
- package/dist/providers/microsoft-foundry/createTranscription.js.map +1 -0
- package/dist/providers/microsoft-foundry/createTranslation.d.ts +3 -0
- package/dist/providers/microsoft-foundry/createTranslation.js +23 -0
- package/dist/providers/microsoft-foundry/createTranslation.js.map +1 -0
- package/dist/providers/microsoft-foundry/getBatchOutput.d.ts +3 -0
- package/dist/providers/microsoft-foundry/getBatchOutput.js +106 -0
- package/dist/providers/microsoft-foundry/getBatchOutput.js.map +1 -0
- package/dist/providers/microsoft-foundry/imageEdit.d.ts +3 -0
- package/dist/providers/microsoft-foundry/imageEdit.js +28 -0
- package/dist/providers/microsoft-foundry/imageEdit.js.map +1 -0
- package/dist/providers/microsoft-foundry/index.d.ts +3 -0
- package/dist/providers/microsoft-foundry/index.js +142 -0
- package/dist/providers/microsoft-foundry/index.js.map +1 -0
- package/dist/providers/microsoft-foundry/messages.d.ts +5 -0
- package/dist/providers/microsoft-foundry/messages.js +16 -0
- package/dist/providers/microsoft-foundry/messages.js.map +1 -0
- package/dist/providers/microsoft-foundry/rerank.d.ts +30 -0
- package/dist/providers/microsoft-foundry/rerank.js +53 -0
- package/dist/providers/microsoft-foundry/rerank.js.map +1 -0
- package/dist/providers/microsoft-foundry/responseTransforms.d.ts +2 -0
- package/dist/providers/microsoft-foundry/responseTransforms.js +4 -0
- package/dist/providers/microsoft-foundry/responseTransforms.js.map +1 -0
- package/dist/providers/mistral-ai/api.d.ts +3 -0
- package/dist/providers/mistral-ai/api.js +23 -0
- package/dist/providers/mistral-ai/api.js.map +1 -0
- package/dist/providers/mistral-ai/chatComplete.d.ts +48 -0
- package/dist/providers/mistral-ai/chatComplete.js +257 -0
- package/dist/providers/mistral-ai/chatComplete.js.map +1 -0
- package/dist/providers/mistral-ai/embed.d.ts +8 -0
- package/dist/providers/mistral-ai/embed.js +52 -0
- package/dist/providers/mistral-ai/embed.js.map +1 -0
- package/dist/providers/mistral-ai/index.d.ts +8 -0
- package/dist/providers/mistral-ai/index.js +15 -0
- package/dist/providers/mistral-ai/index.js.map +1 -0
- package/dist/providers/mistral-ai/types.d.ts +7 -0
- package/dist/providers/mistral-ai/types.js +9 -0
- package/dist/providers/mistral-ai/types.js.map +1 -0
- package/dist/providers/nomic/api.d.ts +3 -0
- package/dist/providers/nomic/api.js +18 -0
- package/dist/providers/nomic/api.js.map +1 -0
- package/dist/providers/nomic/embed.d.ts +24 -0
- package/dist/providers/nomic/embed.js +70 -0
- package/dist/providers/nomic/embed.js.map +1 -0
- package/dist/providers/nomic/index.d.ts +8 -0
- package/dist/providers/nomic/index.js +11 -0
- package/dist/providers/nomic/index.js.map +1 -0
- package/dist/providers/ollama/api.d.ts +3 -0
- package/dist/providers/ollama/api.js +31 -0
- package/dist/providers/ollama/api.js.map +1 -0
- package/dist/providers/ollama/chatComplete.d.ts +22 -0
- package/dist/providers/ollama/chatComplete.js +110 -0
- package/dist/providers/ollama/chatComplete.js.map +1 -0
- package/dist/providers/ollama/embed.d.ts +11 -0
- package/dist/providers/ollama/embed.js +43 -0
- package/dist/providers/ollama/embed.js.map +1 -0
- package/dist/providers/ollama/index.d.ts +8 -0
- package/dist/providers/ollama/index.js +15 -0
- package/dist/providers/ollama/index.js.map +1 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/eligibility.d.ts +62 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/eligibility.js +171 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/eligibility.js.map +1 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/index.d.ts +10 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/index.js +10 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/index.js.map +1 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/requestTransform.d.ts +32 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/requestTransform.js +257 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/requestTransform.js.map +1 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/responseTransform.d.ts +13 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/responseTransform.js +116 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/responseTransform.js.map +1 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/streamTransform.d.ts +34 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/streamTransform.js +285 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/streamTransform.js.map +1 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/types.d.ts +19 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/types.js +2 -0
- package/dist/providers/open-ai-base/chatCompleteViaResponses/types.js.map +1 -0
- package/dist/providers/open-ai-base/constants.d.ts +38 -0
- package/dist/providers/open-ai-base/constants.js +347 -0
- package/dist/providers/open-ai-base/constants.js.map +1 -0
- package/dist/providers/open-ai-base/createModelResponse.d.ts +9 -0
- package/dist/providers/open-ai-base/createModelResponse.js +172 -0
- package/dist/providers/open-ai-base/createModelResponse.js.map +1 -0
- package/dist/providers/open-ai-base/cursor.utils.d.ts +42 -0
- package/dist/providers/open-ai-base/cursor.utils.js +131 -0
- package/dist/providers/open-ai-base/cursor.utils.js.map +1 -0
- package/dist/providers/open-ai-base/helpers.d.ts +41 -0
- package/dist/providers/open-ai-base/helpers.js +356 -0
- package/dist/providers/open-ai-base/helpers.js.map +1 -0
- package/dist/providers/open-ai-base/index.d.ts +67 -0
- package/dist/providers/open-ai-base/index.js +550 -0
- package/dist/providers/open-ai-base/index.js.map +1 -0
- package/dist/providers/openai/api.d.ts +3 -0
- package/dist/providers/openai/api.js +141 -0
- package/dist/providers/openai/api.js.map +1 -0
- package/dist/providers/openai/cancelBatch.d.ts +2 -0
- package/dist/providers/openai/cancelBatch.js +14 -0
- package/dist/providers/openai/cancelBatch.js.map +1 -0
- package/dist/providers/openai/chatComplete.d.ts +14 -0
- package/dist/providers/openai/chatComplete.js +402 -0
- package/dist/providers/openai/chatComplete.js.map +1 -0
- package/dist/providers/openai/complete.d.ts +14 -0
- package/dist/providers/openai/complete.js +144 -0
- package/dist/providers/openai/complete.js.map +1 -0
- package/dist/providers/openai/createBatch.d.ts +3 -0
- package/dist/providers/openai/createBatch.js +33 -0
- package/dist/providers/openai/createBatch.js.map +1 -0
- package/dist/providers/openai/createFinetune.d.ts +3 -0
- package/dist/providers/openai/createFinetune.js +48 -0
- package/dist/providers/openai/createFinetune.js.map +1 -0
- package/dist/providers/openai/createModelResponseCompact.d.ts +42 -0
- package/dist/providers/openai/createModelResponseCompact.js +25 -0
- package/dist/providers/openai/createModelResponseCompact.js.map +1 -0
- package/dist/providers/openai/createSpeech.d.ts +3 -0
- package/dist/providers/openai/createSpeech.js +40 -0
- package/dist/providers/openai/createSpeech.js.map +1 -0
- package/dist/providers/openai/createTranscription.d.ts +8 -0
- package/dist/providers/openai/createTranscription.js +44 -0
- package/dist/providers/openai/createTranscription.js.map +1 -0
- package/dist/providers/openai/createTranslation.d.ts +8 -0
- package/dist/providers/openai/createTranslation.js +41 -0
- package/dist/providers/openai/createTranslation.js.map +1 -0
- package/dist/providers/openai/deleteFile.d.ts +2 -0
- package/dist/providers/openai/deleteFile.js +14 -0
- package/dist/providers/openai/deleteFile.js.map +1 -0
- package/dist/providers/openai/embed.d.ts +7 -0
- package/dist/providers/openai/embed.js +35 -0
- package/dist/providers/openai/embed.js.map +1 -0
- package/dist/providers/openai/getBatchOutput.d.ts +3 -0
- package/dist/providers/openai/getBatchOutput.js +55 -0
- package/dist/providers/openai/getBatchOutput.js.map +1 -0
- package/dist/providers/openai/imageEdit.d.ts +3 -0
- package/dist/providers/openai/imageEdit.js +34 -0
- package/dist/providers/openai/imageEdit.js.map +1 -0
- package/dist/providers/openai/imageGenerate.d.ts +12 -0
- package/dist/providers/openai/imageGenerate.js +45 -0
- package/dist/providers/openai/imageGenerate.js.map +1 -0
- package/dist/providers/openai/imageVariation.d.ts +3 -0
- package/dist/providers/openai/imageVariation.js +29 -0
- package/dist/providers/openai/imageVariation.js.map +1 -0
- package/dist/providers/openai/index.d.ts +6 -0
- package/dist/providers/openai/index.js +146 -0
- package/dist/providers/openai/index.js.map +1 -0
- package/dist/providers/openai/listBatches.d.ts +2 -0
- package/dist/providers/openai/listBatches.js +14 -0
- package/dist/providers/openai/listBatches.js.map +1 -0
- package/dist/providers/openai/listFiles.d.ts +2 -0
- package/dist/providers/openai/listFiles.js +14 -0
- package/dist/providers/openai/listFiles.js.map +1 -0
- package/dist/providers/openai/moderation.d.ts +2 -0
- package/dist/providers/openai/moderation.js +14 -0
- package/dist/providers/openai/moderation.js.map +1 -0
- package/dist/providers/openai/retrieveBatch.d.ts +2 -0
- package/dist/providers/openai/retrieveBatch.js +9 -0
- package/dist/providers/openai/retrieveBatch.js.map +1 -0
- package/dist/providers/openai/retrieveFileContent.d.ts +2 -0
- package/dist/providers/openai/retrieveFileContent.js +9 -0
- package/dist/providers/openai/retrieveFileContent.js.map +1 -0
- package/dist/providers/openai/uploadFile.d.ts +3 -0
- package/dist/providers/openai/uploadFile.js +17 -0
- package/dist/providers/openai/uploadFile.js.map +1 -0
- package/dist/providers/openai/utils.d.ts +7 -0
- package/dist/providers/openai/utils.js +7 -0
- package/dist/providers/openai/utils.js.map +1 -0
- package/dist/providers/openai-like/api.d.ts +7 -0
- package/dist/providers/openai-like/api.js +40 -0
- package/dist/providers/openai-like/api.js.map +1 -0
- package/dist/providers/openai-like/chatComplete.d.ts +41 -0
- package/dist/providers/openai-like/chatComplete.js +91 -0
- package/dist/providers/openai-like/chatComplete.js.map +1 -0
- package/dist/providers/openai-like/embed.d.ts +9 -0
- package/dist/providers/openai-like/embed.js +23 -0
- package/dist/providers/openai-like/embed.js.map +1 -0
- package/dist/providers/openai-like/index.d.ts +16 -0
- package/dist/providers/openai-like/index.js +35 -0
- package/dist/providers/openai-like/index.js.map +1 -0
- package/dist/providers/openai-like/utils.d.ts +16 -0
- package/dist/providers/openai-like/utils.js +16 -0
- package/dist/providers/openai-like/utils.js.map +1 -0
- package/dist/providers/openrouter/api.d.ts +3 -0
- package/dist/providers/openrouter/api.js +30 -0
- package/dist/providers/openrouter/api.js.map +1 -0
- package/dist/providers/openrouter/chatComplete.d.ts +51 -0
- package/dist/providers/openrouter/chatComplete.js +251 -0
- package/dist/providers/openrouter/chatComplete.js.map +1 -0
- package/dist/providers/openrouter/index.d.ts +3 -0
- package/dist/providers/openrouter/index.js +20 -0
- package/dist/providers/openrouter/index.js.map +1 -0
- package/dist/providers/openrouter/utils.d.ts +20 -0
- package/dist/providers/openrouter/utils.js +15 -0
- package/dist/providers/openrouter/utils.js.map +1 -0
- package/dist/providers/palm/api.d.ts +3 -0
- package/dist/providers/palm/api.js +26 -0
- package/dist/providers/palm/api.js.map +1 -0
- package/dist/providers/palm/chatComplete.d.ts +5 -0
- package/dist/providers/palm/chatComplete.js +91 -0
- package/dist/providers/palm/chatComplete.js.map +1 -0
- package/dist/providers/palm/complete.d.ts +5 -0
- package/dist/providers/palm/complete.js +82 -0
- package/dist/providers/palm/complete.js.map +1 -0
- package/dist/providers/palm/embed.d.ts +12 -0
- package/dist/providers/palm/embed.js +46 -0
- package/dist/providers/palm/embed.js.map +1 -0
- package/dist/providers/palm/index.d.ts +8 -0
- package/dist/providers/palm/index.js +17 -0
- package/dist/providers/palm/index.js.map +1 -0
- package/dist/providers/perplexity-ai/api.d.ts +3 -0
- package/dist/providers/perplexity-ai/api.js +20 -0
- package/dist/providers/perplexity-ai/api.js.map +1 -0
- package/dist/providers/perplexity-ai/chatCompleteViaResponses.d.ts +8 -0
- package/dist/providers/perplexity-ai/chatCompleteViaResponses.js +152 -0
- package/dist/providers/perplexity-ai/chatCompleteViaResponses.js.map +1 -0
- package/dist/providers/perplexity-ai/createModelResponse.d.ts +6 -0
- package/dist/providers/perplexity-ai/createModelResponse.js +51 -0
- package/dist/providers/perplexity-ai/createModelResponse.js.map +1 -0
- package/dist/providers/perplexity-ai/decision.d.ts +29 -0
- package/dist/providers/perplexity-ai/decision.js +47 -0
- package/dist/providers/perplexity-ai/decision.js.map +1 -0
- package/dist/providers/perplexity-ai/index.d.ts +3 -0
- package/dist/providers/perplexity-ai/index.js +23 -0
- package/dist/providers/perplexity-ai/index.js.map +1 -0
- package/dist/providers/requestHandlerApiArgs.d.ts +12 -0
- package/dist/providers/requestHandlerApiArgs.js +19 -0
- package/dist/providers/requestHandlerApiArgs.js.map +1 -0
- package/dist/providers/sagemaker/api.d.ts +3 -0
- package/dist/providers/sagemaker/api.js +86 -0
- package/dist/providers/sagemaker/api.js.map +1 -0
- package/dist/providers/sagemaker/chatComplete.d.ts +10 -0
- package/dist/providers/sagemaker/chatComplete.js +160 -0
- package/dist/providers/sagemaker/chatComplete.js.map +1 -0
- package/dist/providers/sagemaker/embed.d.ts +10 -0
- package/dist/providers/sagemaker/embed.js +55 -0
- package/dist/providers/sagemaker/embed.js.map +1 -0
- package/dist/providers/sagemaker/index.d.ts +3 -0
- package/dist/providers/sagemaker/index.js +30 -0
- package/dist/providers/sagemaker/index.js.map +1 -0
- package/dist/providers/sagemaker/utils.d.ts +3 -0
- package/dist/providers/sagemaker/utils.js +11 -0
- package/dist/providers/sagemaker/utils.js.map +1 -0
- package/dist/providers/sambanova/api.d.ts +3 -0
- package/dist/providers/sambanova/api.js +18 -0
- package/dist/providers/sambanova/api.js.map +1 -0
- package/dist/providers/sambanova/chatComplete.d.ts +31 -0
- package/dist/providers/sambanova/chatComplete.js +54 -0
- package/dist/providers/sambanova/chatComplete.js.map +1 -0
- package/dist/providers/sambanova/index.d.ts +3 -0
- package/dist/providers/sambanova/index.js +72 -0
- package/dist/providers/sambanova/index.js.map +1 -0
- package/dist/providers/segmind/api.d.ts +7 -0
- package/dist/providers/segmind/api.js +18 -0
- package/dist/providers/segmind/api.js.map +1 -0
- package/dist/providers/segmind/imageGenerate.d.ts +13 -0
- package/dist/providers/segmind/imageGenerate.js +130 -0
- package/dist/providers/segmind/imageGenerate.js.map +1 -0
- package/dist/providers/segmind/index.d.ts +8 -0
- package/dist/providers/segmind/index.js +11 -0
- package/dist/providers/segmind/index.js.map +1 -0
- package/dist/providers/shared/responseFormatUtils.d.ts +100 -0
- package/dist/providers/shared/responseFormatUtils.js +495 -0
- package/dist/providers/shared/responseFormatUtils.js.map +1 -0
- package/dist/providers/smallest-ai/api.d.ts +10 -0
- package/dist/providers/smallest-ai/api.js +24 -0
- package/dist/providers/smallest-ai/api.js.map +1 -0
- package/dist/providers/smallest-ai/index.d.ts +3 -0
- package/dist/providers/smallest-ai/index.js +6 -0
- package/dist/providers/smallest-ai/index.js.map +1 -0
- package/dist/providers/stability-ai/api.d.ts +7 -0
- package/dist/providers/stability-ai/api.js +52 -0
- package/dist/providers/stability-ai/api.js.map +1 -0
- package/dist/providers/stability-ai/constants.d.ts +6 -0
- package/dist/providers/stability-ai/constants.js +7 -0
- package/dist/providers/stability-ai/constants.js.map +1 -0
- package/dist/providers/stability-ai/imageGenerate.d.ts +17 -0
- package/dist/providers/stability-ai/imageGenerate.js +77 -0
- package/dist/providers/stability-ai/imageGenerate.js.map +1 -0
- package/dist/providers/stability-ai/imageGenerateV2.d.ts +18 -0
- package/dist/providers/stability-ai/imageGenerateV2.js +127 -0
- package/dist/providers/stability-ai/imageGenerateV2.js.map +1 -0
- package/dist/providers/stability-ai/index.d.ts +8 -0
- package/dist/providers/stability-ai/index.js +26 -0
- package/dist/providers/stability-ai/index.js.map +1 -0
- package/dist/providers/stability-ai/utils.d.ts +1 -0
- package/dist/providers/stability-ai/utils.js +12 -0
- package/dist/providers/stability-ai/utils.js.map +1 -0
- package/dist/providers/together-ai/api.d.ts +3 -0
- package/dist/providers/together-ai/api.js +22 -0
- package/dist/providers/together-ai/api.js.map +1 -0
- package/dist/providers/together-ai/chatComplete.d.ts +41 -0
- package/dist/providers/together-ai/chatComplete.js +161 -0
- package/dist/providers/together-ai/chatComplete.js.map +1 -0
- package/dist/providers/together-ai/complete.d.ts +13 -0
- package/dist/providers/together-ai/complete.js +100 -0
- package/dist/providers/together-ai/complete.js.map +1 -0
- package/dist/providers/together-ai/embed.d.ts +8 -0
- package/dist/providers/together-ai/embed.js +50 -0
- package/dist/providers/together-ai/embed.js.map +1 -0
- package/dist/providers/together-ai/index.d.ts +8 -0
- package/dist/providers/together-ai/index.js +19 -0
- package/dist/providers/together-ai/index.js.map +1 -0
- package/dist/providers/together-ai/types.d.ts +7 -0
- package/dist/providers/together-ai/types.js +9 -0
- package/dist/providers/together-ai/types.js.map +1 -0
- package/dist/providers/truefoundry-models/api.d.ts +3 -0
- package/dist/providers/truefoundry-models/api.js +29 -0
- package/dist/providers/truefoundry-models/api.js.map +1 -0
- package/dist/providers/truefoundry-models/index.d.ts +3 -0
- package/dist/providers/truefoundry-models/index.js +27 -0
- package/dist/providers/truefoundry-models/index.js.map +1 -0
- package/dist/providers/types.d.ts +459 -0
- package/dist/providers/types.js +9 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/providers/typesafe/api.d.ts +5 -0
- package/dist/providers/typesafe/api.js +55 -0
- package/dist/providers/typesafe/api.js.map +1 -0
- package/dist/providers/typesafe/decision.d.ts +44 -0
- package/dist/providers/typesafe/decision.js +105 -0
- package/dist/providers/typesafe/decision.js.map +1 -0
- package/dist/providers/typesafe/index.d.ts +3 -0
- package/dist/providers/typesafe/index.js +23 -0
- package/dist/providers/typesafe/index.js.map +1 -0
- package/dist/providers/utils/cacheControlUtils.d.ts +40 -0
- package/dist/providers/utils/cacheControlUtils.js +196 -0
- package/dist/providers/utils/cacheControlUtils.js.map +1 -0
- package/dist/providers/utils/fileUtils.d.ts +18 -0
- package/dist/providers/utils/fileUtils.js +46 -0
- package/dist/providers/utils/fileUtils.js.map +1 -0
- package/dist/providers/utils/finishReasonMap.d.ts +4 -0
- package/dist/providers/utils/finishReasonMap.js +83 -0
- package/dist/providers/utils/finishReasonMap.js.map +1 -0
- package/dist/providers/utils/toolUtils.d.ts +10 -0
- package/dist/providers/utils/toolUtils.js +35 -0
- package/dist/providers/utils/toolUtils.js.map +1 -0
- package/dist/providers/utils.d.ts +63 -0
- package/dist/providers/utils.js +210 -0
- package/dist/providers/utils.js.map +1 -0
- package/dist/providers/wafer/api.d.ts +2 -0
- package/dist/providers/wafer/api.js +26 -0
- package/dist/providers/wafer/api.js.map +1 -0
- package/dist/providers/wafer/index.d.ts +3 -0
- package/dist/providers/wafer/index.js +16 -0
- package/dist/providers/wafer/index.js.map +1 -0
- package/dist/providers/xai/index.d.ts +3 -0
- package/dist/providers/xai/index.js +21 -0
- package/dist/providers/xai/index.js.map +1 -0
- package/dist/requestContext.d.ts +5 -0
- package/dist/requestContext.js +19 -0
- package/dist/requestContext.js.map +1 -0
- package/dist/runtime/ambientCredentials.d.ts +14 -0
- package/dist/runtime/ambientCredentials.js +22 -0
- package/dist/runtime/ambientCredentials.js.map +1 -0
- package/dist/sdk.d.ts +66 -0
- package/dist/sdk.js +98 -0
- package/dist/sdk.js.map +1 -0
- package/dist/services/buildExecutionReport.d.ts +48 -0
- package/dist/services/buildExecutionReport.js +206 -0
- package/dist/services/buildExecutionReport.js.map +1 -0
- package/dist/services/buildFetchInit.d.ts +7 -0
- package/dist/services/buildFetchInit.js +70 -0
- package/dist/services/buildFetchInit.js.map +1 -0
- package/dist/services/createProviderRequest.d.ts +25 -0
- package/dist/services/createProviderRequest.js +276 -0
- package/dist/services/createProviderRequest.js.map +1 -0
- package/dist/services/execute.d.ts +11 -0
- package/dist/services/execute.js +204 -0
- package/dist/services/execute.js.map +1 -0
- package/dist/services/handleProviderResponse.d.ts +42 -0
- package/dist/services/handleProviderResponse.js +436 -0
- package/dist/services/handleProviderResponse.js.map +1 -0
- package/dist/services/transformToProviderRequest.d.ts +29 -0
- package/dist/services/transformToProviderRequest.js +268 -0
- package/dist/services/transformToProviderRequest.js.map +1 -0
- package/dist/stream/firstChunkGate.d.ts +31 -0
- package/dist/stream/firstChunkGate.js +86 -0
- package/dist/stream/firstChunkGate.js.map +1 -0
- package/dist/stream/firstChunkGateValidators.d.ts +23 -0
- package/dist/stream/firstChunkGateValidators.js +174 -0
- package/dist/stream/firstChunkGateValidators.js.map +1 -0
- package/dist/stream/index.d.ts +19 -0
- package/dist/stream/index.js +13 -0
- package/dist/stream/index.js.map +1 -0
- package/dist/stream/internalMetadataSse.d.ts +22 -0
- package/dist/stream/internalMetadataSse.js +60 -0
- package/dist/stream/internalMetadataSse.js.map +1 -0
- package/dist/stream/pumpProviderAwsEventStream.d.ts +32 -0
- package/dist/stream/pumpProviderAwsEventStream.js +103 -0
- package/dist/stream/pumpProviderAwsEventStream.js.map +1 -0
- package/dist/stream/pumpProviderSseStream.d.ts +11 -0
- package/dist/stream/pumpProviderSseStream.js +154 -0
- package/dist/stream/pumpProviderSseStream.js.map +1 -0
- package/dist/stream/readAwsEventFrames.d.ts +12 -0
- package/dist/stream/readAwsEventFrames.js +113 -0
- package/dist/stream/readAwsEventFrames.js.map +1 -0
- package/dist/stream/readSseFrames.d.ts +6 -0
- package/dist/stream/readSseFrames.js +80 -0
- package/dist/stream/readSseFrames.js.map +1 -0
- package/dist/stream/resolvePumpAbortSignal.d.ts +16 -0
- package/dist/stream/resolvePumpAbortSignal.js +30 -0
- package/dist/stream/resolvePumpAbortSignal.js.map +1 -0
- package/dist/stream/resolveStreamEndReason.d.ts +16 -0
- package/dist/stream/resolveStreamEndReason.js +89 -0
- package/dist/stream/resolveStreamEndReason.js.map +1 -0
- package/dist/stream/shouldReadAwsEventStream.d.ts +17 -0
- package/dist/stream/shouldReadAwsEventStream.js +29 -0
- package/dist/stream/shouldReadAwsEventStream.js.map +1 -0
- package/dist/stream/shouldRequireAzureStreamSleep.d.ts +8 -0
- package/dist/stream/shouldRequireAzureStreamSleep.js +12 -0
- package/dist/stream/shouldRequireAzureStreamSleep.js.map +1 -0
- package/dist/stream/splitPatterns.d.ts +20 -0
- package/dist/stream/splitPatterns.js +33 -0
- package/dist/stream/splitPatterns.js.map +1 -0
- package/dist/stream/types.d.ts +91 -0
- package/dist/stream/types.js +2 -0
- package/dist/stream/types.js.map +1 -0
- package/dist/tfy-providers/custom/api.d.ts +3 -0
- package/dist/tfy-providers/custom/api.js +125 -0
- package/dist/tfy-providers/custom/api.js.map +1 -0
- package/dist/tfy-providers/custom/cohere-rerank-v2/rerank.d.ts +30 -0
- package/dist/tfy-providers/custom/cohere-rerank-v2/rerank.js +30 -0
- package/dist/tfy-providers/custom/cohere-rerank-v2/rerank.js.map +1 -0
- package/dist/tfy-providers/custom/index.d.ts +14 -0
- package/dist/tfy-providers/custom/index.js +85 -0
- package/dist/tfy-providers/custom/index.js.map +1 -0
- package/dist/tfy-providers/custom/infinity/embed.d.ts +10 -0
- package/dist/tfy-providers/custom/infinity/embed.js +24 -0
- package/dist/tfy-providers/custom/infinity/embed.js.map +1 -0
- package/dist/tfy-providers/custom/infinity/rerank.d.ts +27 -0
- package/dist/tfy-providers/custom/infinity/rerank.js +28 -0
- package/dist/tfy-providers/custom/infinity/rerank.js.map +1 -0
- package/dist/tfy-providers/custom/nemo-retriever/embed.d.ts +10 -0
- package/dist/tfy-providers/custom/nemo-retriever/embed.js +28 -0
- package/dist/tfy-providers/custom/nemo-retriever/embed.js.map +1 -0
- package/dist/tfy-providers/custom/nemo-retriever/rerank.d.ts +45 -0
- package/dist/tfy-providers/custom/nemo-retriever/rerank.js +53 -0
- package/dist/tfy-providers/custom/nemo-retriever/rerank.js.map +1 -0
- package/dist/tfy-providers/custom/openai-compatible/chatComplete.d.ts +12 -0
- package/dist/tfy-providers/custom/openai-compatible/chatComplete.js +109 -0
- package/dist/tfy-providers/custom/openai-compatible/chatComplete.js.map +1 -0
- package/dist/tfy-providers/custom/openai-compatible/complete.d.ts +12 -0
- package/dist/tfy-providers/custom/openai-compatible/complete.js +82 -0
- package/dist/tfy-providers/custom/openai-compatible/complete.js.map +1 -0
- package/dist/tfy-providers/custom/openai-compatible/embed.d.ts +10 -0
- package/dist/tfy-providers/custom/openai-compatible/embed.js +28 -0
- package/dist/tfy-providers/custom/openai-compatible/embed.js.map +1 -0
- package/dist/tfy-providers/custom/tei/embed.d.ts +10 -0
- package/dist/tfy-providers/custom/tei/embed.js +24 -0
- package/dist/tfy-providers/custom/tei/embed.js.map +1 -0
- package/dist/tfy-providers/custom/vllm-openai/chatComplete.d.ts +27 -0
- package/dist/tfy-providers/custom/vllm-openai/chatComplete.js +158 -0
- package/dist/tfy-providers/custom/vllm-openai/chatComplete.js.map +1 -0
- package/dist/tfy-providers/custom/vllm-openai/complete.d.ts +12 -0
- package/dist/tfy-providers/custom/vllm-openai/complete.js +82 -0
- package/dist/tfy-providers/custom/vllm-openai/complete.js.map +1 -0
- package/dist/tracing/constants.d.ts +0 -0
- package/dist/tracing/constants.js +2 -0
- package/dist/tracing/constants.js.map +1 -0
- package/dist/types/MessagesRequest.d.ts +459 -0
- package/dist/types/MessagesRequest.js +2 -0
- package/dist/types/MessagesRequest.js.map +1 -0
- package/dist/types/MessagesStreamResponse.d.ts +64 -0
- package/dist/types/MessagesStreamResponse.js +2 -0
- package/dist/types/MessagesStreamResponse.js.map +1 -0
- package/dist/types/cache.d.ts +12 -0
- package/dist/types/cache.js +2 -0
- package/dist/types/cache.js.map +1 -0
- package/dist/types/contracts.d.ts +161 -0
- package/dist/types/contracts.js +2 -0
- package/dist/types/contracts.js.map +1 -0
- package/dist/types/embedRequestBody.d.ts +59 -0
- package/dist/types/embedRequestBody.js +2 -0
- package/dist/types/embedRequestBody.js.map +1 -0
- package/dist/types/executionReport.d.ts +223 -0
- package/dist/types/executionReport.js +2 -0
- package/dist/types/executionReport.js.map +1 -0
- package/dist/types/headers.d.ts +42 -0
- package/dist/types/headers.js +8 -0
- package/dist/types/headers.js.map +1 -0
- package/dist/types/inputList.d.ts +145 -0
- package/dist/types/inputList.js +8 -0
- package/dist/types/inputList.js.map +1 -0
- package/dist/types/messagesResponse.d.ts +204 -0
- package/dist/types/messagesResponse.js +10 -0
- package/dist/types/messagesResponse.js.map +1 -0
- package/dist/types/modelConfig.d.ts +41 -0
- package/dist/types/modelConfig.js +2 -0
- package/dist/types/modelConfig.js.map +1 -0
- package/dist/types/modelResponses.d.ts +2174 -0
- package/dist/types/modelResponses.js +8 -0
- package/dist/types/modelResponses.js.map +1 -0
- package/dist/types/options.d.ts +122 -0
- package/dist/types/options.js +2 -0
- package/dist/types/options.js.map +1 -0
- package/dist/types/requestBody.d.ts +586 -0
- package/dist/types/requestBody.js +25 -0
- package/dist/types/requestBody.js.map +1 -0
- package/dist/types/responseBody.d.ts +51 -0
- package/dist/types/responseBody.js +2 -0
- package/dist/types/responseBody.js.map +1 -0
- package/dist/types/shared.d.ts +116 -0
- package/dist/types/shared.js +2 -0
- package/dist/types/shared.js.map +1 -0
- package/dist/utils/abortSignals.d.ts +4 -0
- package/dist/utils/abortSignals.js +7 -0
- package/dist/utils/abortSignals.js.map +1 -0
- package/dist/utils/abortUtils.d.ts +5 -0
- package/dist/utils/abortUtils.js +20 -0
- package/dist/utils/abortUtils.js.map +1 -0
- package/dist/utils/audioUtils.d.ts +5 -0
- package/dist/utils/audioUtils.js +50 -0
- package/dist/utils/audioUtils.js.map +1 -0
- package/dist/utils/awsEventStreamEncoder.d.ts +12 -0
- package/dist/utils/awsEventStreamEncoder.js +49 -0
- package/dist/utils/awsEventStreamEncoder.js.map +1 -0
- package/dist/utils/awsSigV4.d.ts +2 -0
- package/dist/utils/awsSigV4.js +49 -0
- package/dist/utils/awsSigV4.js.map +1 -0
- package/dist/utils/azureEntraAuth.d.ts +10 -0
- package/dist/utils/azureEntraAuth.js +80 -0
- package/dist/utils/azureEntraAuth.js.map +1 -0
- package/dist/utils/billedUsage.d.ts +18 -0
- package/dist/utils/billedUsage.js +89 -0
- package/dist/utils/billedUsage.js.map +1 -0
- package/dist/utils/deriveProviderHeaderOptions.d.ts +9 -0
- package/dist/utils/deriveProviderHeaderOptions.js +141 -0
- package/dist/utils/deriveProviderHeaderOptions.js.map +1 -0
- package/dist/utils/errorHandlingUtils.d.ts +93 -0
- package/dist/utils/errorHandlingUtils.js +134 -0
- package/dist/utils/errorHandlingUtils.js.map +1 -0
- package/dist/utils/ignoreWithLog.d.ts +3 -0
- package/dist/utils/ignoreWithLog.js +12 -0
- package/dist/utils/ignoreWithLog.js.map +1 -0
- package/dist/utils/isStreamingEnabled.d.ts +14 -0
- package/dist/utils/isStreamingEnabled.js +14 -0
- package/dist/utils/isStreamingEnabled.js.map +1 -0
- package/dist/utils/jsonValue.d.ts +5 -0
- package/dist/utils/jsonValue.js +15 -0
- package/dist/utils/jsonValue.js.map +1 -0
- package/dist/utils/jwtUtils.d.ts +30 -0
- package/dist/utils/jwtUtils.js +102 -0
- package/dist/utils/jwtUtils.js.map +1 -0
- package/dist/utils/k8sTokenRequest.d.ts +1 -0
- package/dist/utils/k8sTokenRequest.js +45 -0
- package/dist/utils/k8sTokenRequest.js.map +1 -0
- package/dist/utils/memoryOptimizationUtils.d.ts +19 -0
- package/dist/utils/memoryOptimizationUtils.js +38 -0
- package/dist/utils/memoryOptimizationUtils.js.map +1 -0
- package/dist/utils/misc.d.ts +3 -0
- package/dist/utils/misc.js +24 -0
- package/dist/utils/misc.js.map +1 -0
- package/dist/utils/modelParamUtils.d.ts +91 -0
- package/dist/utils/modelParamUtils.js +387 -0
- package/dist/utils/modelParamUtils.js.map +1 -0
- package/dist/utils/providerConfigTransform.d.ts +24 -0
- package/dist/utils/providerConfigTransform.js +111 -0
- package/dist/utils/providerConfigTransform.js.map +1 -0
- package/dist/utils/providerReportedCost.d.ts +2 -0
- package/dist/utils/providerReportedCost.js +15 -0
- package/dist/utils/providerReportedCost.js.map +1 -0
- package/dist/utils/reasoningUtils.d.ts +28 -0
- package/dist/utils/reasoningUtils.js +148 -0
- package/dist/utils/reasoningUtils.js.map +1 -0
- package/dist/utils/sdkRequestUrl.d.ts +7 -0
- package/dist/utils/sdkRequestUrl.js +9 -0
- package/dist/utils/sdkRequestUrl.js.map +1 -0
- package/dist/utils/sseUtils.d.ts +48 -0
- package/dist/utils/sseUtils.js +152 -0
- package/dist/utils/sseUtils.js.map +1 -0
- package/dist/utils/systemMessageUtils.d.ts +7 -0
- package/dist/utils/systemMessageUtils.js +67 -0
- package/dist/utils/systemMessageUtils.js.map +1 -0
- package/dist/utils.d.ts +16 -0
- package/dist/utils.js +82 -0
- package/dist/utils.js.map +1 -0
- package/package.json +59 -4
|
@@ -0,0 +1,1151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ================================
|
|
3
|
+
* Inherited upstream file
|
|
4
|
+
* But needs some custom changes for TFY
|
|
5
|
+
* 1. Remove context as parameter from getAccessToken (it is for cahcing logic supported by upstream hooks, we dont support that yet)
|
|
6
|
+
* 2. Remove unused vars for linting
|
|
7
|
+
* 3. Add mistralai, qwen to the provider list in getModelAndProvider and split model string by / instead of .
|
|
8
|
+
* 4. Refactored JSON Schema transformation for Gemini compatibility with helper function tfyTransformSchemaForGemini (needed because Gemini has stricter schema requirements than standard JSON Schema)
|
|
9
|
+
* - Ref: https://github.com/pydantic/pydantic-ai/blob/main/pydantic_ai_slim/pydantic_ai/profiles/google.py
|
|
10
|
+
* ================================
|
|
11
|
+
*/
|
|
12
|
+
import { GoogleAuth } from 'google-auth-library';
|
|
13
|
+
import { HTTPException } from 'hono/http-exception';
|
|
14
|
+
import { getCachedCredentials, storeCachedCredentials } from '../../cache/port.js';
|
|
15
|
+
import { ValidationError } from '../../errors.js';
|
|
16
|
+
import { BatchEndpoints, fileExtensionMimeTypeMap, GOOGLE_VERTEX_AI } from '../../globals.js';
|
|
17
|
+
import { logger } from '../../logger.js';
|
|
18
|
+
import { createHashedCacheKey, credentialCacheExpiration, credentialCacheExpirationFromExpiresIn, sanitizeNatsKey, } from '../../utils.js';
|
|
19
|
+
import { errorResponse } from '../../utils/errorHandlingUtils.js';
|
|
20
|
+
import { getGoogleAccessToken, importPrivateKey } from '../../utils/jwtUtils.js';
|
|
21
|
+
import { generateErrorResponse } from '../utils.js';
|
|
22
|
+
/**
|
|
23
|
+
NOTE: Some JWT relatedutil functions have been moved src/utils/jwtUtils.ts instead
|
|
24
|
+
*/
|
|
25
|
+
export const getAccessToken = async (serviceAccountInfo) => {
|
|
26
|
+
try {
|
|
27
|
+
if (serviceAccountInfo?.type === 'external_account') {
|
|
28
|
+
throw new ValidationError('Vertex auth_data is external_account (WIF). Use manifest auth type workload-identity-federation-file with key_file_content, not key-file / service account key path.', { cause: new Error('external_account passed to service account token path') });
|
|
29
|
+
}
|
|
30
|
+
// Logical key — gateway CachePort adapter prefixes tenant.
|
|
31
|
+
const hashedKey = createHashedCacheKey(serviceAccountInfo.client_email, serviceAccountInfo.private_key_id, serviceAccountInfo.private_key);
|
|
32
|
+
const originalKey = `google-service-account-${hashedKey}`;
|
|
33
|
+
const cacheKey = sanitizeNatsKey(originalKey);
|
|
34
|
+
const cachedToken = await getCachedCredentials(cacheKey);
|
|
35
|
+
if (cachedToken?.access_token) {
|
|
36
|
+
return cachedToken.access_token;
|
|
37
|
+
}
|
|
38
|
+
const { accessToken, expiresIn } = await getGoogleAccessToken(serviceAccountInfo);
|
|
39
|
+
if (!accessToken) {
|
|
40
|
+
throw new ValidationError('Vertex: empty access_token from Google OAuth token exchange for service account key. Check key_file_content and token response.', { cause: new Error('getGoogleAccessToken returned empty token') });
|
|
41
|
+
}
|
|
42
|
+
const expiration = credentialCacheExpirationFromExpiresIn(expiresIn);
|
|
43
|
+
await storeCachedCredentials(cacheKey, { access_token: accessToken }, expiration, originalKey);
|
|
44
|
+
return accessToken;
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
if (err instanceof ValidationError) {
|
|
48
|
+
throw err;
|
|
49
|
+
}
|
|
50
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
51
|
+
logger.error(`[getAccessToken] Failed to obtain access token from service account key: ${detail}`);
|
|
52
|
+
throw new ValidationError(`Vertex: failed to obtain access token from service account key (${detail}). Verify key_file_content (type service_account, private_key, client_email) and connectivity to Google's OAuth token endpoint.`, { cause: err instanceof Error ? err : undefined });
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Gets an access token using Application Default Credentials (ADC).
|
|
57
|
+
* This function uses Google Auth Library's ADC which automatically detects:
|
|
58
|
+
* - Workload Identity when running in GKE
|
|
59
|
+
* - Service account keys from GOOGLE_APPLICATION_CREDENTIALS env var
|
|
60
|
+
* - GCE metadata service when running on GCE
|
|
61
|
+
* - User credentials when running locally (gcloud auth application-default login)
|
|
62
|
+
*
|
|
63
|
+
* @param session - Per-call session (tenantName for cache segregation)
|
|
64
|
+
* @param vertexProjectId - GCP project ID to include in cache key for proper segregation
|
|
65
|
+
* @param vertexRegion - GCP region to include in cache key for proper segregation
|
|
66
|
+
* @param cacheSegment - Optional provider account FQN (or other id) so ADC tokens do not collide across accounts
|
|
67
|
+
* @returns Access token string
|
|
68
|
+
*/
|
|
69
|
+
export const getAccessTokenFromADC = async (session, vertexProjectId, vertexRegion, cacheSegment) => {
|
|
70
|
+
try {
|
|
71
|
+
const tenantName = session.tenantName;
|
|
72
|
+
// Logical key — gateway CachePort adapter prefixes tenant.
|
|
73
|
+
const hashedKey = createHashedCacheKey(vertexProjectId, vertexRegion, cacheSegment ?? '');
|
|
74
|
+
const originalKey = `google-adc-credentials-${hashedKey}`;
|
|
75
|
+
const cacheKey = sanitizeNatsKey(originalKey);
|
|
76
|
+
const cachedToken = await getCachedCredentials(cacheKey);
|
|
77
|
+
if (cachedToken?.access_token) {
|
|
78
|
+
logger.info(`[getAccessTokenFromADC] Found cached ADC credentials for tenant: ${tenantName}, project: ${vertexProjectId}`);
|
|
79
|
+
return cachedToken.access_token;
|
|
80
|
+
}
|
|
81
|
+
// use GoogleAuth with Application Default Credentials
|
|
82
|
+
// this will automatically detect Workload Identity in GKE
|
|
83
|
+
const auth = new GoogleAuth({
|
|
84
|
+
scopes: ['https://www.googleapis.com/auth/cloud-platform'],
|
|
85
|
+
});
|
|
86
|
+
let accessTokenResponse;
|
|
87
|
+
let expiryDate;
|
|
88
|
+
try {
|
|
89
|
+
const client = await auth.getClient();
|
|
90
|
+
accessTokenResponse = await client.getAccessToken();
|
|
91
|
+
expiryDate = client.credentials.expiry_date;
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
logger.error(`[getAccessTokenFromADC] Error getting access token from ADC: ${error instanceof Error ? error.message : String(error)}`);
|
|
95
|
+
throw new ValidationError(error.message, {
|
|
96
|
+
cause: error,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (!accessTokenResponse.token) {
|
|
100
|
+
throw new ValidationError('No access token returned from Application Default Credentials', {
|
|
101
|
+
cause: new Error('No access token returned from Application Default Credentials'),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
const expiration = credentialCacheExpiration(expiryDate);
|
|
105
|
+
await storeCachedCredentials(cacheKey, { access_token: accessTokenResponse.token }, expiration, originalKey);
|
|
106
|
+
logger.info(`[getAccessTokenFromADC] Successfully obtained ADC credentials for tenant: ${tenantName}, project: ${vertexProjectId}`);
|
|
107
|
+
return accessTokenResponse.token;
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
logger.error(`[getAccessTokenFromADC] Error getting access token from ADC: ${error instanceof Error ? error.message : String(error)}`);
|
|
111
|
+
throw error;
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
export const getModelAndProvider = (modelString) => {
|
|
115
|
+
let provider = 'google';
|
|
116
|
+
let model = modelString;
|
|
117
|
+
const modelStringParts = modelString.split('/');
|
|
118
|
+
if (modelStringParts.length > 1) {
|
|
119
|
+
provider = modelStringParts[0];
|
|
120
|
+
model = modelStringParts.slice(1).join('.');
|
|
121
|
+
}
|
|
122
|
+
return { provider, model };
|
|
123
|
+
};
|
|
124
|
+
export const getMimeType = (url) => {
|
|
125
|
+
const urlParts = url.split('.');
|
|
126
|
+
const extension = urlParts[urlParts.length - 1];
|
|
127
|
+
return fileExtensionMimeTypeMap[extension];
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Maps OpenAI's "detail" parameter to Gemini's "mediaResolution" parameter.
|
|
131
|
+
*
|
|
132
|
+
* Translation mapping:
|
|
133
|
+
* - "low" → "MEDIA_RESOLUTION_LOW"
|
|
134
|
+
* - "high" → "MEDIA_RESOLUTION_HIGH"
|
|
135
|
+
* - "auto" or null/undefined → null (omit the field)
|
|
136
|
+
*
|
|
137
|
+
* @param detail - Optional string: "low", "high", "auto", or null/undefined
|
|
138
|
+
* @returns Optional MediaResolution object, or null (to omit the field)
|
|
139
|
+
*/
|
|
140
|
+
export const mapOpenAIDetailToMediaResolution = (detail) => {
|
|
141
|
+
if (detail === 'low') {
|
|
142
|
+
return { level: 'MEDIA_RESOLUTION_LOW' };
|
|
143
|
+
}
|
|
144
|
+
if (detail === 'high') {
|
|
145
|
+
return { level: 'MEDIA_RESOLUTION_HIGH' };
|
|
146
|
+
}
|
|
147
|
+
// "auto" or null/undefined means let the model decide, so we don't set mediaResolution
|
|
148
|
+
return null;
|
|
149
|
+
};
|
|
150
|
+
export const GoogleErrorResponseTransform = (response, provider = GOOGLE_VERTEX_AI) => {
|
|
151
|
+
if ('error' in response) {
|
|
152
|
+
return generateErrorResponse({
|
|
153
|
+
message: response.error.message ?? '',
|
|
154
|
+
type: response.error.status ?? null,
|
|
155
|
+
code: response.error.status ?? null,
|
|
156
|
+
}, provider);
|
|
157
|
+
}
|
|
158
|
+
return undefined;
|
|
159
|
+
};
|
|
160
|
+
// Extract definition key from a JSON Schema $ref string
|
|
161
|
+
const getDefFromRef = (ref) => {
|
|
162
|
+
const match = ref.match(/^#\/\$defs\/(.+)$/);
|
|
163
|
+
return match ? match[1] : null;
|
|
164
|
+
};
|
|
165
|
+
const getDefObject = (defs, key) => key && defs ? defs[key] : undefined;
|
|
166
|
+
// Recursively expands $ref nodes in a JSON Schema object tree
|
|
167
|
+
const DEREFER_MAX_DEPTH = 32;
|
|
168
|
+
const DEREFER_MAX_NODES = 10_000;
|
|
169
|
+
export const derefer = (schema, defs = null, stack = new Set(), depth = 0, budget = { nodes: 0 }) => {
|
|
170
|
+
if (schema === null || typeof schema !== 'object')
|
|
171
|
+
return schema;
|
|
172
|
+
if (depth > DEREFER_MAX_DEPTH || ++budget.nodes > DEREFER_MAX_NODES) {
|
|
173
|
+
throw new ValidationError('JSON schema $ref expansion exceeds size or depth limits');
|
|
174
|
+
}
|
|
175
|
+
if (Array.isArray(schema))
|
|
176
|
+
return schema.map(item => derefer(item, defs, stack, depth + 1, budget));
|
|
177
|
+
const node = { ...schema };
|
|
178
|
+
const activeDefs = defs ?? node.$defs ?? null;
|
|
179
|
+
if ('$ref' in node && typeof node.$ref === 'string') {
|
|
180
|
+
const defKey = getDefFromRef(node.$ref);
|
|
181
|
+
const target = getDefObject(activeDefs, defKey);
|
|
182
|
+
if (defKey && target) {
|
|
183
|
+
if (stack.has(defKey))
|
|
184
|
+
return node;
|
|
185
|
+
stack.add(defKey);
|
|
186
|
+
const resolved = derefer(target, activeDefs, stack, depth + 1, budget);
|
|
187
|
+
stack.delete(defKey);
|
|
188
|
+
const keys = Object.keys(node);
|
|
189
|
+
if (keys.length === 1)
|
|
190
|
+
return resolved;
|
|
191
|
+
const { $ref: _, ...siblings } = node;
|
|
192
|
+
for (const key of Object.keys(node))
|
|
193
|
+
delete node[key];
|
|
194
|
+
Object.assign(node, resolved, siblings);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
for (const [k, v] of Object.entries(node)) {
|
|
198
|
+
if (k === '$defs')
|
|
199
|
+
continue;
|
|
200
|
+
node[k] = derefer(v, activeDefs, stack, depth + 1, budget);
|
|
201
|
+
}
|
|
202
|
+
return node;
|
|
203
|
+
};
|
|
204
|
+
/** Allowed output mime types for Imagen (gen and edit). */
|
|
205
|
+
const IMAGEN_ALLOWED_MIME_TYPES = [fileExtensionMimeTypeMap.png, fileExtensionMimeTypeMap.jpeg];
|
|
206
|
+
/**
|
|
207
|
+
* Maps OpenAI-style output_format (png | jpeg) and/or mimeType to Vertex mimeType (image/png | image/jpeg).
|
|
208
|
+
* Prefers output_format when present; falls back to mimeType if allowed. No webp (not OpenAI-compatible).
|
|
209
|
+
*/
|
|
210
|
+
export function toVertexOutputMimeType(outputFormat, mimeType) {
|
|
211
|
+
if (outputFormat && typeof outputFormat === 'string') {
|
|
212
|
+
const normalized = outputFormat.trim().toLowerCase();
|
|
213
|
+
if (normalized === 'png')
|
|
214
|
+
return fileExtensionMimeTypeMap.png;
|
|
215
|
+
if (normalized === 'jpeg')
|
|
216
|
+
return fileExtensionMimeTypeMap.jpeg;
|
|
217
|
+
}
|
|
218
|
+
if (mimeType && typeof mimeType === 'string') {
|
|
219
|
+
const mime = mimeType.trim();
|
|
220
|
+
if (IMAGEN_ALLOWED_MIME_TYPES.includes(mime))
|
|
221
|
+
return mime;
|
|
222
|
+
}
|
|
223
|
+
return undefined;
|
|
224
|
+
}
|
|
225
|
+
/** Imagen edit: baseSteps (sampling steps) when input_fidelity is 'low'. */
|
|
226
|
+
const IMAGEN_EDIT_BASE_STEPS_LOW_FIDELITY = 35;
|
|
227
|
+
/** Imagen edit: baseSteps (sampling steps) when input_fidelity is high or default. */
|
|
228
|
+
const IMAGEN_EDIT_BASE_STEPS_HIGH_FIDELITY = 75;
|
|
229
|
+
/**
|
|
230
|
+
* Builds Imagen predict "parameters" that are valid for both image generation and image edit.
|
|
231
|
+
* Single source of truth for shared params; used by imageGenerate transformParams and image edit transformParametersObject.
|
|
232
|
+
* Does NOT include gen-only (sampleImageSize, aspectRatio, sampleImageStyle, enhancePrompt) or edit-only (editMode, baseSteps, guidanceScale).
|
|
233
|
+
* @see https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/imagen-api
|
|
234
|
+
* @see https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/imagen-api-edit
|
|
235
|
+
*/
|
|
236
|
+
export function buildSharedImagenPredictParams(params) {
|
|
237
|
+
const config = {};
|
|
238
|
+
if (params['n'] !== undefined && params['n'] !== null) {
|
|
239
|
+
config['sampleCount'] = typeof params['n'] === 'number' ? params['n'] : parseInt(String(params['n']), 10);
|
|
240
|
+
}
|
|
241
|
+
const outputMime = toVertexOutputMimeType(params['output_format'], params['mimeType']);
|
|
242
|
+
const outputCompression = params['output_compression'] !== undefined && params['output_compression'] !== null
|
|
243
|
+
? typeof params['output_compression'] === 'number'
|
|
244
|
+
? params['output_compression']
|
|
245
|
+
: parseInt(String(params['output_compression']), 10)
|
|
246
|
+
: undefined;
|
|
247
|
+
if (outputMime !== undefined || (outputCompression !== undefined && !Number.isNaN(outputCompression))) {
|
|
248
|
+
if (!config['outputOptions'] || typeof config['outputOptions'] !== 'object') {
|
|
249
|
+
config['outputOptions'] = {};
|
|
250
|
+
}
|
|
251
|
+
const outputOptions = config['outputOptions'];
|
|
252
|
+
if (outputMime !== undefined)
|
|
253
|
+
outputOptions['mimeType'] = outputMime;
|
|
254
|
+
if (outputCompression !== undefined && !Number.isNaN(outputCompression)) {
|
|
255
|
+
outputOptions['compressionQuality'] = Math.min(100, Math.max(0, outputCompression));
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// Vertex Imagen: seed is not supported when addWatermark is true (per API docs).
|
|
259
|
+
if (params['add_watermark'] === true && params['seed'] !== undefined && params['seed'] !== null) {
|
|
260
|
+
throw new HTTPException(400, {
|
|
261
|
+
message: 'Seed is not supported when add_watermark is true. Omit seed or set add_watermark to false.',
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
if (params['seed'] !== undefined && params['seed'] !== null) {
|
|
265
|
+
config['seed'] = params['seed'];
|
|
266
|
+
}
|
|
267
|
+
if (params['negativePrompt'] &&
|
|
268
|
+
typeof params['negativePrompt'] === 'string' &&
|
|
269
|
+
params['negativePrompt'].trim()) {
|
|
270
|
+
config['negativePrompt'] = params['negativePrompt'].trim();
|
|
271
|
+
}
|
|
272
|
+
const personGen = params['person_generation'];
|
|
273
|
+
if (personGen && typeof personGen === 'string' && personGen.trim()) {
|
|
274
|
+
config['personGeneration'] = personGen.trim();
|
|
275
|
+
}
|
|
276
|
+
const safetySetting = params['safety_setting'] ?? params['safetySetting'];
|
|
277
|
+
if (safetySetting !== undefined && safetySetting !== null && String(safetySetting).trim() !== '') {
|
|
278
|
+
config['safetySetting'] = String(safetySetting).trim();
|
|
279
|
+
}
|
|
280
|
+
if (typeof params['add_watermark'] === 'boolean') {
|
|
281
|
+
config['addWatermark'] = params['add_watermark'];
|
|
282
|
+
}
|
|
283
|
+
const languageRaw = params['language'];
|
|
284
|
+
if (languageRaw && typeof languageRaw === 'string' && languageRaw.trim()) {
|
|
285
|
+
config['language'] = languageRaw.trim();
|
|
286
|
+
}
|
|
287
|
+
const storageUriRaw = params['storage_uri'];
|
|
288
|
+
if (storageUriRaw && typeof storageUriRaw === 'string' && storageUriRaw.trim()) {
|
|
289
|
+
config['storageUri'] = storageUriRaw.trim();
|
|
290
|
+
}
|
|
291
|
+
const includeRaiReasonRaw = params['include_rai_reason'] ?? params['includeRaiReason'];
|
|
292
|
+
if (typeof includeRaiReasonRaw === 'boolean') {
|
|
293
|
+
config['includeRaiReason'] = includeRaiReasonRaw;
|
|
294
|
+
}
|
|
295
|
+
if (typeof params['include_safety_attributes'] === 'boolean') {
|
|
296
|
+
config['includeSafetyAttributes'] = params['include_safety_attributes'];
|
|
297
|
+
}
|
|
298
|
+
return config;
|
|
299
|
+
}
|
|
300
|
+
export const transformParametersObject = (params) => {
|
|
301
|
+
// Edit-only params (not valid for generation)
|
|
302
|
+
const parameters = {};
|
|
303
|
+
if (params.editMode) {
|
|
304
|
+
parameters.editMode = params.editMode;
|
|
305
|
+
}
|
|
306
|
+
else if (params.mask) {
|
|
307
|
+
parameters.editMode = 'EDIT_MODE_INPAINT_INSERTION';
|
|
308
|
+
}
|
|
309
|
+
if (params.input_fidelity) {
|
|
310
|
+
parameters.editConfig = {};
|
|
311
|
+
parameters.editConfig.baseSteps =
|
|
312
|
+
params.input_fidelity === 'low' ? IMAGEN_EDIT_BASE_STEPS_LOW_FIDELITY : IMAGEN_EDIT_BASE_STEPS_HIGH_FIDELITY;
|
|
313
|
+
}
|
|
314
|
+
const baseStepsValue = params.baseSteps ?? params.base_steps;
|
|
315
|
+
if (baseStepsValue !== undefined && baseStepsValue !== null) {
|
|
316
|
+
parameters.baseSteps = parseInt(String(baseStepsValue), 10);
|
|
317
|
+
}
|
|
318
|
+
const guidanceScaleRaw = params.guidance_scale ?? params.guidanceScale;
|
|
319
|
+
if (guidanceScaleRaw !== undefined && guidanceScaleRaw !== null) {
|
|
320
|
+
const parsed = parseInt(String(guidanceScaleRaw), 10);
|
|
321
|
+
if (!Number.isNaN(parsed))
|
|
322
|
+
parameters.guidanceScale = parsed;
|
|
323
|
+
}
|
|
324
|
+
// Merge shared Imagen predict params (gen + edit)
|
|
325
|
+
Object.assign(parameters, buildSharedImagenPredictParams(params));
|
|
326
|
+
return parameters;
|
|
327
|
+
};
|
|
328
|
+
export const transformInstancesObject = (params) => {
|
|
329
|
+
const instances = [{}];
|
|
330
|
+
// Initialize the structure
|
|
331
|
+
instances[0].referenceImages = [];
|
|
332
|
+
if (params.prompt) {
|
|
333
|
+
instances[0].prompt = params.prompt;
|
|
334
|
+
}
|
|
335
|
+
// Handle images (single or array)
|
|
336
|
+
if (Array.isArray(params.image)) {
|
|
337
|
+
for (const [index, image] of params.image.entries()) {
|
|
338
|
+
const imageObject = {
|
|
339
|
+
referenceType: 'REFERENCE_TYPE_RAW',
|
|
340
|
+
referenceId: index + 1,
|
|
341
|
+
referenceImage: {
|
|
342
|
+
bytesBase64Encoded: image,
|
|
343
|
+
},
|
|
344
|
+
};
|
|
345
|
+
instances[0].referenceImages.push(imageObject);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
else if (params.image) {
|
|
349
|
+
const imageObject = {
|
|
350
|
+
referenceType: 'REFERENCE_TYPE_RAW',
|
|
351
|
+
referenceId: 1,
|
|
352
|
+
referenceImage: {
|
|
353
|
+
bytesBase64Encoded: params.image,
|
|
354
|
+
},
|
|
355
|
+
};
|
|
356
|
+
instances[0].referenceImages.push(imageObject);
|
|
357
|
+
}
|
|
358
|
+
// Handle mask
|
|
359
|
+
if (params.mask) {
|
|
360
|
+
const nextReferenceId = instances[0].referenceImages.length + 1;
|
|
361
|
+
const maskObject = {
|
|
362
|
+
referenceType: 'REFERENCE_TYPE_MASK',
|
|
363
|
+
referenceId: nextReferenceId, // Next ID after images
|
|
364
|
+
referenceImage: {
|
|
365
|
+
bytesBase64Encoded: params.mask,
|
|
366
|
+
},
|
|
367
|
+
};
|
|
368
|
+
// ALWAYS add maskImageConfig when mask is present (required by Vertex AI)
|
|
369
|
+
maskObject.maskImageConfig = {};
|
|
370
|
+
// Set maskMode (default to USER_PROVIDED if not specified)
|
|
371
|
+
maskObject.maskImageConfig.maskMode = params.maskMode || 'MASK_MODE_USER_PROVIDED';
|
|
372
|
+
// Add optional fields
|
|
373
|
+
if (params.maskClasses) {
|
|
374
|
+
let maskClasses = params.maskClasses;
|
|
375
|
+
// Parse JSON string back to array (from imageEdit.ts preprocessing)
|
|
376
|
+
if (typeof maskClasses === 'string') {
|
|
377
|
+
maskClasses = JSON.parse(maskClasses);
|
|
378
|
+
}
|
|
379
|
+
maskObject.maskImageConfig.maskClasses = maskClasses;
|
|
380
|
+
}
|
|
381
|
+
if (params.dilation !== undefined) {
|
|
382
|
+
maskObject.maskImageConfig.dilation = parseFloat(params.dilation);
|
|
383
|
+
}
|
|
384
|
+
instances[0].referenceImages.push(maskObject);
|
|
385
|
+
}
|
|
386
|
+
return instances;
|
|
387
|
+
};
|
|
388
|
+
const stripUnresolvedRefs = (node) => {
|
|
389
|
+
if (!node || typeof node !== 'object')
|
|
390
|
+
return;
|
|
391
|
+
if (Array.isArray(node)) {
|
|
392
|
+
node.forEach(stripUnresolvedRefs);
|
|
393
|
+
return;
|
|
394
|
+
}
|
|
395
|
+
delete node.$ref;
|
|
396
|
+
for (const value of Object.values(node))
|
|
397
|
+
stripUnresolvedRefs(value);
|
|
398
|
+
};
|
|
399
|
+
export const transformGeminiToolParameters = (parameters) => {
|
|
400
|
+
if (!parameters || typeof parameters !== 'object' || Array.isArray(parameters)) {
|
|
401
|
+
return parameters;
|
|
402
|
+
}
|
|
403
|
+
const schema = derefer(parameters);
|
|
404
|
+
delete schema.$defs;
|
|
405
|
+
stripUnresolvedRefs(schema);
|
|
406
|
+
const isNullTypeNode = (node) => node && typeof node === 'object' && node.type === 'null';
|
|
407
|
+
// Vertex has no `const`, and its `enum` is string-only — non-string constants can only
|
|
408
|
+
// be preserved in `description`.
|
|
409
|
+
const applyConst = (node, transformed) => {
|
|
410
|
+
const value = node.const;
|
|
411
|
+
if (value === undefined || transformed.enum !== undefined)
|
|
412
|
+
return;
|
|
413
|
+
if (typeof value === 'string') {
|
|
414
|
+
if (transformed.type === undefined)
|
|
415
|
+
transformed.type = 'string';
|
|
416
|
+
transformed.enum = [value];
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
const note = `Must be exactly: ${JSON.stringify(value)}`;
|
|
420
|
+
transformed.description = transformed.description ? `${transformed.description} (${note})` : note;
|
|
421
|
+
};
|
|
422
|
+
const transformNode = (node) => {
|
|
423
|
+
if (Array.isArray(node)) {
|
|
424
|
+
return node.map(transformNode);
|
|
425
|
+
}
|
|
426
|
+
if (!node || typeof node !== 'object')
|
|
427
|
+
return node;
|
|
428
|
+
const transformed = {};
|
|
429
|
+
for (const [key, value] of Object.entries(node)) {
|
|
430
|
+
if (key === 'const')
|
|
431
|
+
continue; // applied after the loop, needs the final type/description
|
|
432
|
+
if ((key === 'anyOf' || key === 'oneOf') && Array.isArray(value)) {
|
|
433
|
+
const nonNullItems = value.filter(item => !isNullTypeNode(item));
|
|
434
|
+
const hadNull = nonNullItems.length < value.length;
|
|
435
|
+
if (nonNullItems.length === 1 && hadNull) {
|
|
436
|
+
// Flatten to single schema: get rid of anyOf/oneOf and set nullable: true
|
|
437
|
+
const single = transformNode(nonNullItems[0]);
|
|
438
|
+
if (single && typeof single === 'object') {
|
|
439
|
+
Object.assign(transformed, single);
|
|
440
|
+
transformed.nullable = true;
|
|
441
|
+
}
|
|
442
|
+
continue;
|
|
443
|
+
}
|
|
444
|
+
transformed[key] = transformNode(hadNull ? nonNullItems : value);
|
|
445
|
+
if (hadNull)
|
|
446
|
+
transformed.nullable = true;
|
|
447
|
+
continue;
|
|
448
|
+
}
|
|
449
|
+
transformed[key] = transformNode(value);
|
|
450
|
+
}
|
|
451
|
+
applyConst(node, transformed);
|
|
452
|
+
const typeVal = transformed.type;
|
|
453
|
+
const isArray = (typeof typeVal === 'string' && typeVal.toLowerCase() === 'array') ||
|
|
454
|
+
(Array.isArray(typeVal) && typeVal.some(t => typeof t === 'string' && t.toLowerCase() === 'array'));
|
|
455
|
+
if (isArray) {
|
|
456
|
+
const items = transformed.items;
|
|
457
|
+
const missingItems = items == null || (typeof items === 'object' && !Array.isArray(items) && Object.keys(items).length === 0);
|
|
458
|
+
if (missingItems)
|
|
459
|
+
transformed.items = { type: 'object' };
|
|
460
|
+
}
|
|
461
|
+
return transformed;
|
|
462
|
+
};
|
|
463
|
+
return transformNode(schema);
|
|
464
|
+
};
|
|
465
|
+
// Strip JSON Schema fields unsupported by Google/Vertex AI from tool parameters and structured output schemas.
|
|
466
|
+
// Supported fields: https://cloud.google.com/vertex-ai/generative-ai/docs/reference/rest/v1/Schema
|
|
467
|
+
export const recursivelyDeleteUnsupportedParameters = (obj) => {
|
|
468
|
+
if (typeof obj !== 'object' || obj === null || Array.isArray(obj))
|
|
469
|
+
return;
|
|
470
|
+
delete obj.additional_properties;
|
|
471
|
+
delete obj.additionalProperties;
|
|
472
|
+
delete obj['$schema'];
|
|
473
|
+
delete obj.propertyNames;
|
|
474
|
+
delete obj.patternProperties;
|
|
475
|
+
delete obj['$id'];
|
|
476
|
+
delete obj['$comment'];
|
|
477
|
+
delete obj.dependencies;
|
|
478
|
+
delete obj.dependentRequired;
|
|
479
|
+
delete obj.dependentSchemas;
|
|
480
|
+
delete obj.unevaluatedProperties;
|
|
481
|
+
delete obj.unevaluatedItems;
|
|
482
|
+
delete obj.exclusiveMinimum;
|
|
483
|
+
for (const key of Object.keys(obj)) {
|
|
484
|
+
if (key.startsWith('x-'))
|
|
485
|
+
delete obj[key];
|
|
486
|
+
}
|
|
487
|
+
for (const key in obj) {
|
|
488
|
+
if (obj[key] !== null && typeof obj[key] === 'object') {
|
|
489
|
+
recursivelyDeleteUnsupportedParameters(obj[key]);
|
|
490
|
+
}
|
|
491
|
+
if (key == 'anyOf' && Array.isArray(obj[key])) {
|
|
492
|
+
obj[key].forEach((item) => {
|
|
493
|
+
recursivelyDeleteUnsupportedParameters(item);
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
};
|
|
498
|
+
// Generate Gateway specific response.
|
|
499
|
+
export const GoogleResponseHandler = (response, status) => {
|
|
500
|
+
if (status !== 200) {
|
|
501
|
+
const message = response instanceof Response
|
|
502
|
+
? `Request failed with status ${response.status}`
|
|
503
|
+
: typeof response === 'string'
|
|
504
|
+
? response
|
|
505
|
+
: JSON.stringify(response);
|
|
506
|
+
const body = {
|
|
507
|
+
status: 'failure',
|
|
508
|
+
message,
|
|
509
|
+
error: { message, type: null, code: String(status || 500) },
|
|
510
|
+
provider: GOOGLE_VERTEX_AI,
|
|
511
|
+
};
|
|
512
|
+
return errorResponse(body, status || 500);
|
|
513
|
+
}
|
|
514
|
+
if (!(response instanceof Response)) {
|
|
515
|
+
const _response = typeof response === 'object' ? JSON.stringify(response) : response;
|
|
516
|
+
return new Response(_response, {
|
|
517
|
+
status: status || 200,
|
|
518
|
+
headers: { 'Content-Type': 'application/json' },
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
return response;
|
|
522
|
+
};
|
|
523
|
+
export const googleBatchStatusToOpenAI = (status) => {
|
|
524
|
+
switch (status) {
|
|
525
|
+
case 'JOB_STATE_CANCELLING':
|
|
526
|
+
return 'cancelling';
|
|
527
|
+
case 'JOB_STATE_CANCELLED':
|
|
528
|
+
return 'cancelled';
|
|
529
|
+
case 'JOB_STATE_EXPIRED':
|
|
530
|
+
return 'expired';
|
|
531
|
+
case 'JOB_STATE_FAILED':
|
|
532
|
+
return 'failed';
|
|
533
|
+
case 'JOB_STATE_PARTIALLY_SUCCEEDED':
|
|
534
|
+
case 'JOB_STATE_SUCCEEDED':
|
|
535
|
+
return 'completed';
|
|
536
|
+
case 'JOB_STATE_RUNNING':
|
|
537
|
+
case 'JOB_STATE_UPDATING':
|
|
538
|
+
return 'in_progress';
|
|
539
|
+
case 'JOB_STATE_PAUSED':
|
|
540
|
+
case 'JOB_STATE_PENDING':
|
|
541
|
+
case 'JOB_STATE_QUEUED':
|
|
542
|
+
case 'JOB_STATE_UNSPECIFIED':
|
|
543
|
+
default:
|
|
544
|
+
return 'validating';
|
|
545
|
+
}
|
|
546
|
+
};
|
|
547
|
+
export const googleFinetuneStatusToOpenAI = (status) => {
|
|
548
|
+
switch (status) {
|
|
549
|
+
case 'JOB_STATE_CANCELLED':
|
|
550
|
+
case 'JOB_STATE_CANCELLING':
|
|
551
|
+
case 'JOB_STATE_EXPIRED':
|
|
552
|
+
return 'cancelled';
|
|
553
|
+
case 'JOB_STATE_FAILED':
|
|
554
|
+
return 'failed';
|
|
555
|
+
case 'JOB_STATE_PARTIALLY_SUCCEEDED':
|
|
556
|
+
case 'JOB_STATE_SUCCEEDED':
|
|
557
|
+
return 'succeeded';
|
|
558
|
+
case 'JOB_STATE_PAUSED':
|
|
559
|
+
case 'JOB_STATE_PENDING':
|
|
560
|
+
case 'JOB_STATE_QUEUED':
|
|
561
|
+
return 'queued';
|
|
562
|
+
case 'JOB_STATE_RUNNING':
|
|
563
|
+
case 'JOB_STATE_UPDATING':
|
|
564
|
+
return 'running';
|
|
565
|
+
case 'JOB_STATE_UNSPECIFIED':
|
|
566
|
+
return 'queued';
|
|
567
|
+
default:
|
|
568
|
+
return 'queued';
|
|
569
|
+
}
|
|
570
|
+
};
|
|
571
|
+
const getTimeKey = (status, value) => {
|
|
572
|
+
if (status === 'JOB_STATE_FAILED') {
|
|
573
|
+
return { failed_at: new Date(value).getTime() };
|
|
574
|
+
}
|
|
575
|
+
if (status === 'JOB_STATE_SUCCEEDED') {
|
|
576
|
+
return { completed_at: new Date(value).getTime() };
|
|
577
|
+
}
|
|
578
|
+
if (status === 'JOB_STATE_CANCELLED') {
|
|
579
|
+
return { cancelled_at: new Date(value).getTime() };
|
|
580
|
+
}
|
|
581
|
+
if (status === 'JOB_STATE_EXPIRED') {
|
|
582
|
+
return { failed_at: new Date(value).getTime() };
|
|
583
|
+
}
|
|
584
|
+
return {};
|
|
585
|
+
};
|
|
586
|
+
export const GoogleToOpenAIBatch = (response) => {
|
|
587
|
+
const jobId = response.name.split('/').at(-1);
|
|
588
|
+
const total = Object.values(response.completionStats ?? {}).reduce((acc, current) => acc + Number.parseInt(current), 0);
|
|
589
|
+
const endpoint = isEmbeddingModel(response.model) ? BatchEndpoints.EMBEDDINGS : BatchEndpoints.CHAT_COMPLETIONS;
|
|
590
|
+
const fileSuffix = endpoint === BatchEndpoints.EMBEDDINGS ? '000000000000.jsonl' : 'predictions.jsonl';
|
|
591
|
+
const outputFileId = response.outputInfo
|
|
592
|
+
? `${response.outputInfo?.gcsOutputDirectory}/${fileSuffix}`
|
|
593
|
+
: response.outputConfig.gcsDestination.outputUriPrefix;
|
|
594
|
+
return {
|
|
595
|
+
id: jobId,
|
|
596
|
+
object: 'batch',
|
|
597
|
+
endpoint: endpoint,
|
|
598
|
+
input_file_id: encodeURIComponent(response.inputConfig.gcsSource?.uris?.at(0) ?? ''),
|
|
599
|
+
completion_window: null,
|
|
600
|
+
status: googleBatchStatusToOpenAI(response.state),
|
|
601
|
+
output_file_id: encodeURIComponent(outputFileId),
|
|
602
|
+
// Same as output_file_id
|
|
603
|
+
error_file_id: encodeURIComponent(response.outputConfig.gcsDestination.outputUriPrefix ?? ''),
|
|
604
|
+
created_at: new Date(response.createTime).getTime(),
|
|
605
|
+
...getTimeKey(response.state, response.endTime),
|
|
606
|
+
in_progress_at: new Date(response.startTime).getTime(),
|
|
607
|
+
...getTimeKey(response.state, response.updateTime),
|
|
608
|
+
request_counts: {
|
|
609
|
+
total: total,
|
|
610
|
+
completed: response.completionStats?.successfulCount,
|
|
611
|
+
failed: response.completionStats?.failedCount,
|
|
612
|
+
},
|
|
613
|
+
...(response.error && {
|
|
614
|
+
errors: {
|
|
615
|
+
object: 'list',
|
|
616
|
+
data: [response.error],
|
|
617
|
+
},
|
|
618
|
+
}),
|
|
619
|
+
};
|
|
620
|
+
};
|
|
621
|
+
export const transformVertexLogprobs = (generation) => {
|
|
622
|
+
const logprobsContent = [];
|
|
623
|
+
if (!generation.logprobsResult)
|
|
624
|
+
return null;
|
|
625
|
+
if (generation.logprobsResult?.chosenCandidates) {
|
|
626
|
+
generation.logprobsResult.chosenCandidates.forEach(candidate => {
|
|
627
|
+
const bytes = [];
|
|
628
|
+
for (const char of candidate.token) {
|
|
629
|
+
bytes.push(char.charCodeAt(0));
|
|
630
|
+
}
|
|
631
|
+
logprobsContent.push({
|
|
632
|
+
token: candidate.token,
|
|
633
|
+
logprob: candidate.logProbability,
|
|
634
|
+
bytes: bytes,
|
|
635
|
+
});
|
|
636
|
+
});
|
|
637
|
+
}
|
|
638
|
+
if (generation.logprobsResult?.topCandidates) {
|
|
639
|
+
generation.logprobsResult.topCandidates.forEach((topCandidatesForIndex, index) => {
|
|
640
|
+
const topLogprobs = [];
|
|
641
|
+
for (const candidate of topCandidatesForIndex.candidates) {
|
|
642
|
+
const bytes = [];
|
|
643
|
+
for (const char of candidate.token) {
|
|
644
|
+
bytes.push(char.charCodeAt(0));
|
|
645
|
+
}
|
|
646
|
+
topLogprobs.push({
|
|
647
|
+
token: candidate.token,
|
|
648
|
+
logprob: candidate.logProbability,
|
|
649
|
+
bytes: bytes,
|
|
650
|
+
});
|
|
651
|
+
}
|
|
652
|
+
logprobsContent[index].top_logprobs = topLogprobs;
|
|
653
|
+
});
|
|
654
|
+
}
|
|
655
|
+
return logprobsContent;
|
|
656
|
+
};
|
|
657
|
+
const populateHyperparameters = (value) => {
|
|
658
|
+
let hyperParameters = value.hyperparameters ?? {};
|
|
659
|
+
if (value.method) {
|
|
660
|
+
const method = value.method.type;
|
|
661
|
+
hyperParameters = value.method?.[method]?.hyperparameters ?? {};
|
|
662
|
+
}
|
|
663
|
+
return {
|
|
664
|
+
epochCount: hyperParameters?.n_epochs,
|
|
665
|
+
learningRateMultiplier: hyperParameters?.learning_rate_multiplier,
|
|
666
|
+
adapterSize: hyperParameters?.batch_size,
|
|
667
|
+
};
|
|
668
|
+
};
|
|
669
|
+
export const transformVertexFinetune = (params) => {
|
|
670
|
+
const parameterSpec = {
|
|
671
|
+
training_dataset_uri: decodeURIComponent(params['training_file'] ?? ''),
|
|
672
|
+
...(params['validation_file'] && {
|
|
673
|
+
validation_dataset_uri: decodeURIComponent(params['validation_file']),
|
|
674
|
+
}),
|
|
675
|
+
hyperParameters: populateHyperparameters(params),
|
|
676
|
+
};
|
|
677
|
+
return parameterSpec;
|
|
678
|
+
};
|
|
679
|
+
export const getBucketAndFile = (uri) => {
|
|
680
|
+
if (!uri)
|
|
681
|
+
return { bucket: '', file: '' };
|
|
682
|
+
let _url = decodeURIComponent(uri);
|
|
683
|
+
_url = _url.replaceAll('gs://', '');
|
|
684
|
+
const parts = _url.split('/');
|
|
685
|
+
const bucket = parts[0];
|
|
686
|
+
const file = parts.slice(1).join('/');
|
|
687
|
+
return { bucket, file };
|
|
688
|
+
};
|
|
689
|
+
export const GoogleToOpenAIFinetune = (response) => {
|
|
690
|
+
return {
|
|
691
|
+
id: response.name.split('/').at(-1),
|
|
692
|
+
object: 'finetune',
|
|
693
|
+
status: googleFinetuneStatusToOpenAI(response.state),
|
|
694
|
+
created_at: new Date(response.createTime).getTime(),
|
|
695
|
+
error: response.error,
|
|
696
|
+
fine_tuned_model: response.tunedModel?.model,
|
|
697
|
+
...(response.endTime && {
|
|
698
|
+
finished_at: new Date(response.endTime).getTime(),
|
|
699
|
+
}),
|
|
700
|
+
hyperparameters: {
|
|
701
|
+
batch_size: response.supervisedTuningSpec.hyperParameters?.adapterSize,
|
|
702
|
+
learning_rate_multiplier: response.supervisedTuningSpec.hyperParameters.learningRateMultiplier,
|
|
703
|
+
n_epochs: response.supervisedTuningSpec.hyperParameters.epochCount,
|
|
704
|
+
},
|
|
705
|
+
model: response.baseModel ?? response.source_model?.baseModel,
|
|
706
|
+
trained_tokens: response.tuningDataStats?.supervisedTuningDataStats.totalBillableTokenCount,
|
|
707
|
+
training_file: encodeURIComponent(response.supervisedTuningSpec.trainingDatasetUri),
|
|
708
|
+
...(response.supervisedTuningSpec.validationDatasetUri && {
|
|
709
|
+
validation_file: encodeURIComponent(response.supervisedTuningSpec.validationDatasetUri),
|
|
710
|
+
}),
|
|
711
|
+
...(response.tunedModelDisplayName && {
|
|
712
|
+
suffix: response.tunedModelDisplayName,
|
|
713
|
+
}),
|
|
714
|
+
};
|
|
715
|
+
};
|
|
716
|
+
export const vertexRequestLineHandler = (purpose, vertexBatchEndpoint, transformedBody, requestId) => {
|
|
717
|
+
switch (purpose) {
|
|
718
|
+
case 'batch':
|
|
719
|
+
return vertexBatchEndpoint === BatchEndpoints.EMBEDDINGS
|
|
720
|
+
? { ...transformedBody, requestId: requestId }
|
|
721
|
+
: { request: transformedBody, requestId: requestId };
|
|
722
|
+
case 'fine-tune':
|
|
723
|
+
return transformedBody;
|
|
724
|
+
}
|
|
725
|
+
};
|
|
726
|
+
export const isEmbeddingModel = (modelName) => {
|
|
727
|
+
return modelName.includes('embedding');
|
|
728
|
+
};
|
|
729
|
+
export const generateSignedURL = async (serviceAccountInfo, bucketName, objectName, expiration = 604800, httpMethod = 'GET', queryParameters = {}, headers = {}) => {
|
|
730
|
+
if (expiration > 604800) {
|
|
731
|
+
throw new Error("Expiration Time can't be longer than 604800 seconds (7 days).");
|
|
732
|
+
}
|
|
733
|
+
const escapedObjectName = encodeURIComponent(objectName).replace(/%2F/g, '/');
|
|
734
|
+
const canonicalUri = `/${escapedObjectName}`;
|
|
735
|
+
const datetimeNow = new Date();
|
|
736
|
+
const requestTimestamp = datetimeNow
|
|
737
|
+
.toISOString()
|
|
738
|
+
.replace(/[-:]/g, '') // Remove hyphens and colons
|
|
739
|
+
.replace(/\.\d{3}Z$/, 'Z'); // Remove milliseconds and ensure Z at end
|
|
740
|
+
const datestamp = datetimeNow.toISOString().slice(0, 10).replace(/-/g, '');
|
|
741
|
+
const clientEmail = serviceAccountInfo.client_email;
|
|
742
|
+
const credentialScope = `${datestamp}/auto/storage/goog4_request`;
|
|
743
|
+
const credential = `${clientEmail}/${credentialScope}`;
|
|
744
|
+
const host = `${bucketName}.storage.googleapis.com`;
|
|
745
|
+
headers['host'] = host;
|
|
746
|
+
// Create canonical headers
|
|
747
|
+
let canonicalHeaders = '';
|
|
748
|
+
const orderedHeaders = Object.keys(headers).sort();
|
|
749
|
+
for (const key of orderedHeaders) {
|
|
750
|
+
const lowerKey = key.toLowerCase();
|
|
751
|
+
const value = headers[key].toLowerCase();
|
|
752
|
+
canonicalHeaders += `${lowerKey}:${value}\n`;
|
|
753
|
+
}
|
|
754
|
+
// Create signed headers
|
|
755
|
+
const signedHeaders = orderedHeaders.map(key => key.toLowerCase()).join(';');
|
|
756
|
+
// Add required query parameters
|
|
757
|
+
const queryParams = {
|
|
758
|
+
...queryParameters,
|
|
759
|
+
'X-Goog-Algorithm': 'GOOG4-RSA-SHA256',
|
|
760
|
+
'X-Goog-Credential': credential,
|
|
761
|
+
'X-Goog-Date': requestTimestamp,
|
|
762
|
+
'X-Goog-Expires': expiration.toString(),
|
|
763
|
+
'X-Goog-SignedHeaders': signedHeaders,
|
|
764
|
+
};
|
|
765
|
+
// Create canonical query string
|
|
766
|
+
const canonicalQueryString = Object.keys(queryParams)
|
|
767
|
+
.sort()
|
|
768
|
+
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(queryParams[key])}`)
|
|
769
|
+
.join('&');
|
|
770
|
+
// Create canonical request
|
|
771
|
+
const canonicalRequest = [
|
|
772
|
+
httpMethod,
|
|
773
|
+
canonicalUri,
|
|
774
|
+
canonicalQueryString,
|
|
775
|
+
canonicalHeaders,
|
|
776
|
+
signedHeaders,
|
|
777
|
+
'UNSIGNED-PAYLOAD',
|
|
778
|
+
].join('\n');
|
|
779
|
+
// Hash the canonical request
|
|
780
|
+
const canonicalRequestHash = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(canonicalRequest));
|
|
781
|
+
// Create string to sign
|
|
782
|
+
const stringToSign = [
|
|
783
|
+
'GOOG4-RSA-SHA256',
|
|
784
|
+
requestTimestamp,
|
|
785
|
+
credentialScope,
|
|
786
|
+
Array.from(new Uint8Array(canonicalRequestHash))
|
|
787
|
+
.map(b => b.toString(16).padStart(2, '0'))
|
|
788
|
+
.join(''),
|
|
789
|
+
].join('\n');
|
|
790
|
+
// Sign the string
|
|
791
|
+
const privateKey = await importPrivateKey(serviceAccountInfo.private_key);
|
|
792
|
+
const signature = await crypto.subtle.sign({
|
|
793
|
+
name: 'RSASSA-PKCS1-v1_5',
|
|
794
|
+
hash: { name: 'SHA-256' },
|
|
795
|
+
}, privateKey, new TextEncoder().encode(stringToSign));
|
|
796
|
+
// Convert signature to hex
|
|
797
|
+
const signatureHex = Array.from(new Uint8Array(signature))
|
|
798
|
+
.map(b => b.toString(16).padStart(2, '0'))
|
|
799
|
+
.join('');
|
|
800
|
+
// Construct the final URL
|
|
801
|
+
const schemeAndHost = `https://${host}`;
|
|
802
|
+
return `${schemeAndHost}${canonicalUri}?${canonicalQueryString}&x-goog-signature=${signatureHex}`;
|
|
803
|
+
};
|
|
804
|
+
/**
|
|
805
|
+
* Transforms Gemini API request body to Vertex AI format
|
|
806
|
+
* Removes the 'id' field from functionResponse AND functionCall objects, as
|
|
807
|
+
* Vertex AI rejects it ("Unknown name \"id\" ... Cannot find field").
|
|
808
|
+
*
|
|
809
|
+
* Gemini API format: functionResponse: { id, name, response }, functionCall: { id, name, args }
|
|
810
|
+
* Vertex AI format: functionResponse: { name, response }, functionCall: { name, args }
|
|
811
|
+
*
|
|
812
|
+
* @param inputParams The request parameters to transform
|
|
813
|
+
*/
|
|
814
|
+
export const transformGeminiToVertexRequestBody = (inputParams) => {
|
|
815
|
+
if (inputParams && typeof inputParams === 'object' && 'contents' in inputParams) {
|
|
816
|
+
const params = inputParams;
|
|
817
|
+
if (params.contents) {
|
|
818
|
+
params.contents = params.contents.map((content) => {
|
|
819
|
+
if (content.parts) {
|
|
820
|
+
content.parts = content.parts.map((part) => {
|
|
821
|
+
// Remove 'id' field from functionResponse - Vertex AI doesn't accept it
|
|
822
|
+
if (part.functionResponse && part.functionResponse.id) {
|
|
823
|
+
const { id: _id, ...restOfFunctionResponse } = part.functionResponse;
|
|
824
|
+
return { ...part, functionResponse: restOfFunctionResponse };
|
|
825
|
+
}
|
|
826
|
+
if (part.functionCall && part.functionCall.id) {
|
|
827
|
+
const { id: _id, ...restOfFunctionCall } = part.functionCall;
|
|
828
|
+
return { ...part, functionCall: restOfFunctionCall };
|
|
829
|
+
}
|
|
830
|
+
return part;
|
|
831
|
+
});
|
|
832
|
+
}
|
|
833
|
+
return content;
|
|
834
|
+
});
|
|
835
|
+
}
|
|
836
|
+
}
|
|
837
|
+
};
|
|
838
|
+
export const OPENAI_AUDIO_FORMAT_TO_VERTEX_MIME_TYPE_MAPPING = {
|
|
839
|
+
mp3: 'audio/mp3',
|
|
840
|
+
wav: 'audio/wav',
|
|
841
|
+
opus: 'audio/ogg',
|
|
842
|
+
flac: 'audio/flac',
|
|
843
|
+
pcm16: 'audio/pcm',
|
|
844
|
+
'x-aac': 'audio/aac',
|
|
845
|
+
'x-m4a': 'audio/m4a',
|
|
846
|
+
mpeg: 'audio/mpeg',
|
|
847
|
+
mpga: 'audio/mpga',
|
|
848
|
+
mp4: 'audio/mp4',
|
|
849
|
+
webm: 'audio/webm',
|
|
850
|
+
};
|
|
851
|
+
export const transformInputAudioPart = (c) => {
|
|
852
|
+
const data = c.input_audio?.data;
|
|
853
|
+
const mimeType = OPENAI_AUDIO_FORMAT_TO_VERTEX_MIME_TYPE_MAPPING[c.input_audio?.format];
|
|
854
|
+
return {
|
|
855
|
+
inlineData: {
|
|
856
|
+
data: data ?? '',
|
|
857
|
+
mimeType,
|
|
858
|
+
},
|
|
859
|
+
};
|
|
860
|
+
};
|
|
861
|
+
export const googleTools = [
|
|
862
|
+
'googleSearch',
|
|
863
|
+
'google_search',
|
|
864
|
+
'googleSearchRetrieval',
|
|
865
|
+
'google_search_retrieval',
|
|
866
|
+
'computerUse',
|
|
867
|
+
'computer_use',
|
|
868
|
+
];
|
|
869
|
+
/**
|
|
870
|
+
* Transforms an OpenAI-style `{ type: "computer_use", ... }` tool into the
|
|
871
|
+
* Gemini API format `{ computerUse: { environment, excludedPredefinedFunctions } }`.
|
|
872
|
+
*/
|
|
873
|
+
export function transformComputerUseToolFromOpenAI(tool) {
|
|
874
|
+
const envMapping = {
|
|
875
|
+
browser: 'ENVIRONMENT_BROWSER',
|
|
876
|
+
unspecified: 'ENVIRONMENT_UNSPECIFIED',
|
|
877
|
+
ENVIRONMENT_BROWSER: 'ENVIRONMENT_BROWSER',
|
|
878
|
+
ENVIRONMENT_UNSPECIFIED: 'ENVIRONMENT_UNSPECIFIED',
|
|
879
|
+
};
|
|
880
|
+
const computerUseConfig = {};
|
|
881
|
+
if (tool.environment != null) {
|
|
882
|
+
const mapped = envMapping[tool.environment];
|
|
883
|
+
if (mapped) {
|
|
884
|
+
computerUseConfig.environment = mapped;
|
|
885
|
+
}
|
|
886
|
+
}
|
|
887
|
+
if (tool.excluded_predefined_functions != null) {
|
|
888
|
+
computerUseConfig.excludedPredefinedFunctions = tool.excluded_predefined_functions;
|
|
889
|
+
}
|
|
890
|
+
else if (tool.excludedPredefinedFunctions != null) {
|
|
891
|
+
computerUseConfig.excludedPredefinedFunctions = tool.excludedPredefinedFunctions;
|
|
892
|
+
}
|
|
893
|
+
return { computerUse: computerUseConfig };
|
|
894
|
+
}
|
|
895
|
+
export const transformGoogleTools = (tool) => {
|
|
896
|
+
const tools = [];
|
|
897
|
+
if (['googleSearch', 'google_search'].includes(tool.function.name)) {
|
|
898
|
+
const timeRangeFilter = tool.function.parameters?.timeRangeFilter;
|
|
899
|
+
tools.push({
|
|
900
|
+
googleSearch: {
|
|
901
|
+
// allow null
|
|
902
|
+
...(timeRangeFilter !== undefined && { timeRangeFilter }),
|
|
903
|
+
},
|
|
904
|
+
});
|
|
905
|
+
}
|
|
906
|
+
else if (['googleSearchRetrieval', 'google_search_retrieval'].includes(tool.function.name)) {
|
|
907
|
+
tools.push(buildGoogleSearchRetrievalTool(tool));
|
|
908
|
+
}
|
|
909
|
+
else if (['computerUse', 'computer_use'].includes(tool.function.name)) {
|
|
910
|
+
tools.push({
|
|
911
|
+
computerUse: {
|
|
912
|
+
environment: tool.function.parameters?.environment,
|
|
913
|
+
excludedPredefinedFunctions: tool.function.parameters?.excluded_predefined_functions,
|
|
914
|
+
},
|
|
915
|
+
});
|
|
916
|
+
}
|
|
917
|
+
return tools;
|
|
918
|
+
};
|
|
919
|
+
export const buildGoogleSearchRetrievalTool = (tool) => {
|
|
920
|
+
const googleSearchRetrievalTool = {
|
|
921
|
+
googleSearchRetrieval: {},
|
|
922
|
+
};
|
|
923
|
+
if (tool.function.parameters?.dynamicRetrievalConfig) {
|
|
924
|
+
googleSearchRetrievalTool.googleSearchRetrieval.dynamicRetrievalConfig =
|
|
925
|
+
tool.function.parameters.dynamicRetrievalConfig;
|
|
926
|
+
}
|
|
927
|
+
return googleSearchRetrievalTool;
|
|
928
|
+
};
|
|
929
|
+
/**
|
|
930
|
+
* Thinking support in Google Gemini models (as of 2026):
|
|
931
|
+
*
|
|
932
|
+
* thinkingLevel (Gemini 3+):
|
|
933
|
+
* gemini-3-flash-preview, gemini-3-pro-image-preview, gemini-3.1-pro-preview,
|
|
934
|
+
* gemini-3.1-flash-lite-preview, gemini-3.1-flash-image-preview, etc.
|
|
935
|
+
*
|
|
936
|
+
* thinkingBudget (Gemini 2.5 + special models):
|
|
937
|
+
* gemini-2.5-pro, gemini-2.5-flash, gemini-2.5-flash-lite,
|
|
938
|
+
* gemini-2.5-flash-native-audio-*, gemini-robotics-er-1.5-preview,
|
|
939
|
+
* gemini-2.0-flash-thinking-exp (deprecated experimental)
|
|
940
|
+
*
|
|
941
|
+
* No thinking support:
|
|
942
|
+
* gemini-2.0-flash, gemini-2.0-flash-lite, gemini-1.5-*, gemini-1.0-*,
|
|
943
|
+
* gemini-exp-*, gemma-*, learnlm-*
|
|
944
|
+
*
|
|
945
|
+
* Unversioned aliases (gemini-flash-lite-latest, gemini-pro-latest, etc.)
|
|
946
|
+
* resolve to 2.5+ and DO support thinking (thinkingBudget).
|
|
947
|
+
*
|
|
948
|
+
* @see https://ai.google.dev/gemini-api/docs/thinking
|
|
949
|
+
* @see https://firebase.google.com/docs/ai-logic/thinking
|
|
950
|
+
*/
|
|
951
|
+
const extractModelName = (modelName) => {
|
|
952
|
+
if (!modelName)
|
|
953
|
+
return '';
|
|
954
|
+
return modelName.includes('/') ? (modelName.split('/').pop() ?? '') : modelName;
|
|
955
|
+
};
|
|
956
|
+
/**
|
|
957
|
+
* Models that support thinking despite matching a NO_THINKING_SUPPORT prefix.
|
|
958
|
+
* gemini-2.0-flash-thinking-exp uses thinkingBudget even though the broader
|
|
959
|
+
* gemini-2.0 family does not support thinking.
|
|
960
|
+
*/
|
|
961
|
+
const THINKING_SUPPORT_EXCEPTIONS = ['gemini-2.0-flash-thinking'];
|
|
962
|
+
/**
|
|
963
|
+
* Model prefixes that do NOT support ANY form of thinking config.
|
|
964
|
+
* Sending thinkingConfig to these models will cause a 400 error.
|
|
965
|
+
*/
|
|
966
|
+
const NO_THINKING_SUPPORT_PREFIXES = [
|
|
967
|
+
'gemini-2.0',
|
|
968
|
+
'gemini-1.',
|
|
969
|
+
'gemini-exp',
|
|
970
|
+
'gemini-gemma',
|
|
971
|
+
'gemini-embed',
|
|
972
|
+
'gemma',
|
|
973
|
+
'learnlm',
|
|
974
|
+
];
|
|
975
|
+
/**
|
|
976
|
+
* Returns true when the model supports any form of thinking configuration
|
|
977
|
+
* (either `thinkingLevel` for Gemini 3+ or `thinkingBudget` for Gemini 2.5).
|
|
978
|
+
*
|
|
979
|
+
* Returns false for models that don't support thinking at all (most Gemini 2.0,
|
|
980
|
+
* Gemini 1.x, experimental models, gemma, learnlm).
|
|
981
|
+
* For these, `reasoning_effort` / `thinking` params should be silently dropped.
|
|
982
|
+
*/
|
|
983
|
+
export const supportsThinking = (modelName) => {
|
|
984
|
+
const actual = extractModelName(modelName);
|
|
985
|
+
if (!actual)
|
|
986
|
+
return false;
|
|
987
|
+
if (THINKING_SUPPORT_EXCEPTIONS.some(prefix => actual.startsWith(prefix)))
|
|
988
|
+
return true;
|
|
989
|
+
return !NO_THINKING_SUPPORT_PREFIXES.some(prefix => actual.startsWith(prefix));
|
|
990
|
+
};
|
|
991
|
+
/**
|
|
992
|
+
* Model prefixes that do NOT support the `thinkingLevel` enum API.
|
|
993
|
+
* These either use the integer `thinkingBudget` (gemini-2.5.x, gemini-robotics,
|
|
994
|
+
* gemini-2.0-flash-thinking) or don't support thinking at all.
|
|
995
|
+
*
|
|
996
|
+
* Everything not matched here (gemini-3+, future generations) defaults to thinkingLevel.
|
|
997
|
+
*/
|
|
998
|
+
const NON_THINKING_LEVEL_MODEL_PREFIXES = [
|
|
999
|
+
'gemini-2.',
|
|
1000
|
+
'gemini-1.',
|
|
1001
|
+
'gemini-pro',
|
|
1002
|
+
'gemini-flash',
|
|
1003
|
+
'gemini-exp',
|
|
1004
|
+
'gemini-robotics',
|
|
1005
|
+
'gemini-3-pro-image',
|
|
1006
|
+
];
|
|
1007
|
+
/**
|
|
1008
|
+
* Returns true when the model uses the `thinkingLevel` enum API (Gemini 3+).
|
|
1009
|
+
* Returns false for models that use `thinkingBudget` (Gemini 2.5, gemini-robotics)
|
|
1010
|
+
* or don't support thinking at all.
|
|
1011
|
+
*
|
|
1012
|
+
* IMPORTANT: Only call this after confirming `supportsThinking()` is true,
|
|
1013
|
+
* otherwise a non-thinking model will fall into the `thinkingBudget` path.
|
|
1014
|
+
*/
|
|
1015
|
+
export const supportsThinkingLevel = (modelName) => {
|
|
1016
|
+
const actual = extractModelName(modelName);
|
|
1017
|
+
if (!actual)
|
|
1018
|
+
return false;
|
|
1019
|
+
return !NON_THINKING_LEVEL_MODEL_PREFIXES.some(prefix => actual.startsWith(prefix));
|
|
1020
|
+
};
|
|
1021
|
+
/**
|
|
1022
|
+
* Returns the Google-recommended dummy thought signature for Gemini 3+ models.
|
|
1023
|
+
*
|
|
1024
|
+
* When a multi-turn conversation contains tool calls that have no `thoughtSignature`
|
|
1025
|
+
* (e.g. they were generated by an older model or by a non-Gemini provider), Gemini 3+
|
|
1026
|
+
* models require a placeholder to bypass their signature validator. Google explicitly
|
|
1027
|
+
* documents `base64("skip_thought_signature_validator")` as the bypass value:
|
|
1028
|
+
* https://ai.google.dev/gemini-api/docs/thought-signatures#faqs
|
|
1029
|
+
*
|
|
1030
|
+
* Only inject this for Gemini 3+ (check via `supportsThinkingLevel`). Older models do
|
|
1031
|
+
* not need or understand `thoughtSignature` at all.
|
|
1032
|
+
*/
|
|
1033
|
+
export const getDummyThoughtSignature = () => {
|
|
1034
|
+
return btoa('skip_thought_signature_validator');
|
|
1035
|
+
};
|
|
1036
|
+
/**
|
|
1037
|
+
* Returns true if the model is a Gemini 3 Flash variant.
|
|
1038
|
+
* Gemini 3 Flash supports `thinkingLevel: "minimal"` while other Gemini 3 models
|
|
1039
|
+
* only support `"low"` and above.
|
|
1040
|
+
*/
|
|
1041
|
+
export const isGemini3Flash = (modelName) => {
|
|
1042
|
+
const actualModelName = modelName.includes('/') ? (modelName.split('/').pop() ?? '') : modelName;
|
|
1043
|
+
return actualModelName.startsWith('gemini-3') && actualModelName.includes('flash');
|
|
1044
|
+
};
|
|
1045
|
+
/**
|
|
1046
|
+
* Builds the thinkingConfig object for Gemini 3+ models that use thinkingLevel.
|
|
1047
|
+
*
|
|
1048
|
+
* Maps OpenAI-compatible `reasoning_effort` strings to the `thinkingLevel` values
|
|
1049
|
+
* accepted by the Gemini API:
|
|
1050
|
+
* - "minimal" → "minimal" for Flash, "low" for other Gemini 3 models (Gemini 3 Pro/Ultra
|
|
1051
|
+
* do not support the "minimal" level)
|
|
1052
|
+
* - "low" → "low"
|
|
1053
|
+
* - "medium" → "medium"
|
|
1054
|
+
* - "high" → "high"
|
|
1055
|
+
* - "none" / "disable" → { thinkingLevel: "minimal"/"low", includeThoughts: false }
|
|
1056
|
+
*
|
|
1057
|
+
* Centralizes the contract so both Google AI Studio and Vertex AI providers stay in sync.
|
|
1058
|
+
*/
|
|
1059
|
+
export const buildGeminiThinkingConfig = (reasoningEffort, model = '') => {
|
|
1060
|
+
const isFlash = isGemini3Flash(model);
|
|
1061
|
+
// gemini-3.1-pro-preview accepts "medium" directly (same as Flash variants).
|
|
1062
|
+
const isGemini31Pro = model.includes('gemini-3.1-pro') || model.includes('gemini-3-1-pro');
|
|
1063
|
+
const disable = reasoningEffort === 'none';
|
|
1064
|
+
let level;
|
|
1065
|
+
if (disable) {
|
|
1066
|
+
// Disabled: use the lowest valid level but set includeThoughts: false.
|
|
1067
|
+
level = isFlash ? 'minimal' : 'low';
|
|
1068
|
+
}
|
|
1069
|
+
else if (reasoningEffort === 'minimal') {
|
|
1070
|
+
// "minimal" is only valid for Flash; non-Flash models use "low" as the floor.
|
|
1071
|
+
level = isFlash ? 'minimal' : 'low';
|
|
1072
|
+
}
|
|
1073
|
+
else if (reasoningEffort === 'medium' && !isFlash && !isGemini31Pro) {
|
|
1074
|
+
level = 'high';
|
|
1075
|
+
}
|
|
1076
|
+
else {
|
|
1077
|
+
level = reasoningEffort;
|
|
1078
|
+
}
|
|
1079
|
+
return { thinkingLevel: level, includeThoughts: !disable };
|
|
1080
|
+
};
|
|
1081
|
+
/**
|
|
1082
|
+
* Maps an Anthropic-style `budget_tokens` value to the nearest Gemini 3 `thinkingLevel`.
|
|
1083
|
+
*
|
|
1084
|
+
* Gemini 3 does not accept `thinkingBudget`; it uses a semantic level enum instead.
|
|
1085
|
+
* There is no official Google mapping, so we derive reasonable thresholds from
|
|
1086
|
+
* Gemini 2.5 Pro's documented budget range (128–32 768, default 8 192):
|
|
1087
|
+
*
|
|
1088
|
+
* Flash models (minimal / low / high):
|
|
1089
|
+
* budget_tokens < 4 096 → "minimal"
|
|
1090
|
+
* budget_tokens < 16 000 → "low"
|
|
1091
|
+
* budget_tokens >= 16 000 → "high"
|
|
1092
|
+
*
|
|
1093
|
+
* Non-Flash Gemini 3 models (low / high — "minimal" not supported):
|
|
1094
|
+
* budget_tokens < 8 192 → "low"
|
|
1095
|
+
* budget_tokens >= 8 192 → "high"
|
|
1096
|
+
*/
|
|
1097
|
+
export function budgetTokensToThinkingLevel(budgetTokens, model) {
|
|
1098
|
+
const isFlash = isGemini3Flash(model);
|
|
1099
|
+
if (budgetTokens === undefined) {
|
|
1100
|
+
// No budget provided — default to the lightest enabled level.
|
|
1101
|
+
return isFlash ? 'minimal' : 'low';
|
|
1102
|
+
}
|
|
1103
|
+
if (isFlash) {
|
|
1104
|
+
if (budgetTokens < 4096)
|
|
1105
|
+
return 'minimal';
|
|
1106
|
+
if (budgetTokens < 16000)
|
|
1107
|
+
return 'low';
|
|
1108
|
+
return 'high';
|
|
1109
|
+
}
|
|
1110
|
+
// Non-Flash Gemini 3 — "minimal" is not a valid level.
|
|
1111
|
+
return budgetTokens < 8192 ? 'low' : 'high';
|
|
1112
|
+
}
|
|
1113
|
+
/**
|
|
1114
|
+
* Map voice to Vertex AI format
|
|
1115
|
+
* Supports:
|
|
1116
|
+
* 1. OpenAI voice names (alloy, echo, fable, etc.) - will be mapped
|
|
1117
|
+
* 2. Vertex AI voice names (en-US-Studio-O, etc.) - used directly
|
|
1118
|
+
* 3. Dict with languageCode and name - used as-is
|
|
1119
|
+
*/
|
|
1120
|
+
export function mapVoiceToVertexFormat(voice, voiceMappings, defaultLanguageCode = 'en-US') {
|
|
1121
|
+
if (!voice) {
|
|
1122
|
+
return null;
|
|
1123
|
+
}
|
|
1124
|
+
if (typeof voice === 'object' && 'name' in voice && 'languageCode' in voice) {
|
|
1125
|
+
return {
|
|
1126
|
+
languageCode: voice.languageCode,
|
|
1127
|
+
name: voice.name,
|
|
1128
|
+
};
|
|
1129
|
+
}
|
|
1130
|
+
const voiceStr = voice;
|
|
1131
|
+
let mappedVoiceName;
|
|
1132
|
+
if (voiceMappings && voiceStr in voiceMappings) {
|
|
1133
|
+
mappedVoiceName = voiceMappings[voiceStr];
|
|
1134
|
+
}
|
|
1135
|
+
else {
|
|
1136
|
+
mappedVoiceName = voiceStr;
|
|
1137
|
+
}
|
|
1138
|
+
const parts = mappedVoiceName.split('-');
|
|
1139
|
+
let languageCode;
|
|
1140
|
+
if (parts.length >= 2) {
|
|
1141
|
+
languageCode = `${parts[0]}-${parts[1]}`;
|
|
1142
|
+
}
|
|
1143
|
+
else {
|
|
1144
|
+
languageCode = defaultLanguageCode;
|
|
1145
|
+
}
|
|
1146
|
+
return {
|
|
1147
|
+
languageCode,
|
|
1148
|
+
name: mappedVoiceName,
|
|
1149
|
+
};
|
|
1150
|
+
}
|
|
1151
|
+
//# sourceMappingURL=utils.js.map
|