@llumiverse/common 0.23.0-dev.20251201 → 0.23.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.
Files changed (90) hide show
  1. package/lib/cjs/capability/azure_foundry.js +160 -0
  2. package/lib/cjs/capability/azure_foundry.js.map +1 -0
  3. package/lib/cjs/capability/bedrock.js +158 -0
  4. package/lib/cjs/capability/bedrock.js.map +1 -0
  5. package/lib/cjs/capability/openai.js +82 -0
  6. package/lib/cjs/capability/openai.js.map +1 -0
  7. package/lib/cjs/capability/vertexai.js +80 -0
  8. package/lib/cjs/capability/vertexai.js.map +1 -0
  9. package/lib/cjs/capability.js +64 -0
  10. package/lib/cjs/capability.js.map +1 -0
  11. package/lib/cjs/index.js +25 -0
  12. package/lib/cjs/index.js.map +1 -0
  13. package/lib/cjs/options/azure_foundry.js +428 -0
  14. package/lib/cjs/options/azure_foundry.js.map +1 -0
  15. package/lib/cjs/options/bedrock.js +462 -0
  16. package/lib/cjs/options/bedrock.js.map +1 -0
  17. package/lib/cjs/options/fallback.js +35 -0
  18. package/lib/cjs/options/fallback.js.map +1 -0
  19. package/lib/cjs/options/groq.js +37 -0
  20. package/lib/cjs/options/groq.js.map +1 -0
  21. package/lib/cjs/options/openai.js +126 -0
  22. package/lib/cjs/options/openai.js.map +1 -0
  23. package/lib/cjs/options/vertexai.js +503 -0
  24. package/lib/cjs/options/vertexai.js.map +1 -0
  25. package/lib/cjs/options.js +30 -0
  26. package/lib/cjs/options.js.map +1 -0
  27. package/lib/cjs/package.json +3 -0
  28. package/lib/cjs/types.js +178 -0
  29. package/lib/cjs/types.js.map +1 -0
  30. package/lib/esm/capability/azure_foundry.js +157 -0
  31. package/lib/esm/capability/azure_foundry.js.map +1 -0
  32. package/lib/esm/capability/bedrock.js +155 -0
  33. package/lib/esm/capability/bedrock.js.map +1 -0
  34. package/lib/esm/capability/openai.js +79 -0
  35. package/lib/esm/capability/openai.js.map +1 -0
  36. package/lib/esm/capability/vertexai.js +77 -0
  37. package/lib/esm/capability/vertexai.js.map +1 -0
  38. package/lib/esm/capability.js +59 -0
  39. package/lib/esm/capability.js.map +1 -0
  40. package/lib/esm/index.js +9 -0
  41. package/lib/esm/index.js.map +1 -0
  42. package/lib/esm/options/azure_foundry.js +424 -0
  43. package/lib/esm/options/azure_foundry.js.map +1 -0
  44. package/lib/esm/options/bedrock.js +458 -0
  45. package/lib/esm/options/bedrock.js.map +1 -0
  46. package/lib/esm/options/fallback.js +32 -0
  47. package/lib/esm/options/fallback.js.map +1 -0
  48. package/lib/esm/options/groq.js +34 -0
  49. package/lib/esm/options/groq.js.map +1 -0
  50. package/lib/esm/options/openai.js +123 -0
  51. package/lib/esm/options/openai.js.map +1 -0
  52. package/lib/esm/options/vertexai.js +498 -0
  53. package/lib/esm/options/vertexai.js.map +1 -0
  54. package/lib/esm/options.js +27 -0
  55. package/lib/esm/options.js.map +1 -0
  56. package/lib/esm/types.js +175 -0
  57. package/lib/esm/types.js.map +1 -0
  58. package/lib/types/capability/azure_foundry.d.ts +7 -0
  59. package/lib/types/capability/azure_foundry.d.ts.map +1 -0
  60. package/lib/types/capability/bedrock.d.ts +7 -0
  61. package/lib/types/capability/bedrock.d.ts.map +1 -0
  62. package/lib/types/capability/openai.d.ts +11 -0
  63. package/lib/types/capability/openai.d.ts.map +1 -0
  64. package/lib/types/capability/vertexai.d.ts +11 -0
  65. package/lib/types/capability/vertexai.d.ts.map +1 -0
  66. package/lib/types/capability.d.ts +5 -0
  67. package/lib/types/capability.d.ts.map +1 -0
  68. package/lib/types/index.d.ts +9 -0
  69. package/lib/types/index.d.ts.map +1 -0
  70. package/lib/types/options/azure_foundry.d.ts +52 -0
  71. package/lib/types/options/azure_foundry.d.ts.map +1 -0
  72. package/lib/types/options/bedrock.d.ts +52 -0
  73. package/lib/types/options/bedrock.d.ts.map +1 -0
  74. package/lib/types/options/fallback.d.ts +13 -0
  75. package/lib/types/options/fallback.d.ts.map +1 -0
  76. package/lib/types/options/groq.d.ts +12 -0
  77. package/lib/types/options/groq.d.ts.map +1 -0
  78. package/lib/types/options/openai.d.ts +21 -0
  79. package/lib/types/options/openai.d.ts.map +1 -0
  80. package/lib/types/options/vertexai.d.ts +74 -0
  81. package/lib/types/options/vertexai.d.ts.map +1 -0
  82. package/lib/types/options.d.ts +3 -0
  83. package/lib/types/options.d.ts.map +1 -0
  84. package/lib/types/types.d.ts +408 -0
  85. package/lib/types/types.d.ts.map +1 -0
  86. package/package.json +1 -1
  87. package/src/capability/azure_foundry.ts +1 -0
  88. package/src/capability/bedrock.ts +98 -128
  89. package/src/capability/openai.ts +20 -62
  90. package/src/capability/vertexai.ts +15 -36
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOptions = getOptions;
4
+ const bedrock_js_1 = require("./options/bedrock.js");
5
+ const groq_js_1 = require("./options/groq.js");
6
+ const openai_js_1 = require("./options/openai.js");
7
+ const vertexai_js_1 = require("./options/vertexai.js");
8
+ const fallback_js_1 = require("./options/fallback.js");
9
+ const types_js_1 = require("./types.js");
10
+ const azure_foundry_js_1 = require("./options/azure_foundry.js");
11
+ function getOptions(model, provider, options) {
12
+ if (!provider) {
13
+ return fallback_js_1.textOptionsFallback;
14
+ }
15
+ switch (provider.toLowerCase()) {
16
+ case types_js_1.Providers.bedrock:
17
+ return (0, bedrock_js_1.getBedrockOptions)(model, options);
18
+ case types_js_1.Providers.vertexai:
19
+ return (0, vertexai_js_1.getVertexAiOptions)(model, options);
20
+ case types_js_1.Providers.openai:
21
+ return (0, openai_js_1.getOpenAiOptions)(model, options);
22
+ case types_js_1.Providers.groq:
23
+ return (0, groq_js_1.getGroqOptions)(model, options);
24
+ case types_js_1.Providers.azure_foundry:
25
+ return (0, azure_foundry_js_1.getAzureFoundryOptions)(model, options);
26
+ default:
27
+ return fallback_js_1.textOptionsFallback;
28
+ }
29
+ }
30
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/options.ts"],"names":[],"mappings":";;AAQA,gCAkBC;AA1BD,qDAAyD;AACzD,+CAAmD;AACnD,mDAAuD;AACvD,uDAA2D;AAC3D,uDAA4D;AAC5D,yCAAuE;AACvE,iEAAoE;AAEpE,SAAgB,UAAU,CAAC,KAAa,EAAE,QAA6B,EAAE,OAAsB;IAC3F,IAAG,CAAC,QAAQ,EAAE,CAAC;QACX,OAAO,iCAAmB,CAAC;IAC/B,CAAC;IACD,QAAQ,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAC7B,KAAK,oBAAS,CAAC,OAAO;YAClB,OAAO,IAAA,8BAAiB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC7C,KAAK,oBAAS,CAAC,QAAQ;YACnB,OAAO,IAAA,gCAAkB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9C,KAAK,oBAAS,CAAC,MAAM;YACjB,OAAO,IAAA,4BAAgB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC5C,KAAK,oBAAS,CAAC,IAAI;YACf,OAAO,IAAA,wBAAc,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC1C,KAAK,oBAAS,CAAC,aAAa;YACxB,OAAO,IAAA,yCAAsB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAClD;YACI,OAAO,iCAAmB,CAAC;IACnC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TrainingJobStatus = exports.ModelType = exports.AIModelStatus = exports.Modalities = exports.PromptRole = exports.OptionType = exports.SharedOptions = exports.ProviderList = exports.Providers = void 0;
4
+ // ============== Provider details ===============
5
+ var Providers;
6
+ (function (Providers) {
7
+ Providers["openai"] = "openai";
8
+ Providers["azure_openai"] = "azure_openai";
9
+ Providers["azure_foundry"] = "azure_foundry";
10
+ Providers["huggingface_ie"] = "huggingface_ie";
11
+ Providers["replicate"] = "replicate";
12
+ Providers["bedrock"] = "bedrock";
13
+ Providers["vertexai"] = "vertexai";
14
+ Providers["togetherai"] = "togetherai";
15
+ Providers["mistralai"] = "mistralai";
16
+ Providers["groq"] = "groq";
17
+ Providers["watsonx"] = "watsonx";
18
+ })(Providers || (exports.Providers = Providers = {}));
19
+ exports.ProviderList = {
20
+ openai: {
21
+ id: Providers.openai,
22
+ name: "OpenAI",
23
+ requiresApiKey: true,
24
+ requiresEndpointUrl: false,
25
+ supportSearch: false,
26
+ },
27
+ azure_openai: {
28
+ id: Providers.azure_openai,
29
+ name: "Azure OpenAI",
30
+ requiresApiKey: false,
31
+ requiresEndpointUrl: true,
32
+ supportSearch: false,
33
+ },
34
+ azure_foundry: {
35
+ id: Providers.azure_foundry,
36
+ name: "Azure Foundry",
37
+ requiresApiKey: true,
38
+ requiresEndpointUrl: true,
39
+ supportSearch: false,
40
+ },
41
+ huggingface_ie: {
42
+ id: Providers.huggingface_ie,
43
+ name: "HuggingFace Inference Endpoint",
44
+ requiresApiKey: true,
45
+ requiresEndpointUrl: true,
46
+ },
47
+ replicate: {
48
+ id: Providers.replicate,
49
+ name: "Replicate",
50
+ requiresApiKey: true,
51
+ requiresEndpointUrl: false,
52
+ supportSearch: true,
53
+ },
54
+ bedrock: {
55
+ id: Providers.bedrock,
56
+ name: "AWS Bedrock",
57
+ requiresApiKey: false,
58
+ requiresEndpointUrl: false,
59
+ endpointPlaceholder: "region name (eg. us-east-1)",
60
+ supportSearch: false,
61
+ },
62
+ vertexai: {
63
+ id: Providers.vertexai,
64
+ name: "Google Vertex AI",
65
+ requiresApiKey: false,
66
+ requiresEndpointUrl: false,
67
+ supportSearch: false,
68
+ },
69
+ togetherai: {
70
+ id: Providers.togetherai,
71
+ name: "Together AI",
72
+ requiresApiKey: false,
73
+ requiresEndpointUrl: false,
74
+ supportSearch: false,
75
+ },
76
+ mistralai: {
77
+ id: Providers.mistralai,
78
+ name: "Mistral AI",
79
+ requiresApiKey: false,
80
+ requiresEndpointUrl: false,
81
+ supportSearch: false,
82
+ },
83
+ groq: {
84
+ id: Providers.groq,
85
+ name: "Groq Cloud",
86
+ requiresApiKey: false,
87
+ requiresEndpointUrl: false,
88
+ supportSearch: false,
89
+ },
90
+ watsonx: {
91
+ id: Providers.watsonx,
92
+ name: "IBM WatsonX",
93
+ requiresApiKey: true,
94
+ requiresEndpointUrl: true,
95
+ supportSearch: false
96
+ },
97
+ };
98
+ //Common names to share between different models
99
+ var SharedOptions;
100
+ (function (SharedOptions) {
101
+ //Text
102
+ SharedOptions["max_tokens"] = "max_tokens";
103
+ SharedOptions["temperature"] = "temperature";
104
+ SharedOptions["top_p"] = "top_p";
105
+ SharedOptions["top_k"] = "top_k";
106
+ SharedOptions["presence_penalty"] = "presence_penalty";
107
+ SharedOptions["frequency_penalty"] = "frequency_penalty";
108
+ SharedOptions["stop_sequence"] = "stop_sequence";
109
+ //Image
110
+ SharedOptions["seed"] = "seed";
111
+ SharedOptions["number_of_images"] = "number_of_images";
112
+ })(SharedOptions || (exports.SharedOptions = SharedOptions = {}));
113
+ var OptionType;
114
+ (function (OptionType) {
115
+ OptionType["numeric"] = "numeric";
116
+ OptionType["enum"] = "enum";
117
+ OptionType["boolean"] = "boolean";
118
+ OptionType["string_list"] = "string_list";
119
+ })(OptionType || (exports.OptionType = OptionType = {}));
120
+ // ============== Prompts ===============
121
+ var PromptRole;
122
+ (function (PromptRole) {
123
+ PromptRole["safety"] = "safety";
124
+ PromptRole["system"] = "system";
125
+ PromptRole["user"] = "user";
126
+ PromptRole["assistant"] = "assistant";
127
+ PromptRole["negative"] = "negative";
128
+ PromptRole["mask"] = "mask";
129
+ /**
130
+ * Used to send the response of a tool
131
+ */
132
+ PromptRole["tool"] = "tool";
133
+ })(PromptRole || (exports.PromptRole = PromptRole = {}));
134
+ /**
135
+ * @deprecated This is deprecated. Use CompletionResult.type information instead.
136
+ */
137
+ var Modalities;
138
+ (function (Modalities) {
139
+ Modalities["text"] = "text";
140
+ Modalities["image"] = "image";
141
+ })(Modalities || (exports.Modalities = Modalities = {}));
142
+ var AIModelStatus;
143
+ (function (AIModelStatus) {
144
+ AIModelStatus["Available"] = "available";
145
+ AIModelStatus["Pending"] = "pending";
146
+ AIModelStatus["Stopped"] = "stopped";
147
+ AIModelStatus["Unavailable"] = "unavailable";
148
+ AIModelStatus["Unknown"] = "unknown";
149
+ AIModelStatus["Legacy"] = "legacy";
150
+ })(AIModelStatus || (exports.AIModelStatus = AIModelStatus = {}));
151
+ var ModelType;
152
+ (function (ModelType) {
153
+ ModelType["Classifier"] = "classifier";
154
+ ModelType["Regressor"] = "regressor";
155
+ ModelType["Clustering"] = "clustering";
156
+ ModelType["AnomalyDetection"] = "anomaly-detection";
157
+ ModelType["TimeSeries"] = "time-series";
158
+ ModelType["Text"] = "text";
159
+ ModelType["Image"] = "image";
160
+ ModelType["Audio"] = "audio";
161
+ ModelType["Video"] = "video";
162
+ ModelType["Embedding"] = "embedding";
163
+ ModelType["Chat"] = "chat";
164
+ ModelType["Code"] = "code";
165
+ ModelType["NLP"] = "nlp";
166
+ ModelType["MultiModal"] = "multi-modal";
167
+ ModelType["Test"] = "test";
168
+ ModelType["Other"] = "other";
169
+ ModelType["Unknown"] = "unknown";
170
+ })(ModelType || (exports.ModelType = ModelType = {}));
171
+ var TrainingJobStatus;
172
+ (function (TrainingJobStatus) {
173
+ TrainingJobStatus["running"] = "running";
174
+ TrainingJobStatus["succeeded"] = "succeeded";
175
+ TrainingJobStatus["failed"] = "failed";
176
+ TrainingJobStatus["cancelled"] = "cancelled";
177
+ })(TrainingJobStatus || (exports.TrainingJobStatus = TrainingJobStatus = {}));
178
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ // Global feature flags - temporarily disable tool support for non-OpenAI models
2
+ const ENABLE_TOOL_SUPPORT_NON_OPENAI = false;
3
+ // Record of Azure Foundry model capabilities keyed by model ID (lowercased)
4
+ // Only include models with specific exceptions that differ from their family patterns
5
+ const RECORD_MODEL_CAPABILITIES = {
6
+ // OpenAI O-series exceptions - o1-mini doesn't have tool support like other o1 models
7
+ "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 },
8
+ // OpenAI o3 is text-only unlike other o-series models
9
+ "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 },
10
+ // Models with special properties not covered by family patterns
11
+ "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 },
12
+ "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 },
13
+ "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 },
14
+ "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 },
15
+ "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 },
16
+ };
17
+ // Populate RECORD_FAMILY_CAPABILITIES as a const record (lowest common denominator for each family)
18
+ const RECORD_FAMILY_CAPABILITIES = {
19
+ // OpenAI GPT families
20
+ "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 },
21
+ "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 },
22
+ "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 },
23
+ "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 },
24
+ "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 },
25
+ "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 },
26
+ "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 },
27
+ "gpt": { 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 },
28
+ // OpenAI O-series families
29
+ "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 },
30
+ "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 },
31
+ "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 },
32
+ "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 },
33
+ "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 },
34
+ "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 },
35
+ "o": { 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 },
36
+ // Llama families
37
+ "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 },
38
+ "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 },
39
+ "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 },
40
+ "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 },
41
+ "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 },
42
+ "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 },
43
+ // Mistral families
44
+ "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 },
45
+ "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 },
46
+ "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 },
47
+ // Microsoft Phi families
48
+ "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 },
49
+ "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 },
50
+ // DeepSeek families
51
+ "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 },
52
+ "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 },
53
+ "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 },
54
+ // AI21 families
55
+ "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 },
56
+ "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 },
57
+ "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 },
58
+ // Cohere families
59
+ "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 },
60
+ "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 },
61
+ "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 },
62
+ // xAI families
63
+ "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 },
64
+ "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 }
65
+ };
66
+ // Fallback pattern lists for inferring modalities and tool support
67
+ const IMAGE_INPUT_MODELS = ["image", "vision"];
68
+ const VIDEO_INPUT_MODELS = ["video"];
69
+ const AUDIO_INPUT_MODELS = ["audio"];
70
+ const TEXT_INPUT_MODELS = ["text"];
71
+ const IMAGE_OUTPUT_MODELS = ["image"];
72
+ const VIDEO_OUTPUT_MODELS = ["video"];
73
+ const AUDIO_OUTPUT_MODELS = ["audio"];
74
+ const TEXT_OUTPUT_MODELS = ["text"];
75
+ const EMBEDDING_OUTPUT_MODELS = ["embed"];
76
+ const TOOL_SUPPORT_MODELS = ["tool", "gpt-4", "gpt-4o", "o1", "o3", "o4", "llama-3", "mistral-large", "mistral-small", "jamba", "cohere", "command", "grok"];
77
+ function modelMatches(modelName, patterns) {
78
+ return patterns.some(pattern => modelName.includes(pattern));
79
+ }
80
+ /**
81
+ * Get the full ModelCapabilities for an Azure Foundry model.
82
+ * Checks RECORD_MODEL_CAPABILITIES first, then falls back to family pattern matching.
83
+ */
84
+ export function getModelCapabilitiesAzureFoundry(model) {
85
+ // Extract base model from composite ID (deployment::baseModel)
86
+ const { baseModel } = parseAzureFoundryModelId(model);
87
+ const normalized = baseModel.toLowerCase();
88
+ // 1. Exact match in record
89
+ const record = RECORD_MODEL_CAPABILITIES[normalized];
90
+ if (record) {
91
+ return applyGlobalToolSupportDisable(record, normalized);
92
+ }
93
+ // 2. Fallback: find the longest matching family prefix in RECORD_FAMILY_CAPABILITIES
94
+ let bestFamilyKey = undefined;
95
+ let bestFamilyLength = 0;
96
+ for (const key of Object.keys(RECORD_FAMILY_CAPABILITIES)) {
97
+ if (normalized.startsWith(key) && key.length > bestFamilyLength) {
98
+ bestFamilyKey = key;
99
+ bestFamilyLength = key.length;
100
+ }
101
+ }
102
+ if (bestFamilyKey) {
103
+ return applyGlobalToolSupportDisable(RECORD_FAMILY_CAPABILITIES[bestFamilyKey], normalized);
104
+ }
105
+ // 3. Fallback: infer from normalized name using patterns
106
+ const input = {
107
+ text: modelMatches(normalized, TEXT_INPUT_MODELS) || true, // Default to text input
108
+ image: modelMatches(normalized, IMAGE_INPUT_MODELS) || undefined,
109
+ video: modelMatches(normalized, VIDEO_INPUT_MODELS) || undefined,
110
+ audio: modelMatches(normalized, AUDIO_INPUT_MODELS) || undefined,
111
+ embed: false
112
+ };
113
+ const output = {
114
+ text: modelMatches(normalized, TEXT_OUTPUT_MODELS) || true, // Default to text output
115
+ image: modelMatches(normalized, IMAGE_OUTPUT_MODELS) || undefined,
116
+ video: modelMatches(normalized, VIDEO_OUTPUT_MODELS) || undefined,
117
+ audio: modelMatches(normalized, AUDIO_OUTPUT_MODELS) || undefined,
118
+ embed: modelMatches(normalized, EMBEDDING_OUTPUT_MODELS) || undefined
119
+ };
120
+ const tool_support = modelMatches(normalized, TOOL_SUPPORT_MODELS) || undefined;
121
+ const tool_support_streaming = tool_support || undefined;
122
+ const inferredCapabilities = { input, output, tool_support, tool_support_streaming };
123
+ return applyGlobalToolSupportDisable(inferredCapabilities, normalized);
124
+ }
125
+ /**
126
+ * Apply global tool support disable for non-OpenAI models.
127
+ * Preserves model-specific information for future use while temporarily disabling tool support.
128
+ */
129
+ function applyGlobalToolSupportDisable(capabilities, modelName) {
130
+ // Check if this is an OpenAI model
131
+ const isOpenAIModel = modelName.startsWith('gpt-') || modelName.startsWith('o1') || modelName.startsWith('o3') || modelName.startsWith('o4');
132
+ if (!ENABLE_TOOL_SUPPORT_NON_OPENAI && !isOpenAIModel) {
133
+ // Disable tool support for non-OpenAI models while preserving other capabilities
134
+ return {
135
+ ...capabilities,
136
+ tool_support: false,
137
+ tool_support_streaming: false
138
+ };
139
+ }
140
+ return capabilities;
141
+ }
142
+ // Helper function to parse composite model IDs
143
+ function parseAzureFoundryModelId(compositeId) {
144
+ const parts = compositeId.split('::');
145
+ if (parts.length === 2) {
146
+ return {
147
+ deploymentName: parts[0],
148
+ baseModel: parts[1]
149
+ };
150
+ }
151
+ // Backwards compatibility: if no delimiter found, treat as deployment name
152
+ return {
153
+ deploymentName: compositeId,
154
+ baseModel: compositeId
155
+ };
156
+ }
157
+ //# sourceMappingURL=azure_foundry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure_foundry.js","sourceRoot":"","sources":["../../../src/capability/azure_foundry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ // Explicit exception lists keyed by the model identifier (last segment after the prefix)
2
+ const RECORD_FOUNDATION_EXCEPTIONS = {};
3
+ const RECORD_PROFILE_EXCEPTIONS = {
4
+ "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 },
5
+ "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 },
6
+ };
7
+ // Record of Bedrock model capabilities keyed by model identifier.
8
+ // Only include models that differ from their family defaults
9
+ const RECORD_MODEL_CAPABILITIES = {
10
+ // Models with specific exceptions that differ from family
11
+ "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 },
12
+ "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 },
13
+ "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 },
14
+ "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 },
15
+ "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 },
16
+ "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 },
17
+ };
18
+ // Family capabilities (longest prefix match)
19
+ const RECORD_FAMILY_CAPABILITIES = {
20
+ "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 },
21
+ "amazon.nova": { 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 },
22
+ "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 },
23
+ "anthropic.claude-3-5-haiku": { 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 },
24
+ "anthropic.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, tool_support_streaming: true },
25
+ "cohere.command-r": { 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 },
26
+ "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 },
27
+ "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 },
28
+ "meta.llama3-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 },
29
+ "meta.llama3-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 },
30
+ "meta.llama3-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: false, tool_support_streaming: false },
31
+ "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 },
32
+ "meta.llama4": { 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 },
33
+ "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 },
34
+ "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 },
35
+ "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 },
36
+ "mistral.pixtral": { 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 },
37
+ "openai.gpt-oss": { 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 },
38
+ "qwen.": { 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 },
39
+ "twelvelabs.": { input: { text: true, image: false, video: true, audio: false, embed: false }, output: { text: true, image: false, video: false, audio: false, embed: false }, tool_support: true, tool_support_streaming: false },
40
+ "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 },
41
+ };
42
+ function extractModelLookupKey(modelName) {
43
+ const lower = modelName.toLowerCase();
44
+ const lastSlashIdx = lower.lastIndexOf("/");
45
+ let key = lastSlashIdx === -1 ? lower : lower.slice(lastSlashIdx + 1);
46
+ if (lower.includes("inference-profile/")) {
47
+ key = key.replace(/^[^.]+\./, "");
48
+ }
49
+ return key;
50
+ }
51
+ function findFamilyCapability(lookupKey, families) {
52
+ let bestKey;
53
+ for (const key of Object.keys(families)) {
54
+ if (lookupKey.startsWith(key) && (!bestKey || key.length > bestKey.length)) {
55
+ bestKey = key;
56
+ }
57
+ }
58
+ return bestKey ? families[bestKey] : undefined;
59
+ }
60
+ /**
61
+ * Extract the model identifier from an ARN or inference profile
62
+ * @param modelName The full model ARN or name
63
+ * @returns The normalized model identifier
64
+ */
65
+ function normalizeModelName(modelName) {
66
+ const modelLower = modelName.toLowerCase();
67
+ if (modelLower.includes("inference-profile")) {
68
+ const parts = modelLower.split("/");
69
+ if (parts.length > 1) {
70
+ const providerModel = parts[parts.length - 1];
71
+ const modelParts = providerModel.split(".");
72
+ if (modelParts.length > 1 && modelParts[1] === "deepseek") {
73
+ return `deepseek-${modelParts.slice(2).join(".")}`;
74
+ }
75
+ return modelParts.length > 2 ? modelParts.slice(2).join(".") : providerModel;
76
+ }
77
+ }
78
+ return modelLower;
79
+ }
80
+ // Fallback pattern lists for inferring modalities and tool support
81
+ const IMAGE_INPUT_MODELS = ["image"]; // fallback: if model id contains 'image', supports image input
82
+ const VIDEO_INPUT_MODELS = ["video"];
83
+ const AUDIO_INPUT_MODELS = ["audio"];
84
+ const TEXT_INPUT_MODELS = ["text"];
85
+ const IMAGE_OUTPUT_MODELS = ["image"];
86
+ const VIDEO_OUTPUT_MODELS = ["video"];
87
+ const AUDIO_OUTPUT_MODELS = ["audio"];
88
+ const TEXT_OUTPUT_MODELS = ["text"];
89
+ const EMBEDDING_OUTPUT_MODELS = ["embed"];
90
+ const TOOL_SUPPORT_MODELS = ["tool", "sonnet", "opus", "nova", "palmyra", "command-r", "mistral-large", "pixtral"];
91
+ function modelMatches(modelName, patterns) {
92
+ return patterns.some(pattern => modelName.includes(pattern));
93
+ }
94
+ /**
95
+ * Get the full ModelCapabilities for a Bedrock model.
96
+ * Checks RECORD_MODEL_CAPABILITIES first, then falls back to pattern-based inference.
97
+ */
98
+ export function getModelCapabilitiesBedrock(model) {
99
+ // Normalize ARN or inference-profile to model ID
100
+ const modelLower = model.toLowerCase();
101
+ let normalized = modelLower;
102
+ const arnPattern = /^arn:aws:bedrock:[^:]+:[^:]*:(inference-profile|foundation-model)\/.+/i;
103
+ if (arnPattern.test(modelLower)) {
104
+ // Extract after last occurrence of 'foundation-model/' or 'inference-profile/'
105
+ const foundationIdx = modelLower.lastIndexOf('foundation-model/');
106
+ const inferenceIdx = modelLower.lastIndexOf('inference-profile/');
107
+ if (foundationIdx !== -1) {
108
+ normalized = modelLower.substring(foundationIdx);
109
+ }
110
+ else if (inferenceIdx !== -1) {
111
+ normalized = modelLower.substring(inferenceIdx);
112
+ }
113
+ }
114
+ const isInferenceProfile = normalized.startsWith("inference-profile/");
115
+ const isFoundationModel = normalized.startsWith("foundation-model/");
116
+ const lookupKey = extractModelLookupKey(normalized);
117
+ // 1. Check exceptions
118
+ if (isFoundationModel) {
119
+ const exception = RECORD_FOUNDATION_EXCEPTIONS[lookupKey];
120
+ if (exception)
121
+ return exception;
122
+ }
123
+ else if (isInferenceProfile) {
124
+ const exception = RECORD_PROFILE_EXCEPTIONS[lookupKey];
125
+ if (exception)
126
+ return exception;
127
+ }
128
+ // 2. Check recorded capabilities by model
129
+ const modelCapability = RECORD_MODEL_CAPABILITIES[lookupKey];
130
+ if (modelCapability)
131
+ return modelCapability;
132
+ // 3. Check recorded capabilities by family
133
+ const familyCapability = findFamilyCapability(lookupKey, RECORD_FAMILY_CAPABILITIES);
134
+ if (familyCapability)
135
+ return familyCapability;
136
+ // 4. Fallback: infer from normalized name
137
+ const inferredName = normalizeModelName(lookupKey);
138
+ const input = {
139
+ text: modelMatches(inferredName, TEXT_INPUT_MODELS) || undefined,
140
+ image: modelMatches(inferredName, IMAGE_INPUT_MODELS) || undefined,
141
+ video: modelMatches(inferredName, VIDEO_INPUT_MODELS) || undefined,
142
+ audio: modelMatches(inferredName, AUDIO_INPUT_MODELS) || undefined,
143
+ embed: false
144
+ };
145
+ const output = {
146
+ text: modelMatches(inferredName, TEXT_OUTPUT_MODELS) || undefined,
147
+ image: modelMatches(inferredName, IMAGE_OUTPUT_MODELS) || undefined,
148
+ video: modelMatches(inferredName, VIDEO_OUTPUT_MODELS) || undefined,
149
+ audio: modelMatches(inferredName, AUDIO_OUTPUT_MODELS) || undefined,
150
+ embed: modelMatches(inferredName, EMBEDDING_OUTPUT_MODELS) || undefined
151
+ };
152
+ const tool_support = modelMatches(inferredName, TOOL_SUPPORT_MODELS) || undefined;
153
+ return { input, output, tool_support };
154
+ }
155
+ //# sourceMappingURL=bedrock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrock.js","sourceRoot":"","sources":["../../../src/capability/bedrock.ts"],"names":[],"mappings":"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"}