@llumiverse/drivers 1.2.0 → 1.4.0-dev.20260629.090753Z
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/lib/{types/adobe → adobe}/firefly.d.ts +2 -1
- package/lib/adobe/firefly.d.ts.map +1 -0
- package/lib/adobe/firefly.js +120 -0
- package/lib/adobe/firefly.js.map +1 -0
- package/lib/anthropic/index.d.ts +23 -0
- package/lib/anthropic/index.d.ts.map +1 -0
- package/lib/anthropic/index.js +68 -0
- package/lib/anthropic/index.js.map +1 -0
- package/lib/{types/azure → azure}/azure_foundry.d.ts +9 -7
- package/lib/azure/azure_foundry.d.ts.map +1 -0
- package/lib/{esm/azure → azure}/azure_foundry.js +138 -124
- package/lib/azure/azure_foundry.js.map +1 -0
- package/lib/{types/bedrock → bedrock}/converse.d.ts +2 -2
- package/lib/bedrock/converse.d.ts.map +1 -0
- package/lib/{esm/bedrock → bedrock}/converse.js +86 -79
- package/lib/bedrock/converse.js.map +1 -0
- package/lib/bedrock/embeddings.d.ts +4 -0
- package/lib/bedrock/embeddings.d.ts.map +1 -0
- package/lib/bedrock/embeddings.js +359 -0
- package/lib/bedrock/embeddings.js.map +1 -0
- package/lib/{types/bedrock → bedrock}/index.d.ts +33 -9
- package/lib/bedrock/index.d.ts.map +1 -0
- package/lib/{esm/bedrock → bedrock}/index.js +599 -324
- package/lib/bedrock/index.js.map +1 -0
- package/lib/{types/bedrock → bedrock}/nova-image-payload.d.ts +5 -5
- package/lib/bedrock/nova-image-payload.d.ts.map +1 -0
- package/lib/{esm/bedrock → bedrock}/nova-image-payload.js +31 -36
- package/lib/bedrock/nova-image-payload.js.map +1 -0
- package/lib/{types/bedrock → bedrock}/payloads.d.ts +1 -1
- package/lib/bedrock/payloads.d.ts.map +1 -0
- package/lib/{cjs/bedrock → bedrock}/payloads.js.map +1 -1
- package/lib/{types/bedrock → bedrock}/s3.d.ts +3 -2
- package/lib/bedrock/s3.d.ts.map +1 -0
- package/lib/{esm/bedrock → bedrock}/s3.js +27 -23
- package/lib/bedrock/s3.js.map +1 -0
- package/lib/{types/bedrock → bedrock}/twelvelabs.d.ts +8 -9
- package/lib/bedrock/twelvelabs.d.ts.map +1 -0
- package/lib/{esm/bedrock → bedrock}/twelvelabs.js +17 -21
- package/lib/bedrock/twelvelabs.js.map +1 -0
- package/lib/{types/groq → groq}/index.d.ts +6 -4
- package/lib/groq/index.d.ts.map +1 -0
- package/lib/{esm/groq → groq}/index.js +72 -39
- package/lib/groq/index.js.map +1 -0
- package/lib/{types/huggingface_ie.d.ts → huggingface_ie.d.ts} +4 -3
- package/lib/huggingface_ie.d.ts.map +1 -0
- package/lib/{esm/huggingface_ie.js → huggingface_ie.js} +32 -31
- package/lib/huggingface_ie.js.map +1 -0
- package/lib/index.d.ts +16 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +16 -0
- package/lib/index.js.map +1 -0
- package/lib/{types/mistral → mistral}/index.d.ts +6 -5
- package/lib/mistral/index.d.ts.map +1 -0
- package/lib/{esm/mistral → mistral}/index.js +66 -38
- package/lib/mistral/index.js.map +1 -0
- package/lib/{types/mistral → mistral}/types.d.ts +1 -0
- package/lib/mistral/types.d.ts.map +1 -0
- package/lib/mistral/types.js.map +1 -0
- package/lib/{types/openai → openai}/azure_openai.d.ts +5 -4
- package/lib/openai/azure_openai.d.ts.map +1 -0
- package/lib/{esm/openai → openai}/azure_openai.js +17 -14
- package/lib/openai/azure_openai.js.map +1 -0
- package/lib/openai/drivers.d.ts +4 -0
- package/lib/openai/drivers.d.ts.map +1 -0
- package/lib/openai/drivers.js +9 -0
- package/lib/openai/drivers.js.map +1 -0
- package/lib/{types/openai → openai}/index.d.ts +17 -5
- package/lib/openai/index.d.ts.map +1 -0
- package/lib/{esm/openai → openai}/index.js +254 -148
- package/lib/openai/index.js.map +1 -0
- package/lib/{types/openai → openai}/openai.d.ts +3 -3
- package/lib/openai/openai.d.ts.map +1 -0
- package/lib/openai/openai.js +15 -0
- package/lib/openai/openai.js.map +1 -0
- package/lib/{types/openai → openai}/openai_compatible.d.ts +3 -3
- package/lib/openai/openai_compatible.d.ts.map +1 -0
- package/lib/{esm/openai → openai}/openai_compatible.js +14 -11
- package/lib/openai/openai_compatible.js.map +1 -0
- package/lib/{types/openai → openai}/openai_format.d.ts +3 -2
- package/lib/openai/openai_format.d.ts.map +1 -0
- package/lib/{esm/openai → openai}/openai_format.js +66 -24
- package/lib/openai/openai_format.js.map +1 -0
- package/lib/{types/replicate.d.ts → replicate.d.ts} +3 -2
- package/lib/replicate.d.ts.map +1 -0
- package/lib/{esm/replicate.js → replicate.js} +59 -49
- package/lib/replicate.js.map +1 -0
- package/lib/shared/claude-messages.d.ts +99 -0
- package/lib/shared/claude-messages.d.ts.map +1 -0
- package/lib/shared/claude-messages.js +869 -0
- package/lib/shared/claude-messages.js.map +1 -0
- package/lib/{types/shared → shared}/claude-thinking.d.ts +1 -1
- package/lib/shared/claude-thinking.d.ts.map +1 -0
- package/lib/{esm/shared → shared}/claude-thinking.js +5 -7
- package/lib/shared/claude-thinking.js.map +1 -0
- package/lib/shared/debug-prompt.d.ts +5 -0
- package/lib/shared/debug-prompt.d.ts.map +1 -0
- package/lib/shared/debug-prompt.js +25 -0
- package/lib/shared/debug-prompt.js.map +1 -0
- package/lib/{types/test-driver → test-driver}/TestErrorCompletionStream.d.ts +1 -1
- package/lib/test-driver/TestErrorCompletionStream.d.ts.map +1 -0
- package/lib/test-driver/TestErrorCompletionStream.js +16 -0
- package/lib/test-driver/TestErrorCompletionStream.js.map +1 -0
- package/lib/{types/test-driver → test-driver}/TestValidationErrorCompletionStream.d.ts +1 -1
- package/lib/test-driver/TestValidationErrorCompletionStream.d.ts.map +1 -0
- package/lib/{esm/test-driver → test-driver}/TestValidationErrorCompletionStream.js +4 -4
- package/lib/test-driver/TestValidationErrorCompletionStream.js.map +1 -0
- package/lib/{types/test-driver → test-driver}/index.d.ts +3 -3
- package/lib/test-driver/index.d.ts.map +1 -0
- package/lib/{esm/test-driver → test-driver}/index.js +20 -20
- package/lib/test-driver/index.js.map +1 -0
- package/lib/{types/test-driver → test-driver}/utils.d.ts +1 -1
- package/lib/test-driver/utils.d.ts.map +1 -0
- package/lib/{esm/test-driver → test-driver}/utils.js +4 -4
- package/lib/test-driver/utils.js.map +1 -0
- package/lib/togetherai/index.d.ts +15 -0
- package/lib/togetherai/index.d.ts.map +1 -0
- package/lib/togetherai/index.js +54 -0
- package/lib/togetherai/index.js.map +1 -0
- package/lib/{types/togetherai → togetherai}/interfaces.d.ts +1 -1
- package/lib/togetherai/interfaces.d.ts.map +1 -0
- package/lib/{cjs/watsonx → togetherai}/interfaces.js.map +1 -1
- package/lib/vertexai/debug.d.ts +2 -0
- package/lib/vertexai/debug.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/debug.js +1 -1
- package/lib/vertexai/debug.js.map +1 -0
- package/lib/vertexai/embeddings/embed-legacy-multimodal.d.ts +9 -0
- package/lib/vertexai/embeddings/embed-legacy-multimodal.d.ts.map +1 -0
- package/lib/vertexai/embeddings/embed-legacy-multimodal.js +141 -0
- package/lib/vertexai/embeddings/embed-legacy-multimodal.js.map +1 -0
- package/lib/vertexai/embeddings/embed.d.ts +13 -0
- package/lib/vertexai/embeddings/embed.d.ts.map +1 -0
- package/lib/vertexai/embeddings/embed.js +162 -0
- package/lib/vertexai/embeddings/embed.js.map +1 -0
- package/lib/vertexai/embeddings/source-utils.d.ts +9 -0
- package/lib/vertexai/embeddings/source-utils.d.ts.map +1 -0
- package/lib/vertexai/embeddings/source-utils.js +18 -0
- package/lib/vertexai/embeddings/source-utils.js.map +1 -0
- package/lib/{types/vertexai → vertexai}/index.d.ts +31 -19
- package/lib/vertexai/index.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/index.js +221 -159
- package/lib/vertexai/index.js.map +1 -0
- package/lib/vertexai/models/claude.d.ts +16 -0
- package/lib/vertexai/models/claude.d.ts.map +1 -0
- package/lib/vertexai/models/claude.js +65 -0
- package/lib/vertexai/models/claude.js.map +1 -0
- package/lib/{types/vertexai → vertexai}/models/gemini.d.ts +29 -5
- package/lib/vertexai/models/gemini.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/models/gemini.js +255 -127
- package/lib/vertexai/models/gemini.js.map +1 -0
- package/lib/{types/vertexai → vertexai}/models/imagen.d.ts +12 -11
- package/lib/vertexai/models/imagen.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/models/imagen.js +74 -47
- package/lib/vertexai/models/imagen.js.map +1 -0
- package/lib/{types/vertexai → vertexai}/models/llama.d.ts +4 -4
- package/lib/vertexai/models/llama.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/models/llama.js +37 -33
- package/lib/vertexai/models/llama.js.map +1 -0
- package/lib/vertexai/models.d.ts +21 -0
- package/lib/vertexai/models.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/models.js +12 -9
- package/lib/vertexai/models.js.map +1 -0
- package/lib/{types/watsonx → watsonx}/index.d.ts +4 -3
- package/lib/watsonx/index.d.ts.map +1 -0
- package/lib/{esm/watsonx → watsonx}/index.js +69 -41
- package/lib/watsonx/index.js.map +1 -0
- package/lib/watsonx/interfaces.d.ts.map +1 -0
- package/lib/{esm/watsonx → watsonx}/interfaces.js.map +1 -1
- package/lib/{types/xai → xai}/index.d.ts +4 -4
- package/lib/xai/index.d.ts.map +1 -0
- package/lib/{esm/xai → xai}/index.js +22 -18
- package/lib/xai/index.js.map +1 -0
- package/package.json +88 -36
- package/src/adobe/firefly.ts +60 -43
- package/src/anthropic/index.ts +121 -0
- package/src/azure/azure_foundry.ts +210 -165
- package/src/bedrock/converse.ts +124 -101
- package/src/bedrock/embeddings.test.ts +508 -0
- package/src/bedrock/embeddings.ts +517 -0
- package/src/bedrock/error-handling.test.ts +62 -14
- package/src/bedrock/index.ts +832 -466
- package/src/bedrock/nova-image-payload.ts +98 -91
- package/src/bedrock/payloads.ts +9 -9
- package/src/bedrock/s3.test.ts +39 -0
- package/src/bedrock/s3.ts +57 -38
- package/src/bedrock/streaming-tool-use.test.ts +86 -69
- package/src/bedrock/twelvelabs.ts +35 -32
- package/src/groq/index.ts +143 -60
- package/src/http-timeout-wiring.test.ts +263 -0
- package/src/huggingface_ie.ts +45 -61
- package/src/index.ts +15 -15
- package/src/mistral/index.ts +97 -48
- package/src/mistral/types.ts +13 -12
- package/src/openai/azure_openai.ts +35 -27
- package/src/openai/drivers.ts +9 -0
- package/src/openai/error-handling.test.ts +308 -113
- package/src/openai/index.ts +389 -254
- package/src/openai/openai.ts +6 -13
- package/src/openai/openai_compatible.ts +35 -25
- package/src/openai/openai_format.ts +90 -40
- package/src/replicate.ts +108 -86
- package/src/shared/claude-messages.test.ts +37 -0
- package/src/shared/claude-messages.ts +1085 -0
- package/src/shared/claude-thinking.ts +6 -12
- package/src/shared/debug-prompt.ts +28 -0
- package/src/test-driver/TestErrorCompletionStream.ts +9 -10
- package/src/test-driver/TestValidationErrorCompletionStream.ts +9 -10
- package/src/test-driver/index.ts +43 -27
- package/src/test-driver/utils.ts +8 -8
- package/src/togetherai/index.test.ts +32 -0
- package/src/togetherai/index.ts +64 -128
- package/src/togetherai/interfaces.ts +5 -5
- package/src/vertexai/debug.ts +3 -3
- package/src/vertexai/embeddings/embed-legacy-multimodal.ts +211 -0
- package/src/vertexai/embeddings/embed.ts +206 -0
- package/src/vertexai/embeddings/embeddings.test.ts +497 -0
- package/src/vertexai/embeddings/source-utils.test.ts +54 -0
- package/src/vertexai/embeddings/source-utils.ts +29 -0
- package/src/vertexai/index.ts +339 -253
- package/src/vertexai/models/claude-error-handling.test.ts +86 -39
- package/src/vertexai/models/claude-streaming-spacing.test.ts +82 -75
- package/src/vertexai/models/claude.ts +84 -1041
- package/src/vertexai/models/gemini-conversation-mutation.test.ts +65 -23
- package/src/vertexai/models/gemini-error-handling.test.ts +126 -10
- package/src/vertexai/models/gemini-orphaned-tool-result.test.ts +118 -0
- package/src/vertexai/models/gemini.ts +372 -182
- package/src/vertexai/models/imagen.ts +164 -100
- package/src/vertexai/models/llama.ts +70 -48
- package/src/vertexai/models.ts +36 -16
- package/src/watsonx/index.ts +101 -65
- package/src/watsonx/interfaces.ts +10 -15
- package/src/xai/index.ts +30 -30
- package/lib/cjs/adobe/firefly.js +0 -120
- package/lib/cjs/adobe/firefly.js.map +0 -1
- package/lib/cjs/azure/azure_foundry.js +0 -432
- package/lib/cjs/azure/azure_foundry.js.map +0 -1
- package/lib/cjs/bedrock/converse.js +0 -359
- package/lib/cjs/bedrock/converse.js.map +0 -1
- package/lib/cjs/bedrock/index.js +0 -1508
- package/lib/cjs/bedrock/index.js.map +0 -1
- package/lib/cjs/bedrock/nova-image-payload.js +0 -207
- package/lib/cjs/bedrock/nova-image-payload.js.map +0 -1
- package/lib/cjs/bedrock/payloads.js +0 -3
- package/lib/cjs/bedrock/s3.js +0 -107
- package/lib/cjs/bedrock/s3.js.map +0 -1
- package/lib/cjs/bedrock/twelvelabs.js +0 -87
- package/lib/cjs/bedrock/twelvelabs.js.map +0 -1
- package/lib/cjs/groq/index.js +0 -328
- package/lib/cjs/groq/index.js.map +0 -1
- package/lib/cjs/huggingface_ie.js +0 -201
- package/lib/cjs/huggingface_ie.js.map +0 -1
- package/lib/cjs/index.js +0 -31
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/mistral/index.js +0 -176
- package/lib/cjs/mistral/index.js.map +0 -1
- package/lib/cjs/mistral/types.js +0 -83
- package/lib/cjs/mistral/types.js.map +0 -1
- package/lib/cjs/openai/azure_openai.js +0 -72
- package/lib/cjs/openai/azure_openai.js.map +0 -1
- package/lib/cjs/openai/index.js +0 -1129
- package/lib/cjs/openai/index.js.map +0 -1
- package/lib/cjs/openai/openai.js +0 -21
- package/lib/cjs/openai/openai.js.map +0 -1
- package/lib/cjs/openai/openai_compatible.js +0 -63
- package/lib/cjs/openai/openai_compatible.js.map +0 -1
- package/lib/cjs/openai/openai_format.js +0 -131
- package/lib/cjs/openai/openai_format.js.map +0 -1
- package/lib/cjs/package.json +0 -3
- package/lib/cjs/replicate.js +0 -275
- package/lib/cjs/replicate.js.map +0 -1
- package/lib/cjs/shared/claude-thinking.js +0 -60
- package/lib/cjs/shared/claude-thinking.js.map +0 -1
- package/lib/cjs/test-driver/TestErrorCompletionStream.js +0 -20
- package/lib/cjs/test-driver/TestErrorCompletionStream.js.map +0 -1
- package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js +0 -24
- package/lib/cjs/test-driver/TestValidationErrorCompletionStream.js.map +0 -1
- package/lib/cjs/test-driver/index.js +0 -109
- package/lib/cjs/test-driver/index.js.map +0 -1
- package/lib/cjs/test-driver/utils.js +0 -30
- package/lib/cjs/test-driver/utils.js.map +0 -1
- package/lib/cjs/togetherai/index.js +0 -126
- package/lib/cjs/togetherai/index.js.map +0 -1
- package/lib/cjs/togetherai/interfaces.js +0 -3
- package/lib/cjs/togetherai/interfaces.js.map +0 -1
- package/lib/cjs/vertexai/debug.js +0 -12
- package/lib/cjs/vertexai/debug.js.map +0 -1
- package/lib/cjs/vertexai/embeddings/embeddings-image.js +0 -27
- package/lib/cjs/vertexai/embeddings/embeddings-image.js.map +0 -1
- package/lib/cjs/vertexai/embeddings/embeddings-text.js +0 -23
- package/lib/cjs/vertexai/embeddings/embeddings-text.js.map +0 -1
- package/lib/cjs/vertexai/index.js +0 -644
- package/lib/cjs/vertexai/index.js.map +0 -1
- package/lib/cjs/vertexai/models/claude.js +0 -917
- package/lib/cjs/vertexai/models/claude.js.map +0 -1
- package/lib/cjs/vertexai/models/gemini.js +0 -858
- package/lib/cjs/vertexai/models/gemini.js.map +0 -1
- package/lib/cjs/vertexai/models/imagen.js +0 -303
- package/lib/cjs/vertexai/models/imagen.js.map +0 -1
- package/lib/cjs/vertexai/models/llama.js +0 -183
- package/lib/cjs/vertexai/models/llama.js.map +0 -1
- package/lib/cjs/vertexai/models.js +0 -35
- package/lib/cjs/vertexai/models.js.map +0 -1
- package/lib/cjs/watsonx/index.js +0 -161
- package/lib/cjs/watsonx/index.js.map +0 -1
- package/lib/cjs/watsonx/interfaces.js +0 -3
- package/lib/cjs/xai/index.js +0 -65
- package/lib/cjs/xai/index.js.map +0 -1
- package/lib/esm/adobe/firefly.js +0 -116
- package/lib/esm/adobe/firefly.js.map +0 -1
- package/lib/esm/azure/azure_foundry.js.map +0 -1
- package/lib/esm/bedrock/converse.js.map +0 -1
- package/lib/esm/bedrock/index.js.map +0 -1
- package/lib/esm/bedrock/nova-image-payload.js.map +0 -1
- package/lib/esm/bedrock/payloads.js.map +0 -1
- package/lib/esm/bedrock/s3.js.map +0 -1
- package/lib/esm/bedrock/twelvelabs.js.map +0 -1
- package/lib/esm/groq/index.js.map +0 -1
- package/lib/esm/huggingface_ie.js.map +0 -1
- package/lib/esm/index.js +0 -15
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/mistral/index.js.map +0 -1
- package/lib/esm/mistral/types.js.map +0 -1
- package/lib/esm/openai/azure_openai.js.map +0 -1
- package/lib/esm/openai/index.js.map +0 -1
- package/lib/esm/openai/openai.js +0 -14
- package/lib/esm/openai/openai.js.map +0 -1
- package/lib/esm/openai/openai_compatible.js.map +0 -1
- package/lib/esm/openai/openai_format.js.map +0 -1
- package/lib/esm/replicate.js.map +0 -1
- package/lib/esm/shared/claude-thinking.js.map +0 -1
- package/lib/esm/test-driver/TestErrorCompletionStream.js +0 -16
- package/lib/esm/test-driver/TestErrorCompletionStream.js.map +0 -1
- package/lib/esm/test-driver/TestValidationErrorCompletionStream.js.map +0 -1
- package/lib/esm/test-driver/index.js.map +0 -1
- package/lib/esm/test-driver/utils.js.map +0 -1
- package/lib/esm/togetherai/index.js +0 -122
- package/lib/esm/togetherai/index.js.map +0 -1
- package/lib/esm/togetherai/interfaces.js.map +0 -1
- package/lib/esm/vertexai/debug.js.map +0 -1
- package/lib/esm/vertexai/embeddings/embeddings-image.js +0 -24
- package/lib/esm/vertexai/embeddings/embeddings-image.js.map +0 -1
- package/lib/esm/vertexai/embeddings/embeddings-text.js +0 -20
- package/lib/esm/vertexai/embeddings/embeddings-text.js.map +0 -1
- package/lib/esm/vertexai/index.js.map +0 -1
- package/lib/esm/vertexai/models/claude.js +0 -906
- package/lib/esm/vertexai/models/claude.js.map +0 -1
- package/lib/esm/vertexai/models/gemini.js.map +0 -1
- package/lib/esm/vertexai/models/imagen.js.map +0 -1
- package/lib/esm/vertexai/models/llama.js.map +0 -1
- package/lib/esm/vertexai/models.js.map +0 -1
- package/lib/esm/watsonx/index.js.map +0 -1
- package/lib/esm/xai/index.js.map +0 -1
- package/lib/types/adobe/firefly.d.ts.map +0 -1
- package/lib/types/azure/azure_foundry.d.ts.map +0 -1
- package/lib/types/bedrock/converse.d.ts.map +0 -1
- package/lib/types/bedrock/index.d.ts.map +0 -1
- package/lib/types/bedrock/nova-image-payload.d.ts.map +0 -1
- package/lib/types/bedrock/payloads.d.ts.map +0 -1
- package/lib/types/bedrock/s3.d.ts.map +0 -1
- package/lib/types/bedrock/twelvelabs.d.ts.map +0 -1
- package/lib/types/groq/index.d.ts.map +0 -1
- package/lib/types/huggingface_ie.d.ts.map +0 -1
- package/lib/types/index.d.ts +0 -15
- package/lib/types/index.d.ts.map +0 -1
- package/lib/types/mistral/index.d.ts.map +0 -1
- package/lib/types/mistral/types.d.ts.map +0 -1
- package/lib/types/openai/azure_openai.d.ts.map +0 -1
- package/lib/types/openai/index.d.ts.map +0 -1
- package/lib/types/openai/openai.d.ts.map +0 -1
- package/lib/types/openai/openai_compatible.d.ts.map +0 -1
- package/lib/types/openai/openai_format.d.ts.map +0 -1
- package/lib/types/replicate.d.ts.map +0 -1
- package/lib/types/shared/claude-thinking.d.ts.map +0 -1
- package/lib/types/test-driver/TestErrorCompletionStream.d.ts.map +0 -1
- package/lib/types/test-driver/TestValidationErrorCompletionStream.d.ts.map +0 -1
- package/lib/types/test-driver/index.d.ts.map +0 -1
- package/lib/types/test-driver/utils.d.ts.map +0 -1
- package/lib/types/togetherai/index.d.ts +0 -23
- package/lib/types/togetherai/index.d.ts.map +0 -1
- package/lib/types/togetherai/interfaces.d.ts.map +0 -1
- package/lib/types/vertexai/debug.d.ts +0 -2
- package/lib/types/vertexai/debug.d.ts.map +0 -1
- package/lib/types/vertexai/embeddings/embeddings-image.d.ts +0 -11
- package/lib/types/vertexai/embeddings/embeddings-image.d.ts.map +0 -1
- package/lib/types/vertexai/embeddings/embeddings-text.d.ts +0 -10
- package/lib/types/vertexai/embeddings/embeddings-text.d.ts.map +0 -1
- package/lib/types/vertexai/index.d.ts.map +0 -1
- package/lib/types/vertexai/models/claude.d.ts +0 -119
- package/lib/types/vertexai/models/claude.d.ts.map +0 -1
- package/lib/types/vertexai/models/gemini.d.ts.map +0 -1
- package/lib/types/vertexai/models/imagen.d.ts.map +0 -1
- package/lib/types/vertexai/models/llama.d.ts.map +0 -1
- package/lib/types/vertexai/models.d.ts +0 -20
- package/lib/types/vertexai/models.d.ts.map +0 -1
- package/lib/types/watsonx/index.d.ts.map +0 -1
- package/lib/types/watsonx/interfaces.d.ts.map +0 -1
- package/lib/types/xai/index.d.ts.map +0 -1
- package/src/vertexai/embeddings/embeddings-image.ts +0 -52
- package/src/vertexai/embeddings/embeddings-text.ts +0 -54
- /package/lib/{esm/bedrock → bedrock}/payloads.js +0 -0
- /package/lib/{esm/mistral → mistral}/types.js +0 -0
- /package/lib/{esm/togetherai → togetherai}/interfaces.js +0 -0
- /package/lib/{types/watsonx → watsonx}/interfaces.d.ts +0 -0
- /package/lib/{esm/watsonx → watsonx}/interfaces.js +0 -0
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
|
-
AIModel,
|
|
3
|
-
Completion,
|
|
4
|
-
CompletionChunkObject,
|
|
5
|
-
DriverOptions,
|
|
6
|
-
EmbeddingsOptions,
|
|
7
|
-
EmbeddingsResult,
|
|
8
|
-
ExecutionOptions,
|
|
9
|
-
ModelSearchPayload,
|
|
2
|
+
type AIModel,
|
|
3
|
+
type Completion,
|
|
4
|
+
type CompletionChunkObject,
|
|
5
|
+
type DriverOptions,
|
|
6
|
+
type EmbeddingsOptions,
|
|
7
|
+
type EmbeddingsResult,
|
|
8
|
+
type ExecutionOptions,
|
|
9
|
+
type ModelSearchPayload,
|
|
10
10
|
PromptRole,
|
|
11
|
-
PromptSegment,
|
|
11
|
+
type PromptSegment,
|
|
12
12
|
} from '@llumiverse/common';
|
|
13
|
-
import { AbstractDriver } from '@llumiverse/core';
|
|
13
|
+
import { AbstractDriver } from '@llumiverse/core/driver';
|
|
14
14
|
import { beforeEach, describe, expect, it } from 'vitest';
|
|
15
|
-
import {
|
|
15
|
+
import type { Tree } from '../../test/__helpers__/test-utils.js';
|
|
16
|
+
import { BedrockDriver, type BedrockPrompt } from './index.js';
|
|
16
17
|
|
|
17
18
|
// ---------------------------------------------------------------------------
|
|
18
19
|
// Unit tests: getExtractedStream tool use handling
|
|
@@ -28,7 +29,7 @@ describe('BedrockDriver getExtractedStream — tool use', () => {
|
|
|
28
29
|
});
|
|
29
30
|
|
|
30
31
|
it('emits an initial tool_use chunk on contentBlockStart', () => {
|
|
31
|
-
const chunk = driver
|
|
32
|
+
const chunk = driver.getExtractedStream(
|
|
32
33
|
{
|
|
33
34
|
contentBlockStart: {
|
|
34
35
|
contentBlockIndex: 1,
|
|
@@ -37,18 +38,18 @@ describe('BedrockDriver getExtractedStream — tool use', () => {
|
|
|
37
38
|
},
|
|
38
39
|
undefined,
|
|
39
40
|
undefined,
|
|
40
|
-
toolBlocks
|
|
41
|
+
toolBlocks,
|
|
41
42
|
);
|
|
42
43
|
|
|
43
44
|
expect(chunk.tool_use).toHaveLength(1);
|
|
44
|
-
expect(chunk.tool_use
|
|
45
|
+
expect(chunk.tool_use?.[0]).toMatchObject({ id: 'tool-abc', tool_name: 'my_tool', tool_input: '' });
|
|
45
46
|
expect(toolBlocks.get(1)).toEqual({ id: 'tool-abc', name: 'my_tool' });
|
|
46
47
|
});
|
|
47
48
|
|
|
48
49
|
it('emits a delta tool_use chunk on contentBlockDelta', () => {
|
|
49
50
|
toolBlocks.set(1, { id: 'tool-abc', name: 'my_tool' });
|
|
50
51
|
|
|
51
|
-
const chunk = driver
|
|
52
|
+
const chunk = driver.getExtractedStream(
|
|
52
53
|
{
|
|
53
54
|
contentBlockDelta: {
|
|
54
55
|
contentBlockIndex: 1,
|
|
@@ -57,52 +58,53 @@ describe('BedrockDriver getExtractedStream — tool use', () => {
|
|
|
57
58
|
},
|
|
58
59
|
undefined,
|
|
59
60
|
undefined,
|
|
60
|
-
toolBlocks
|
|
61
|
+
toolBlocks,
|
|
61
62
|
);
|
|
62
63
|
|
|
63
64
|
expect(chunk.tool_use).toHaveLength(1);
|
|
64
|
-
expect(chunk.tool_use
|
|
65
|
+
expect(chunk.tool_use?.[0]).toMatchObject({ id: 'tool-abc', tool_name: '', tool_input: '{"key":' });
|
|
65
66
|
});
|
|
66
67
|
|
|
67
68
|
it('removes the block from the map on contentBlockStop', () => {
|
|
68
69
|
toolBlocks.set(1, { id: 'tool-abc', name: 'my_tool' });
|
|
69
70
|
|
|
70
|
-
driver
|
|
71
|
-
{ contentBlockStop: { contentBlockIndex: 1 } },
|
|
72
|
-
undefined,
|
|
73
|
-
undefined,
|
|
74
|
-
toolBlocks
|
|
75
|
-
);
|
|
71
|
+
driver.getExtractedStream({ contentBlockStop: { contentBlockIndex: 1 } }, undefined, undefined, toolBlocks);
|
|
76
72
|
|
|
77
73
|
expect(toolBlocks.has(1)).toBe(false);
|
|
78
74
|
});
|
|
79
75
|
|
|
80
76
|
it('tracks two interleaved tool calls by independent contentBlockIndex', () => {
|
|
81
|
-
driver
|
|
77
|
+
driver.getExtractedStream(
|
|
82
78
|
{ contentBlockStart: { contentBlockIndex: 1, start: { toolUse: { toolUseId: 'id-1', name: 'tool_a' } } } },
|
|
83
|
-
undefined,
|
|
79
|
+
undefined,
|
|
80
|
+
undefined,
|
|
81
|
+
toolBlocks,
|
|
84
82
|
);
|
|
85
|
-
driver
|
|
83
|
+
driver.getExtractedStream(
|
|
86
84
|
{ contentBlockStart: { contentBlockIndex: 3, start: { toolUse: { toolUseId: 'id-2', name: 'tool_b' } } } },
|
|
87
|
-
undefined,
|
|
85
|
+
undefined,
|
|
86
|
+
undefined,
|
|
87
|
+
toolBlocks,
|
|
88
88
|
);
|
|
89
89
|
|
|
90
90
|
expect(toolBlocks.get(1)).toEqual({ id: 'id-1', name: 'tool_a' });
|
|
91
91
|
expect(toolBlocks.get(3)).toEqual({ id: 'id-2', name: 'tool_b' });
|
|
92
92
|
|
|
93
|
-
const chunk = driver
|
|
93
|
+
const chunk = driver.getExtractedStream(
|
|
94
94
|
{ contentBlockDelta: { contentBlockIndex: 3, delta: { toolUse: { input: '"val"' } } } },
|
|
95
|
-
undefined,
|
|
95
|
+
undefined,
|
|
96
|
+
undefined,
|
|
97
|
+
toolBlocks,
|
|
96
98
|
);
|
|
97
|
-
expect(chunk.tool_use
|
|
99
|
+
expect(chunk.tool_use?.[0].id).toBe('id-2');
|
|
98
100
|
});
|
|
99
101
|
|
|
100
102
|
it('still extracts text deltas when no tool use is present', () => {
|
|
101
|
-
const chunk = driver
|
|
103
|
+
const chunk = driver.getExtractedStream(
|
|
102
104
|
{ contentBlockDelta: { contentBlockIndex: 0, delta: { text: 'hello' } } },
|
|
103
105
|
undefined,
|
|
104
106
|
undefined,
|
|
105
|
-
toolBlocks
|
|
107
|
+
toolBlocks,
|
|
106
108
|
);
|
|
107
109
|
|
|
108
110
|
expect(chunk.result).toEqual([{ type: 'text', value: 'hello' }]);
|
|
@@ -110,11 +112,11 @@ describe('BedrockDriver getExtractedStream — tool use', () => {
|
|
|
110
112
|
});
|
|
111
113
|
|
|
112
114
|
it('emits finish_reason "tool_use" from messageStop', () => {
|
|
113
|
-
const chunk = driver
|
|
115
|
+
const chunk = driver.getExtractedStream(
|
|
114
116
|
{ messageStop: { stopReason: 'tool_use' } },
|
|
115
117
|
undefined,
|
|
116
118
|
undefined,
|
|
117
|
-
toolBlocks
|
|
119
|
+
toolBlocks,
|
|
118
120
|
);
|
|
119
121
|
|
|
120
122
|
expect(chunk.finish_reason).toBe('tool_use');
|
|
@@ -133,13 +135,22 @@ class FakeDriver extends AbstractDriver<DriverOptions, string> {
|
|
|
133
135
|
throw new Error('not implemented');
|
|
134
136
|
}
|
|
135
137
|
|
|
136
|
-
async requestTextCompletionStream(
|
|
138
|
+
async requestTextCompletionStream(
|
|
139
|
+
_prompt: string,
|
|
140
|
+
_options: ExecutionOptions,
|
|
141
|
+
): Promise<AsyncIterable<CompletionChunkObject>> {
|
|
137
142
|
const chunks = this.chunks;
|
|
138
|
-
return (async function* () {
|
|
143
|
+
return (async function* () {
|
|
144
|
+
for (const c of chunks) yield c;
|
|
145
|
+
})();
|
|
139
146
|
}
|
|
140
147
|
|
|
141
|
-
async listModels(_params?: ModelSearchPayload): Promise<AIModel[]> {
|
|
142
|
-
|
|
148
|
+
async listModels(_params?: ModelSearchPayload): Promise<AIModel[]> {
|
|
149
|
+
return [];
|
|
150
|
+
}
|
|
151
|
+
async validateConnection(): Promise<boolean> {
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
143
154
|
async generateEmbeddings(_options: EmbeddingsOptions): Promise<EmbeddingsResult> {
|
|
144
155
|
throw new Error('not implemented');
|
|
145
156
|
}
|
|
@@ -154,18 +165,20 @@ describe('driver.stream() — Bedrock tool use accumulation', () => {
|
|
|
154
165
|
|
|
155
166
|
// Simulate what the fixed getExtractedStream emits for one tool call
|
|
156
167
|
driver.chunks = [
|
|
157
|
-
{ result: [], tool_use: [{ id: 'tool-1', tool_name: 'do_thing', tool_input: '' as
|
|
158
|
-
{ result: [], tool_use: [{ id: 'tool-1', tool_name: '', tool_input: '{"param"' as
|
|
159
|
-
{ result: [], tool_use: [{ id: 'tool-1', tool_name: '', tool_input: ':"hello"}' as
|
|
168
|
+
{ result: [], tool_use: [{ id: 'tool-1', tool_name: 'do_thing', tool_input: '' as unknown }] },
|
|
169
|
+
{ result: [], tool_use: [{ id: 'tool-1', tool_name: '', tool_input: '{"param"' as unknown }] },
|
|
170
|
+
{ result: [], tool_use: [{ id: 'tool-1', tool_name: '', tool_input: ':"hello"}' as unknown }] },
|
|
160
171
|
{ result: [], finish_reason: 'tool_use' },
|
|
161
172
|
];
|
|
162
173
|
|
|
163
174
|
const stream = await driver.stream(FAKE_SEGMENTS, options);
|
|
164
|
-
for await (const _ of stream) {
|
|
175
|
+
for await (const _ of stream) {
|
|
176
|
+
/* drain */
|
|
177
|
+
}
|
|
165
178
|
|
|
166
|
-
expect(stream.completion
|
|
167
|
-
expect(stream.completion
|
|
168
|
-
expect(stream.completion
|
|
179
|
+
expect(stream.completion?.finish_reason).toBe('tool_use');
|
|
180
|
+
expect(stream.completion?.tool_use).toHaveLength(1);
|
|
181
|
+
expect(stream.completion?.tool_use?.[0]).toMatchObject({
|
|
169
182
|
id: 'tool-1',
|
|
170
183
|
tool_name: 'do_thing',
|
|
171
184
|
tool_input: { param: 'hello' },
|
|
@@ -177,20 +190,22 @@ describe('driver.stream() — Bedrock tool use accumulation', () => {
|
|
|
177
190
|
const options: ExecutionOptions = { model: 'test-model' };
|
|
178
191
|
|
|
179
192
|
driver.chunks = [
|
|
180
|
-
{ result: [], tool_use: [{ id: 'id-a', tool_name: 'tool_a', tool_input: '' as
|
|
181
|
-
{ result: [], tool_use: [{ id: 'id-b', tool_name: 'tool_b', tool_input: '' as
|
|
182
|
-
{ result: [], tool_use: [{ id: 'id-a', tool_name: '', tool_input: '{"x":1}' as
|
|
183
|
-
{ result: [], tool_use: [{ id: 'id-b', tool_name: '', tool_input: '{"y":2}' as
|
|
193
|
+
{ result: [], tool_use: [{ id: 'id-a', tool_name: 'tool_a', tool_input: '' as unknown }] },
|
|
194
|
+
{ result: [], tool_use: [{ id: 'id-b', tool_name: 'tool_b', tool_input: '' as unknown }] },
|
|
195
|
+
{ result: [], tool_use: [{ id: 'id-a', tool_name: '', tool_input: '{"x":1}' as unknown }] },
|
|
196
|
+
{ result: [], tool_use: [{ id: 'id-b', tool_name: '', tool_input: '{"y":2}' as unknown }] },
|
|
184
197
|
{ result: [], finish_reason: 'tool_use' },
|
|
185
198
|
];
|
|
186
199
|
|
|
187
200
|
const stream = await driver.stream(FAKE_SEGMENTS, options);
|
|
188
|
-
for await (const _ of stream) {
|
|
201
|
+
for await (const _ of stream) {
|
|
202
|
+
/* drain */
|
|
203
|
+
}
|
|
189
204
|
|
|
190
|
-
const toolUse = stream.completion
|
|
205
|
+
const toolUse = stream.completion?.tool_use ?? [];
|
|
191
206
|
expect(toolUse).toHaveLength(2);
|
|
192
|
-
expect(toolUse.find(t => t.id === 'id-a')
|
|
193
|
-
expect(toolUse.find(t => t.id === 'id-b')
|
|
207
|
+
expect(toolUse.find((t) => t.id === 'id-a')?.tool_input).toEqual({ x: 1 });
|
|
208
|
+
expect(toolUse.find((t) => t.id === 'id-b')?.tool_input).toEqual({ y: 2 });
|
|
194
209
|
});
|
|
195
210
|
|
|
196
211
|
it('drops truncated tool calls when finish_reason is length', async () => {
|
|
@@ -198,15 +213,17 @@ describe('driver.stream() — Bedrock tool use accumulation', () => {
|
|
|
198
213
|
const options: ExecutionOptions = { model: 'test-model' };
|
|
199
214
|
|
|
200
215
|
driver.chunks = [
|
|
201
|
-
{ result: [], tool_use: [{ id: 'trunc', tool_name: 'tool_c', tool_input: '' as
|
|
202
|
-
{ result: [], tool_use: [{ id: 'trunc', tool_name: '', tool_input: '{"incomplete' as
|
|
216
|
+
{ result: [], tool_use: [{ id: 'trunc', tool_name: 'tool_c', tool_input: '' as unknown }] },
|
|
217
|
+
{ result: [], tool_use: [{ id: 'trunc', tool_name: '', tool_input: '{"incomplete' as unknown }] },
|
|
203
218
|
{ result: [], finish_reason: 'length' },
|
|
204
219
|
];
|
|
205
220
|
|
|
206
221
|
const stream = await driver.stream(FAKE_SEGMENTS, options);
|
|
207
|
-
for await (const _ of stream) {
|
|
222
|
+
for await (const _ of stream) {
|
|
223
|
+
/* drain */
|
|
224
|
+
}
|
|
208
225
|
|
|
209
|
-
expect(stream.completion
|
|
226
|
+
expect(stream.completion?.tool_use).toBeUndefined();
|
|
210
227
|
});
|
|
211
228
|
});
|
|
212
229
|
|
|
@@ -215,21 +232,21 @@ describe('BedrockDriver buildStreamingConversation', () => {
|
|
|
215
232
|
const driver = new BedrockDriver({ region: 'us-east-1' });
|
|
216
233
|
const prompt = {
|
|
217
234
|
modelId: 'anthropic.claude-sonnet',
|
|
218
|
-
messages: [
|
|
219
|
-
{ role: 'user', content: [{ text: 'What is the weather in Paris?' }] },
|
|
220
|
-
],
|
|
235
|
+
messages: [{ role: 'user', content: [{ text: 'What is the weather in Paris?' }] }],
|
|
221
236
|
};
|
|
222
237
|
|
|
223
238
|
const conversation = driver.buildStreamingConversation(
|
|
224
|
-
prompt as
|
|
225
|
-
[{ type: 'text', value: 'Let me check.' }]
|
|
226
|
-
[
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
239
|
+
prompt as unknown as BedrockPrompt,
|
|
240
|
+
[{ type: 'text', value: 'Let me check.' }],
|
|
241
|
+
[
|
|
242
|
+
{
|
|
243
|
+
id: 'tool-1',
|
|
244
|
+
tool_name: 'get_weather',
|
|
245
|
+
tool_input: { location: 'Paris' },
|
|
246
|
+
},
|
|
247
|
+
],
|
|
248
|
+
{ model: 'anthropic.claude-sonnet' } as ExecutionOptions,
|
|
249
|
+
) as unknown as Tree;
|
|
233
250
|
|
|
234
251
|
expect(conversation.messages).toHaveLength(2);
|
|
235
252
|
expect(conversation.messages[0]).toEqual(prompt.messages[0]);
|
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
type DataSource,
|
|
3
|
+
type ExecutionOptions,
|
|
4
|
+
type JSONSchema,
|
|
5
|
+
PromptRole,
|
|
6
|
+
type PromptSegment,
|
|
7
|
+
readStreamAsBase64,
|
|
8
|
+
type TextFallbackOptions,
|
|
9
|
+
} from '@llumiverse/core';
|
|
10
|
+
import { isAmazonS3Hostname, parseS3UrlToUri } from './s3.js';
|
|
3
11
|
|
|
4
12
|
// TwelveLabs Pegasus Request/Response Types
|
|
5
13
|
export interface TwelvelabsPegasusRequest {
|
|
6
14
|
inputPrompt: string;
|
|
7
15
|
temperature?: number;
|
|
8
16
|
responseFormat?: {
|
|
9
|
-
type:
|
|
17
|
+
type: 'json_schema';
|
|
10
18
|
json_schema: {
|
|
11
19
|
name: string;
|
|
12
|
-
schema:
|
|
20
|
+
schema: JSONSchema;
|
|
13
21
|
};
|
|
14
22
|
};
|
|
15
23
|
mediaSource: {
|
|
@@ -24,14 +32,14 @@ export interface TwelvelabsPegasusRequest {
|
|
|
24
32
|
|
|
25
33
|
export interface TwelvelabsPegasusResponse {
|
|
26
34
|
message: string;
|
|
27
|
-
finishReason:
|
|
35
|
+
finishReason: 'stop' | 'length';
|
|
28
36
|
}
|
|
29
37
|
|
|
30
38
|
// TwelveLabs Marengo Request/Response Types
|
|
31
39
|
export interface TwelvelabsMarengoRequest {
|
|
32
|
-
inputType:
|
|
40
|
+
inputType: 'text' | 'image' | 'video' | 'audio';
|
|
33
41
|
inputText?: string;
|
|
34
|
-
textTruncate?:
|
|
42
|
+
textTruncate?: 'start' | 'end';
|
|
35
43
|
mediaSource?: {
|
|
36
44
|
base64String?: string;
|
|
37
45
|
s3Location?: {
|
|
@@ -39,7 +47,7 @@ export interface TwelvelabsMarengoRequest {
|
|
|
39
47
|
bucketOwner?: string;
|
|
40
48
|
};
|
|
41
49
|
};
|
|
42
|
-
embeddingOption?:
|
|
50
|
+
embeddingOption?: 'visual-text' | 'visual-image' | 'audio';
|
|
43
51
|
startSec?: number;
|
|
44
52
|
lengthSec?: number;
|
|
45
53
|
useFixedLengthSec?: boolean;
|
|
@@ -48,7 +56,7 @@ export interface TwelvelabsMarengoRequest {
|
|
|
48
56
|
|
|
49
57
|
export interface TwelvelabsMarengoResponse {
|
|
50
58
|
embedding: number[];
|
|
51
|
-
embeddingOption:
|
|
59
|
+
embeddingOption: 'visual-text' | 'visual-image' | 'audio';
|
|
52
60
|
startSec: number;
|
|
53
61
|
endSec: number;
|
|
54
62
|
}
|
|
@@ -56,21 +64,21 @@ export interface TwelvelabsMarengoResponse {
|
|
|
56
64
|
// Convert prompt segments to TwelveLabs Pegasus request
|
|
57
65
|
export async function formatTwelvelabsPegasusPrompt(
|
|
58
66
|
segments: PromptSegment[],
|
|
59
|
-
options: ExecutionOptions
|
|
67
|
+
options: ExecutionOptions,
|
|
60
68
|
): Promise<TwelvelabsPegasusRequest> {
|
|
61
|
-
let inputPrompt =
|
|
69
|
+
let inputPrompt = '';
|
|
62
70
|
let videoFile: DataSource | undefined;
|
|
63
71
|
|
|
64
72
|
// Extract text content and video files from segments
|
|
65
73
|
for (const segment of segments) {
|
|
66
74
|
if (segment.role === PromptRole.system || segment.role === PromptRole.user) {
|
|
67
75
|
if (segment.content) {
|
|
68
|
-
inputPrompt += segment.content
|
|
76
|
+
inputPrompt += `${segment.content}\n`;
|
|
69
77
|
}
|
|
70
78
|
|
|
71
79
|
// Look for video files
|
|
72
80
|
for (const file of segment.files ?? []) {
|
|
73
|
-
if (file.mime_type
|
|
81
|
+
if (file.mime_type?.startsWith('video/')) {
|
|
74
82
|
videoFile = file;
|
|
75
83
|
break; // Use the first video file found
|
|
76
84
|
}
|
|
@@ -79,28 +87,23 @@ export async function formatTwelvelabsPegasusPrompt(
|
|
|
79
87
|
}
|
|
80
88
|
|
|
81
89
|
if (!videoFile) {
|
|
82
|
-
throw new Error(
|
|
90
|
+
throw new Error('TwelveLabs Pegasus requires a video file input');
|
|
83
91
|
}
|
|
84
92
|
|
|
85
93
|
// Prepare media source
|
|
86
|
-
let mediaSource: TwelvelabsPegasusRequest[
|
|
94
|
+
let mediaSource: TwelvelabsPegasusRequest['mediaSource'];
|
|
87
95
|
|
|
88
96
|
try {
|
|
89
97
|
// Try to get S3 URL first
|
|
90
98
|
const url = await videoFile.getURL();
|
|
91
99
|
const parsedUrl = new URL(url);
|
|
92
100
|
|
|
93
|
-
if (parsedUrl.
|
|
94
|
-
(parsedUrl.hostname.startsWith("s3.") || parsedUrl.hostname.includes(".s3."))) {
|
|
101
|
+
if (parsedUrl.protocol === 's3:' || isAmazonS3Hostname(parsedUrl.hostname)) {
|
|
95
102
|
// Convert S3 URL to s3:// format
|
|
96
|
-
const bucketMatch = parsedUrl.hostname.match(/^(?:s3\.)?([^.]+)\.s3\./);
|
|
97
|
-
const bucket = bucketMatch ? bucketMatch[1] : parsedUrl.hostname.split('.')[0];
|
|
98
|
-
const key = parsedUrl.pathname.substring(1); // Remove leading slash
|
|
99
|
-
|
|
100
103
|
mediaSource = {
|
|
101
104
|
s3Location: {
|
|
102
|
-
uri:
|
|
103
|
-
}
|
|
105
|
+
uri: parsedUrl.protocol === 's3:' ? url : parseS3UrlToUri(parsedUrl),
|
|
106
|
+
},
|
|
104
107
|
};
|
|
105
108
|
} else {
|
|
106
109
|
// Fall back to base64 encoding
|
|
@@ -108,26 +111,26 @@ export async function formatTwelvelabsPegasusPrompt(
|
|
|
108
111
|
const base64String = await readStreamAsBase64(stream);
|
|
109
112
|
|
|
110
113
|
mediaSource = {
|
|
111
|
-
base64String
|
|
114
|
+
base64String,
|
|
112
115
|
};
|
|
113
116
|
}
|
|
114
|
-
} catch
|
|
117
|
+
} catch {
|
|
115
118
|
// If getting URL fails, use base64 encoding
|
|
116
119
|
const stream = await videoFile.getStream();
|
|
117
120
|
const base64String = await readStreamAsBase64(stream);
|
|
118
121
|
|
|
119
122
|
mediaSource = {
|
|
120
|
-
base64String
|
|
123
|
+
base64String,
|
|
121
124
|
};
|
|
122
125
|
}
|
|
123
126
|
|
|
124
127
|
const request: TwelvelabsPegasusRequest = {
|
|
125
128
|
inputPrompt: inputPrompt.trim(),
|
|
126
|
-
mediaSource
|
|
129
|
+
mediaSource,
|
|
127
130
|
};
|
|
128
131
|
|
|
129
132
|
// Add optional parameters from model options
|
|
130
|
-
const modelOptions = options.model_options as
|
|
133
|
+
const modelOptions = options.model_options as TextFallbackOptions | undefined;
|
|
131
134
|
if (modelOptions?.temperature !== undefined) {
|
|
132
135
|
request.temperature = modelOptions.temperature;
|
|
133
136
|
}
|
|
@@ -138,11 +141,11 @@ export async function formatTwelvelabsPegasusPrompt(
|
|
|
138
141
|
// Add response format if result schema is specified
|
|
139
142
|
if (options.result_schema) {
|
|
140
143
|
request.responseFormat = {
|
|
141
|
-
type:
|
|
144
|
+
type: 'json_schema',
|
|
142
145
|
json_schema: {
|
|
143
|
-
name:
|
|
144
|
-
schema: options.result_schema
|
|
145
|
-
}
|
|
146
|
+
name: 'response',
|
|
147
|
+
schema: options.result_schema,
|
|
148
|
+
},
|
|
146
149
|
};
|
|
147
150
|
}
|
|
148
151
|
|