@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/replicate.ts
CHANGED
|
@@ -1,33 +1,49 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
TrainingJob,
|
|
2
|
+
type AIModel,
|
|
3
|
+
type Completion,
|
|
4
|
+
type CompletionChunkObject,
|
|
5
|
+
type DataSource,
|
|
6
|
+
type DriverOptions,
|
|
7
|
+
type EmbeddingsResult,
|
|
8
|
+
type ExecutionOptions,
|
|
9
|
+
type ModelSearchPayload,
|
|
10
|
+
type TextFallbackOptions,
|
|
11
|
+
type TrainingJob,
|
|
13
12
|
TrainingJobStatus,
|
|
14
|
-
TrainingOptions,
|
|
15
|
-
} from
|
|
16
|
-
import { EventStream } from
|
|
17
|
-
import {
|
|
18
|
-
import
|
|
13
|
+
type TrainingOptions,
|
|
14
|
+
} from '@llumiverse/core';
|
|
15
|
+
import { EventStream } from '@llumiverse/core/async';
|
|
16
|
+
import { AbstractDriver } from '@llumiverse/core/driver';
|
|
17
|
+
import { EventSource } from 'eventsource';
|
|
18
|
+
import Replicate, { type Prediction, type Training } from 'replicate';
|
|
19
19
|
|
|
20
20
|
let cachedTrainableModels: AIModel[] | undefined;
|
|
21
21
|
let cachedTrainableModelsTimestamp: number = 0;
|
|
22
|
+
type ReplicateEvent = { data: string };
|
|
23
|
+
type ReplicateModelVersion = {
|
|
24
|
+
id: string;
|
|
25
|
+
cog_version: string;
|
|
26
|
+
};
|
|
27
|
+
type ReplicateVersionsResponse = {
|
|
28
|
+
results?: ReplicateModelVersion[];
|
|
29
|
+
};
|
|
30
|
+
type ReplicateSearchModel = {
|
|
31
|
+
name: string;
|
|
32
|
+
username: string;
|
|
33
|
+
description?: string;
|
|
34
|
+
};
|
|
35
|
+
type ReplicateSearchResponse = {
|
|
36
|
+
models: ReplicateSearchModel[];
|
|
37
|
+
};
|
|
22
38
|
|
|
23
39
|
const supportFineTunning = new Set([
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
40
|
+
'meta/llama-2-70b-chat',
|
|
41
|
+
'meta/llama-2-13b-chat',
|
|
42
|
+
'meta/llama-2-7b-chat',
|
|
43
|
+
'meta/llama-2-7b',
|
|
44
|
+
'meta/llama-2-70b',
|
|
45
|
+
'meta/llama-2-13b',
|
|
46
|
+
'mistralai/mistral-7b-v0.1',
|
|
31
47
|
]);
|
|
32
48
|
|
|
33
49
|
export interface ReplicateDriverOptions extends DriverOptions {
|
|
@@ -35,38 +51,44 @@ export interface ReplicateDriverOptions extends DriverOptions {
|
|
|
35
51
|
}
|
|
36
52
|
|
|
37
53
|
export class ReplicateDriver extends AbstractDriver<DriverOptions, string> {
|
|
38
|
-
static PROVIDER =
|
|
54
|
+
static PROVIDER = 'replicate';
|
|
39
55
|
provider = ReplicateDriver.PROVIDER;
|
|
40
56
|
service: Replicate;
|
|
41
57
|
|
|
42
58
|
static parseModelId(modelId: string) {
|
|
43
|
-
const [owner, modelPart] = modelId.split(
|
|
59
|
+
const [owner, modelPart] = modelId.split('/');
|
|
44
60
|
const i = modelPart.indexOf(':');
|
|
45
61
|
if (i === -1) {
|
|
46
|
-
throw new Error(
|
|
62
|
+
throw new Error('Invalid model id. Expected format: owner/model:version');
|
|
47
63
|
}
|
|
48
64
|
return {
|
|
49
|
-
owner,
|
|
50
|
-
|
|
65
|
+
owner,
|
|
66
|
+
model: modelPart.slice(0, i),
|
|
67
|
+
version: modelPart.slice(i + 1),
|
|
68
|
+
};
|
|
51
69
|
}
|
|
52
70
|
|
|
53
71
|
constructor(options: ReplicateDriverOptions) {
|
|
54
72
|
super(options);
|
|
55
73
|
this.service = new Replicate({
|
|
56
74
|
auth: options.apiKey,
|
|
75
|
+
fetch: this.getDriverFetch(),
|
|
57
76
|
});
|
|
58
77
|
}
|
|
59
78
|
|
|
60
79
|
extractDataFromResponse(response: Prediction): Completion {
|
|
61
|
-
const text = response.output.join(
|
|
80
|
+
const text = response.output.join('');
|
|
62
81
|
return {
|
|
63
82
|
result: text,
|
|
64
83
|
};
|
|
65
84
|
}
|
|
66
85
|
|
|
67
|
-
async requestTextCompletionStream(
|
|
68
|
-
|
|
69
|
-
|
|
86
|
+
async requestTextCompletionStream(
|
|
87
|
+
prompt: string,
|
|
88
|
+
options: ExecutionOptions,
|
|
89
|
+
): Promise<AsyncIterable<CompletionChunkObject>> {
|
|
90
|
+
if (options.model_options?._option_id !== undefined && options.model_options?._option_id !== 'text-fallback') {
|
|
91
|
+
this.logger.debug({ options: options.model_options }, 'Unexpected option id');
|
|
70
92
|
}
|
|
71
93
|
options.model_options = options.model_options as TextFallbackOptions;
|
|
72
94
|
|
|
@@ -81,27 +103,27 @@ export class ReplicateDriver extends AbstractDriver<DriverOptions, string> {
|
|
|
81
103
|
stream: true, //streaming described here https://replicate.com/blog/streaming
|
|
82
104
|
};
|
|
83
105
|
|
|
84
|
-
const prediction =
|
|
85
|
-
await this.service.predictions.create(predictionData);
|
|
106
|
+
const prediction = await this.service.predictions.create(predictionData);
|
|
86
107
|
|
|
87
108
|
const stream = new EventStream<CompletionChunkObject>();
|
|
88
109
|
|
|
110
|
+
// biome-ignore lint/style/noNonNullAssertion: intentional non-null assertion; TS can't prove narrowing here
|
|
89
111
|
const source = new EventSource(prediction.urls.stream!);
|
|
90
|
-
source.addEventListener(
|
|
91
|
-
stream.push({ result: [{ type:
|
|
112
|
+
source.addEventListener('output', (e: ReplicateEvent) => {
|
|
113
|
+
stream.push({ result: [{ type: 'text', value: e.data }] });
|
|
92
114
|
});
|
|
93
|
-
source.addEventListener(
|
|
94
|
-
let error:
|
|
115
|
+
source.addEventListener('error', (e: ReplicateEvent) => {
|
|
116
|
+
let error: unknown;
|
|
95
117
|
try {
|
|
96
118
|
error = JSON.parse(e.data);
|
|
97
|
-
} catch
|
|
119
|
+
} catch {
|
|
98
120
|
error = JSON.stringify(e);
|
|
99
121
|
}
|
|
100
|
-
this.logger.error({ e, error },
|
|
122
|
+
this.logger.error({ e, error }, 'Error in SSE stream');
|
|
101
123
|
});
|
|
102
|
-
source.addEventListener(
|
|
124
|
+
source.addEventListener('done', () => {
|
|
103
125
|
try {
|
|
104
|
-
stream.close(
|
|
126
|
+
stream.close(''); // not using e.data which is {}
|
|
105
127
|
} finally {
|
|
106
128
|
source.close();
|
|
107
129
|
}
|
|
@@ -110,8 +132,8 @@ export class ReplicateDriver extends AbstractDriver<DriverOptions, string> {
|
|
|
110
132
|
}
|
|
111
133
|
|
|
112
134
|
async requestTextCompletion(prompt: string, options: ExecutionOptions) {
|
|
113
|
-
if (options.model_options?._option_id !== undefined && options.model_options?._option_id !==
|
|
114
|
-
this.logger.debug({ options: options.model_options },
|
|
135
|
+
if (options.model_options?._option_id !== undefined && options.model_options?._option_id !== 'text-fallback') {
|
|
136
|
+
this.logger.debug({ options: options.model_options }, 'Unexpected option id');
|
|
115
137
|
}
|
|
116
138
|
options.model_options = options.model_options as TextFallbackOptions;
|
|
117
139
|
const model = ReplicateDriver.parseModelId(options.model);
|
|
@@ -126,8 +148,7 @@ export class ReplicateDriver extends AbstractDriver<DriverOptions, string> {
|
|
|
126
148
|
//stream: stream, //streaming described here https://replicate.com/blog/streaming
|
|
127
149
|
};
|
|
128
150
|
|
|
129
|
-
const prediction =
|
|
130
|
-
await this.service.predictions.create(predictionData);
|
|
151
|
+
const prediction = await this.service.predictions.create(predictionData);
|
|
131
152
|
|
|
132
153
|
//TODO stream
|
|
133
154
|
//if we're streaming, return right away for the stream handler to handle
|
|
@@ -136,24 +157,24 @@ export class ReplicateDriver extends AbstractDriver<DriverOptions, string> {
|
|
|
136
157
|
//not streaming, wait for the result
|
|
137
158
|
const res = await this.service.wait(prediction, {});
|
|
138
159
|
|
|
139
|
-
const text: string = res.output.join(
|
|
160
|
+
const text: string = res.output.join('');
|
|
140
161
|
return {
|
|
141
|
-
result: [{ type:
|
|
162
|
+
result: [{ type: 'text' as const, value: text }],
|
|
142
163
|
original_response: options.include_original_response ? res : undefined,
|
|
143
164
|
};
|
|
144
165
|
}
|
|
145
166
|
|
|
146
167
|
async startTraining(dataset: DataSource, options: TrainingOptions): Promise<TrainingJob> {
|
|
147
|
-
if (options.name.indexOf(
|
|
148
|
-
throw new Error(
|
|
168
|
+
if (options.name.indexOf('/') === -1) {
|
|
169
|
+
throw new Error('Invalid target model name. Expected format: owner/model');
|
|
149
170
|
}
|
|
150
171
|
const { owner, model, version } = ReplicateDriver.parseModelId(options.model);
|
|
151
172
|
const job = await this.service.trainings.create(owner, model, version, {
|
|
152
|
-
destination: options.name as
|
|
173
|
+
destination: options.name as `${string}/${string}`,
|
|
153
174
|
input: {
|
|
154
175
|
train_data: await dataset.getURL(),
|
|
155
176
|
},
|
|
156
|
-
})
|
|
177
|
+
});
|
|
157
178
|
return jobInfo(job, options.name);
|
|
158
179
|
}
|
|
159
180
|
|
|
@@ -185,33 +206,36 @@ export class ReplicateDriver extends AbstractDriver<DriverOptions, string> {
|
|
|
185
206
|
try {
|
|
186
207
|
await this.service.predictions.list();
|
|
187
208
|
return true;
|
|
188
|
-
} catch
|
|
209
|
+
} catch {
|
|
189
210
|
return false;
|
|
190
211
|
}
|
|
191
212
|
}
|
|
192
213
|
|
|
193
214
|
async _listTrainableModels(): Promise<AIModel[]> {
|
|
194
|
-
const promises = Array.from(supportFineTunning).map(id => {
|
|
215
|
+
const promises = Array.from(supportFineTunning).map((id) => {
|
|
195
216
|
const [owner, model] = id.split('/');
|
|
196
|
-
return this.service.models.get(owner, model)
|
|
217
|
+
return this.service.models.get(owner, model);
|
|
197
218
|
});
|
|
198
219
|
const results = await Promise.all(promises);
|
|
199
|
-
return results
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
220
|
+
return results
|
|
221
|
+
.filter((m) => !!m.latest_version)
|
|
222
|
+
.map((m) => {
|
|
223
|
+
const fullName = `${m.owner}/${m.name}`;
|
|
224
|
+
// biome-ignore lint/style/noNonNullAssertion: intentional non-null assertion; TS can't prove narrowing here
|
|
225
|
+
const v = m.latest_version!;
|
|
226
|
+
return {
|
|
227
|
+
id: `${fullName}:${v.id}`,
|
|
228
|
+
name: `${fullName}@${v.cog_version}:${v.id.slice(0, 6)}`,
|
|
229
|
+
provider: this.provider,
|
|
230
|
+
owner: m.owner,
|
|
231
|
+
description: m.description,
|
|
232
|
+
} as AIModel;
|
|
233
|
+
});
|
|
211
234
|
}
|
|
212
235
|
|
|
213
236
|
async listTrainableModels(): Promise<AIModel[]> {
|
|
214
|
-
if (!cachedTrainableModels || Date.now() > cachedTrainableModelsTimestamp + 12 * 3600 * 1000) {
|
|
237
|
+
if (!cachedTrainableModels || Date.now() > cachedTrainableModelsTimestamp + 12 * 3600 * 1000) {
|
|
238
|
+
// 12 hours
|
|
215
239
|
cachedTrainableModels = await this._listTrainableModels();
|
|
216
240
|
cachedTrainableModelsTimestamp = Date.now();
|
|
217
241
|
}
|
|
@@ -222,9 +246,9 @@ export class ReplicateDriver extends AbstractDriver<DriverOptions, string> {
|
|
|
222
246
|
if (!params.text) {
|
|
223
247
|
return this.listTrainableModels();
|
|
224
248
|
}
|
|
225
|
-
const [owner, model] = params.text.split(
|
|
249
|
+
const [owner, model] = params.text.split('/');
|
|
226
250
|
if (!owner || !model) {
|
|
227
|
-
throw new Error(
|
|
251
|
+
throw new Error('Invalid model name. Expected format: owner/model');
|
|
228
252
|
}
|
|
229
253
|
|
|
230
254
|
return this.listModelVersions(owner, model);
|
|
@@ -236,16 +260,16 @@ export class ReplicateDriver extends AbstractDriver<DriverOptions, string> {
|
|
|
236
260
|
this.service.models.versions.list(owner, model),
|
|
237
261
|
]);
|
|
238
262
|
|
|
239
|
-
|
|
240
|
-
|
|
263
|
+
const versionResults = (versions as ReplicateVersionsResponse).results ?? [];
|
|
264
|
+
if (!rModel || !versions || versionResults.length === 0) {
|
|
265
|
+
throw new Error('Model not found or no versions available');
|
|
241
266
|
}
|
|
242
267
|
|
|
243
|
-
const models: AIModel[] =
|
|
244
|
-
const fullName = rModel.owner
|
|
268
|
+
const models: AIModel[] = versionResults.map((v) => {
|
|
269
|
+
const fullName = `${rModel.owner}/${rModel.name}`;
|
|
245
270
|
return {
|
|
246
|
-
id: fullName
|
|
247
|
-
name:
|
|
248
|
-
fullName + "@" + v.cog_version + ":" + v.id.slice(0, 6),
|
|
271
|
+
id: `${fullName}:${v.id}`,
|
|
272
|
+
name: `${fullName}@${v.cog_version}:${v.id.slice(0, 6)}`,
|
|
249
273
|
provider: this.provider,
|
|
250
274
|
owner: rModel.owner,
|
|
251
275
|
description: rModel.description,
|
|
@@ -261,15 +285,15 @@ export class ReplicateDriver extends AbstractDriver<DriverOptions, string> {
|
|
|
261
285
|
}
|
|
262
286
|
|
|
263
287
|
async searchModels(params: ModelSearchPayload): Promise<AIModel[]> {
|
|
264
|
-
const res = await this.service.request(
|
|
288
|
+
const res = await this.service.request('models/search', {
|
|
265
289
|
params: {
|
|
266
290
|
query: params.text,
|
|
267
291
|
},
|
|
268
292
|
});
|
|
269
293
|
|
|
270
|
-
const rModels = ((await res.json()) as
|
|
294
|
+
const rModels = ((await res.json()) as ReplicateSearchResponse).models;
|
|
271
295
|
|
|
272
|
-
const models: AIModel[] = rModels.map((v
|
|
296
|
+
const models: AIModel[] = rModels.map((v) => {
|
|
273
297
|
return {
|
|
274
298
|
id: v.name,
|
|
275
299
|
name: v.name,
|
|
@@ -284,9 +308,8 @@ export class ReplicateDriver extends AbstractDriver<DriverOptions, string> {
|
|
|
284
308
|
}
|
|
285
309
|
|
|
286
310
|
async generateEmbeddings(): Promise<EmbeddingsResult> {
|
|
287
|
-
throw new Error(
|
|
311
|
+
throw new Error('Method not implemented.');
|
|
288
312
|
}
|
|
289
|
-
|
|
290
313
|
}
|
|
291
314
|
|
|
292
315
|
function jobInfo(job: Prediction | Training, modelName?: string): TrainingJob {
|
|
@@ -298,7 +321,7 @@ function jobInfo(job: Prediction | Training, modelName?: string): TrainingJob {
|
|
|
298
321
|
status = TrainingJobStatus.succeeded;
|
|
299
322
|
} else if (jobStatus === 'failed') {
|
|
300
323
|
status = TrainingJobStatus.failed;
|
|
301
|
-
const error = job.error as
|
|
324
|
+
const error = job.error as unknown;
|
|
302
325
|
if (typeof error === 'string') {
|
|
303
326
|
details = error;
|
|
304
327
|
} else {
|
|
@@ -315,7 +338,6 @@ function jobInfo(job: Prediction | Training, modelName?: string): TrainingJob {
|
|
|
315
338
|
id: job.id,
|
|
316
339
|
status,
|
|
317
340
|
details,
|
|
318
|
-
model: modelName ? modelName
|
|
341
|
+
model: modelName ? `${modelName}:${job.version}` : job.version,
|
|
319
342
|
} as TrainingJob;
|
|
320
|
-
|
|
321
|
-
}
|
|
343
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { PromptRole, type PromptSegment } from '@llumiverse/core';
|
|
2
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
3
|
+
import { formatClaudePrompt } from './claude-messages.js';
|
|
4
|
+
|
|
5
|
+
describe('formatClaudePrompt', () => {
|
|
6
|
+
it('warns and skips video attachments', async () => {
|
|
7
|
+
const getStream = vi.fn();
|
|
8
|
+
const warn = vi.fn();
|
|
9
|
+
const segments = [
|
|
10
|
+
{
|
|
11
|
+
role: PromptRole.user,
|
|
12
|
+
content: 'Look at this',
|
|
13
|
+
files: [
|
|
14
|
+
{
|
|
15
|
+
name: 'clip.mp4',
|
|
16
|
+
mime_type: 'video/mp4',
|
|
17
|
+
getStream,
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
] as unknown as PromptSegment[];
|
|
22
|
+
|
|
23
|
+
const prompt = await formatClaudePrompt(segments, { model: 'claude-haiku-4-5' } as never, { warn });
|
|
24
|
+
|
|
25
|
+
expect(prompt.messages).toEqual([
|
|
26
|
+
{
|
|
27
|
+
role: 'user',
|
|
28
|
+
content: [{ type: 'text', text: 'Look at this' }],
|
|
29
|
+
},
|
|
30
|
+
]);
|
|
31
|
+
expect(getStream).not.toHaveBeenCalled();
|
|
32
|
+
expect(warn).toHaveBeenCalledWith(
|
|
33
|
+
{ file_name: 'clip.mp4', mime_type: 'video/mp4' },
|
|
34
|
+
'[Claude] Skipping unsupported video attachment',
|
|
35
|
+
);
|
|
36
|
+
});
|
|
37
|
+
});
|