@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,49 @@
|
|
|
1
|
+
import { Agent, EnvHttpProxyAgent } from 'undici';
|
|
2
|
+
import config from '../config.js';
|
|
3
|
+
import { guardedLookup } from './guardedLookup.js';
|
|
4
|
+
function buildDispatcher(ssrf, tls, connection) {
|
|
5
|
+
const connect = {
|
|
6
|
+
...tls,
|
|
7
|
+
...(ssrf === 'guard' ? { lookup: guardedLookup } : {}),
|
|
8
|
+
};
|
|
9
|
+
const timeouts = {
|
|
10
|
+
headersTimeout: connection?.headersTimeoutMs ?? config.UNDICI_HEADERS_TIMEOUT_MS,
|
|
11
|
+
bodyTimeout: connection?.bodyTimeoutMs ?? config.UNDICI_BODY_TIMEOUT_MS,
|
|
12
|
+
};
|
|
13
|
+
// When connection is provided it owns the proxy decision (undefined = direct). Falling back to
|
|
14
|
+
// process env would reintroduce a proxy the MCP store deliberately omitted.
|
|
15
|
+
const httpProxy = connection ? connection.proxyUrl : config.HTTP_PROXY;
|
|
16
|
+
const httpsProxy = connection ? connection.proxyUrl : config.HTTPS_PROXY;
|
|
17
|
+
const noProxy = connection ? connection.noProxy : config.NO_PROXY;
|
|
18
|
+
if (httpsProxy || httpProxy) {
|
|
19
|
+
// Mirrors proxy-bootstrap's global agent so per-request dispatchers keep honoring NO_PROXY.
|
|
20
|
+
return new EnvHttpProxyAgent({
|
|
21
|
+
httpProxy,
|
|
22
|
+
httpsProxy,
|
|
23
|
+
...(noProxy ? { noProxy } : {}),
|
|
24
|
+
...(tls ? { requestTls: tls } : {}),
|
|
25
|
+
connect,
|
|
26
|
+
...timeouts,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return new Agent({ connect, ...timeouts });
|
|
30
|
+
}
|
|
31
|
+
// Requests without per-request overrides — the overwhelming majority — share a dispatcher so
|
|
32
|
+
// connection pooling survives. Overrides are per provider account or per MCP server, so those build
|
|
33
|
+
// a dispatcher per request, matching what the handlers already did before safeFetch.
|
|
34
|
+
const sharedDispatchers = new Map();
|
|
35
|
+
export function createSafeDispatcher(ssrf, tls, connection) {
|
|
36
|
+
if (tls || connection)
|
|
37
|
+
return buildDispatcher(ssrf, tls, connection);
|
|
38
|
+
let shared = sharedDispatchers.get(ssrf);
|
|
39
|
+
if (!shared) {
|
|
40
|
+
shared = buildDispatcher(ssrf, undefined, undefined);
|
|
41
|
+
sharedDispatchers.set(ssrf, shared);
|
|
42
|
+
}
|
|
43
|
+
return shared;
|
|
44
|
+
}
|
|
45
|
+
/** @internal Exported for tests: drops the pooled dispatchers so proxy/timeout config is re-read. */
|
|
46
|
+
export function __resetSharedDispatchersForTests() {
|
|
47
|
+
sharedDispatchers.clear();
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=createSafeDispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSafeDispatcher.js","sourceRoot":"","sources":["../../src/http/createSafeDispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAmB,MAAM,QAAQ,CAAC;AACnE,OAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA6BhD,SAAS,eAAe,CACtB,IAAc,EACd,GAAoC,EACpC,UAAkD;IAElD,MAAM,OAAO,GAAG;QACd,GAAG,GAAG;QACN,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAC;IACF,MAAM,QAAQ,GAAG;QACf,cAAc,EAAE,UAAU,EAAE,gBAAgB,IAAI,MAAM,CAAC,yBAAyB;QAChF,WAAW,EAAE,UAAU,EAAE,aAAa,IAAI,MAAM,CAAC,sBAAsB;KACxE,CAAC;IAEF,+FAA+F;IAC/F,4EAA4E;IAC5E,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC;IACvE,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IACzE,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAElE,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;QAC5B,4FAA4F;QAC5F,OAAO,IAAI,iBAAiB,CAAC;YAC3B,SAAS;YACT,UAAU;YACV,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,OAAO;YACP,GAAG,QAAQ;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,6FAA6F;AAC7F,oGAAoG;AACpG,qFAAqF;AACrF,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAwB,CAAC;AAE1D,MAAM,UAAU,oBAAoB,CAClC,IAAc,EACd,GAAoC,EACpC,UAAkD;IAElD,IAAI,GAAG,IAAI,UAAU;QAAE,OAAO,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;IAErE,IAAI,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QACrD,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,gCAAgC;IAC9C,iBAAiB,CAAC,KAAK,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Thrown when safeFetch refuses a request because its target is internal or denylisted. */
|
|
2
|
+
export declare class SSRFError extends Error {
|
|
3
|
+
name: string;
|
|
4
|
+
/** Stable marker: Node's DNS lookup callback stringifies custom errors into a plain Error. */
|
|
5
|
+
code: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* undici surfaces connect-time failures as `TypeError('fetch failed')` with the real reason on the
|
|
9
|
+
* cause chain, so an SSRFError raised inside the DNS lookup would otherwise reach callers as an
|
|
10
|
+
* opaque network error. Recovers our error from anywhere on that chain.
|
|
11
|
+
*/
|
|
12
|
+
export declare function unwrapSafeFetchError(error: unknown): unknown;
|
|
13
|
+
/** 504 when the upstream never answered in time, 502 when it could not be reached at all. */
|
|
14
|
+
export type UpstreamConnectivityFailure = {
|
|
15
|
+
status: 502 | 504;
|
|
16
|
+
message: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Classifies a failure to reach an upstream at the network level (timeout, refused, DNS, reset, TLS), so callers
|
|
20
|
+
* can attribute it to the upstream instead of a generic gateway 500. Walks the cause chain because undici only
|
|
21
|
+
* reports `fetch failed` at the top; `undefined` for anything that is not a connectivity failure.
|
|
22
|
+
*/
|
|
23
|
+
export declare function getUpstreamConnectivityFailure(error: unknown): UpstreamConnectivityFailure | undefined;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/** Thrown when safeFetch refuses a request because its target is internal or denylisted. */
|
|
2
|
+
export class SSRFError extends Error {
|
|
3
|
+
name = 'SSRFError';
|
|
4
|
+
/** Stable marker: Node's DNS lookup callback stringifies custom errors into a plain Error. */
|
|
5
|
+
code = 'ERR_SSRF_BLOCKED';
|
|
6
|
+
}
|
|
7
|
+
// A malformed error chain should never turn error handling into an infinite loop.
|
|
8
|
+
const MAX_CAUSE_DEPTH = 10;
|
|
9
|
+
function readErrorField(error, field) {
|
|
10
|
+
if (!error || typeof error !== 'object')
|
|
11
|
+
return undefined;
|
|
12
|
+
const value = error[field];
|
|
13
|
+
return typeof value === 'string' ? value : undefined;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* undici/Node often preserve neither the SSRFError prototype nor a nested `.cause` when the failure
|
|
17
|
+
* originates inside `connect.lookup`: the callback error is re-created as a plain Error whose
|
|
18
|
+
* message is `"SSRFError: …"`. Match by code/name/message so callers still see SSRFError.
|
|
19
|
+
*/
|
|
20
|
+
function asSSRFError(error) {
|
|
21
|
+
if (error instanceof SSRFError)
|
|
22
|
+
return error;
|
|
23
|
+
const code = readErrorField(error, 'code');
|
|
24
|
+
const name = readErrorField(error, 'name');
|
|
25
|
+
const message = readErrorField(error, 'message');
|
|
26
|
+
if (code === 'ERR_SSRF_BLOCKED' || name === 'SSRFError') {
|
|
27
|
+
return new SSRFError(message || 'Blocked by SSRF guard');
|
|
28
|
+
}
|
|
29
|
+
if (message?.startsWith('SSRFError:')) {
|
|
30
|
+
return new SSRFError(message.slice('SSRFError:'.length).trim());
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
/** Each link of `error`'s `.cause` chain, outermost first; `error` itself is not yielded. */
|
|
35
|
+
function* causeChain(error) {
|
|
36
|
+
let cause = error?.cause;
|
|
37
|
+
for (let depth = 0; cause && depth < MAX_CAUSE_DEPTH; depth++) {
|
|
38
|
+
yield cause;
|
|
39
|
+
cause = cause.cause;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// A dual-stack connect fails with one error per address, wrapped in an AggregateError.
|
|
43
|
+
function aggregateMembers(link) {
|
|
44
|
+
const errors = link?.errors;
|
|
45
|
+
return Array.isArray(errors) ? errors : [];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* undici surfaces connect-time failures as `TypeError('fetch failed')` with the real reason on the
|
|
49
|
+
* cause chain, so an SSRFError raised inside the DNS lookup would otherwise reach callers as an
|
|
50
|
+
* opaque network error. Recovers our error from anywhere on that chain.
|
|
51
|
+
*/
|
|
52
|
+
export function unwrapSafeFetchError(error) {
|
|
53
|
+
const direct = asSSRFError(error);
|
|
54
|
+
if (direct)
|
|
55
|
+
return direct;
|
|
56
|
+
for (const link of causeChain(error)) {
|
|
57
|
+
for (const candidate of [link, ...aggregateMembers(link)]) {
|
|
58
|
+
const ssrf = asSSRFError(candidate);
|
|
59
|
+
if (ssrf)
|
|
60
|
+
return ssrf;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return error;
|
|
64
|
+
}
|
|
65
|
+
const FETCH_FAILED_MESSAGE = 'fetch failed';
|
|
66
|
+
const UPSTREAM_TIMEOUT_NAMES = new Set(['ConnectTimeoutError', 'HeadersTimeoutError', 'BodyTimeoutError']);
|
|
67
|
+
const UPSTREAM_TIMEOUT_CODES = new Set([
|
|
68
|
+
'UND_ERR_CONNECT_TIMEOUT',
|
|
69
|
+
'UND_ERR_HEADERS_TIMEOUT',
|
|
70
|
+
'UND_ERR_BODY_TIMEOUT',
|
|
71
|
+
'ETIMEDOUT',
|
|
72
|
+
]);
|
|
73
|
+
const UPSTREAM_UNREACHABLE_CODES = new Set([
|
|
74
|
+
'ECONNREFUSED',
|
|
75
|
+
'ENOTFOUND',
|
|
76
|
+
'EAI_AGAIN',
|
|
77
|
+
'ECONNRESET',
|
|
78
|
+
'EHOSTUNREACH',
|
|
79
|
+
'ENETUNREACH',
|
|
80
|
+
'EPIPE',
|
|
81
|
+
'UND_ERR_SOCKET',
|
|
82
|
+
]);
|
|
83
|
+
const UPSTREAM_TLS_CODE_PREFIXES = ['ERR_TLS_', 'ERR_SSL_', 'CERT_'];
|
|
84
|
+
function classifyNetworkError(error) {
|
|
85
|
+
const name = readErrorField(error, 'name');
|
|
86
|
+
const code = readErrorField(error, 'code');
|
|
87
|
+
if ((name && UPSTREAM_TIMEOUT_NAMES.has(name)) || (code && UPSTREAM_TIMEOUT_CODES.has(code)))
|
|
88
|
+
return 504;
|
|
89
|
+
if (code && (UPSTREAM_UNREACHABLE_CODES.has(code) || UPSTREAM_TLS_CODE_PREFIXES.some(p => code.startsWith(p)))) {
|
|
90
|
+
return 502;
|
|
91
|
+
}
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
// An AggregateError's own message is usually empty; its members carry the per-address reasons, one per line.
|
|
95
|
+
function describeCause(link) {
|
|
96
|
+
const memberMessages = aggregateMembers(link)
|
|
97
|
+
.map(member => readErrorField(member, 'message'))
|
|
98
|
+
.filter((message) => Boolean(message));
|
|
99
|
+
if (memberMessages.length > 0)
|
|
100
|
+
return [...new Set(memberMessages)].join('\n');
|
|
101
|
+
return readErrorField(link, 'message') || undefined;
|
|
102
|
+
}
|
|
103
|
+
function isFetchFailed(error) {
|
|
104
|
+
return error instanceof Error && error.message === FETCH_FAILED_MESSAGE;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Classifies a failure to reach an upstream at the network level (timeout, refused, DNS, reset, TLS), so callers
|
|
108
|
+
* can attribute it to the upstream instead of a generic gateway 500. Walks the cause chain because undici only
|
|
109
|
+
* reports `fetch failed` at the top; `undefined` for anything that is not a connectivity failure.
|
|
110
|
+
*/
|
|
111
|
+
export function getUpstreamConnectivityFailure(error) {
|
|
112
|
+
let failure;
|
|
113
|
+
for (const link of causeChain(error)) {
|
|
114
|
+
const status = [link, ...aggregateMembers(link)].map(classifyNetworkError).find(s => s !== undefined);
|
|
115
|
+
if (status === undefined)
|
|
116
|
+
continue;
|
|
117
|
+
// Deeper links sit closer to the socket, so the last recognised one carries the most specific reason.
|
|
118
|
+
failure = { status, message: describeCause(link) ?? failure?.message ?? FETCH_FAILED_MESSAGE };
|
|
119
|
+
}
|
|
120
|
+
if (failure)
|
|
121
|
+
return failure;
|
|
122
|
+
// undici says `fetch failed` for every connect-phase error; an unrecognised cause still means unreachable.
|
|
123
|
+
if (isFetchFailed(error)) {
|
|
124
|
+
return { status: 502, message: describeCause(error.cause) ?? FETCH_FAILED_MESSAGE };
|
|
125
|
+
}
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/http/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { LookupFunction } from 'node:net';
|
|
2
|
+
/**
|
|
3
|
+
* A DNS lookup that, in `enforce` mode, fails the connection when any resolved address is internal.
|
|
4
|
+
* In `monitor` mode a violation is only logged — the callback still receives the real address, so
|
|
5
|
+
* the connection proceeds (failing it here would be blocking, not monitoring). In `off` mode this
|
|
6
|
+
* passes through to a plain lookup with no classification at all.
|
|
7
|
+
*
|
|
8
|
+
* undici runs this inside the socket's own lookup, so the addresses we validate (in `enforce` mode)
|
|
9
|
+
* are exactly the ones the socket connects to. There is no separate "validate now, resolve again
|
|
10
|
+
* later" step, which is what closes the DNS-rebinding window.
|
|
11
|
+
*/
|
|
12
|
+
export declare const guardedLookup: LookupFunction;
|
|
13
|
+
/**
|
|
14
|
+
* Best-effort pre-flight check, used only when a forward proxy is configured: the socket then
|
|
15
|
+
* connects to the proxy, so {@link guardedLookup} would classify the proxy instead of the target.
|
|
16
|
+
* The proxy still resolves the target itself, so this cannot rule out rebinding.
|
|
17
|
+
*/
|
|
18
|
+
export declare function assertHostnameIsPublic(hostname: string): Promise<void>;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { lookup as dnsLookup } from 'node:dns';
|
|
2
|
+
import { lookup as dnsLookupAsync } from 'node:dns/promises';
|
|
3
|
+
import { SSRFError } from './errors.js';
|
|
4
|
+
import { isPublicIp } from './isPublicIp.js';
|
|
5
|
+
import { assertHostnameAllowed } from './urlverify/hostname.js';
|
|
6
|
+
import { getSsrfGuardMode, logSsrfViolation } from './urlverify/mode.js';
|
|
7
|
+
function assertAddressesArePublic(hostname, addresses) {
|
|
8
|
+
if (addresses.length === 0) {
|
|
9
|
+
throw new SSRFError(`Blocked: DNS for "${hostname}" returned no addresses`);
|
|
10
|
+
}
|
|
11
|
+
const internal = addresses.find(a => !isPublicIp(a.address));
|
|
12
|
+
if (internal) {
|
|
13
|
+
throw new SSRFError(`Blocked: "${hostname}" resolves to internal address ${internal.address}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A DNS lookup that, in `enforce` mode, fails the connection when any resolved address is internal.
|
|
18
|
+
* In `monitor` mode a violation is only logged — the callback still receives the real address, so
|
|
19
|
+
* the connection proceeds (failing it here would be blocking, not monitoring). In `off` mode this
|
|
20
|
+
* passes through to a plain lookup with no classification at all.
|
|
21
|
+
*
|
|
22
|
+
* undici runs this inside the socket's own lookup, so the addresses we validate (in `enforce` mode)
|
|
23
|
+
* are exactly the ones the socket connects to. There is no separate "validate now, resolve again
|
|
24
|
+
* later" step, which is what closes the DNS-rebinding window.
|
|
25
|
+
*/
|
|
26
|
+
export const guardedLookup = (hostname, options, callback) => {
|
|
27
|
+
const mode = getSsrfGuardMode();
|
|
28
|
+
if (mode === 'off') {
|
|
29
|
+
return dnsLookup(hostname, options, callback);
|
|
30
|
+
}
|
|
31
|
+
try {
|
|
32
|
+
assertHostnameAllowed(hostname);
|
|
33
|
+
}
|
|
34
|
+
catch (hostnameError) {
|
|
35
|
+
if (mode === 'enforce')
|
|
36
|
+
return callback(hostnameError, '');
|
|
37
|
+
logSsrfViolation({ hostname }, hostnameError);
|
|
38
|
+
}
|
|
39
|
+
const allOptions = { ...options, all: true };
|
|
40
|
+
dnsLookup(hostname, allOptions, (err, addresses) => {
|
|
41
|
+
if (err)
|
|
42
|
+
return callback(err, '');
|
|
43
|
+
try {
|
|
44
|
+
assertAddressesArePublic(hostname, addresses);
|
|
45
|
+
}
|
|
46
|
+
catch (ssrfError) {
|
|
47
|
+
if (mode === 'enforce')
|
|
48
|
+
return callback(ssrfError, '');
|
|
49
|
+
logSsrfViolation({ hostname }, ssrfError);
|
|
50
|
+
}
|
|
51
|
+
if (options.all)
|
|
52
|
+
return callback(null, addresses);
|
|
53
|
+
callback(null, addresses[0].address, addresses[0].family);
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Best-effort pre-flight check, used only when a forward proxy is configured: the socket then
|
|
58
|
+
* connects to the proxy, so {@link guardedLookup} would classify the proxy instead of the target.
|
|
59
|
+
* The proxy still resolves the target itself, so this cannot rule out rebinding.
|
|
60
|
+
*/
|
|
61
|
+
export async function assertHostnameIsPublic(hostname) {
|
|
62
|
+
assertHostnameAllowed(hostname);
|
|
63
|
+
let addresses;
|
|
64
|
+
try {
|
|
65
|
+
addresses = await dnsLookupAsync(hostname, { all: true });
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
throw new SSRFError(`Blocked: host "${hostname}" could not be resolved`);
|
|
69
|
+
}
|
|
70
|
+
assertAddressesArePublic(hostname, addresses);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=guardedLookup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardedLookup.js","sourceRoot":"","sources":["../../src/http/guardedLookup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { createSafeDispatcher, type SafeFetchConnectionOptions, type SafeFetchTlsOptions, } from './createSafeDispatcher.js';
|
|
2
|
+
export { SSRFError, getUpstreamConnectivityFailure, type UpstreamConnectivityFailure } from './errors.js';
|
|
3
|
+
export { assertHostnameIsPublic, guardedLookup } from './guardedLookup.js';
|
|
4
|
+
export { isPublicIp } from './isPublicIp.js';
|
|
5
|
+
export { assertMeshTlsFilesReadable, createMeshHttpsAgent, isInternalMeshUrl, isMeshMutualTlsEnabled, meshNatsTlsOptions, meshServerTlsOptions, meshTlsExemptPathSet, meshTlsFetchOptions, meshTlsHttpsAgentOptions, normalizeInternalMeshUrl, } from './meshTls.js';
|
|
6
|
+
export { assertSafeToFetch, safeFetch, type SafeFetchInit } from './safeFetch.js';
|
|
7
|
+
export type { SsrfMode } from './types.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { createSafeDispatcher, } from './createSafeDispatcher.js';
|
|
2
|
+
export { SSRFError, getUpstreamConnectivityFailure } from './errors.js';
|
|
3
|
+
export { assertHostnameIsPublic, guardedLookup } from './guardedLookup.js';
|
|
4
|
+
export { isPublicIp } from './isPublicIp.js';
|
|
5
|
+
export { assertMeshTlsFilesReadable, createMeshHttpsAgent, isInternalMeshUrl, isMeshMutualTlsEnabled, meshNatsTlsOptions, meshServerTlsOptions, meshTlsExemptPathSet, meshTlsFetchOptions, meshTlsHttpsAgentOptions, normalizeInternalMeshUrl, } from './meshTls.js';
|
|
6
|
+
export { assertSafeToFetch, safeFetch } from './safeFetch.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/http/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAGrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,8BAA8B,EAAoC,MAAM,UAAU,CAAC;AACvG,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAsB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isPublicIp(ip: string): boolean;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { isIPv4, isIPv6 } from 'node:net';
|
|
2
|
+
import config from '../config.js';
|
|
3
|
+
import { URL_VERIFY_CONFIG } from './urlverify/config.js';
|
|
4
|
+
import { isIpInCidr, parseIp } from './urlverify/ip.js';
|
|
5
|
+
/**
|
|
6
|
+
* True only for a public, internet-routable IP; any internal/reserved/unparseable address is false.
|
|
7
|
+
*
|
|
8
|
+
* Built on top of servicefoundry-server's `src/urlverify/{config,ip}.ts` (PLA-2199), ported verbatim
|
|
9
|
+
* into `./urlverify/`: `URL_VERIFY_CONFIG.denyCidrsV4/denyCidrsV6/extraDenyCidrs` is the source of
|
|
10
|
+
* truth for which ranges are non-public, and `parseIp`/`isIpInCidr` do the byte-level matching.
|
|
11
|
+
* `SSRF_BLOCKED_EXACT_IPS` is an addition on top (not part of the ported files) for blocking single
|
|
12
|
+
* addresses without needing a CIDR.
|
|
13
|
+
*
|
|
14
|
+
* Always classifies — callers (`safeFetch`'s `assertTargetIsPublic`, `guardedLookup`) decide whether
|
|
15
|
+
* the guard is off, log-only, or blocking via `getSsrfGuardMode()`.
|
|
16
|
+
*/
|
|
17
|
+
function blockedExactIps() {
|
|
18
|
+
return new Set(config.SSRF_BLOCKED_EXACT_IPS.map(ip => normalizeIp(ip)));
|
|
19
|
+
}
|
|
20
|
+
function normalizeIp(ip) {
|
|
21
|
+
let normalized = ip.replace(/\.+$/, '').toLowerCase();
|
|
22
|
+
if (normalized.startsWith('[') && normalized.endsWith(']')) {
|
|
23
|
+
normalized = normalized.slice(1, -1);
|
|
24
|
+
}
|
|
25
|
+
return normalized;
|
|
26
|
+
}
|
|
27
|
+
/** Unmaps IPv4-mapped IPv6 (`::ffff:x.x.x.x` or `::ffff:7f00:1`) to the embedded IPv4 string when present. */
|
|
28
|
+
function unmapIpv4MappedAddress(ip) {
|
|
29
|
+
const normalized = normalizeIp(ip);
|
|
30
|
+
if (!normalized.startsWith('::ffff:')) {
|
|
31
|
+
return normalized;
|
|
32
|
+
}
|
|
33
|
+
const embedded = normalized.slice('::ffff:'.length);
|
|
34
|
+
if (isIPv4(embedded)) {
|
|
35
|
+
return embedded;
|
|
36
|
+
}
|
|
37
|
+
const hexParts = embedded.split(':');
|
|
38
|
+
if (hexParts.length === 2 && hexParts.every(part => /^[0-9a-f]{1,4}$/i.test(part))) {
|
|
39
|
+
const hi = parseInt(hexParts[0], 16);
|
|
40
|
+
const lo = parseInt(hexParts[1], 16);
|
|
41
|
+
return `${(hi >> 8) & 0xff}.${hi & 0xff}.${(lo >> 8) & 0xff}.${lo & 0xff}`;
|
|
42
|
+
}
|
|
43
|
+
return normalized;
|
|
44
|
+
}
|
|
45
|
+
function isDeniedByCidrs(ip) {
|
|
46
|
+
const parsed = parseIp(ip);
|
|
47
|
+
if (!parsed) {
|
|
48
|
+
return true; // unparseable — fail closed, same as the pre-ported implementation.
|
|
49
|
+
}
|
|
50
|
+
const denyCidrs = parsed.version === 4 ? URL_VERIFY_CONFIG.denyCidrsV4 : URL_VERIFY_CONFIG.denyCidrsV6;
|
|
51
|
+
return [...denyCidrs, ...URL_VERIFY_CONFIG.extraDenyCidrs].some(cidr => isIpInCidr(parsed.bytes, cidr));
|
|
52
|
+
}
|
|
53
|
+
export function isPublicIp(ip) {
|
|
54
|
+
const candidate = unmapIpv4MappedAddress(ip);
|
|
55
|
+
if (blockedExactIps().has(candidate)) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
if (isIPv4(candidate) || isIPv6(candidate)) {
|
|
59
|
+
return !isDeniedByCidrs(candidate);
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=isPublicIp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isPublicIp.js","sourceRoot":"","sources":["../../src/http/isPublicIp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Makes the process-wide `fetch` carry mesh TLS material for calls the gateway makes to ITSELF.
|
|
3
|
+
*
|
|
4
|
+
* THIS IS THE ONE SANCTIONED EXCEPTION to the rule in {@link ../http/meshTls} that the material is
|
|
5
|
+
* never installed globally, and it does not weaken it: what goes on the global dispatcher is a
|
|
6
|
+
* router, not the material. Anything whose origin is not exactly {@link loopbackOrigin} is handed
|
|
7
|
+
* to the unchanged base dispatcher, so no provider, customer MCP server or auth host can be reached
|
|
8
|
+
* with the client certificate — or, worse, with a `ca` that replaces the default trust store and
|
|
9
|
+
* would fail verification against every public host.
|
|
10
|
+
*
|
|
11
|
+
* Why it is needed at all: {@link loopbackFetch} already fixes every loopback caller that lets us
|
|
12
|
+
* pass a `fetch` in (`mcpGateway/connectedLocalClient.ts`, and agent model calls via
|
|
13
|
+
* `createLoopbackOpenAILLM`). Two still do not: registered-MCP (`RemoteMCP` from
|
|
14
|
+
* `@truefoundry/utils`) and the channels session/turn client (`AgentSessionClient` from
|
|
15
|
+
* `truefoundry-gateway-sdk`) each own their transport and expose no `fetch`/agent hook, so under
|
|
16
|
+
* TLS they present no client certificate and do not trust the internal CA unless this router is
|
|
17
|
+
* installed. The symptom is a bare `fetch failed: self-signed certificate in certificate chain`.
|
|
18
|
+
*
|
|
19
|
+
* Remove this once those clients accept a `fetch`, in favour of passing {@link loopbackFetch}.
|
|
20
|
+
* Note: OpenAI's Node shim uses `node-fetch`, which ignores undici's global dispatcher — model
|
|
21
|
+
* calls must use {@link loopbackFetch} directly, not this router alone.
|
|
22
|
+
*/
|
|
23
|
+
import type { Dispatcher } from 'undici';
|
|
24
|
+
/**
|
|
25
|
+
* Wraps `base` so loopback dispatches get the mesh material and everything else is untouched.
|
|
26
|
+
*
|
|
27
|
+
* A no-op when TLS is off — `loopbackTlsFetchOptions()` returns undefined, and the origin is plain
|
|
28
|
+
* http anyway — so this is safe to install unconditionally at bootstrap. It is resolved per
|
|
29
|
+
* dispatch instead of at wrap time because the wrap happens during bootstrap, before anything has
|
|
30
|
+
* established that the certificate files are readable.
|
|
31
|
+
*/
|
|
32
|
+
export declare function withLoopbackMeshTls(base: Dispatcher): Dispatcher;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createSafeDispatcher } from './createSafeDispatcher.js';
|
|
2
|
+
import { isLoopbackUrl } from './loopbackFetch.js';
|
|
3
|
+
import { loopbackTlsFetchOptions } from './meshTls.js';
|
|
4
|
+
/**
|
|
5
|
+
* Keyed on the certificate rather than built once, so a reissued certificate is picked up without
|
|
6
|
+
* a restart, and pooled rather than built per call, because this sits under the agent's token
|
|
7
|
+
* streaming — `createSafeDispatcher` builds a fresh Agent whenever TLS options are passed, which
|
|
8
|
+
* would mean a new connection pool per request.
|
|
9
|
+
*/
|
|
10
|
+
let pooled;
|
|
11
|
+
function loopbackTlsDispatcher() {
|
|
12
|
+
const tls = loopbackTlsFetchOptions();
|
|
13
|
+
if (!tls)
|
|
14
|
+
return undefined;
|
|
15
|
+
if (pooled?.cert !== tls.cert) {
|
|
16
|
+
// `ssrf: 'none'` for the same reason loopbackFetch needs it: `localhost` is on the urlverify
|
|
17
|
+
// hostname denylist, so the guarded mode would block the call outright.
|
|
18
|
+
pooled = { cert: tls.cert, dispatcher: createSafeDispatcher('none', tls, undefined) };
|
|
19
|
+
}
|
|
20
|
+
return pooled.dispatcher;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Wraps `base` so loopback dispatches get the mesh material and everything else is untouched.
|
|
24
|
+
*
|
|
25
|
+
* A no-op when TLS is off — `loopbackTlsFetchOptions()` returns undefined, and the origin is plain
|
|
26
|
+
* http anyway — so this is safe to install unconditionally at bootstrap. It is resolved per
|
|
27
|
+
* dispatch instead of at wrap time because the wrap happens during bootstrap, before anything has
|
|
28
|
+
* established that the certificate files are readable.
|
|
29
|
+
*/
|
|
30
|
+
export function withLoopbackMeshTls(base) {
|
|
31
|
+
return base.compose(dispatch => (options, handler) => {
|
|
32
|
+
if (isLoopbackUrl(options.origin ?? '')) {
|
|
33
|
+
const loopback = loopbackTlsDispatcher();
|
|
34
|
+
if (loopback)
|
|
35
|
+
return loopback.dispatch(options, handler);
|
|
36
|
+
}
|
|
37
|
+
return dispatch(options, handler);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=loopbackDispatcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopbackDispatcher.js","sourceRoot":"","sources":["../../src/http/loopbackDispatcher.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAEpD;;;;;GAKG;AACH,IAAI,MAA4D,CAAC;AAEjE,SAAS,qBAAqB;IAC5B,MAAM,GAAG,GAAG,uBAAuB,EAAE,CAAC;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAE3B,IAAI,MAAM,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,6FAA6F;QAC7F,wEAAwE;QACxE,MAAM,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,oBAAoB,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC;IACxF,CAAC;IACD,OAAO,MAAM,CAAC,UAAU,CAAC;AAC3B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAgB;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;QACnD,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;YACzC,IAAI,QAAQ;gBAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether `url` targets this gateway's own listener, and so should use {@link loopbackFetch}.
|
|
3
|
+
*
|
|
4
|
+
* Compared by origin rather than by hostname: an external MCP server on `localhost` at a different
|
|
5
|
+
* port is not us, and — the case that actually matters — a customer's remote MCP URL must never pick
|
|
6
|
+
* up the internal material. Call sites that build transports for both loopback and remote targets
|
|
7
|
+
* (`mcpGateway/connectedLocalClient.ts`) gate on this.
|
|
8
|
+
*/
|
|
9
|
+
export declare function isLoopbackUrl(url: string | URL): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Matches the MCP SDK's `FetchLike` and OpenAI's `fetch` override — a drop-in for global `fetch`
|
|
12
|
+
* elsewhere when the target is this process.
|
|
13
|
+
*
|
|
14
|
+
* Returns the TLS material afresh per call rather than closing over it, so a process that boots with
|
|
15
|
+
* TLS off does not cache an empty option set that would then be wrong. `meshTlsFetchOptions` caches
|
|
16
|
+
* the file reads, so this is not a per-request disk hit.
|
|
17
|
+
*/
|
|
18
|
+
export declare const loopbackFetch: (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `fetch` for calls the gateway makes to itself.
|
|
3
|
+
*
|
|
4
|
+
* Several paths call the gateway back through its own port: the MCP transport probe and client
|
|
5
|
+
* (`/{tenant}/mcp/{server}/server`), the semantic-cache embeddings hop, complexity routing, and the
|
|
6
|
+
* agent channels client. Once the listener serves HTTPS with mutual TLS, plain `fetch` fails those
|
|
7
|
+
* twice over — it does not trust the internal CA, and it presents no client certificate — so they
|
|
8
|
+
* need a dispatcher carrying the pod's own material.
|
|
9
|
+
*
|
|
10
|
+
* `ssrf: 'none'` is required, not incidental: `localhost` is on the hostname denylist in
|
|
11
|
+
* `urlverify/config.ts`, so the guarded mode would block every loopback call. That is safe here
|
|
12
|
+
* because the target is built from `config.PORT` rather than from tenant or request input — the
|
|
13
|
+
* existing loopback call in `handlers/complexityRouting` already does the same thing for the same
|
|
14
|
+
* reason.
|
|
15
|
+
*
|
|
16
|
+
* DO NOT use this as a general-purpose fetch. It carries the client certificate and, more
|
|
17
|
+
* dangerously, a `ca` that REPLACES the default trust store — pointed at any public host it would
|
|
18
|
+
* fail verification against every provider the gateway talks to.
|
|
19
|
+
*/
|
|
20
|
+
import { loopbackOrigin, loopbackTlsFetchOptions } from './meshTls.js';
|
|
21
|
+
import { safeFetch } from './safeFetch.js';
|
|
22
|
+
/**
|
|
23
|
+
* Whether `url` targets this gateway's own listener, and so should use {@link loopbackFetch}.
|
|
24
|
+
*
|
|
25
|
+
* Compared by origin rather than by hostname: an external MCP server on `localhost` at a different
|
|
26
|
+
* port is not us, and — the case that actually matters — a customer's remote MCP URL must never pick
|
|
27
|
+
* up the internal material. Call sites that build transports for both loopback and remote targets
|
|
28
|
+
* (`mcpGateway/connectedLocalClient.ts`) gate on this.
|
|
29
|
+
*/
|
|
30
|
+
export function isLoopbackUrl(url) {
|
|
31
|
+
try {
|
|
32
|
+
return new URL(url instanceof URL ? url.href : url).origin === loopbackOrigin();
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Matches the MCP SDK's `FetchLike` and OpenAI's `fetch` override — a drop-in for global `fetch`
|
|
40
|
+
* elsewhere when the target is this process.
|
|
41
|
+
*
|
|
42
|
+
* Returns the TLS material afresh per call rather than closing over it, so a process that boots with
|
|
43
|
+
* TLS off does not cache an empty option set that would then be wrong. `meshTlsFetchOptions` caches
|
|
44
|
+
* the file reads, so this is not a per-request disk hit.
|
|
45
|
+
*/
|
|
46
|
+
export const loopbackFetch = (input, init) => safeFetch(input, { ...init, ssrf: 'none', tls: loopbackTlsFetchOptions() });
|
|
47
|
+
//# sourceMappingURL=loopbackFetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopbackFetch.js","sourceRoot":"","sources":["../../src/http/loopbackFetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,GAAiB;IAC7C,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;IAClF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAA6B,EAAE,IAAkB,EAAqB,EAAE,CACpG,SAAS,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,uBAAuB,EAAE,EAAE,CAAC,CAAC"}
|