@llumiverse/drivers 1.3.0 → 1.4.0
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/{types/anthropic → anthropic}/index.d.ts +4 -2
- package/lib/anthropic/index.d.ts.map +1 -0
- package/lib/{esm/anthropic → anthropic}/index.js +19 -8
- 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 +16 -5
- package/lib/openai/index.d.ts.map +1 -0
- package/lib/{esm/openai → openai}/index.js +242 -141
- 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/{types/shared → shared}/claude-messages.d.ts +25 -1
- package/lib/shared/claude-messages.d.ts.map +1 -0
- package/lib/{esm/shared → shared}/claude-messages.js +212 -59
- 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/{types/vertexai → vertexai}/models/claude.d.ts +4 -4
- package/lib/vertexai/models/claude.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/models/claude.js +17 -20
- package/lib/vertexai/models/claude.js.map +1 -0
- package/lib/{types/vertexai → vertexai}/models/gemini.d.ts +28 -4
- package/lib/vertexai/models/gemini.d.ts.map +1 -0
- package/lib/{esm/vertexai → vertexai}/models/gemini.js +238 -116
- 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 +87 -36
- package/src/adobe/firefly.ts +60 -43
- package/src/anthropic/index.ts +37 -20
- 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 -16
- 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 +378 -248
- 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 +303 -97
- 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 +331 -244
- package/src/vertexai/models/claude-error-handling.test.ts +83 -36
- package/src/vertexai/models/claude-streaming-spacing.test.ts +82 -75
- package/src/vertexai/models/claude.ts +55 -40
- 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 +349 -172
- 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/anthropic/index.js +0 -64
- package/lib/cjs/anthropic/index.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 -32
- 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 -1135
- 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-messages.js +0 -737
- package/lib/cjs/shared/claude-messages.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 -72
- package/lib/cjs/vertexai/models/claude.js.map +0 -1
- package/lib/cjs/vertexai/models/gemini.js +0 -864
- 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/anthropic/index.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 -16
- 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-messages.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.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/anthropic/index.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 -16
- 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-messages.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.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
package/src/bedrock/converse.ts
CHANGED
|
@@ -1,86 +1,93 @@
|
|
|
1
1
|
import {
|
|
2
|
-
ContentBlock,
|
|
2
|
+
type ContentBlock,
|
|
3
3
|
ConversationRole,
|
|
4
|
-
ConverseRequest,
|
|
5
|
-
Message,
|
|
6
|
-
SystemContentBlock,
|
|
7
|
-
ToolResultContentBlock,
|
|
8
|
-
} from
|
|
9
|
-
import {
|
|
10
|
-
|
|
4
|
+
type ConverseRequest,
|
|
5
|
+
type Message,
|
|
6
|
+
type SystemContentBlock,
|
|
7
|
+
type ToolResultContentBlock,
|
|
8
|
+
} from '@aws-sdk/client-bedrock-runtime';
|
|
9
|
+
import {
|
|
10
|
+
type DataSource,
|
|
11
|
+
type ExecutionOptions,
|
|
12
|
+
PromptRole,
|
|
13
|
+
type PromptSegment,
|
|
14
|
+
readStreamAsString,
|
|
15
|
+
readStreamAsUint8Array,
|
|
16
|
+
} from '@llumiverse/core';
|
|
17
|
+
import { isAmazonS3Hostname, parseS3UrlToUri } from './s3.js';
|
|
11
18
|
|
|
12
19
|
function roleConversion(role: PromptRole): ConversationRole {
|
|
13
20
|
return role === PromptRole.assistant ? ConversationRole.ASSISTANT : ConversationRole.USER;
|
|
14
21
|
}
|
|
15
22
|
|
|
16
|
-
type BedrockImageFormat =
|
|
17
|
-
const BEDROCK_IMAGE_FORMATS = new Set<string>([
|
|
23
|
+
type BedrockImageFormat = 'png' | 'jpeg' | 'gif' | 'webp';
|
|
24
|
+
const BEDROCK_IMAGE_FORMATS = new Set<string>(['png', 'jpeg', 'gif', 'webp']);
|
|
18
25
|
const mimeToImageMap: Record<string, BedrockImageFormat> = {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
'image/png': 'png',
|
|
27
|
+
'image/jpeg': 'jpeg',
|
|
28
|
+
'image/gif': 'gif',
|
|
29
|
+
'image/webp': 'webp',
|
|
23
30
|
};
|
|
24
31
|
function mimeToImageType(mime: string): BedrockImageFormat {
|
|
25
32
|
const mapped = mimeToImageMap[mime];
|
|
26
33
|
if (mapped) return mapped;
|
|
27
|
-
if (mime.startsWith(
|
|
28
|
-
const subtype = mime.split(
|
|
34
|
+
if (mime.startsWith('image/')) {
|
|
35
|
+
const subtype = mime.split('/')[1];
|
|
29
36
|
if (subtype && BEDROCK_IMAGE_FORMATS.has(subtype)) {
|
|
30
37
|
return subtype as BedrockImageFormat;
|
|
31
38
|
}
|
|
32
39
|
}
|
|
33
|
-
return
|
|
40
|
+
return 'png';
|
|
34
41
|
}
|
|
35
42
|
|
|
36
|
-
type BedrockDocFormat =
|
|
37
|
-
const BEDROCK_DOC_FORMATS = new Set<string>([
|
|
43
|
+
type BedrockDocFormat = 'pdf' | 'csv' | 'doc' | 'docx' | 'xls' | 'xlsx' | 'html' | 'txt' | 'md';
|
|
44
|
+
const BEDROCK_DOC_FORMATS = new Set<string>(['pdf', 'csv', 'doc', 'docx', 'xls', 'xlsx', 'html', 'txt', 'md']);
|
|
38
45
|
const mimeToDocMap: Record<string, BedrockDocFormat> = {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
'application/pdf': 'pdf',
|
|
47
|
+
'text/csv': 'csv',
|
|
48
|
+
'application/msword': 'doc',
|
|
49
|
+
'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'docx',
|
|
50
|
+
'application/vnd.ms-excel': 'xls',
|
|
51
|
+
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'xlsx',
|
|
52
|
+
'text/html': 'html',
|
|
53
|
+
'text/plain': 'txt',
|
|
54
|
+
'text/markdown': 'md',
|
|
48
55
|
};
|
|
49
56
|
function mimeToDocType(mime: string): BedrockDocFormat {
|
|
50
57
|
// 1. Exact map lookup (handles complex MIME types like vnd.openxmlformats-*)
|
|
51
58
|
const mapped = mimeToDocMap[mime];
|
|
52
59
|
if (mapped) return mapped;
|
|
53
60
|
// 2. Fallback: extract subtype for simple application/ or text/ MIME types
|
|
54
|
-
if (mime.startsWith(
|
|
55
|
-
const subtype = mime.split(
|
|
61
|
+
if (mime.startsWith('application/') || mime.startsWith('text/')) {
|
|
62
|
+
const subtype = mime.split('/')[1];
|
|
56
63
|
if (subtype && BEDROCK_DOC_FORMATS.has(subtype)) {
|
|
57
64
|
return subtype as BedrockDocFormat;
|
|
58
65
|
}
|
|
59
66
|
}
|
|
60
|
-
return
|
|
67
|
+
return 'txt';
|
|
61
68
|
}
|
|
62
|
-
type BedrockVideoFormat =
|
|
63
|
-
const BEDROCK_VIDEO_FORMATS = new Set<string>([
|
|
69
|
+
type BedrockVideoFormat = 'mov' | 'mkv' | 'mp4' | 'webm' | 'flv' | 'mpeg' | 'mpg' | 'wmv' | 'three_gp';
|
|
70
|
+
const BEDROCK_VIDEO_FORMATS = new Set<string>(['mov', 'mkv', 'mp4', 'webm', 'flv', 'mpeg', 'mpg', 'wmv', 'three_gp']);
|
|
64
71
|
const mimeToVideoMap: Record<string, BedrockVideoFormat> = {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
72
|
+
'video/quicktime': 'mov',
|
|
73
|
+
'video/x-matroska': 'mkv',
|
|
74
|
+
'video/mp4': 'mp4',
|
|
75
|
+
'video/webm': 'webm',
|
|
76
|
+
'video/x-flv': 'flv',
|
|
77
|
+
'video/mpeg': 'mpeg',
|
|
78
|
+
'video/x-ms-wmv': 'wmv',
|
|
79
|
+
'video/3gpp': 'three_gp',
|
|
73
80
|
};
|
|
74
81
|
function mimeToVideoType(mime: string): BedrockVideoFormat {
|
|
75
82
|
const mapped = mimeToVideoMap[mime];
|
|
76
83
|
if (mapped) return mapped;
|
|
77
|
-
if (mime.startsWith(
|
|
78
|
-
const subtype = mime.split(
|
|
84
|
+
if (mime.startsWith('video/')) {
|
|
85
|
+
const subtype = mime.split('/')[1];
|
|
79
86
|
if (subtype && BEDROCK_VIDEO_FORMATS.has(subtype)) {
|
|
80
87
|
return subtype as BedrockVideoFormat;
|
|
81
88
|
}
|
|
82
89
|
}
|
|
83
|
-
return
|
|
90
|
+
return 'mp4';
|
|
84
91
|
}
|
|
85
92
|
|
|
86
93
|
/**
|
|
@@ -100,8 +107,8 @@ function cleanBedrockFilename(name: string | undefined): string | undefined {
|
|
|
100
107
|
}
|
|
101
108
|
|
|
102
109
|
return name
|
|
103
|
-
.replace(/[^\w\s\-()[\]]/g,
|
|
104
|
-
.replace(/\s+/g,
|
|
110
|
+
.replace(/[^\w\s\-()[\]]/g, ' ') // Replace invalid characters with space
|
|
111
|
+
.replace(/\s+/g, ' ') // Collapse consecutive whitespaces
|
|
105
112
|
.trim();
|
|
106
113
|
}
|
|
107
114
|
|
|
@@ -109,17 +116,17 @@ type FileProcessingMode = 'content' | 'tool';
|
|
|
109
116
|
|
|
110
117
|
async function processFile<T extends FileProcessingMode>(
|
|
111
118
|
f: DataSource,
|
|
112
|
-
mode: T
|
|
119
|
+
mode: T,
|
|
113
120
|
): Promise<T extends 'content' ? ContentBlock : ToolResultContentBlock> {
|
|
114
121
|
const source = await f.getStream();
|
|
115
122
|
|
|
116
123
|
//Image file - "png" | "jpeg" | "gif" | "webp"
|
|
117
|
-
if (f.mime_type
|
|
124
|
+
if (f.mime_type?.startsWith('image')) {
|
|
118
125
|
const imageBlock = {
|
|
119
126
|
image: {
|
|
120
127
|
format: mimeToImageType(f.mime_type),
|
|
121
128
|
source: { bytes: await readStreamAsUint8Array(source) },
|
|
122
|
-
}
|
|
129
|
+
},
|
|
123
130
|
};
|
|
124
131
|
|
|
125
132
|
return mode === 'content'
|
|
@@ -127,19 +134,21 @@ async function processFile<T extends FileProcessingMode>(
|
|
|
127
134
|
: (imageBlock satisfies ToolResultContentBlock.ImageMember);
|
|
128
135
|
}
|
|
129
136
|
//Document file - "pdf | csv | doc | docx | xls | xlsx | html | txt | md"
|
|
130
|
-
else if (f.mime_type && (f.mime_type.startsWith(
|
|
137
|
+
else if (f.mime_type && (f.mime_type.startsWith('text') || f.mime_type?.startsWith('application'))) {
|
|
131
138
|
// Handle JSON files specially
|
|
132
|
-
if (f.mime_type ===
|
|
139
|
+
if (f.mime_type === 'application/json' || f.name?.endsWith('.json')) {
|
|
133
140
|
const jsonContent = await readStreamAsString(source);
|
|
134
141
|
try {
|
|
135
142
|
const parsedJson = JSON.parse(jsonContent);
|
|
136
143
|
if (mode === 'tool') {
|
|
137
|
-
return { json: parsedJson } satisfies ToolResultContentBlock.JsonMember as T extends 'content'
|
|
144
|
+
return { json: parsedJson } satisfies ToolResultContentBlock.JsonMember as T extends 'content'
|
|
145
|
+
? ContentBlock
|
|
146
|
+
: ToolResultContentBlock;
|
|
138
147
|
} else {
|
|
139
148
|
// ContentBlock doesn't support JSON, so treat as text
|
|
140
149
|
return { text: jsonContent } satisfies ContentBlock.TextMember;
|
|
141
150
|
}
|
|
142
|
-
} catch
|
|
151
|
+
} catch {
|
|
143
152
|
const textBlock = { text: jsonContent };
|
|
144
153
|
return mode === 'content'
|
|
145
154
|
? (textBlock satisfies ContentBlock.TextMember)
|
|
@@ -160,33 +169,35 @@ async function processFile<T extends FileProcessingMode>(
|
|
|
160
169
|
}
|
|
161
170
|
}
|
|
162
171
|
//Video file - "mov | mkv | mp4 | webm | flv | mpeg | mpg | wmv | three_gp"
|
|
163
|
-
else if (f.mime_type
|
|
164
|
-
let url_string =
|
|
172
|
+
else if (f.mime_type?.startsWith('video')) {
|
|
173
|
+
let url_string = await f.getURL();
|
|
165
174
|
let url_format = new URL(url_string);
|
|
166
|
-
if (url_format.hostname
|
|
167
|
-
(url_format.hostname.startsWith("s3.") || url_format.hostname.includes(".s3."))) {
|
|
175
|
+
if (isAmazonS3Hostname(url_format.hostname)) {
|
|
168
176
|
//Convert to s3:// format
|
|
169
177
|
const parsedUrl = parseS3UrlToUri(new URL(url_string));
|
|
170
178
|
url_string = parsedUrl;
|
|
171
179
|
url_format = new URL(parsedUrl);
|
|
172
180
|
}
|
|
173
181
|
|
|
174
|
-
const videoBlock =
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
182
|
+
const videoBlock =
|
|
183
|
+
url_format.protocol === 's3:'
|
|
184
|
+
? {
|
|
185
|
+
video: {
|
|
186
|
+
format: mimeToVideoType(f.mime_type),
|
|
187
|
+
source: {
|
|
188
|
+
s3Location: {
|
|
189
|
+
uri: url_string, //S3 URL
|
|
190
|
+
//bucketOwner: We don't have this additional information.
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
}
|
|
195
|
+
: {
|
|
196
|
+
video: {
|
|
197
|
+
format: mimeToVideoType(f.mime_type),
|
|
198
|
+
source: { bytes: await readStreamAsUint8Array(source) },
|
|
199
|
+
},
|
|
200
|
+
};
|
|
190
201
|
|
|
191
202
|
return mode === 'content'
|
|
192
203
|
? (videoBlock satisfies ContentBlock.VideoMember)
|
|
@@ -205,24 +216,27 @@ async function processFileToContentBlock(f: DataSource): Promise<ContentBlock> {
|
|
|
205
216
|
try {
|
|
206
217
|
return processFile(f, 'content');
|
|
207
218
|
} catch (error) {
|
|
208
|
-
throw new Error(
|
|
219
|
+
throw new Error(
|
|
220
|
+
`Failed to process file ${f.name} for prompt: ${error instanceof Error ? error.message : String(error)}`,
|
|
221
|
+
);
|
|
209
222
|
}
|
|
210
223
|
}
|
|
211
224
|
|
|
212
225
|
async function processFileToToolContentBlock(f: DataSource): Promise<ToolResultContentBlock> {
|
|
213
226
|
try {
|
|
214
227
|
return processFile(f, 'tool');
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
|
|
228
|
+
} catch (error) {
|
|
229
|
+
throw new Error(
|
|
230
|
+
`Failed to process file ${f.name} for tool response: ${error instanceof Error ? error.message : String(error)}`,
|
|
231
|
+
);
|
|
218
232
|
}
|
|
219
233
|
}
|
|
220
234
|
|
|
221
235
|
export function converseConcatMessages(messages: Message[] | undefined): Message[] {
|
|
222
236
|
if (!messages || messages.length === 0) return [];
|
|
223
237
|
|
|
224
|
-
const needsMerging = messages.some(
|
|
225
|
-
i < messages.length - 1 && message.role === messages[i + 1].role
|
|
238
|
+
const needsMerging = messages.some(
|
|
239
|
+
(message, i) => i < messages.length - 1 && message.role === messages[i + 1].role,
|
|
226
240
|
);
|
|
227
241
|
// If no merging needed, return original array
|
|
228
242
|
if (!needsMerging) {
|
|
@@ -248,15 +262,22 @@ export function converseConcatMessages(messages: Message[] | undefined): Message
|
|
|
248
262
|
|
|
249
263
|
export function converseSystemToMessages(system: SystemContentBlock[]): Message {
|
|
250
264
|
return {
|
|
251
|
-
content: [
|
|
252
|
-
|
|
265
|
+
content: [
|
|
266
|
+
{
|
|
267
|
+
text: system
|
|
268
|
+
.map((system) => system.text)
|
|
269
|
+
.join('\n')
|
|
270
|
+
.trim(),
|
|
271
|
+
},
|
|
272
|
+
],
|
|
273
|
+
role: ConversationRole.USER,
|
|
253
274
|
};
|
|
254
275
|
}
|
|
255
276
|
|
|
256
277
|
export function converseRemoveJSONprefill(messages: Message[] | undefined): Message[] {
|
|
257
278
|
//Remove the "```json" stop message
|
|
258
279
|
if (messages && messages.length > 0) {
|
|
259
|
-
if (messages[messages.length - 1].content?.[0].text ===
|
|
280
|
+
if (messages[messages.length - 1].content?.[0].text === '```json') {
|
|
260
281
|
messages.pop();
|
|
261
282
|
}
|
|
262
283
|
}
|
|
@@ -270,19 +291,19 @@ export function converseJSONprefill(messages: Message[] | undefined): Message[]
|
|
|
270
291
|
|
|
271
292
|
//prefill the json
|
|
272
293
|
messages.push({
|
|
273
|
-
content: [{ text:
|
|
294
|
+
content: [{ text: '```json' }],
|
|
274
295
|
role: ConversationRole.ASSISTANT,
|
|
275
296
|
});
|
|
276
297
|
return messages;
|
|
277
298
|
}
|
|
278
299
|
|
|
279
300
|
// Used to ignore unsupported roles. Typically these are things like image specific roles.
|
|
280
|
-
const unsupportedRoles = [
|
|
281
|
-
PromptRole.negative,
|
|
282
|
-
PromptRole.mask,
|
|
283
|
-
];
|
|
301
|
+
const unsupportedRoles = [PromptRole.negative, PromptRole.mask];
|
|
284
302
|
|
|
285
|
-
export async function formatConversePrompt(
|
|
303
|
+
export async function formatConversePrompt(
|
|
304
|
+
segments: PromptSegment[],
|
|
305
|
+
options: ExecutionOptions,
|
|
306
|
+
): Promise<ConverseRequest> {
|
|
286
307
|
//Non-const for concat
|
|
287
308
|
let system: SystemContentBlock.TextMember[] | undefined = [];
|
|
288
309
|
const safety: Message[] = [];
|
|
@@ -294,7 +315,7 @@ export async function formatConversePrompt(segments: PromptSegment[], options: E
|
|
|
294
315
|
system.push({ text: segment.content });
|
|
295
316
|
} else if (segment.role === PromptRole.tool) {
|
|
296
317
|
if (!segment.tool_use_id) {
|
|
297
|
-
throw new Error(
|
|
318
|
+
throw new Error('Tool use ID is required for tool segments');
|
|
298
319
|
}
|
|
299
320
|
//Tool use results (i.e. the model has requested a tool and this it the answer to that request)
|
|
300
321
|
const toolContentBlocks: ToolResultContentBlock[] = [];
|
|
@@ -311,13 +332,15 @@ export async function formatConversePrompt(segments: PromptSegment[], options: E
|
|
|
311
332
|
toolContentBlocks.push({ text: '[No output]' });
|
|
312
333
|
}
|
|
313
334
|
messages.push({
|
|
314
|
-
content: [
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
335
|
+
content: [
|
|
336
|
+
{
|
|
337
|
+
toolResult: {
|
|
338
|
+
toolUseId: segment.tool_use_id,
|
|
339
|
+
content: toolContentBlocks,
|
|
340
|
+
},
|
|
341
|
+
},
|
|
342
|
+
],
|
|
343
|
+
role: ConversationRole.USER,
|
|
321
344
|
});
|
|
322
345
|
} else if (!unsupportedRoles.includes(segment.role)) {
|
|
323
346
|
//User, Assistant or safety roles
|
|
@@ -334,7 +357,7 @@ export async function formatConversePrompt(segments: PromptSegment[], options: E
|
|
|
334
357
|
if (contentBlocks.length !== 0) {
|
|
335
358
|
const message = { content: contentBlocks, role: roleConversion(segment.role) };
|
|
336
359
|
if (segment.role === PromptRole.safety) {
|
|
337
|
-
safety.push(message)
|
|
360
|
+
safety.push(message);
|
|
338
361
|
} else {
|
|
339
362
|
messages.push(message);
|
|
340
363
|
}
|
|
@@ -345,11 +368,11 @@ export async function formatConversePrompt(segments: PromptSegment[], options: E
|
|
|
345
368
|
if (options.result_schema) {
|
|
346
369
|
let schemaText: string;
|
|
347
370
|
if (options.tools && options.tools.length > 0) {
|
|
348
|
-
schemaText =
|
|
371
|
+
schemaText = `When not calling tools, the answer must be a JSON object using the following JSON Schema:\n${JSON.stringify(options.result_schema, undefined, 2)}`;
|
|
349
372
|
} else {
|
|
350
|
-
schemaText =
|
|
373
|
+
schemaText = `The answer must be a JSON object using the following JSON Schema:\n${JSON.stringify(options.result_schema, undefined, 2)}`;
|
|
351
374
|
}
|
|
352
|
-
system.push({ text:
|
|
375
|
+
system.push({ text: `IMPORTANT: ${schemaText}` });
|
|
353
376
|
}
|
|
354
377
|
|
|
355
378
|
// Safety messages are user messages that should be included at the end.
|
|
@@ -364,7 +387,7 @@ export async function formatConversePrompt(segments: PromptSegment[], options: E
|
|
|
364
387
|
if (systemMessage?.content?.[0]?.text?.trim()) {
|
|
365
388
|
messages.push(systemMessage);
|
|
366
389
|
} else {
|
|
367
|
-
throw new Error(
|
|
390
|
+
throw new Error('Prompt must contain at least one message');
|
|
368
391
|
}
|
|
369
392
|
system = undefined;
|
|
370
393
|
}
|