@vertesia/common 0.71.0 → 0.73.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/cjs/access-control.js +4 -0
- package/lib/cjs/access-control.js.map +1 -1
- package/lib/cjs/apikey.js.map +1 -1
- package/lib/cjs/project.js +1 -2
- package/lib/cjs/project.js.map +1 -1
- package/lib/cjs/store/store.js.map +1 -1
- package/lib/cjs/user.js +1 -2
- package/lib/cjs/user.js.map +1 -1
- package/lib/cjs/utils/type-helpers.js +3 -0
- package/lib/cjs/utils/type-helpers.js.map +1 -0
- package/lib/esm/access-control.js +4 -0
- package/lib/esm/access-control.js.map +1 -1
- package/lib/esm/apikey.js.map +1 -1
- package/lib/esm/project.js +1 -2
- package/lib/esm/project.js.map +1 -1
- package/lib/esm/store/store.js.map +1 -1
- package/lib/esm/user.js +0 -1
- package/lib/esm/user.js.map +1 -1
- package/lib/esm/utils/type-helpers.js +2 -0
- package/lib/esm/utils/type-helpers.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/types/access-control.d.ts +5 -1
- package/lib/types/access-control.d.ts.map +1 -1
- package/lib/types/apikey.d.ts +2 -3
- package/lib/types/apikey.d.ts.map +1 -1
- package/lib/types/apps.d.ts +7 -15
- package/lib/types/apps.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/project.d.ts +1 -2
- package/lib/types/project.d.ts.map +1 -1
- package/lib/types/store/store.d.ts +6 -0
- package/lib/types/store/store.d.ts.map +1 -1
- package/lib/types/transient-tokens.d.ts +2 -5
- package/lib/types/transient-tokens.d.ts.map +1 -1
- package/lib/types/user.d.ts +0 -2
- package/lib/types/user.d.ts.map +1 -1
- package/lib/types/utils/type-helpers.d.ts +3 -0
- package/lib/types/utils/type-helpers.d.ts.map +1 -0
- package/lib/vertesia-common.js +1 -1
- package/lib/vertesia-common.js.map +1 -1
- package/package.json +1 -1
- package/src/access-control.ts +5 -0
- package/src/apikey.ts +2 -3
- package/src/apps.ts +7 -17
- package/src/index.ts +1 -0
- package/src/project.ts +1 -2
- package/src/store/store.ts +7 -0
- package/src/transient-tokens.ts +2 -2
- package/src/user.ts +0 -3
- package/src/utils/type-helpers.ts +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertesia-common.js","sources":["../src/access-control.ts","../src/apikey.ts","../../../llumiverse/common/lib/esm/types.js","../../../llumiverse/common/lib/esm/capability/azure_foundry.js","../../../llumiverse/common/lib/esm/capability/bedrock.js","../../../llumiverse/common/lib/esm/capability/openai.js","../../../llumiverse/common/lib/esm/capability/vertexai.js","../../../llumiverse/common/lib/esm/capability.js","../../../llumiverse/common/lib/esm/options/vertexai.js","../src/environment.ts","../../../llumiverse/common/lib/esm/options/fallback.js","../src/group.ts","../src/integrations.ts","../src/interaction.ts","../src/meters.ts","../src/project.ts","../src/Progress.ts","../src/prompt.ts","../src/refs.ts","../src/store/collections.ts","../src/store/dsl-workflow.ts","../src/store/object-types.ts","../src/store/store.ts","../src/store/temporalio.ts","../src/store/workflow.ts","../src/training.ts","../src/transient-tokens.ts","../src/user.ts","../src/utils/auth.ts","../src/utils/schemas.ts"],"sourcesContent":[null,null,"// ============== Provider details ===============\nexport var Providers;\n(function (Providers) {\n Providers[\"openai\"] = \"openai\";\n Providers[\"azure_openai\"] = \"azure_openai\";\n Providers[\"azure_foundry\"] = \"azure_foundry\";\n Providers[\"huggingface_ie\"] = \"huggingface_ie\";\n Providers[\"replicate\"] = \"replicate\";\n Providers[\"bedrock\"] = \"bedrock\";\n Providers[\"vertexai\"] = \"vertexai\";\n Providers[\"togetherai\"] = \"togetherai\";\n Providers[\"mistralai\"] = \"mistralai\";\n Providers[\"groq\"] = \"groq\";\n Providers[\"watsonx\"] = \"watsonx\";\n})(Providers || (Providers = {}));\nexport const ProviderList = {\n openai: {\n id: Providers.openai,\n name: \"OpenAI\",\n requiresApiKey: true,\n requiresEndpointUrl: false,\n supportSearch: false,\n },\n azure_openai: {\n id: Providers.azure_openai,\n name: \"Azure OpenAI\",\n requiresApiKey: false,\n requiresEndpointUrl: true,\n supportSearch: false,\n },\n azure_foundry: {\n id: Providers.azure_foundry,\n name: \"Azure Foundry\",\n requiresApiKey: true,\n requiresEndpointUrl: true,\n supportSearch: false,\n },\n huggingface_ie: {\n id: Providers.huggingface_ie,\n name: \"HuggingFace Inference Endpoint\",\n requiresApiKey: true,\n requiresEndpointUrl: true,\n },\n replicate: {\n id: Providers.replicate,\n name: \"Repicate\",\n requiresApiKey: true,\n requiresEndpointUrl: false,\n supportSearch: true,\n },\n bedrock: {\n id: Providers.bedrock,\n name: \"AWS Bedrock\",\n requiresApiKey: false,\n requiresEndpointUrl: false,\n endpointPlaceholder: \"region name (eg. us-east-1)\",\n supportSearch: false,\n },\n vertexai: {\n id: Providers.vertexai,\n name: \"Google Vertex AI\",\n requiresApiKey: false,\n requiresEndpointUrl: false,\n supportSearch: false,\n },\n togetherai: {\n id: Providers.togetherai,\n name: \"Together AI\",\n requiresApiKey: false,\n requiresEndpointUrl: false,\n supportSearch: false,\n },\n mistralai: {\n id: Providers.mistralai,\n name: \"Mistral AI\",\n requiresApiKey: false,\n requiresEndpointUrl: false,\n supportSearch: false,\n },\n groq: {\n id: Providers.groq,\n name: \"Groq Cloud\",\n requiresApiKey: false,\n requiresEndpointUrl: false,\n supportSearch: false,\n },\n watsonx: {\n id: Providers.watsonx,\n name: \"IBM WatsonX\",\n requiresApiKey: true,\n requiresEndpointUrl: true,\n supportSearch: false\n },\n};\n//Common names to share between different models\nexport var SharedOptions;\n(function (SharedOptions) {\n //Text\n SharedOptions[\"max_tokens\"] = \"max_tokens\";\n SharedOptions[\"temperature\"] = \"temperature\";\n SharedOptions[\"top_p\"] = \"top_p\";\n SharedOptions[\"top_k\"] = \"top_k\";\n SharedOptions[\"presence_penalty\"] = \"presence_penalty\";\n SharedOptions[\"frequency_penalty\"] = \"frequency_penalty\";\n SharedOptions[\"stop_sequence\"] = \"stop_sequence\";\n //Image\n SharedOptions[\"seed\"] = \"seed\";\n SharedOptions[\"number_of_images\"] = \"number_of_images\";\n})(SharedOptions || (SharedOptions = {}));\nexport var OptionType;\n(function (OptionType) {\n OptionType[\"numeric\"] = \"numeric\";\n OptionType[\"enum\"] = \"enum\";\n OptionType[\"boolean\"] = \"boolean\";\n OptionType[\"string_list\"] = \"string_list\";\n})(OptionType || (OptionType = {}));\n// ============== Prompts ===============\nexport var PromptRole;\n(function (PromptRole) {\n PromptRole[\"safety\"] = \"safety\";\n PromptRole[\"system\"] = \"system\";\n PromptRole[\"user\"] = \"user\";\n PromptRole[\"assistant\"] = \"assistant\";\n PromptRole[\"negative\"] = \"negative\";\n PromptRole[\"mask\"] = \"mask\";\n /**\n * Used to send the response of a tool\n */\n PromptRole[\"tool\"] = \"tool\";\n})(PromptRole || (PromptRole = {}));\nexport var Modalities;\n(function (Modalities) {\n Modalities[\"text\"] = \"text\";\n Modalities[\"image\"] = \"image\";\n})(Modalities || (Modalities = {}));\nexport var AIModelStatus;\n(function (AIModelStatus) {\n AIModelStatus[\"Available\"] = \"available\";\n AIModelStatus[\"Pending\"] = \"pending\";\n AIModelStatus[\"Stopped\"] = \"stopped\";\n AIModelStatus[\"Unavailable\"] = \"unavailable\";\n AIModelStatus[\"Unknown\"] = \"unknown\";\n AIModelStatus[\"Legacy\"] = \"legacy\";\n})(AIModelStatus || (AIModelStatus = {}));\nexport var ModelType;\n(function (ModelType) {\n ModelType[\"Classifier\"] = \"classifier\";\n ModelType[\"Regressor\"] = \"regressor\";\n ModelType[\"Clustering\"] = \"clustering\";\n ModelType[\"AnomalyDetection\"] = \"anomaly-detection\";\n ModelType[\"TimeSeries\"] = \"time-series\";\n ModelType[\"Text\"] = \"text\";\n ModelType[\"Image\"] = \"image\";\n ModelType[\"Audio\"] = \"audio\";\n ModelType[\"Video\"] = \"video\";\n ModelType[\"Embedding\"] = \"embedding\";\n ModelType[\"Chat\"] = \"chat\";\n ModelType[\"Code\"] = \"code\";\n ModelType[\"NLP\"] = \"nlp\";\n ModelType[\"MultiModal\"] = \"multi-modal\";\n ModelType[\"Test\"] = \"test\";\n ModelType[\"Other\"] = \"other\";\n ModelType[\"Unknown\"] = \"unknown\";\n})(ModelType || (ModelType = {}));\nexport var TrainingJobStatus;\n(function (TrainingJobStatus) {\n TrainingJobStatus[\"running\"] = \"running\";\n TrainingJobStatus[\"succeeded\"] = \"succeeded\";\n TrainingJobStatus[\"failed\"] = \"failed\";\n TrainingJobStatus[\"cancelled\"] = \"cancelled\";\n})(TrainingJobStatus || (TrainingJobStatus = {}));\n//# sourceMappingURL=types.js.map","// Global feature flags - temporarily disable tool support for non-OpenAI models\nconst ENABLE_TOOL_SUPPORT_NON_OPENAI = false;\n// Record of Azure Foundry model capabilities keyed by model ID (lowercased) \n// Only include models with specific exceptions that differ from their family patterns\nconst RECORD_MODEL_CAPABILITIES = {\n // OpenAI O-series exceptions - o1-mini doesn't have tool support like other o1 models\n \"o1-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n // OpenAI o3 is text-only unlike other o-series models\n \"o3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n // Models with special properties not covered by family patterns\n \"deepseek-r1-0528\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"deepseek-v3-0324\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"mistral-medium-2505\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"mistral-nemo\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"llama-4-scout-17b-16e-instruct\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n};\n// Populate RECORD_FAMILY_CAPABILITIES as a const record (lowest common denominator for each family)\nconst RECORD_FAMILY_CAPABILITIES = {\n // OpenAI GPT families\n \"gpt-3.5-turbo\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"gpt-35-turbo\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"gpt-35\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"gpt-4\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"gpt-4.1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"gpt-4.5\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"gpt-4o\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n // OpenAI O-series families\n \"o1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"o1-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"o1-pro\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"o3-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"o4-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"o4\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n // Llama families\n \"llama-3.1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"llama-3.2\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"llama-3.3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"llama-3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"llama-4\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"llama\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n // Mistral families\n \"mistral-large\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"mistral-small\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"mistral\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n // Microsoft Phi families\n \"phi-4\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"phi\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n // DeepSeek families\n \"deepseek-r1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"deepseek-v3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"deepseek\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n // AI21 families\n \"ai21-jamba\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"ai21\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"jamba\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n // Cohere families\n \"cohere-command\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"cohere\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"command\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n // xAI families\n \"grok-3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"grok\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true }\n};\n// Fallback pattern lists for inferring modalities and tool support\nconst IMAGE_INPUT_MODELS = [\"image\", \"vision\"];\nconst VIDEO_INPUT_MODELS = [\"video\"];\nconst AUDIO_INPUT_MODELS = [\"audio\"];\nconst TEXT_INPUT_MODELS = [\"text\"];\nconst IMAGE_OUTPUT_MODELS = [\"image\"];\nconst VIDEO_OUTPUT_MODELS = [\"video\"];\nconst AUDIO_OUTPUT_MODELS = [\"audio\"];\nconst TEXT_OUTPUT_MODELS = [\"text\"];\nconst EMBEDDING_OUTPUT_MODELS = [\"embed\"];\nconst TOOL_SUPPORT_MODELS = [\"tool\", \"gpt-4\", \"gpt-4o\", \"o1\", \"o3\", \"o4\", \"llama-3\", \"mistral-large\", \"mistral-small\", \"jamba\", \"cohere\", \"command\", \"grok\"];\nfunction modelMatches(modelName, patterns) {\n return patterns.some(pattern => modelName.includes(pattern));\n}\n/**\n * Get the full ModelCapabilities for an Azure Foundry model.\n * Checks RECORD_MODEL_CAPABILITIES first, then falls back to family pattern matching.\n */\nexport function getModelCapabilitiesAzureFoundry(model) {\n // Extract base model from composite ID (deployment::baseModel)\n const { baseModel } = parseAzureFoundryModelId(model);\n const normalized = baseModel.toLowerCase();\n // 1. Exact match in record\n const record = RECORD_MODEL_CAPABILITIES[normalized];\n if (record) {\n return applyGlobalToolSupportDisable(record, normalized);\n }\n // 2. Fallback: find the longest matching family prefix in RECORD_FAMILY_CAPABILITIES\n let bestFamilyKey = undefined;\n let bestFamilyLength = 0;\n for (const key of Object.keys(RECORD_FAMILY_CAPABILITIES)) {\n if (normalized.startsWith(key) && key.length > bestFamilyLength) {\n bestFamilyKey = key;\n bestFamilyLength = key.length;\n }\n }\n if (bestFamilyKey) {\n return applyGlobalToolSupportDisable(RECORD_FAMILY_CAPABILITIES[bestFamilyKey], normalized);\n }\n // 3. Fallback: infer from normalized name using patterns\n const input = {\n text: modelMatches(normalized, TEXT_INPUT_MODELS) || true, // Default to text input\n image: modelMatches(normalized, IMAGE_INPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_INPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_INPUT_MODELS) || undefined,\n embed: false\n };\n const output = {\n text: modelMatches(normalized, TEXT_OUTPUT_MODELS) || true, // Default to text output\n image: modelMatches(normalized, IMAGE_OUTPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_OUTPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_OUTPUT_MODELS) || undefined,\n embed: modelMatches(normalized, EMBEDDING_OUTPUT_MODELS) || undefined\n };\n const tool_support = modelMatches(normalized, TOOL_SUPPORT_MODELS) || undefined;\n const tool_support_streaming = tool_support || undefined;\n const inferredCapabilities = { input, output, tool_support, tool_support_streaming };\n return applyGlobalToolSupportDisable(inferredCapabilities, normalized);\n}\n/**\n * Apply global tool support disable for non-OpenAI models.\n * Preserves model-specific information for future use while temporarily disabling tool support.\n */\nfunction applyGlobalToolSupportDisable(capabilities, modelName) {\n // Check if this is an OpenAI model\n const isOpenAIModel = modelName.startsWith('gpt-') || modelName.startsWith('o1') || modelName.startsWith('o3') || modelName.startsWith('o4');\n if (!ENABLE_TOOL_SUPPORT_NON_OPENAI && !isOpenAIModel) {\n // Disable tool support for non-OpenAI models while preserving other capabilities\n return {\n ...capabilities,\n tool_support: false,\n tool_support_streaming: false\n };\n }\n return capabilities;\n}\n// Helper function to parse composite model IDs\nfunction parseAzureFoundryModelId(compositeId) {\n const parts = compositeId.split('::');\n if (parts.length === 2) {\n return {\n deploymentName: parts[0],\n baseModel: parts[1]\n };\n }\n // Backwards compatibility: if no delimiter found, treat as deployment name\n return {\n deploymentName: compositeId,\n baseModel: compositeId\n };\n}\n//# sourceMappingURL=azure_foundry.js.map","// Record of Bedrock model capabilities keyed by model ID.\nconst RECORD_MODEL_CAPABILITIES = {\n \"foundation-model/ai21.jamba-1-5-large-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/ai21.jamba-1-5-mini-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/ai21.jamba-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/amazon.nova-canvas-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { image: true, text: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/amazon.nova-lite-v1:0\": { input: { text: true, image: true, video: true, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/amazon.nova-micro-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/amazon.nova-pro-v1:0\": { input: { text: true, image: true, video: true, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/amazon.titan-text-express-v1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/amazon.titan-text-lite-v1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/amazon.titan-text-premier-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/amazon.titan-tg1-large\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-3-5-haiku-20241022-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-3-5-sonnet-20240620-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/anthropic.claude-3-haiku-20240307-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-3-opus-20240229-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-3-sonnet-20240229-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-instant-v1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-v2\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-v2:1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/cohere.command-light-text-v14\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/cohere.command-r-plus-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/cohere.command-r-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/cohere.command-text-v14\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/meta.llama3-1-405b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/meta.llama3-1-70b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/meta.llama3-1-8b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/meta.llama3-70b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/meta.llama3-8b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/mistral.mixtral-8x7b-instruct-v0:1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/mistral.mistral-7b-instruct-v0:2\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/mistral.mistral-large-2402-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/mistral.mistral-large-2407-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/mistral.mistral-small-2402-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.amazon.nova-lite-v1:0\": { input: { text: true, image: true, video: true, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.amazon.nova-micro-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.amazon.nova-premier-v1:0\": { input: { text: true, image: true, video: true, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.amazon.nova-pro-v1:0\": { input: { text: true, image: true, video: true, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.anthropic.claude-3-5-haiku-20241022-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-3-5-sonnet-20240620-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.anthropic.claude-3-5-sonnet-20241022-v2:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.anthropic.claude-3-7-sonnet-20250219-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.anthropic.claude-3-haiku-20240307-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-3-opus-20240229-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-3-sonnet-20240229-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-opus-4-20250514-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-sonnet-4-20250514-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.deepseek.r1-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-1-70b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-1-8b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-2-1b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-2-11b-instruct-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-2-3b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-2-90b-instruct-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-3-70b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama4-maverick-17b-instruct-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama4-scout-17b-instruct-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.mistral.pixtral-large-2502-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.writer.palmyra-x4-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.writer.palmyra-x5-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false }\n};\n// Populate RECORD_FAMILY_CAPABILITIES as a const record (lowest common denominator for each family)\nconst RECORD_FAMILY_CAPABILITIES = {\n \"foundation-model/ai21.jamba\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/amazon.nova\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/amazon.titan\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/anthropic.claude\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-3\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/anthropic.claude-3-5\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/anthropic.claude-3-7\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/cohere.command\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/meta.llama3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/mistral.mistral\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/mistral.mistral-large\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/mistral.mixtral\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-3-haiku\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-3-5-sonnet\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.anthropic.claude-3-opus\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-3-sonnet\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.deepseek.r1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama4-maverick-17b\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama4-scout-17b\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.mistral.pixtral\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.writer.palmyra\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false }\n};\n/**\n * Extract the model identifier from an ARN or inference profile\n * @param modelName The full model ARN or name\n * @returns The normalized model identifier\n */\nfunction normalizeModelName(modelName) {\n const modelLower = modelName.toLowerCase();\n if (modelLower.includes(\"inference-profile\")) {\n const parts = modelLower.split(\"/\");\n if (parts.length > 1) {\n const providerModel = parts[parts.length - 1];\n const modelParts = providerModel.split(\".\");\n if (modelParts.length > 1 && modelParts[1] === \"deepseek\") {\n return `deepseek-${modelParts.slice(2).join(\".\")}`;\n }\n return modelParts.length > 2 ? modelParts.slice(2).join(\".\") : providerModel;\n }\n }\n return modelLower;\n}\n// Fallback pattern lists for inferring modalities and tool support\nconst IMAGE_INPUT_MODELS = [\"image\"]; // fallback: if model id contains 'image', supports image input\nconst VIDEO_INPUT_MODELS = [\"video\"];\nconst AUDIO_INPUT_MODELS = [\"audio\"];\nconst TEXT_INPUT_MODELS = [\"text\"];\nconst IMAGE_OUTPUT_MODELS = [\"image\"];\nconst VIDEO_OUTPUT_MODELS = [\"video\"];\nconst AUDIO_OUTPUT_MODELS = [\"audio\"];\nconst TEXT_OUTPUT_MODELS = [\"text\"];\nconst EMBEDDING_OUTPUT_MODELS = [\"embed\"];\nconst TOOL_SUPPORT_MODELS = [\"tool\", \"sonnet\", \"opus\", \"nova\", \"palmyra\", \"command-r\", \"mistral-large\", \"pixtral\"];\nfunction modelMatches(modelName, patterns) {\n return patterns.some(pattern => modelName.includes(pattern));\n}\n/**\n * Get the full ModelCapabilities for a Bedrock model.\n * Checks RECORD_MODEL_CAPABILITIES first, then falls back to pattern-based inference.\n */\nexport function getModelCapabilitiesBedrock(model) {\n // Normalize ARN or inference-profile to model ID\n let normalized = model;\n const arnPattern = /^arn:aws:bedrock:[^:]+:[^:]*:(inference-profile|foundation-model)\\/.+/i;\n if (arnPattern.test(model)) {\n // Extract after last occurrence of 'foundation-model/' or 'inference-profile/'\n const foundationIdx = model.lastIndexOf('foundation-model/');\n const inferenceIdx = model.lastIndexOf('inference-profile/');\n if (foundationIdx !== -1) {\n normalized = model.substring(foundationIdx);\n }\n else if (inferenceIdx !== -1) {\n normalized = model.substring(inferenceIdx);\n }\n }\n // Standardize region for inference-profile to 'us' for record lookup\n // This allows support for different AWS regions by mapping all to 'us'\n if (normalized.startsWith(\"inference-profile/\")) {\n normalized = normalized.replace(/^inference-profile\\/[^.]+\\./, \"inference-profile/us.\");\n }\n // 1. Exact match in record\n const record = RECORD_MODEL_CAPABILITIES[normalized];\n if (record)\n return record;\n // 2. Fallback: find the longest matching family prefix in RECORD_FAMILY_CAPABILITIES\n let bestFamilyKey = undefined;\n let bestFamilyLength = 0;\n for (const key of Object.keys(RECORD_FAMILY_CAPABILITIES)) {\n if (normalized.startsWith(key) && key.length > bestFamilyLength) {\n bestFamilyKey = key;\n bestFamilyLength = key.length;\n }\n }\n if (bestFamilyKey) {\n return RECORD_FAMILY_CAPABILITIES[bestFamilyKey];\n }\n // 3. Fallback: infer from normalized name\n normalized = normalizeModelName(normalized);\n const input = {\n text: modelMatches(normalized, TEXT_INPUT_MODELS) || undefined,\n image: modelMatches(normalized, IMAGE_INPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_INPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_INPUT_MODELS) || undefined,\n embed: false\n };\n const output = {\n text: modelMatches(normalized, TEXT_OUTPUT_MODELS) || undefined,\n image: modelMatches(normalized, IMAGE_OUTPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_OUTPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_OUTPUT_MODELS) || undefined,\n embed: modelMatches(normalized, EMBEDDING_OUTPUT_MODELS) || undefined\n };\n const tool_support = modelMatches(normalized, TOOL_SUPPORT_MODELS) || undefined;\n return { input, output, tool_support };\n}\n//# sourceMappingURL=bedrock.js.map","// Record of OpenAI model capabilities keyed by model ID (lowercased)\nconst RECORD_MODEL_CAPABILITIES = {\n \"chatgpt-4o-latest\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-3.5-turbo\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-3.5-turbo-0125\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-3.5-turbo-1106\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-3.5-turbo-16k\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-3.5-turbo-instruct\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-3.5-turbo-instruct-0914\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4-0125-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4-0613\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4-1106-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4-turbo\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4-turbo-2024-04-09\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4-turbo-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4.1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.1-2025-04-14\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.1-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.1-mini-2025-04-14\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.1-nano\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.1-nano-2025-04-14\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.5-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.5-preview-2025-02-27\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-2024-05-13\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-2024-08-06\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-2024-11-20\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-mini-2024-07-18\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-mini-search-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-mini-search-preview-2025-03-11\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-search-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-search-preview-2025-03-11\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-image-1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"o1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1-2024-12-17\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"o1-mini-2024-09-12\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"o1-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1-preview-2024-09-12\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1-pro\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1-pro-2025-03-19\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o3-2025-04-16\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o3-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o3-mini-2025-01-31\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o4-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o4-mini-2025-04-16\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true }\n};\n// Populate RECORD_FAMILY_CAPABILITIES as a const record (lowest common denominator for each family)\nconst RECORD_FAMILY_CAPABILITIES = {\n \"gpt-3.5-turbo\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4.1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.5\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"o1-pro\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o3-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o4-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true }\n};\n// Fallback pattern lists for inferring modalities and tool support\nconst IMAGE_INPUT_MODELS = [\"image\"];\nconst VIDEO_INPUT_MODELS = [\"video\"];\nconst AUDIO_INPUT_MODELS = [\"audio\"];\nconst TEXT_INPUT_MODELS = [\"text\"];\nconst IMAGE_OUTPUT_MODELS = [\"image\"];\nconst VIDEO_OUTPUT_MODELS = [\"video\"];\nconst AUDIO_OUTPUT_MODELS = [\"audio\"];\nconst TEXT_OUTPUT_MODELS = [\"text\"];\nconst EMBEDDING_OUTPUT_MODELS = [\"embed\"];\nconst TOOL_SUPPORT_MODELS = [\"tool\", \"o1\", \"o3\", \"o4\", \"gpt-4.1\", \"gpt-4o\"];\nfunction modelMatches(modelName, patterns) {\n return patterns.some(pattern => modelName.includes(pattern));\n}\nfunction normalizeOpenAIModelName(modelName) {\n return modelName.toLowerCase();\n}\n/**\n * Get the full ModelCapabilities for an OpenAI model.\n * Checks RECORD_MODEL_CAPABILITIES first, then falls back to pattern-based inference.\n */\nexport function getModelCapabilitiesOpenAI(model) {\n const normalized = normalizeOpenAIModelName(model);\n const record = RECORD_MODEL_CAPABILITIES[normalized];\n if (record)\n return record;\n let bestFamilyKey = undefined;\n let bestFamilyLength = 0;\n for (const key of Object.keys(RECORD_FAMILY_CAPABILITIES)) {\n if (normalized.startsWith(key) && key.length > bestFamilyLength) {\n bestFamilyKey = key;\n bestFamilyLength = key.length;\n }\n }\n if (bestFamilyKey) {\n return RECORD_FAMILY_CAPABILITIES[bestFamilyKey];\n }\n const input = {\n text: modelMatches(normalized, TEXT_INPUT_MODELS) || undefined,\n image: modelMatches(normalized, IMAGE_INPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_INPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_INPUT_MODELS) || undefined,\n embed: false\n };\n const output = {\n text: modelMatches(normalized, TEXT_OUTPUT_MODELS) || undefined,\n image: modelMatches(normalized, IMAGE_OUTPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_OUTPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_OUTPUT_MODELS) || undefined,\n embed: modelMatches(normalized, EMBEDDING_OUTPUT_MODELS) || undefined\n };\n const tool_support = modelMatches(normalized, TOOL_SUPPORT_MODELS) || undefined;\n return { input, output, tool_support };\n}\n//# sourceMappingURL=openai.js.map","// Record of Vertex AI model capabilities keyed by model ID (last path segment, lowercased)\nconst RECORD_MODEL_CAPABILITIES = {\n \"gemini-1.5-flash-002\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gemini-1.5-pro-002\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gemini-2.0-flash-001\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gemini-2.0-flash-lite-001\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gemini-2.5-flash-preview-04-17\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gemini-2.5-pro-preview-05-06\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"imagen-3.0-generate-002\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-3.0-capability-001\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-4.0-generate-preview-05-20\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"claude-3-opus\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3-haiku\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3-5-sonnet\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3-5-haiku\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3-5-sonnet-v2\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3-7-sonnet\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-opus-4\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-sonnet-4\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n};\n// Populate RECORD_FAMILY_CAPABILITIES as a const record (lowest common denominator for each family)\nconst RECORD_FAMILY_CAPABILITIES = {\n \"gemini-1.5\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gemini-2.0\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gemini-2.5\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"imagen-3.0-generate\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-3.0-fast-generate\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-3.0-capability\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-4.0-generate\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-4.0-ultra-generate\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-4.0-fast-generate\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-4.0-capability\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"claude-3-5\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3-7\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"llama\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n};\n// Fallback pattern lists for inferring modalities and tool support\nconst IMAGE_INPUT_MODELS = [\"image\"];\nconst VIDEO_INPUT_MODELS = [\"video\"];\nconst AUDIO_INPUT_MODELS = [\"audio\"];\nconst TEXT_INPUT_MODELS = [\"text\"];\nconst IMAGE_OUTPUT_MODELS = [\"image\"];\nconst VIDEO_OUTPUT_MODELS = [\"video\"];\nconst AUDIO_OUTPUT_MODELS = [\"audio\"];\nconst TEXT_OUTPUT_MODELS = [\"text\"];\nconst EMBEDDING_OUTPUT_MODELS = [\"embed\"];\nconst TOOL_SUPPORT_MODELS = [\"tool\", \"sonnet\", \"opus\", \"gemini\", \"claude-3-5\", \"claude-3-7\"];\nfunction modelMatches(modelName, patterns) {\n return patterns.some(pattern => modelName.includes(pattern));\n}\nfunction normalizeVertexAIModelName(modelName) {\n const segments = modelName.toLowerCase().split(\"/\");\n return segments[segments.length - 1];\n}\n/**\n * Get the full ModelCapabilities for a Vertex AI model.\n * Checks RECORD_MODEL_CAPABILITIES first, then falls back to pattern-based inference.\n */\nexport function getModelCapabilitiesVertexAI(model) {\n const normalized = normalizeVertexAIModelName(model);\n const record = RECORD_MODEL_CAPABILITIES[normalized];\n if (record)\n return record;\n let bestFamilyKey = undefined;\n let bestFamilyLength = 0;\n for (const key of Object.keys(RECORD_FAMILY_CAPABILITIES)) {\n if (normalized.startsWith(key) && key.length > bestFamilyLength) {\n bestFamilyKey = key;\n bestFamilyLength = key.length;\n }\n }\n if (bestFamilyKey) {\n return RECORD_FAMILY_CAPABILITIES[bestFamilyKey];\n }\n const input = {\n text: modelMatches(normalized, TEXT_INPUT_MODELS) || undefined,\n image: modelMatches(normalized, IMAGE_INPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_INPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_INPUT_MODELS) || undefined,\n embed: false\n };\n const output = {\n text: modelMatches(normalized, TEXT_OUTPUT_MODELS) || undefined,\n image: modelMatches(normalized, IMAGE_OUTPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_OUTPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_OUTPUT_MODELS) || undefined,\n embed: modelMatches(normalized, EMBEDDING_OUTPUT_MODELS) || undefined\n };\n const tool_support = modelMatches(normalized, TOOL_SUPPORT_MODELS) || undefined;\n return { input, output, tool_support };\n}\n//# sourceMappingURL=vertexai.js.map","import { getModelCapabilitiesAzureFoundry } from \"./capability/azure_foundry.js\";\nimport { getModelCapabilitiesBedrock } from \"./capability/bedrock.js\";\nimport { getModelCapabilitiesOpenAI } from \"./capability/openai.js\";\nimport { getModelCapabilitiesVertexAI } from \"./capability/vertexai.js\";\nimport { Providers } from \"./types.js\";\nexport function getModelCapabilities(model, provider) {\n const capabilities = _getModelCapabilities(model, provider);\n // Globally disable audio and video for all models, as we don't support them yet\n // We also do not support tool use while streaming\n // TODO: Remove this when we add support.\n capabilities.input.audio = false;\n capabilities.output.audio = false;\n capabilities.output.video = false;\n capabilities.tool_support_streaming = false;\n return capabilities;\n}\nfunction _getModelCapabilities(model, provider) {\n switch (provider?.toLowerCase()) {\n case Providers.vertexai:\n return getModelCapabilitiesVertexAI(model);\n case Providers.openai:\n return getModelCapabilitiesOpenAI(model);\n case Providers.bedrock:\n return getModelCapabilitiesBedrock(model);\n case Providers.azure_foundry:\n // Azure Foundry uses OpenAI capabilities\n return getModelCapabilitiesAzureFoundry(model);\n default:\n // Guess the provider based on the model name\n if (model.startsWith(\"gpt\")) {\n return getModelCapabilitiesOpenAI(model);\n }\n else if (model.startsWith(\"publishers/\")) {\n return getModelCapabilitiesVertexAI(model);\n }\n else if (model.startsWith(\"arn:aws\")) {\n return getModelCapabilitiesBedrock(model);\n }\n // Fallback to a generic model with no capabilities\n return { input: {}, output: {} };\n }\n}\nexport function supportsToolUse(model, provider, streaming = false) {\n const capabilities = getModelCapabilities(model, provider);\n return streaming ? !!capabilities.tool_support_streaming : !!capabilities.tool_support;\n}\nexport function modelModalitiesToArray(modalities) {\n return Object.entries(modalities)\n .filter(([_, isSupported]) => isSupported)\n .map(([modality]) => modality);\n}\n//# sourceMappingURL=capability.js.map","import { OptionType, SharedOptions } from \"../types.js\";\nimport { textOptionsFallback } from \"./fallback.js\";\nexport var ImagenTaskType;\n(function (ImagenTaskType) {\n ImagenTaskType[\"TEXT_IMAGE\"] = \"TEXT_IMAGE\";\n ImagenTaskType[\"EDIT_MODE_INPAINT_REMOVAL\"] = \"EDIT_MODE_INPAINT_REMOVAL\";\n ImagenTaskType[\"EDIT_MODE_INPAINT_INSERTION\"] = \"EDIT_MODE_INPAINT_INSERTION\";\n ImagenTaskType[\"EDIT_MODE_BGSWAP\"] = \"EDIT_MODE_BGSWAP\";\n ImagenTaskType[\"EDIT_MODE_OUTPAINT\"] = \"EDIT_MODE_OUTPAINT\";\n ImagenTaskType[\"CUSTOMIZATION_SUBJECT\"] = \"CUSTOMIZATION_SUBJECT\";\n ImagenTaskType[\"CUSTOMIZATION_STYLE\"] = \"CUSTOMIZATION_STYLE\";\n ImagenTaskType[\"CUSTOMIZATION_CONTROLLED\"] = \"CUSTOMIZATION_CONTROLLED\";\n ImagenTaskType[\"CUSTOMIZATION_INSTRUCT\"] = \"CUSTOMIZATION_INSTRUCT\";\n})(ImagenTaskType || (ImagenTaskType = {}));\nexport var ImagenMaskMode;\n(function (ImagenMaskMode) {\n ImagenMaskMode[\"MASK_MODE_USER_PROVIDED\"] = \"MASK_MODE_USER_PROVIDED\";\n ImagenMaskMode[\"MASK_MODE_BACKGROUND\"] = \"MASK_MODE_BACKGROUND\";\n ImagenMaskMode[\"MASK_MODE_FOREGROUND\"] = \"MASK_MODE_FOREGROUND\";\n ImagenMaskMode[\"MASK_MODE_SEMANTIC\"] = \"MASK_MODE_SEMANTIC\";\n})(ImagenMaskMode || (ImagenMaskMode = {}));\nexport function getVertexAiOptions(model, option) {\n if (model.includes(\"imagen-\")) {\n return getImagenOptions(model, option);\n }\n else if (model.includes(\"gemini\")) {\n return getGeminiOptions(model, option);\n }\n else if (model.includes(\"claude\")) {\n return getClaudeOptions(model, option);\n }\n else if (model.includes(\"llama\")) {\n return getLlamaOptions(model);\n }\n return textOptionsFallback;\n}\nfunction getImagenOptions(model, option) {\n const commonOptions = [\n {\n name: SharedOptions.number_of_images, type: OptionType.numeric, min: 1, max: 4, default: 1,\n integer: true, description: \"Number of Images to generate\",\n },\n {\n name: SharedOptions.seed, type: OptionType.numeric, min: 0, max: 4294967295, default: 12,\n integer: true, description: \"The seed of the generated image\"\n },\n {\n name: \"person_generation\", type: OptionType.enum, enum: { \"Disallow the inclusion of people or faces in images\": \"dont_allow\", \"Allow generation of adults only\": \"allow_adult\", \"Allow generation of people of all ages\": \"allow_all\" },\n default: \"allow_adult\", description: \"The safety setting for allowing the generation of people in the image\"\n },\n {\n name: \"safety_setting\", type: OptionType.enum, enum: { \"Block very few problematic prompts and responses\": \"block_none\", \"Block only few problematic prompts and responses\": \"block_only_high\", \"Block some problematic prompts and responses\": \"block_medium_and_above\", \"Strictest filtering\": \"block_low_and_above\" },\n default: \"block_medium_and_above\", description: \"The overall safety setting\"\n },\n ];\n const outputOptions = [\n {\n name: \"image_file_type\", type: OptionType.enum, enum: { \"JPEG\": \"image/jpeg\", \"PNG\": \"image/png\" },\n default: \"image/png\", description: \"The file type of the generated image\",\n refresh: true,\n },\n ];\n const jpegQuality = {\n name: \"jpeg_compression_quality\", type: OptionType.numeric, min: 0, max: 100, default: 75,\n integer: true, description: \"The compression quality of the JPEG image\",\n };\n if (option?.image_file_type === \"image/jpeg\") {\n outputOptions.push(jpegQuality);\n }\n if (model.includes(\"generate\")) {\n // Generate models\n const modeOptions = [\n {\n name: \"aspect_ratio\", type: OptionType.enum, enum: { \"1:1\": \"1:1\", \"4:3\": \"4:3\", \"3:4\": \"3:4\", \"16:9\": \"16:9\", \"9:16\": \"9:16\" },\n default: \"1:1\", description: \"The aspect ratio of the generated image\"\n },\n {\n name: \"add_watermark\", type: OptionType.boolean, default: false, description: \"Add an invisible watermark to the generated image, useful for detection of AI images\"\n },\n ];\n const enhanceOptions = !model.includes(\"generate-001\") ? [\n {\n name: \"enhance_prompt\", type: OptionType.boolean, default: true, description: \"VertexAI automatically rewrites the prompt to better reflect the prompt's intent.\"\n },\n ] : [];\n return {\n _option_id: \"vertexai-imagen\",\n options: [\n ...commonOptions,\n ...modeOptions,\n ...outputOptions,\n ...enhanceOptions,\n ]\n };\n }\n if (model.includes(\"capability\")) {\n // Edit models\n let guidanceScaleDefault = 75;\n if (option?.edit_mode === ImagenTaskType.EDIT_MODE_INPAINT_INSERTION) {\n guidanceScaleDefault = 60;\n }\n const modeOptions = [\n {\n name: \"edit_mode\", type: OptionType.enum,\n enum: {\n \"EDIT_MODE_INPAINT_REMOVAL\": \"EDIT_MODE_INPAINT_REMOVAL\",\n \"EDIT_MODE_INPAINT_INSERTION\": \"EDIT_MODE_INPAINT_INSERTION\",\n \"EDIT_MODE_BGSWAP\": \"EDIT_MODE_BGSWAP\",\n \"EDIT_MODE_OUTPAINT\": \"EDIT_MODE_OUTPAINT\",\n \"CUSTOMIZATION_SUBJECT\": \"CUSTOMIZATION_SUBJECT\",\n \"CUSTOMIZATION_STYLE\": \"CUSTOMIZATION_STYLE\",\n \"CUSTOMIZATION_CONTROLLED\": \"CUSTOMIZATION_CONTROLLED\",\n \"CUSTOMIZATION_INSTRUCT\": \"CUSTOMIZATION_INSTRUCT\",\n },\n description: \"The editing mode. CUSTOMIZATION options use few-shot learning to generate images based on a few examples.\"\n },\n {\n name: \"guidance_scale\", type: OptionType.numeric, min: 0, max: 500, default: guidanceScaleDefault,\n integer: true, description: \"How closely the generation follows the prompt\"\n }\n ];\n const maskOptions = (option?.edit_mode?.includes(\"EDIT\")) ? [\n {\n name: \"mask_mode\", type: OptionType.enum,\n enum: {\n \"MASK_MODE_USER_PROVIDED\": \"MASK_MODE_USER_PROVIDED\",\n \"MASK_MODE_BACKGROUND\": \"MASK_MODE_BACKGROUND\",\n \"MASK_MODE_FOREGROUND\": \"MASK_MODE_FOREGROUND\",\n \"MASK_MODE_SEMANTIC\": \"MASK_MODE_SEMANTIC\",\n },\n default: \"MASK_MODE_USER_PROVIDED\",\n description: \"How should the mask for the generation be provided\"\n },\n {\n name: \"mask_dilation\", type: OptionType.numeric, min: 0, max: 1,\n integer: true, description: \"The mask dilation, grows the mask by a percentage of image width to compensate for imprecise masks.\"\n },\n ] : [];\n const maskClassOptions = (option?.mask_mode === ImagenMaskMode.MASK_MODE_SEMANTIC) ? [\n {\n name: \"mask_class\", type: OptionType.string_list, default: [],\n description: \"Input Class IDs. Create a mask based on image class, based on https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/imagen-api-customization#segment-ids\"\n }\n ] : [];\n const editOptions = option?.edit_mode?.includes(\"EDIT\") ? [\n {\n name: \"edit_steps\", type: OptionType.numeric, default: 75,\n integer: true, description: \"The number of steps for the base image generation, more steps means more time and better quality\"\n },\n ] : [];\n const customizationOptions = option?.edit_mode === ImagenTaskType.CUSTOMIZATION_CONTROLLED\n || option?.edit_mode === ImagenTaskType.CUSTOMIZATION_SUBJECT ? [\n {\n name: \"controlType\", type: OptionType.enum, enum: { \"Face Mesh\": \"CONTROL_TYPE_FACE_MESH\", \"Canny\": \"CONTROL_TYPE_CANNY\", \"Scribble\": \"CONTROL_TYPE_SCRIBBLE\" },\n default: \"CONTROL_TYPE_CANNY\", description: \"Method used to generate the control image\"\n },\n {\n name: \"controlImageComputation\", type: OptionType.boolean, default: true, description: \"Should the control image be computed from the input image, or is it provided\"\n }\n ] : [];\n return {\n _option_id: \"vertexai-imagen\",\n options: [\n ...modeOptions,\n ...commonOptions,\n ...maskOptions,\n ...maskClassOptions,\n ...editOptions,\n ...customizationOptions,\n ...outputOptions,\n ]\n };\n }\n return textOptionsFallback;\n}\nfunction getGeminiOptions(model, _option) {\n const max_tokens_limit = getGeminiMaxTokensLimit(model);\n const excludeOptions = [\"max_tokens\"];\n let commonOptions = textOptionsFallback.options.filter((option) => !excludeOptions.includes(option.name));\n const max_tokens = [{\n name: SharedOptions.max_tokens, type: OptionType.numeric, min: 1, max: max_tokens_limit,\n integer: true, step: 200, description: \"The maximum number of tokens to generate\"\n }];\n const seedOption = {\n name: SharedOptions.seed, type: OptionType.numeric, integer: true, description: \"The seed for the generation, useful for reproducibility\"\n };\n if (model.includes(\"-2.5-\")) {\n // Gemini 2.5 thinking models\n // Set budget token ranges based on model variant\n let budgetMin = -1;\n let budgetMax = 24576;\n let budgetDescription = \"\";\n if (model.includes(\"flash-lite\")) {\n budgetMin = -1;\n budgetMax = 24576;\n budgetDescription = \"The target number of tokens to use for reasoning. \" +\n \"Flash Lite default: Model does not think. \" +\n \"Range: 512-24576 tokens. \" +\n \"Set to 0 to disable thinking, -1 for dynamic thinking.\";\n }\n else if (model.includes(\"flash\")) {\n budgetMin = -1;\n budgetMax = 24576;\n budgetDescription = \"The target number of tokens to use for reasoning. \" +\n \"Flash default: Dynamic thinking (model decides when and how much to think). \" +\n \"Range: 0-24576 tokens. \" +\n \"Set to 0 to disable thinking, -1 for dynamic thinking.\";\n }\n else if (model.includes(\"pro\")) {\n budgetMin = -1;\n budgetMax = 32768;\n budgetDescription = \"The target number of tokens to use for reasoning. \" +\n \"Pro default: Dynamic thinking (model decides when and how much to think). \" +\n \"Range: 128-32768 tokens. \" +\n \"Cannot disable thinking - minimum 128 tokens. Set to -1 for dynamic thinking.\";\n }\n const geminiThinkingOptions = [\n {\n name: \"include_thoughts\",\n type: OptionType.boolean,\n default: false,\n description: \"Include the model's reasoning process in the response\"\n },\n {\n name: \"thinking_budget_tokens\",\n type: OptionType.numeric,\n min: budgetMin,\n max: budgetMax,\n default: undefined,\n integer: true,\n step: 100,\n description: budgetDescription,\n }\n ];\n return {\n _option_id: \"vertexai-gemini\",\n options: [\n ...max_tokens,\n ...commonOptions,\n seedOption,\n ...geminiThinkingOptions,\n ]\n };\n }\n return {\n _option_id: \"vertexai-gemini\",\n options: [\n ...max_tokens,\n ...commonOptions,\n seedOption,\n ]\n };\n}\nfunction getClaudeOptions(model, option) {\n const max_tokens_limit = getClaudeMaxTokensLimit(model);\n const excludeOptions = [\"max_tokens\", \"presence_penalty\", \"frequency_penalty\"];\n let commonOptions = textOptionsFallback.options.filter((option) => !excludeOptions.includes(option.name));\n const max_tokens = [{\n name: SharedOptions.max_tokens, type: OptionType.numeric, min: 1, max: max_tokens_limit,\n integer: true, step: 200, description: \"The maximum number of tokens to generate\"\n }];\n if (model.includes(\"-3-7\") || model.includes(\"-4\")) {\n const claudeModeOptions = [\n {\n name: \"thinking_mode\",\n type: OptionType.boolean,\n default: false,\n description: \"If true, use the extended reasoning mode\"\n },\n ];\n const claudeThinkingOptions = option?.thinking_mode ? [\n {\n name: \"thinking_budget_tokens\",\n type: OptionType.numeric,\n min: 1024,\n default: 1024,\n integer: true,\n step: 100,\n description: \"The target number of tokens to use for reasoning, not a hard limit.\"\n },\n {\n name: \"include_thoughts\",\n type: OptionType.boolean,\n default: false,\n description: \"Include the model's reasoning process in the response\"\n }\n ] : [];\n return {\n _option_id: \"vertexai-claude\",\n options: [\n ...max_tokens,\n ...commonOptions,\n ...claudeModeOptions,\n ...claudeThinkingOptions,\n ]\n };\n }\n return {\n _option_id: \"vertexai-claude\",\n options: [\n ...max_tokens,\n ...commonOptions,\n ]\n };\n}\nfunction getLlamaOptions(model) {\n const max_tokens_limit = getLlamaMaxTokensLimit(model);\n const excludeOptions = [\"max_tokens\", \"presence_penalty\", \"frequency_penalty\", \"stop_sequence\"];\n let commonOptions = textOptionsFallback.options.filter((option) => !excludeOptions.includes(option.name));\n const max_tokens = [{\n name: SharedOptions.max_tokens, type: OptionType.numeric, min: 1, max: max_tokens_limit,\n integer: true, step: 200, description: \"The maximum number of tokens to generate\"\n }];\n // Set max temperature to 1.0 for Llama models\n commonOptions = commonOptions.map((option) => {\n if (option.name === SharedOptions.temperature &&\n option.type === OptionType.numeric) {\n return {\n ...option,\n max: 1.0,\n };\n }\n return option;\n });\n return {\n _option_id: \"text-fallback\",\n options: [\n ...max_tokens,\n ...commonOptions,\n ]\n };\n}\nfunction getGeminiMaxTokensLimit(model) {\n if (model.includes(\"thinking\") || model.includes(\"-2.5-\")) {\n return 65536;\n }\n if (model.includes(\"ultra\") || model.includes(\"vision\")) {\n return 2048;\n }\n return 8192;\n}\nfunction getClaudeMaxTokensLimit(model) {\n if (model.includes(\"-4-\")) {\n if (model.includes(\"opus-\")) {\n return 32768;\n }\n return 65536;\n }\n else if (model.includes(\"-3-7-\")) {\n return 128000;\n }\n else if (model.includes(\"-3-5-\")) {\n return 8192;\n }\n else {\n return 4096;\n }\n}\nfunction getLlamaMaxTokensLimit(_model) {\n return 8192;\n}\nexport function getMaxTokensLimitVertexAi(model) {\n if (model.includes(\"imagen-\")) {\n return 0; // Imagen models do not have a max tokens limit in the same way as text models\n }\n else if (model.includes(\"claude\")) {\n return getClaudeMaxTokensLimit(model);\n }\n else if (model.includes(\"gemini\")) {\n return getGeminiMaxTokensLimit(model);\n }\n else if (model.includes(\"llama\")) {\n return getLlamaMaxTokensLimit(model);\n }\n return 8192; // Default fallback limit\n}\n//# sourceMappingURL=vertexai.js.map",null,"import { OptionType, SharedOptions } from \"../types.js\";\nexport const textOptionsFallback = {\n _option_id: \"text-fallback\",\n options: [\n {\n name: SharedOptions.max_tokens, type: OptionType.numeric, min: 1,\n integer: true, step: 200, description: \"The maximum number of tokens to generate\"\n },\n {\n name: SharedOptions.temperature, type: OptionType.numeric, min: 0.0, default: 0.7,\n integer: false, step: 0.1, description: \"A higher temperature biases toward less likely tokens, making the model more creative\"\n },\n {\n name: SharedOptions.top_p, type: OptionType.numeric, min: 0, max: 1,\n integer: false, step: 0.1, description: \"Limits token sampling to the cumulative probability of the top p tokens\"\n },\n {\n name: SharedOptions.top_k, type: OptionType.numeric, min: 1,\n integer: true, step: 1, description: \"Limits token sampling to the top k tokens\"\n },\n {\n name: SharedOptions.presence_penalty, type: OptionType.numeric, min: -2.0, max: 2.0,\n integer: false, step: 0.1, description: \"Penalise tokens if they appear at least once in the text\"\n },\n {\n name: SharedOptions.frequency_penalty, type: OptionType.numeric, min: -2.0, max: 2.0,\n integer: false, step: 0.1, description: \"Penalise tokens based on their frequency in the text\"\n },\n { name: SharedOptions.stop_sequence, type: OptionType.string_list, value: [], description: \"The generation will halt if one of the stop sequences is output\" },\n ]\n};\n//# sourceMappingURL=fallback.js.map",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Permission","AccessControlResourceType","AccessControlPrincipalType","ApiKeyTypes","PrincipalType","Providers","ProviderList","openai","id","name","requiresApiKey","requiresEndpointUrl","supportSearch","azure_openai","azure_foundry","huggingface_ie","replicate","bedrock","endpointPlaceholder","vertexai","togetherai","mistralai","groq","watsonx","SharedOptions","OptionType","PromptRole","Modalities","AIModelStatus","ModelType","TrainingJobStatus","RECORD_MODEL_CAPABILITIES","input","text","image","video","audio","embed","output","tool_support","tool_support_streaming","o3","RECORD_FAMILY_CAPABILITIES","o1","o4","llama","mistral","phi","deepseek","ai21","jamba","cohere","command","grok","IMAGE_INPUT_MODELS","VIDEO_INPUT_MODELS","AUDIO_INPUT_MODELS","TEXT_INPUT_MODELS","IMAGE_OUTPUT_MODELS","VIDEO_OUTPUT_MODELS","AUDIO_OUTPUT_MODELS","TEXT_OUTPUT_MODELS","EMBEDDING_OUTPUT_MODELS","TOOL_SUPPORT_MODELS","modelMatches","modelName","patterns","some","pattern","includes","applyGlobalToolSupportDisable","capabilities","startsWith","getModelCapabilitiesBedrock","model","normalized","test","foundationIdx","lastIndexOf","inferenceIdx","substring","replace","record","bestFamilyKey","bestFamilyLength","key","Object","keys","length","modelLower","toLowerCase","parts","split","providerModel","modelParts","slice","join","normalizeModelName","undefined","getModelCapabilitiesOpenAI","claude","getModelCapabilitiesVertexAI","segments","normalizeVertexAIModelName","getModelCapabilities","provider","baseModel","compositeId","deploymentName","parseAzureFoundryModelId","getModelCapabilitiesAzureFoundry","_getModelCapabilities","supportsToolUse","streaming","ImagenTaskType","ImagenMaskMode","CustomProviders","max_tokens","numeric","temperature","top_p","top_k","presence_penalty","frequency_penalty","stop_sequence","string_list","SupportedProviders","CustomProvidersList","virtual_lb","virtual_mediator","SupportedProvidersList","ExecutionEnvironmentRefPopulate","UserGroupRefPopulate","SupportedIntegrations","InteractionRefPopulate","InteractionRefWithSchemaPopulate","InteractionStatus","ExecutionRunStatus","RunDataStorageLevel","RunDataStorageDescription","RunDataStorageOptions","STANDARD","RESTRICTED","DEBUG","RunSourceTypes","ExecutionRunRefSelect","ConfigModes","ConfigModesDescription","ConfigModesOptions","RUN_AND_INTERACTION_CONFIG","RUN_CONFIG_ONLY","INTERACTION_CONFIG_ONLY","MeterNames","ProjectRoles","ResourceVisibility","SupportedEmbeddingTypes","ProgressSpan","constructor","parent","parentUnits","spanUnits","this","unitsDone","done","units","remaining","parentUnitsDone","Math","round","isDone","Progress","total","fraction","percent","span","isRoleIncludedIn","role","includingRole","owner","admin","billing","developer","ProjectRefPopulate","PromptStatus","PromptSegmentDefType","TemplateType","ResolvableRefType","CollectionStatus","WorkflowDefinitionRefPopulate","RenditionSchema","type","description","properties","mime_type","source_etag","nullable","height","width","multipart","default","total_parts","required","DocumentPartSchema","part_number","title","source_line_start","source_line_end","enum","page_number","ContentObjectStatus","WorkflowRuleInputType","ImageRenditionFormat","MarkdownRenditionFormat","ParentClosePolicy","TERMINATE","ABANDON","REQUEST_CANCEL","PARENT_CLOSE_POLICY_UNSPECIFIED","PARENT_CLOSE_POLICY_TERMINATE","PARENT_CLOSE_POLICY_ABANDON","PARENT_CLOSE_POLICY_REQUEST_CANCEL","ContentEventName","WorkflowExecutionStatus","AgentMessageType","TrainingSessionStatus","TransientTokenType","getDocumentIds","payload","objectIds","UserRefPopulate","Datacenters","BillingMethod","AccountRefPopulate","AppRefPopulate","getTenantId","accountId","projectId","getTenantIdFromProject","project","account","mergeJSONSchemas","schemas","props","schema","prop","push","assign","_mergePromptsSchema","prompts","prompt","template","inputSchema","chat","items","assistant","user","content","mergePromptsSchema","interaction"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vertesia-common.js","sources":["../src/access-control.ts","../src/apikey.ts","../../../llumiverse/common/lib/esm/types.js","../../../llumiverse/common/lib/esm/capability/azure_foundry.js","../../../llumiverse/common/lib/esm/capability/bedrock.js","../../../llumiverse/common/lib/esm/capability/openai.js","../../../llumiverse/common/lib/esm/capability/vertexai.js","../../../llumiverse/common/lib/esm/capability.js","../../../llumiverse/common/lib/esm/options/vertexai.js","../src/environment.ts","../../../llumiverse/common/lib/esm/options/fallback.js","../src/group.ts","../src/integrations.ts","../src/interaction.ts","../src/meters.ts","../src/project.ts","../src/Progress.ts","../src/prompt.ts","../src/refs.ts","../src/store/collections.ts","../src/store/dsl-workflow.ts","../src/store/object-types.ts","../src/store/store.ts","../src/store/temporalio.ts","../src/store/workflow.ts","../src/training.ts","../src/transient-tokens.ts","../src/user.ts","../src/utils/auth.ts","../src/utils/schemas.ts"],"sourcesContent":[null,null,"// ============== Provider details ===============\nexport var Providers;\n(function (Providers) {\n Providers[\"openai\"] = \"openai\";\n Providers[\"azure_openai\"] = \"azure_openai\";\n Providers[\"azure_foundry\"] = \"azure_foundry\";\n Providers[\"huggingface_ie\"] = \"huggingface_ie\";\n Providers[\"replicate\"] = \"replicate\";\n Providers[\"bedrock\"] = \"bedrock\";\n Providers[\"vertexai\"] = \"vertexai\";\n Providers[\"togetherai\"] = \"togetherai\";\n Providers[\"mistralai\"] = \"mistralai\";\n Providers[\"groq\"] = \"groq\";\n Providers[\"watsonx\"] = \"watsonx\";\n})(Providers || (Providers = {}));\nexport const ProviderList = {\n openai: {\n id: Providers.openai,\n name: \"OpenAI\",\n requiresApiKey: true,\n requiresEndpointUrl: false,\n supportSearch: false,\n },\n azure_openai: {\n id: Providers.azure_openai,\n name: \"Azure OpenAI\",\n requiresApiKey: false,\n requiresEndpointUrl: true,\n supportSearch: false,\n },\n azure_foundry: {\n id: Providers.azure_foundry,\n name: \"Azure Foundry\",\n requiresApiKey: true,\n requiresEndpointUrl: true,\n supportSearch: false,\n },\n huggingface_ie: {\n id: Providers.huggingface_ie,\n name: \"HuggingFace Inference Endpoint\",\n requiresApiKey: true,\n requiresEndpointUrl: true,\n },\n replicate: {\n id: Providers.replicate,\n name: \"Repicate\",\n requiresApiKey: true,\n requiresEndpointUrl: false,\n supportSearch: true,\n },\n bedrock: {\n id: Providers.bedrock,\n name: \"AWS Bedrock\",\n requiresApiKey: false,\n requiresEndpointUrl: false,\n endpointPlaceholder: \"region name (eg. us-east-1)\",\n supportSearch: false,\n },\n vertexai: {\n id: Providers.vertexai,\n name: \"Google Vertex AI\",\n requiresApiKey: false,\n requiresEndpointUrl: false,\n supportSearch: false,\n },\n togetherai: {\n id: Providers.togetherai,\n name: \"Together AI\",\n requiresApiKey: false,\n requiresEndpointUrl: false,\n supportSearch: false,\n },\n mistralai: {\n id: Providers.mistralai,\n name: \"Mistral AI\",\n requiresApiKey: false,\n requiresEndpointUrl: false,\n supportSearch: false,\n },\n groq: {\n id: Providers.groq,\n name: \"Groq Cloud\",\n requiresApiKey: false,\n requiresEndpointUrl: false,\n supportSearch: false,\n },\n watsonx: {\n id: Providers.watsonx,\n name: \"IBM WatsonX\",\n requiresApiKey: true,\n requiresEndpointUrl: true,\n supportSearch: false\n },\n};\n//Common names to share between different models\nexport var SharedOptions;\n(function (SharedOptions) {\n //Text\n SharedOptions[\"max_tokens\"] = \"max_tokens\";\n SharedOptions[\"temperature\"] = \"temperature\";\n SharedOptions[\"top_p\"] = \"top_p\";\n SharedOptions[\"top_k\"] = \"top_k\";\n SharedOptions[\"presence_penalty\"] = \"presence_penalty\";\n SharedOptions[\"frequency_penalty\"] = \"frequency_penalty\";\n SharedOptions[\"stop_sequence\"] = \"stop_sequence\";\n //Image\n SharedOptions[\"seed\"] = \"seed\";\n SharedOptions[\"number_of_images\"] = \"number_of_images\";\n})(SharedOptions || (SharedOptions = {}));\nexport var OptionType;\n(function (OptionType) {\n OptionType[\"numeric\"] = \"numeric\";\n OptionType[\"enum\"] = \"enum\";\n OptionType[\"boolean\"] = \"boolean\";\n OptionType[\"string_list\"] = \"string_list\";\n})(OptionType || (OptionType = {}));\n// ============== Prompts ===============\nexport var PromptRole;\n(function (PromptRole) {\n PromptRole[\"safety\"] = \"safety\";\n PromptRole[\"system\"] = \"system\";\n PromptRole[\"user\"] = \"user\";\n PromptRole[\"assistant\"] = \"assistant\";\n PromptRole[\"negative\"] = \"negative\";\n PromptRole[\"mask\"] = \"mask\";\n /**\n * Used to send the response of a tool\n */\n PromptRole[\"tool\"] = \"tool\";\n})(PromptRole || (PromptRole = {}));\nexport var Modalities;\n(function (Modalities) {\n Modalities[\"text\"] = \"text\";\n Modalities[\"image\"] = \"image\";\n})(Modalities || (Modalities = {}));\nexport var AIModelStatus;\n(function (AIModelStatus) {\n AIModelStatus[\"Available\"] = \"available\";\n AIModelStatus[\"Pending\"] = \"pending\";\n AIModelStatus[\"Stopped\"] = \"stopped\";\n AIModelStatus[\"Unavailable\"] = \"unavailable\";\n AIModelStatus[\"Unknown\"] = \"unknown\";\n AIModelStatus[\"Legacy\"] = \"legacy\";\n})(AIModelStatus || (AIModelStatus = {}));\nexport var ModelType;\n(function (ModelType) {\n ModelType[\"Classifier\"] = \"classifier\";\n ModelType[\"Regressor\"] = \"regressor\";\n ModelType[\"Clustering\"] = \"clustering\";\n ModelType[\"AnomalyDetection\"] = \"anomaly-detection\";\n ModelType[\"TimeSeries\"] = \"time-series\";\n ModelType[\"Text\"] = \"text\";\n ModelType[\"Image\"] = \"image\";\n ModelType[\"Audio\"] = \"audio\";\n ModelType[\"Video\"] = \"video\";\n ModelType[\"Embedding\"] = \"embedding\";\n ModelType[\"Chat\"] = \"chat\";\n ModelType[\"Code\"] = \"code\";\n ModelType[\"NLP\"] = \"nlp\";\n ModelType[\"MultiModal\"] = \"multi-modal\";\n ModelType[\"Test\"] = \"test\";\n ModelType[\"Other\"] = \"other\";\n ModelType[\"Unknown\"] = \"unknown\";\n})(ModelType || (ModelType = {}));\nexport var TrainingJobStatus;\n(function (TrainingJobStatus) {\n TrainingJobStatus[\"running\"] = \"running\";\n TrainingJobStatus[\"succeeded\"] = \"succeeded\";\n TrainingJobStatus[\"failed\"] = \"failed\";\n TrainingJobStatus[\"cancelled\"] = \"cancelled\";\n})(TrainingJobStatus || (TrainingJobStatus = {}));\n//# sourceMappingURL=types.js.map","// Global feature flags - temporarily disable tool support for non-OpenAI models\nconst ENABLE_TOOL_SUPPORT_NON_OPENAI = false;\n// Record of Azure Foundry model capabilities keyed by model ID (lowercased) \n// Only include models with specific exceptions that differ from their family patterns\nconst RECORD_MODEL_CAPABILITIES = {\n // OpenAI O-series exceptions - o1-mini doesn't have tool support like other o1 models\n \"o1-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n // OpenAI o3 is text-only unlike other o-series models\n \"o3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n // Models with special properties not covered by family patterns\n \"deepseek-r1-0528\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"deepseek-v3-0324\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"mistral-medium-2505\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"mistral-nemo\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"llama-4-scout-17b-16e-instruct\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n};\n// Populate RECORD_FAMILY_CAPABILITIES as a const record (lowest common denominator for each family)\nconst RECORD_FAMILY_CAPABILITIES = {\n // OpenAI GPT families\n \"gpt-3.5-turbo\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"gpt-35-turbo\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"gpt-35\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"gpt-4\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"gpt-4.1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"gpt-4.5\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"gpt-4o\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n // OpenAI O-series families\n \"o1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"o1-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"o1-pro\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"o3-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"o4-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"o4\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n // Llama families\n \"llama-3.1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"llama-3.2\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"llama-3.3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"llama-3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"llama-4\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"llama\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n // Mistral families\n \"mistral-large\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"mistral-small\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"mistral\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n // Microsoft Phi families\n \"phi-4\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"phi\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n // DeepSeek families\n \"deepseek-r1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"deepseek-v3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"deepseek\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n // AI21 families\n \"ai21-jamba\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"ai21\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"jamba\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n // Cohere families\n \"cohere-command\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"cohere\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"command\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n // xAI families\n \"grok-3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"grok\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true }\n};\n// Fallback pattern lists for inferring modalities and tool support\nconst IMAGE_INPUT_MODELS = [\"image\", \"vision\"];\nconst VIDEO_INPUT_MODELS = [\"video\"];\nconst AUDIO_INPUT_MODELS = [\"audio\"];\nconst TEXT_INPUT_MODELS = [\"text\"];\nconst IMAGE_OUTPUT_MODELS = [\"image\"];\nconst VIDEO_OUTPUT_MODELS = [\"video\"];\nconst AUDIO_OUTPUT_MODELS = [\"audio\"];\nconst TEXT_OUTPUT_MODELS = [\"text\"];\nconst EMBEDDING_OUTPUT_MODELS = [\"embed\"];\nconst TOOL_SUPPORT_MODELS = [\"tool\", \"gpt-4\", \"gpt-4o\", \"o1\", \"o3\", \"o4\", \"llama-3\", \"mistral-large\", \"mistral-small\", \"jamba\", \"cohere\", \"command\", \"grok\"];\nfunction modelMatches(modelName, patterns) {\n return patterns.some(pattern => modelName.includes(pattern));\n}\n/**\n * Get the full ModelCapabilities for an Azure Foundry model.\n * Checks RECORD_MODEL_CAPABILITIES first, then falls back to family pattern matching.\n */\nexport function getModelCapabilitiesAzureFoundry(model) {\n // Extract base model from composite ID (deployment::baseModel)\n const { baseModel } = parseAzureFoundryModelId(model);\n const normalized = baseModel.toLowerCase();\n // 1. Exact match in record\n const record = RECORD_MODEL_CAPABILITIES[normalized];\n if (record) {\n return applyGlobalToolSupportDisable(record, normalized);\n }\n // 2. Fallback: find the longest matching family prefix in RECORD_FAMILY_CAPABILITIES\n let bestFamilyKey = undefined;\n let bestFamilyLength = 0;\n for (const key of Object.keys(RECORD_FAMILY_CAPABILITIES)) {\n if (normalized.startsWith(key) && key.length > bestFamilyLength) {\n bestFamilyKey = key;\n bestFamilyLength = key.length;\n }\n }\n if (bestFamilyKey) {\n return applyGlobalToolSupportDisable(RECORD_FAMILY_CAPABILITIES[bestFamilyKey], normalized);\n }\n // 3. Fallback: infer from normalized name using patterns\n const input = {\n text: modelMatches(normalized, TEXT_INPUT_MODELS) || true, // Default to text input\n image: modelMatches(normalized, IMAGE_INPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_INPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_INPUT_MODELS) || undefined,\n embed: false\n };\n const output = {\n text: modelMatches(normalized, TEXT_OUTPUT_MODELS) || true, // Default to text output\n image: modelMatches(normalized, IMAGE_OUTPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_OUTPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_OUTPUT_MODELS) || undefined,\n embed: modelMatches(normalized, EMBEDDING_OUTPUT_MODELS) || undefined\n };\n const tool_support = modelMatches(normalized, TOOL_SUPPORT_MODELS) || undefined;\n const tool_support_streaming = tool_support || undefined;\n const inferredCapabilities = { input, output, tool_support, tool_support_streaming };\n return applyGlobalToolSupportDisable(inferredCapabilities, normalized);\n}\n/**\n * Apply global tool support disable for non-OpenAI models.\n * Preserves model-specific information for future use while temporarily disabling tool support.\n */\nfunction applyGlobalToolSupportDisable(capabilities, modelName) {\n // Check if this is an OpenAI model\n const isOpenAIModel = modelName.startsWith('gpt-') || modelName.startsWith('o1') || modelName.startsWith('o3') || modelName.startsWith('o4');\n if (!ENABLE_TOOL_SUPPORT_NON_OPENAI && !isOpenAIModel) {\n // Disable tool support for non-OpenAI models while preserving other capabilities\n return {\n ...capabilities,\n tool_support: false,\n tool_support_streaming: false\n };\n }\n return capabilities;\n}\n// Helper function to parse composite model IDs\nfunction parseAzureFoundryModelId(compositeId) {\n const parts = compositeId.split('::');\n if (parts.length === 2) {\n return {\n deploymentName: parts[0],\n baseModel: parts[1]\n };\n }\n // Backwards compatibility: if no delimiter found, treat as deployment name\n return {\n deploymentName: compositeId,\n baseModel: compositeId\n };\n}\n//# sourceMappingURL=azure_foundry.js.map","// Record of Bedrock model capabilities keyed by model ID.\nconst RECORD_MODEL_CAPABILITIES = {\n \"foundation-model/ai21.jamba-1-5-large-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/ai21.jamba-1-5-mini-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/ai21.jamba-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/amazon.nova-canvas-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { image: true, text: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/amazon.nova-lite-v1:0\": { input: { text: true, image: true, video: true, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/amazon.nova-micro-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/amazon.nova-pro-v1:0\": { input: { text: true, image: true, video: true, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/amazon.titan-text-express-v1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/amazon.titan-text-lite-v1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/amazon.titan-text-premier-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/amazon.titan-tg1-large\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-3-5-haiku-20241022-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-3-5-sonnet-20240620-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/anthropic.claude-3-5-sonnet-20241022-v2:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/anthropic.claude-3-haiku-20240307-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-3-opus-20240229-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-3-sonnet-20240229-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-instant-v1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-v2\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-v2:1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/cohere.command-light-text-v14\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/cohere.command-r-plus-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/cohere.command-r-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/cohere.command-text-v14\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/meta.llama3-1-405b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/meta.llama3-1-70b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/meta.llama3-1-8b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/meta.llama3-70b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/meta.llama3-8b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/mistral.mixtral-8x7b-instruct-v0:1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/mistral.mistral-7b-instruct-v0:2\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/mistral.mistral-large-2402-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/mistral.mistral-large-2407-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/mistral.mistral-small-2402-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.amazon.nova-lite-v1:0\": { input: { text: true, image: true, video: true, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.amazon.nova-micro-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.amazon.nova-premier-v1:0\": { input: { text: true, image: true, video: true, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.amazon.nova-pro-v1:0\": { input: { text: true, image: true, video: true, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.anthropic.claude-3-5-haiku-20241022-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-3-5-sonnet-20240620-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.anthropic.claude-3-5-sonnet-20241022-v2:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.anthropic.claude-3-7-sonnet-20250219-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.anthropic.claude-3-haiku-20240307-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-3-opus-20240229-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-3-sonnet-20240229-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-opus-4-20250514-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-sonnet-4-20250514-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.deepseek.r1-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-1-70b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-1-8b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-2-1b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-2-11b-instruct-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-2-3b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-2-90b-instruct-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3-3-70b-instruct-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama4-maverick-17b-instruct-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama4-scout-17b-instruct-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.mistral.pixtral-large-2502-v1:0\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.writer.palmyra-x4-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.writer.palmyra-x5-v1:0\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false }\n};\n// Populate RECORD_FAMILY_CAPABILITIES as a const record (lowest common denominator for each family)\nconst RECORD_FAMILY_CAPABILITIES = {\n \"foundation-model/ai21.jamba\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/amazon.nova\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/amazon.titan\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/anthropic.claude\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/anthropic.claude-3\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/anthropic.claude-3-5\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/anthropic.claude-3-7\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"foundation-model/cohere.command\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/meta.llama3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/mistral.mistral\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"foundation-model/mistral.mistral-large\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"foundation-model/mistral.mixtral\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-3-haiku\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-3-5-sonnet\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: true },\n \"inference-profile/us.anthropic.claude-3-opus\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude-3-sonnet\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.anthropic.claude\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.deepseek.r1\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama4-maverick-17b\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.meta.llama4-scout-17b\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false, tool_support_streaming: false },\n \"inference-profile/us.mistral.pixtral\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },\n \"inference-profile/us.writer.palmyra\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false }\n};\n/**\n * Extract the model identifier from an ARN or inference profile\n * @param modelName The full model ARN or name\n * @returns The normalized model identifier\n */\nfunction normalizeModelName(modelName) {\n const modelLower = modelName.toLowerCase();\n if (modelLower.includes(\"inference-profile\")) {\n const parts = modelLower.split(\"/\");\n if (parts.length > 1) {\n const providerModel = parts[parts.length - 1];\n const modelParts = providerModel.split(\".\");\n if (modelParts.length > 1 && modelParts[1] === \"deepseek\") {\n return `deepseek-${modelParts.slice(2).join(\".\")}`;\n }\n return modelParts.length > 2 ? modelParts.slice(2).join(\".\") : providerModel;\n }\n }\n return modelLower;\n}\n// Fallback pattern lists for inferring modalities and tool support\nconst IMAGE_INPUT_MODELS = [\"image\"]; // fallback: if model id contains 'image', supports image input\nconst VIDEO_INPUT_MODELS = [\"video\"];\nconst AUDIO_INPUT_MODELS = [\"audio\"];\nconst TEXT_INPUT_MODELS = [\"text\"];\nconst IMAGE_OUTPUT_MODELS = [\"image\"];\nconst VIDEO_OUTPUT_MODELS = [\"video\"];\nconst AUDIO_OUTPUT_MODELS = [\"audio\"];\nconst TEXT_OUTPUT_MODELS = [\"text\"];\nconst EMBEDDING_OUTPUT_MODELS = [\"embed\"];\nconst TOOL_SUPPORT_MODELS = [\"tool\", \"sonnet\", \"opus\", \"nova\", \"palmyra\", \"command-r\", \"mistral-large\", \"pixtral\"];\nfunction modelMatches(modelName, patterns) {\n return patterns.some(pattern => modelName.includes(pattern));\n}\n/**\n * Get the full ModelCapabilities for a Bedrock model.\n * Checks RECORD_MODEL_CAPABILITIES first, then falls back to pattern-based inference.\n */\nexport function getModelCapabilitiesBedrock(model) {\n // Normalize ARN or inference-profile to model ID\n let normalized = model;\n const arnPattern = /^arn:aws:bedrock:[^:]+:[^:]*:(inference-profile|foundation-model)\\/.+/i;\n if (arnPattern.test(model)) {\n // Extract after last occurrence of 'foundation-model/' or 'inference-profile/'\n const foundationIdx = model.lastIndexOf('foundation-model/');\n const inferenceIdx = model.lastIndexOf('inference-profile/');\n if (foundationIdx !== -1) {\n normalized = model.substring(foundationIdx);\n }\n else if (inferenceIdx !== -1) {\n normalized = model.substring(inferenceIdx);\n }\n }\n // Standardize region for inference-profile to 'us' for record lookup\n // This allows support for different AWS regions by mapping all to 'us'\n if (normalized.startsWith(\"inference-profile/\")) {\n normalized = normalized.replace(/^inference-profile\\/[^.]+\\./, \"inference-profile/us.\");\n }\n // 1. Exact match in record\n const record = RECORD_MODEL_CAPABILITIES[normalized];\n if (record)\n return record;\n // 2. Fallback: find the longest matching family prefix in RECORD_FAMILY_CAPABILITIES\n let bestFamilyKey = undefined;\n let bestFamilyLength = 0;\n for (const key of Object.keys(RECORD_FAMILY_CAPABILITIES)) {\n if (normalized.startsWith(key) && key.length > bestFamilyLength) {\n bestFamilyKey = key;\n bestFamilyLength = key.length;\n }\n }\n if (bestFamilyKey) {\n return RECORD_FAMILY_CAPABILITIES[bestFamilyKey];\n }\n // 3. Fallback: infer from normalized name\n normalized = normalizeModelName(normalized);\n const input = {\n text: modelMatches(normalized, TEXT_INPUT_MODELS) || undefined,\n image: modelMatches(normalized, IMAGE_INPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_INPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_INPUT_MODELS) || undefined,\n embed: false\n };\n const output = {\n text: modelMatches(normalized, TEXT_OUTPUT_MODELS) || undefined,\n image: modelMatches(normalized, IMAGE_OUTPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_OUTPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_OUTPUT_MODELS) || undefined,\n embed: modelMatches(normalized, EMBEDDING_OUTPUT_MODELS) || undefined\n };\n const tool_support = modelMatches(normalized, TOOL_SUPPORT_MODELS) || undefined;\n return { input, output, tool_support };\n}\n//# sourceMappingURL=bedrock.js.map","// Record of OpenAI model capabilities keyed by model ID (lowercased)\nconst RECORD_MODEL_CAPABILITIES = {\n \"chatgpt-4o-latest\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-3.5-turbo\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-3.5-turbo-0125\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-3.5-turbo-1106\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-3.5-turbo-16k\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-3.5-turbo-instruct\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-3.5-turbo-instruct-0914\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4-0125-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4-0613\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4-1106-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4-turbo\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4-turbo-2024-04-09\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4-turbo-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4.1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.1-2025-04-14\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.1-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.1-mini-2025-04-14\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.1-nano\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.1-nano-2025-04-14\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.5-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.5-preview-2025-02-27\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-2024-05-13\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-2024-08-06\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-2024-11-20\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-mini-2024-07-18\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-mini-search-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-mini-search-preview-2025-03-11\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-search-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o-search-preview-2025-03-11\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-image-1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"o1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1-2024-12-17\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"o1-mini-2024-09-12\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"o1-preview\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1-preview-2024-09-12\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1-pro\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1-pro-2025-03-19\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o3-2025-04-16\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o3-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o3-mini-2025-01-31\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o4-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o4-mini-2025-04-16\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true }\n};\n// Populate RECORD_FAMILY_CAPABILITIES as a const record (lowest common denominator for each family)\nconst RECORD_FAMILY_CAPABILITIES = {\n \"gpt-3.5-turbo\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gpt-4.1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4.5\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gpt-4o\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o1-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"o1-pro\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o3\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o3-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"o4-mini\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true }\n};\n// Fallback pattern lists for inferring modalities and tool support\nconst IMAGE_INPUT_MODELS = [\"image\"];\nconst VIDEO_INPUT_MODELS = [\"video\"];\nconst AUDIO_INPUT_MODELS = [\"audio\"];\nconst TEXT_INPUT_MODELS = [\"text\"];\nconst IMAGE_OUTPUT_MODELS = [\"image\"];\nconst VIDEO_OUTPUT_MODELS = [\"video\"];\nconst AUDIO_OUTPUT_MODELS = [\"audio\"];\nconst TEXT_OUTPUT_MODELS = [\"text\"];\nconst EMBEDDING_OUTPUT_MODELS = [\"embed\"];\nconst TOOL_SUPPORT_MODELS = [\"tool\", \"o1\", \"o3\", \"o4\", \"gpt-4.1\", \"gpt-4o\"];\nfunction modelMatches(modelName, patterns) {\n return patterns.some(pattern => modelName.includes(pattern));\n}\nfunction normalizeOpenAIModelName(modelName) {\n return modelName.toLowerCase();\n}\n/**\n * Get the full ModelCapabilities for an OpenAI model.\n * Checks RECORD_MODEL_CAPABILITIES first, then falls back to pattern-based inference.\n */\nexport function getModelCapabilitiesOpenAI(model) {\n const normalized = normalizeOpenAIModelName(model);\n const record = RECORD_MODEL_CAPABILITIES[normalized];\n if (record)\n return record;\n let bestFamilyKey = undefined;\n let bestFamilyLength = 0;\n for (const key of Object.keys(RECORD_FAMILY_CAPABILITIES)) {\n if (normalized.startsWith(key) && key.length > bestFamilyLength) {\n bestFamilyKey = key;\n bestFamilyLength = key.length;\n }\n }\n if (bestFamilyKey) {\n return RECORD_FAMILY_CAPABILITIES[bestFamilyKey];\n }\n const input = {\n text: modelMatches(normalized, TEXT_INPUT_MODELS) || undefined,\n image: modelMatches(normalized, IMAGE_INPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_INPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_INPUT_MODELS) || undefined,\n embed: false\n };\n const output = {\n text: modelMatches(normalized, TEXT_OUTPUT_MODELS) || undefined,\n image: modelMatches(normalized, IMAGE_OUTPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_OUTPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_OUTPUT_MODELS) || undefined,\n embed: modelMatches(normalized, EMBEDDING_OUTPUT_MODELS) || undefined\n };\n const tool_support = modelMatches(normalized, TOOL_SUPPORT_MODELS) || undefined;\n return { input, output, tool_support };\n}\n//# sourceMappingURL=openai.js.map","// Record of Vertex AI model capabilities keyed by model ID (last path segment, lowercased)\nconst RECORD_MODEL_CAPABILITIES = {\n \"gemini-1.5-flash-002\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gemini-1.5-pro-002\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gemini-2.0-flash-001\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gemini-2.0-flash-lite-001\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n \"gemini-2.5-flash-preview-04-17\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gemini-2.5-pro-preview-05-06\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"imagen-3.0-generate-002\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-3.0-capability-001\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-4.0-generate-preview-05-20\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"claude-3-opus\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3-haiku\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3-5-sonnet\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3-5-haiku\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3-5-sonnet-v2\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3-7-sonnet\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-opus-4\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-sonnet-4\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n};\n// Populate RECORD_FAMILY_CAPABILITIES as a const record (lowest common denominator for each family)\nconst RECORD_FAMILY_CAPABILITIES = {\n \"gemini-1.5\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gemini-2.0\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"gemini-2.5\": { input: { text: true, image: true, video: true, audio: true, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"imagen-3.0-generate\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-3.0-fast-generate\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-3.0-capability\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-4.0-generate\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-4.0-ultra-generate\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-4.0-fast-generate\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"imagen-4.0-capability\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: false, image: true, video: false, audio: false, embed: false }, tool_support: false },\n \"claude-3-5\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3-7\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude-3\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"claude\": { input: { text: true, image: true, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true },\n \"llama\": { input: { text: true, image: false, video: false, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: false },\n};\n// Fallback pattern lists for inferring modalities and tool support\nconst IMAGE_INPUT_MODELS = [\"image\"];\nconst VIDEO_INPUT_MODELS = [\"video\"];\nconst AUDIO_INPUT_MODELS = [\"audio\"];\nconst TEXT_INPUT_MODELS = [\"text\"];\nconst IMAGE_OUTPUT_MODELS = [\"image\"];\nconst VIDEO_OUTPUT_MODELS = [\"video\"];\nconst AUDIO_OUTPUT_MODELS = [\"audio\"];\nconst TEXT_OUTPUT_MODELS = [\"text\"];\nconst EMBEDDING_OUTPUT_MODELS = [\"embed\"];\nconst TOOL_SUPPORT_MODELS = [\"tool\", \"sonnet\", \"opus\", \"gemini\", \"claude-3-5\", \"claude-3-7\"];\nfunction modelMatches(modelName, patterns) {\n return patterns.some(pattern => modelName.includes(pattern));\n}\nfunction normalizeVertexAIModelName(modelName) {\n const segments = modelName.toLowerCase().split(\"/\");\n return segments[segments.length - 1];\n}\n/**\n * Get the full ModelCapabilities for a Vertex AI model.\n * Checks RECORD_MODEL_CAPABILITIES first, then falls back to pattern-based inference.\n */\nexport function getModelCapabilitiesVertexAI(model) {\n const normalized = normalizeVertexAIModelName(model);\n const record = RECORD_MODEL_CAPABILITIES[normalized];\n if (record)\n return record;\n let bestFamilyKey = undefined;\n let bestFamilyLength = 0;\n for (const key of Object.keys(RECORD_FAMILY_CAPABILITIES)) {\n if (normalized.startsWith(key) && key.length > bestFamilyLength) {\n bestFamilyKey = key;\n bestFamilyLength = key.length;\n }\n }\n if (bestFamilyKey) {\n return RECORD_FAMILY_CAPABILITIES[bestFamilyKey];\n }\n const input = {\n text: modelMatches(normalized, TEXT_INPUT_MODELS) || undefined,\n image: modelMatches(normalized, IMAGE_INPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_INPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_INPUT_MODELS) || undefined,\n embed: false\n };\n const output = {\n text: modelMatches(normalized, TEXT_OUTPUT_MODELS) || undefined,\n image: modelMatches(normalized, IMAGE_OUTPUT_MODELS) || undefined,\n video: modelMatches(normalized, VIDEO_OUTPUT_MODELS) || undefined,\n audio: modelMatches(normalized, AUDIO_OUTPUT_MODELS) || undefined,\n embed: modelMatches(normalized, EMBEDDING_OUTPUT_MODELS) || undefined\n };\n const tool_support = modelMatches(normalized, TOOL_SUPPORT_MODELS) || undefined;\n return { input, output, tool_support };\n}\n//# sourceMappingURL=vertexai.js.map","import { getModelCapabilitiesAzureFoundry } from \"./capability/azure_foundry.js\";\nimport { getModelCapabilitiesBedrock } from \"./capability/bedrock.js\";\nimport { getModelCapabilitiesOpenAI } from \"./capability/openai.js\";\nimport { getModelCapabilitiesVertexAI } from \"./capability/vertexai.js\";\nimport { Providers } from \"./types.js\";\nexport function getModelCapabilities(model, provider) {\n const capabilities = _getModelCapabilities(model, provider);\n // Globally disable audio and video for all models, as we don't support them yet\n // We also do not support tool use while streaming\n // TODO: Remove this when we add support.\n capabilities.input.audio = false;\n capabilities.output.audio = false;\n capabilities.output.video = false;\n capabilities.tool_support_streaming = false;\n return capabilities;\n}\nfunction _getModelCapabilities(model, provider) {\n switch (provider?.toLowerCase()) {\n case Providers.vertexai:\n return getModelCapabilitiesVertexAI(model);\n case Providers.openai:\n return getModelCapabilitiesOpenAI(model);\n case Providers.bedrock:\n return getModelCapabilitiesBedrock(model);\n case Providers.azure_foundry:\n // Azure Foundry uses OpenAI capabilities\n return getModelCapabilitiesAzureFoundry(model);\n default:\n // Guess the provider based on the model name\n if (model.startsWith(\"gpt\")) {\n return getModelCapabilitiesOpenAI(model);\n }\n else if (model.startsWith(\"publishers/\")) {\n return getModelCapabilitiesVertexAI(model);\n }\n else if (model.startsWith(\"arn:aws\")) {\n return getModelCapabilitiesBedrock(model);\n }\n // Fallback to a generic model with no capabilities\n return { input: {}, output: {} };\n }\n}\nexport function supportsToolUse(model, provider, streaming = false) {\n const capabilities = getModelCapabilities(model, provider);\n return streaming ? !!capabilities.tool_support_streaming : !!capabilities.tool_support;\n}\nexport function modelModalitiesToArray(modalities) {\n return Object.entries(modalities)\n .filter(([_, isSupported]) => isSupported)\n .map(([modality]) => modality);\n}\n//# sourceMappingURL=capability.js.map","import { OptionType, SharedOptions } from \"../types.js\";\nimport { textOptionsFallback } from \"./fallback.js\";\nexport var ImagenTaskType;\n(function (ImagenTaskType) {\n ImagenTaskType[\"TEXT_IMAGE\"] = \"TEXT_IMAGE\";\n ImagenTaskType[\"EDIT_MODE_INPAINT_REMOVAL\"] = \"EDIT_MODE_INPAINT_REMOVAL\";\n ImagenTaskType[\"EDIT_MODE_INPAINT_INSERTION\"] = \"EDIT_MODE_INPAINT_INSERTION\";\n ImagenTaskType[\"EDIT_MODE_BGSWAP\"] = \"EDIT_MODE_BGSWAP\";\n ImagenTaskType[\"EDIT_MODE_OUTPAINT\"] = \"EDIT_MODE_OUTPAINT\";\n ImagenTaskType[\"CUSTOMIZATION_SUBJECT\"] = \"CUSTOMIZATION_SUBJECT\";\n ImagenTaskType[\"CUSTOMIZATION_STYLE\"] = \"CUSTOMIZATION_STYLE\";\n ImagenTaskType[\"CUSTOMIZATION_CONTROLLED\"] = \"CUSTOMIZATION_CONTROLLED\";\n ImagenTaskType[\"CUSTOMIZATION_INSTRUCT\"] = \"CUSTOMIZATION_INSTRUCT\";\n})(ImagenTaskType || (ImagenTaskType = {}));\nexport var ImagenMaskMode;\n(function (ImagenMaskMode) {\n ImagenMaskMode[\"MASK_MODE_USER_PROVIDED\"] = \"MASK_MODE_USER_PROVIDED\";\n ImagenMaskMode[\"MASK_MODE_BACKGROUND\"] = \"MASK_MODE_BACKGROUND\";\n ImagenMaskMode[\"MASK_MODE_FOREGROUND\"] = \"MASK_MODE_FOREGROUND\";\n ImagenMaskMode[\"MASK_MODE_SEMANTIC\"] = \"MASK_MODE_SEMANTIC\";\n})(ImagenMaskMode || (ImagenMaskMode = {}));\nexport function getVertexAiOptions(model, option) {\n if (model.includes(\"imagen-\")) {\n return getImagenOptions(model, option);\n }\n else if (model.includes(\"gemini\")) {\n return getGeminiOptions(model, option);\n }\n else if (model.includes(\"claude\")) {\n return getClaudeOptions(model, option);\n }\n else if (model.includes(\"llama\")) {\n return getLlamaOptions(model);\n }\n return textOptionsFallback;\n}\nfunction getImagenOptions(model, option) {\n const commonOptions = [\n {\n name: SharedOptions.number_of_images, type: OptionType.numeric, min: 1, max: 4, default: 1,\n integer: true, description: \"Number of Images to generate\",\n },\n {\n name: SharedOptions.seed, type: OptionType.numeric, min: 0, max: 4294967295, default: 12,\n integer: true, description: \"The seed of the generated image\"\n },\n {\n name: \"person_generation\", type: OptionType.enum, enum: { \"Disallow the inclusion of people or faces in images\": \"dont_allow\", \"Allow generation of adults only\": \"allow_adult\", \"Allow generation of people of all ages\": \"allow_all\" },\n default: \"allow_adult\", description: \"The safety setting for allowing the generation of people in the image\"\n },\n {\n name: \"safety_setting\", type: OptionType.enum, enum: { \"Block very few problematic prompts and responses\": \"block_none\", \"Block only few problematic prompts and responses\": \"block_only_high\", \"Block some problematic prompts and responses\": \"block_medium_and_above\", \"Strictest filtering\": \"block_low_and_above\" },\n default: \"block_medium_and_above\", description: \"The overall safety setting\"\n },\n ];\n const outputOptions = [\n {\n name: \"image_file_type\", type: OptionType.enum, enum: { \"JPEG\": \"image/jpeg\", \"PNG\": \"image/png\" },\n default: \"image/png\", description: \"The file type of the generated image\",\n refresh: true,\n },\n ];\n const jpegQuality = {\n name: \"jpeg_compression_quality\", type: OptionType.numeric, min: 0, max: 100, default: 75,\n integer: true, description: \"The compression quality of the JPEG image\",\n };\n if (option?.image_file_type === \"image/jpeg\") {\n outputOptions.push(jpegQuality);\n }\n if (model.includes(\"generate\")) {\n // Generate models\n const modeOptions = [\n {\n name: \"aspect_ratio\", type: OptionType.enum, enum: { \"1:1\": \"1:1\", \"4:3\": \"4:3\", \"3:4\": \"3:4\", \"16:9\": \"16:9\", \"9:16\": \"9:16\" },\n default: \"1:1\", description: \"The aspect ratio of the generated image\"\n },\n {\n name: \"add_watermark\", type: OptionType.boolean, default: false, description: \"Add an invisible watermark to the generated image, useful for detection of AI images\"\n },\n ];\n const enhanceOptions = !model.includes(\"generate-001\") ? [\n {\n name: \"enhance_prompt\", type: OptionType.boolean, default: true, description: \"VertexAI automatically rewrites the prompt to better reflect the prompt's intent.\"\n },\n ] : [];\n return {\n _option_id: \"vertexai-imagen\",\n options: [\n ...commonOptions,\n ...modeOptions,\n ...outputOptions,\n ...enhanceOptions,\n ]\n };\n }\n if (model.includes(\"capability\")) {\n // Edit models\n let guidanceScaleDefault = 75;\n if (option?.edit_mode === ImagenTaskType.EDIT_MODE_INPAINT_INSERTION) {\n guidanceScaleDefault = 60;\n }\n const modeOptions = [\n {\n name: \"edit_mode\", type: OptionType.enum,\n enum: {\n \"EDIT_MODE_INPAINT_REMOVAL\": \"EDIT_MODE_INPAINT_REMOVAL\",\n \"EDIT_MODE_INPAINT_INSERTION\": \"EDIT_MODE_INPAINT_INSERTION\",\n \"EDIT_MODE_BGSWAP\": \"EDIT_MODE_BGSWAP\",\n \"EDIT_MODE_OUTPAINT\": \"EDIT_MODE_OUTPAINT\",\n \"CUSTOMIZATION_SUBJECT\": \"CUSTOMIZATION_SUBJECT\",\n \"CUSTOMIZATION_STYLE\": \"CUSTOMIZATION_STYLE\",\n \"CUSTOMIZATION_CONTROLLED\": \"CUSTOMIZATION_CONTROLLED\",\n \"CUSTOMIZATION_INSTRUCT\": \"CUSTOMIZATION_INSTRUCT\",\n },\n description: \"The editing mode. CUSTOMIZATION options use few-shot learning to generate images based on a few examples.\"\n },\n {\n name: \"guidance_scale\", type: OptionType.numeric, min: 0, max: 500, default: guidanceScaleDefault,\n integer: true, description: \"How closely the generation follows the prompt\"\n }\n ];\n const maskOptions = (option?.edit_mode?.includes(\"EDIT\")) ? [\n {\n name: \"mask_mode\", type: OptionType.enum,\n enum: {\n \"MASK_MODE_USER_PROVIDED\": \"MASK_MODE_USER_PROVIDED\",\n \"MASK_MODE_BACKGROUND\": \"MASK_MODE_BACKGROUND\",\n \"MASK_MODE_FOREGROUND\": \"MASK_MODE_FOREGROUND\",\n \"MASK_MODE_SEMANTIC\": \"MASK_MODE_SEMANTIC\",\n },\n default: \"MASK_MODE_USER_PROVIDED\",\n description: \"How should the mask for the generation be provided\"\n },\n {\n name: \"mask_dilation\", type: OptionType.numeric, min: 0, max: 1,\n integer: true, description: \"The mask dilation, grows the mask by a percentage of image width to compensate for imprecise masks.\"\n },\n ] : [];\n const maskClassOptions = (option?.mask_mode === ImagenMaskMode.MASK_MODE_SEMANTIC) ? [\n {\n name: \"mask_class\", type: OptionType.string_list, default: [],\n description: \"Input Class IDs. Create a mask based on image class, based on https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/imagen-api-customization#segment-ids\"\n }\n ] : [];\n const editOptions = option?.edit_mode?.includes(\"EDIT\") ? [\n {\n name: \"edit_steps\", type: OptionType.numeric, default: 75,\n integer: true, description: \"The number of steps for the base image generation, more steps means more time and better quality\"\n },\n ] : [];\n const customizationOptions = option?.edit_mode === ImagenTaskType.CUSTOMIZATION_CONTROLLED\n || option?.edit_mode === ImagenTaskType.CUSTOMIZATION_SUBJECT ? [\n {\n name: \"controlType\", type: OptionType.enum, enum: { \"Face Mesh\": \"CONTROL_TYPE_FACE_MESH\", \"Canny\": \"CONTROL_TYPE_CANNY\", \"Scribble\": \"CONTROL_TYPE_SCRIBBLE\" },\n default: \"CONTROL_TYPE_CANNY\", description: \"Method used to generate the control image\"\n },\n {\n name: \"controlImageComputation\", type: OptionType.boolean, default: true, description: \"Should the control image be computed from the input image, or is it provided\"\n }\n ] : [];\n return {\n _option_id: \"vertexai-imagen\",\n options: [\n ...modeOptions,\n ...commonOptions,\n ...maskOptions,\n ...maskClassOptions,\n ...editOptions,\n ...customizationOptions,\n ...outputOptions,\n ]\n };\n }\n return textOptionsFallback;\n}\nfunction getGeminiOptions(model, _option) {\n const max_tokens_limit = getGeminiMaxTokensLimit(model);\n const excludeOptions = [\"max_tokens\"];\n let commonOptions = textOptionsFallback.options.filter((option) => !excludeOptions.includes(option.name));\n const max_tokens = [{\n name: SharedOptions.max_tokens, type: OptionType.numeric, min: 1, max: max_tokens_limit,\n integer: true, step: 200, description: \"The maximum number of tokens to generate\"\n }];\n const seedOption = {\n name: SharedOptions.seed, type: OptionType.numeric, integer: true, description: \"The seed for the generation, useful for reproducibility\"\n };\n if (model.includes(\"-2.5-\")) {\n // Gemini 2.5 thinking models\n // Set budget token ranges based on model variant\n let budgetMin = -1;\n let budgetMax = 24576;\n let budgetDescription = \"\";\n if (model.includes(\"flash-lite\")) {\n budgetMin = -1;\n budgetMax = 24576;\n budgetDescription = \"The target number of tokens to use for reasoning. \" +\n \"Flash Lite default: Model does not think. \" +\n \"Range: 512-24576 tokens. \" +\n \"Set to 0 to disable thinking, -1 for dynamic thinking.\";\n }\n else if (model.includes(\"flash\")) {\n budgetMin = -1;\n budgetMax = 24576;\n budgetDescription = \"The target number of tokens to use for reasoning. \" +\n \"Flash default: Dynamic thinking (model decides when and how much to think). \" +\n \"Range: 0-24576 tokens. \" +\n \"Set to 0 to disable thinking, -1 for dynamic thinking.\";\n }\n else if (model.includes(\"pro\")) {\n budgetMin = -1;\n budgetMax = 32768;\n budgetDescription = \"The target number of tokens to use for reasoning. \" +\n \"Pro default: Dynamic thinking (model decides when and how much to think). \" +\n \"Range: 128-32768 tokens. \" +\n \"Cannot disable thinking - minimum 128 tokens. Set to -1 for dynamic thinking.\";\n }\n const geminiThinkingOptions = [\n {\n name: \"include_thoughts\",\n type: OptionType.boolean,\n default: false,\n description: \"Include the model's reasoning process in the response\"\n },\n {\n name: \"thinking_budget_tokens\",\n type: OptionType.numeric,\n min: budgetMin,\n max: budgetMax,\n default: undefined,\n integer: true,\n step: 100,\n description: budgetDescription,\n }\n ];\n return {\n _option_id: \"vertexai-gemini\",\n options: [\n ...max_tokens,\n ...commonOptions,\n seedOption,\n ...geminiThinkingOptions,\n ]\n };\n }\n return {\n _option_id: \"vertexai-gemini\",\n options: [\n ...max_tokens,\n ...commonOptions,\n seedOption,\n ]\n };\n}\nfunction getClaudeOptions(model, option) {\n const max_tokens_limit = getClaudeMaxTokensLimit(model);\n const excludeOptions = [\"max_tokens\", \"presence_penalty\", \"frequency_penalty\"];\n let commonOptions = textOptionsFallback.options.filter((option) => !excludeOptions.includes(option.name));\n const max_tokens = [{\n name: SharedOptions.max_tokens, type: OptionType.numeric, min: 1, max: max_tokens_limit,\n integer: true, step: 200, description: \"The maximum number of tokens to generate\"\n }];\n if (model.includes(\"-3-7\") || model.includes(\"-4\")) {\n const claudeModeOptions = [\n {\n name: \"thinking_mode\",\n type: OptionType.boolean,\n default: false,\n description: \"If true, use the extended reasoning mode\"\n },\n ];\n const claudeThinkingOptions = option?.thinking_mode ? [\n {\n name: \"thinking_budget_tokens\",\n type: OptionType.numeric,\n min: 1024,\n default: 1024,\n integer: true,\n step: 100,\n description: \"The target number of tokens to use for reasoning, not a hard limit.\"\n },\n {\n name: \"include_thoughts\",\n type: OptionType.boolean,\n default: false,\n description: \"Include the model's reasoning process in the response\"\n }\n ] : [];\n return {\n _option_id: \"vertexai-claude\",\n options: [\n ...max_tokens,\n ...commonOptions,\n ...claudeModeOptions,\n ...claudeThinkingOptions,\n ]\n };\n }\n return {\n _option_id: \"vertexai-claude\",\n options: [\n ...max_tokens,\n ...commonOptions,\n ]\n };\n}\nfunction getLlamaOptions(model) {\n const max_tokens_limit = getLlamaMaxTokensLimit(model);\n const excludeOptions = [\"max_tokens\", \"presence_penalty\", \"frequency_penalty\", \"stop_sequence\"];\n let commonOptions = textOptionsFallback.options.filter((option) => !excludeOptions.includes(option.name));\n const max_tokens = [{\n name: SharedOptions.max_tokens, type: OptionType.numeric, min: 1, max: max_tokens_limit,\n integer: true, step: 200, description: \"The maximum number of tokens to generate\"\n }];\n // Set max temperature to 1.0 for Llama models\n commonOptions = commonOptions.map((option) => {\n if (option.name === SharedOptions.temperature &&\n option.type === OptionType.numeric) {\n return {\n ...option,\n max: 1.0,\n };\n }\n return option;\n });\n return {\n _option_id: \"text-fallback\",\n options: [\n ...max_tokens,\n ...commonOptions,\n ]\n };\n}\nfunction getGeminiMaxTokensLimit(model) {\n if (model.includes(\"thinking\") || model.includes(\"-2.5-\")) {\n return 65536;\n }\n if (model.includes(\"ultra\") || model.includes(\"vision\")) {\n return 2048;\n }\n return 8192;\n}\nfunction getClaudeMaxTokensLimit(model) {\n if (model.includes(\"-4-\")) {\n if (model.includes(\"opus-\")) {\n return 32768;\n }\n return 65536;\n }\n else if (model.includes(\"-3-7-\")) {\n return 128000;\n }\n else if (model.includes(\"-3-5-\")) {\n return 8192;\n }\n else {\n return 4096;\n }\n}\nfunction getLlamaMaxTokensLimit(_model) {\n return 8192;\n}\nexport function getMaxTokensLimitVertexAi(model) {\n if (model.includes(\"imagen-\")) {\n return 0; // Imagen models do not have a max tokens limit in the same way as text models\n }\n else if (model.includes(\"claude\")) {\n return getClaudeMaxTokensLimit(model);\n }\n else if (model.includes(\"gemini\")) {\n return getGeminiMaxTokensLimit(model);\n }\n else if (model.includes(\"llama\")) {\n return getLlamaMaxTokensLimit(model);\n }\n return 8192; // Default fallback limit\n}\n//# sourceMappingURL=vertexai.js.map",null,"import { OptionType, SharedOptions } from \"../types.js\";\nexport const textOptionsFallback = {\n _option_id: \"text-fallback\",\n options: [\n {\n name: SharedOptions.max_tokens, type: OptionType.numeric, min: 1,\n integer: true, step: 200, description: \"The maximum number of tokens to generate\"\n },\n {\n name: SharedOptions.temperature, type: OptionType.numeric, min: 0.0, default: 0.7,\n integer: false, step: 0.1, description: \"A higher temperature biases toward less likely tokens, making the model more creative\"\n },\n {\n name: SharedOptions.top_p, type: OptionType.numeric, min: 0, max: 1,\n integer: false, step: 0.1, description: \"Limits token sampling to the cumulative probability of the top p tokens\"\n },\n {\n name: SharedOptions.top_k, type: OptionType.numeric, min: 1,\n integer: true, step: 1, description: \"Limits token sampling to the top k tokens\"\n },\n {\n name: SharedOptions.presence_penalty, type: OptionType.numeric, min: -2.0, max: 2.0,\n integer: false, step: 0.1, description: \"Penalise tokens if they appear at least once in the text\"\n },\n {\n name: SharedOptions.frequency_penalty, type: OptionType.numeric, min: -2.0, max: 2.0,\n integer: false, step: 0.1, description: \"Penalise tokens based on their frequency in the text\"\n },\n { name: SharedOptions.stop_sequence, type: OptionType.string_list, value: [], description: \"The generation will halt if one of the stop sequences is output\" },\n ]\n};\n//# sourceMappingURL=fallback.js.map",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Permission","AccessControlResourceType","AccessControlPrincipalType","ApiKeyTypes","PrincipalType","Providers","ProviderList","openai","id","name","requiresApiKey","requiresEndpointUrl","supportSearch","azure_openai","azure_foundry","huggingface_ie","replicate","bedrock","endpointPlaceholder","vertexai","togetherai","mistralai","groq","watsonx","SharedOptions","OptionType","PromptRole","Modalities","AIModelStatus","ModelType","TrainingJobStatus","RECORD_MODEL_CAPABILITIES","input","text","image","video","audio","embed","output","tool_support","tool_support_streaming","o3","RECORD_FAMILY_CAPABILITIES","o1","o4","llama","mistral","phi","deepseek","ai21","jamba","cohere","command","grok","IMAGE_INPUT_MODELS","VIDEO_INPUT_MODELS","AUDIO_INPUT_MODELS","TEXT_INPUT_MODELS","IMAGE_OUTPUT_MODELS","VIDEO_OUTPUT_MODELS","AUDIO_OUTPUT_MODELS","TEXT_OUTPUT_MODELS","EMBEDDING_OUTPUT_MODELS","TOOL_SUPPORT_MODELS","modelMatches","modelName","patterns","some","pattern","includes","applyGlobalToolSupportDisable","capabilities","startsWith","getModelCapabilitiesBedrock","model","normalized","test","foundationIdx","lastIndexOf","inferenceIdx","substring","replace","record","bestFamilyKey","bestFamilyLength","key","Object","keys","length","modelLower","toLowerCase","parts","split","providerModel","modelParts","slice","join","normalizeModelName","undefined","getModelCapabilitiesOpenAI","claude","getModelCapabilitiesVertexAI","segments","normalizeVertexAIModelName","getModelCapabilities","provider","baseModel","compositeId","deploymentName","parseAzureFoundryModelId","getModelCapabilitiesAzureFoundry","_getModelCapabilities","supportsToolUse","streaming","ImagenTaskType","ImagenMaskMode","CustomProviders","max_tokens","numeric","temperature","top_p","top_k","presence_penalty","frequency_penalty","stop_sequence","string_list","SupportedProviders","CustomProvidersList","virtual_lb","virtual_mediator","SupportedProvidersList","ExecutionEnvironmentRefPopulate","UserGroupRefPopulate","SupportedIntegrations","InteractionRefPopulate","InteractionRefWithSchemaPopulate","InteractionStatus","ExecutionRunStatus","RunDataStorageLevel","RunDataStorageDescription","RunDataStorageOptions","STANDARD","RESTRICTED","DEBUG","RunSourceTypes","ExecutionRunRefSelect","ConfigModes","ConfigModesDescription","ConfigModesOptions","RUN_AND_INTERACTION_CONFIG","RUN_CONFIG_ONLY","INTERACTION_CONFIG_ONLY","MeterNames","ProjectRoles","ResourceVisibility","SupportedEmbeddingTypes","ProgressSpan","constructor","parent","parentUnits","spanUnits","this","unitsDone","done","units","remaining","parentUnitsDone","Math","round","isDone","Progress","total","fraction","percent","span","isRoleIncludedIn","role","includingRole","owner","admin","billing","developer","ProjectRefPopulate","PromptStatus","PromptSegmentDefType","TemplateType","ResolvableRefType","CollectionStatus","WorkflowDefinitionRefPopulate","RenditionSchema","type","description","properties","mime_type","source_etag","nullable","height","width","multipart","default","total_parts","required","DocumentPartSchema","part_number","title","source_line_start","source_line_end","enum","page_number","ContentObjectStatus","WorkflowRuleInputType","ImageRenditionFormat","MarkdownRenditionFormat","ParentClosePolicy","TERMINATE","ABANDON","REQUEST_CANCEL","PARENT_CLOSE_POLICY_UNSPECIFIED","PARENT_CLOSE_POLICY_TERMINATE","PARENT_CLOSE_POLICY_ABANDON","PARENT_CLOSE_POLICY_REQUEST_CANCEL","ContentEventName","WorkflowExecutionStatus","AgentMessageType","TrainingSessionStatus","TransientTokenType","getDocumentIds","payload","objectIds","UserRefPopulate","Datacenters","BillingMethod","AccountRefPopulate","getTenantId","accountId","projectId","getTenantIdFromProject","project","account","mergeJSONSchemas","schemas","props","schema","prop","push","assign","_mergePromptsSchema","prompts","prompt","template","inputSchema","chat","items","assistant","user","content","mergePromptsSchema","interaction"],"mappings":"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"}
|