@aituber-onair/chat 0.42.0 → 0.44.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/README.ja.md +35 -2
- package/README.md +35 -2
- package/dist/cjs/constants/claude.d.ts +1 -0
- package/dist/cjs/constants/claude.d.ts.map +1 -1
- package/dist/cjs/constants/claude.js +3 -1
- package/dist/cjs/constants/claude.js.map +1 -1
- package/dist/cjs/constants/xai.d.ts +9 -0
- package/dist/cjs/constants/xai.d.ts.map +1 -1
- package/dist/cjs/constants/xai.js +14 -0
- package/dist/cjs/constants/xai.js.map +1 -1
- package/dist/cjs/services/ChatServiceFactory.d.ts +9 -0
- package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -1
- package/dist/cjs/services/ChatServiceFactory.js +63 -0
- package/dist/cjs/services/ChatServiceFactory.js.map +1 -1
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts +6 -2
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js +1 -0
- package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
- package/dist/cjs/services/providers/openai/OpenAIChatService.d.ts +5 -1
- package/dist/cjs/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
- package/dist/cjs/services/providers/openai/OpenAIChatService.js +3 -1
- package/dist/cjs/services/providers/openai/OpenAIChatService.js.map +1 -1
- package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js +17 -1
- package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
- package/dist/cjs/services/providers/openai/openaiRequestBuilder.d.ts +4 -1
- package/dist/cjs/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
- package/dist/cjs/services/providers/openai/openaiRequestBuilder.js +21 -1
- package/dist/cjs/services/providers/openai/openaiRequestBuilder.js.map +1 -1
- package/dist/cjs/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.js +18 -1
- package/dist/cjs/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.js.map +1 -1
- package/dist/cjs/services/providers/xai/XAIChatService.d.ts +3 -1
- package/dist/cjs/services/providers/xai/XAIChatService.d.ts.map +1 -1
- package/dist/cjs/services/providers/xai/XAIChatService.js +5 -1
- package/dist/cjs/services/providers/xai/XAIChatService.js.map +1 -1
- package/dist/cjs/services/providers/xai/XAIChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/xai/XAIChatServiceProvider.js +1 -1
- package/dist/cjs/services/providers/xai/XAIChatServiceProvider.js.map +1 -1
- package/dist/cjs/types/capabilities.d.ts +15 -0
- package/dist/cjs/types/capabilities.d.ts.map +1 -0
- package/dist/cjs/types/capabilities.js +3 -0
- package/dist/cjs/types/capabilities.js.map +1 -0
- package/dist/cjs/types/index.d.ts +1 -0
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/esm/constants/claude.d.ts +1 -0
- package/dist/esm/constants/claude.d.ts.map +1 -1
- package/dist/esm/constants/claude.js +2 -0
- package/dist/esm/constants/claude.js.map +1 -1
- package/dist/esm/constants/xai.d.ts +9 -0
- package/dist/esm/constants/xai.d.ts.map +1 -1
- package/dist/esm/constants/xai.js +12 -0
- package/dist/esm/constants/xai.js.map +1 -1
- package/dist/esm/services/ChatServiceFactory.d.ts +9 -0
- package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -1
- package/dist/esm/services/ChatServiceFactory.js +63 -0
- package/dist/esm/services/ChatServiceFactory.js.map +1 -1
- package/dist/esm/services/providers/ChatServiceProvider.d.ts +6 -2
- package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js +2 -1
- package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
- package/dist/esm/services/providers/openai/OpenAIChatService.d.ts +5 -1
- package/dist/esm/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
- package/dist/esm/services/providers/openai/OpenAIChatService.js +3 -1
- package/dist/esm/services/providers/openai/OpenAIChatService.js.map +1 -1
- package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js +17 -1
- package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
- package/dist/esm/services/providers/openai/openaiRequestBuilder.d.ts +4 -1
- package/dist/esm/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
- package/dist/esm/services/providers/openai/openaiRequestBuilder.js +21 -1
- package/dist/esm/services/providers/openai/openaiRequestBuilder.js.map +1 -1
- package/dist/esm/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.js +18 -1
- package/dist/esm/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.js.map +1 -1
- package/dist/esm/services/providers/xai/XAIChatService.d.ts +3 -1
- package/dist/esm/services/providers/xai/XAIChatService.d.ts.map +1 -1
- package/dist/esm/services/providers/xai/XAIChatService.js +6 -2
- package/dist/esm/services/providers/xai/XAIChatService.js.map +1 -1
- package/dist/esm/services/providers/xai/XAIChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/xai/XAIChatServiceProvider.js +2 -2
- package/dist/esm/services/providers/xai/XAIChatServiceProvider.js.map +1 -1
- package/dist/esm/types/capabilities.d.ts +15 -0
- package/dist/esm/types/capabilities.d.ts.map +1 -0
- package/dist/esm/types/capabilities.js +2 -0
- package/dist/esm/types/capabilities.js.map +1 -0
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/index.d.ts.map +1 -1
- package/dist/umd/aituber-onair-chat.js +114 -8
- package/dist/umd/aituber-onair-chat.min.js +7 -7
- package/package.json +1 -1
|
@@ -90,6 +90,7 @@ var AITuberOnAirChat = (() => {
|
|
|
90
90
|
MODEL_CLAUDE_4_8_OPUS: () => MODEL_CLAUDE_4_8_OPUS,
|
|
91
91
|
MODEL_CLAUDE_4_OPUS: () => MODEL_CLAUDE_4_OPUS,
|
|
92
92
|
MODEL_CLAUDE_4_SONNET: () => MODEL_CLAUDE_4_SONNET,
|
|
93
|
+
MODEL_CLAUDE_5_SONNET: () => MODEL_CLAUDE_5_SONNET,
|
|
93
94
|
MODEL_DEEPSEEK_CHAT: () => MODEL_DEEPSEEK_CHAT,
|
|
94
95
|
MODEL_DEEPSEEK_REASONER: () => MODEL_DEEPSEEK_REASONER,
|
|
95
96
|
MODEL_DEEPSEEK_V4_FLASH: () => MODEL_DEEPSEEK_V4_FLASH,
|
|
@@ -215,6 +216,7 @@ var AITuberOnAirChat = (() => {
|
|
|
215
216
|
allowsReasoningXHigh: () => allowsReasoningXHigh,
|
|
216
217
|
buildOpenAICompatibleTools: () => buildOpenAICompatibleTools,
|
|
217
218
|
getDefaultReasoningEffortForGPT5Model: () => getDefaultReasoningEffortForGPT5Model,
|
|
219
|
+
getDefaultXaiReasoningEffort: () => getDefaultXaiReasoningEffort,
|
|
218
220
|
getMaxTokensForResponseLength: () => getMaxTokensForResponseLength,
|
|
219
221
|
installGASFetch: () => installGASFetch,
|
|
220
222
|
isGPT5Model: () => isGPT5Model,
|
|
@@ -226,6 +228,7 @@ var AITuberOnAirChat = (() => {
|
|
|
226
228
|
isOpenRouterFreeModel: () => isOpenRouterFreeModel,
|
|
227
229
|
isOpenRouterVisionModel: () => isOpenRouterVisionModel,
|
|
228
230
|
isResponsesOnlyGPT5Model: () => isResponsesOnlyGPT5Model,
|
|
231
|
+
isXaiReasoningEffortModel: () => isXaiReasoningEffortModel,
|
|
229
232
|
isXaiVisionModel: () => isXaiVisionModel,
|
|
230
233
|
isZaiToolStreamModel: () => isZaiToolStreamModel,
|
|
231
234
|
isZaiVisionModel: () => isZaiVisionModel,
|
|
@@ -370,6 +373,7 @@ var AITuberOnAirChat = (() => {
|
|
|
370
373
|
var MODEL_CLAUDE_4_6_OPUS = "claude-opus-4-6";
|
|
371
374
|
var MODEL_CLAUDE_4_7_OPUS = "claude-opus-4-7";
|
|
372
375
|
var MODEL_CLAUDE_4_8_OPUS = "claude-opus-4-8";
|
|
376
|
+
var MODEL_CLAUDE_5_SONNET = "claude-sonnet-5";
|
|
373
377
|
var CLAUDE_VISION_SUPPORTED_MODELS = [
|
|
374
378
|
MODEL_CLAUDE_3_HAIKU,
|
|
375
379
|
MODEL_CLAUDE_4_SONNET,
|
|
@@ -380,7 +384,8 @@ var AITuberOnAirChat = (() => {
|
|
|
380
384
|
MODEL_CLAUDE_4_6_SONNET,
|
|
381
385
|
MODEL_CLAUDE_4_6_OPUS,
|
|
382
386
|
MODEL_CLAUDE_4_7_OPUS,
|
|
383
|
-
MODEL_CLAUDE_4_8_OPUS
|
|
387
|
+
MODEL_CLAUDE_4_8_OPUS,
|
|
388
|
+
MODEL_CLAUDE_5_SONNET
|
|
384
389
|
];
|
|
385
390
|
|
|
386
391
|
// src/constants/openrouter.ts
|
|
@@ -503,6 +508,12 @@ var AITuberOnAirChat = (() => {
|
|
|
503
508
|
function isXaiVisionModel(model) {
|
|
504
509
|
return XAI_VISION_SUPPORTED_MODELS.includes(model);
|
|
505
510
|
}
|
|
511
|
+
function isXaiReasoningEffortModel(model) {
|
|
512
|
+
return model === MODEL_GROK_4_3;
|
|
513
|
+
}
|
|
514
|
+
function getDefaultXaiReasoningEffort(model) {
|
|
515
|
+
return isXaiReasoningEffortModel(model) ? "none" : void 0;
|
|
516
|
+
}
|
|
506
517
|
|
|
507
518
|
// src/constants/kimi.ts
|
|
508
519
|
var ENDPOINT_KIMI_CHAT_COMPLETIONS_API = "https://api.moonshot.ai/v1/chat/completions";
|
|
@@ -1809,6 +1820,7 @@ If it's in another language, summarize in that language.
|
|
|
1809
1820
|
MODEL_CLAUDE_4_6_OPUS,
|
|
1810
1821
|
MODEL_CLAUDE_4_7_OPUS,
|
|
1811
1822
|
MODEL_CLAUDE_4_8_OPUS,
|
|
1823
|
+
MODEL_CLAUDE_5_SONNET,
|
|
1812
1824
|
MODEL_CLAUDE_3_HAIKU
|
|
1813
1825
|
];
|
|
1814
1826
|
}
|
|
@@ -2074,6 +2086,15 @@ If it's in another language, summarize in that language.
|
|
|
2074
2086
|
"sakana",
|
|
2075
2087
|
"plamo"
|
|
2076
2088
|
]);
|
|
2089
|
+
function toResponsesTextFormat(responseFormat) {
|
|
2090
|
+
if (responseFormat.type !== "json_schema") {
|
|
2091
|
+
return responseFormat;
|
|
2092
|
+
}
|
|
2093
|
+
return {
|
|
2094
|
+
type: responseFormat.type,
|
|
2095
|
+
...responseFormat.json_schema
|
|
2096
|
+
};
|
|
2097
|
+
}
|
|
2077
2098
|
function buildOpenAIRequestBody({
|
|
2078
2099
|
provider,
|
|
2079
2100
|
endpoint,
|
|
@@ -2086,6 +2107,7 @@ If it's in another language, summarize in that language.
|
|
|
2086
2107
|
verbosity,
|
|
2087
2108
|
reasoning_effort,
|
|
2088
2109
|
enableReasoningSummary,
|
|
2110
|
+
responseFormat,
|
|
2089
2111
|
maxTokens
|
|
2090
2112
|
}) {
|
|
2091
2113
|
const isResponsesAPI = endpoint === ENDPOINT_OPENAI_RESPONSES_API;
|
|
@@ -2146,6 +2168,16 @@ If it's in another language, summarize in that language.
|
|
|
2146
2168
|
}
|
|
2147
2169
|
}
|
|
2148
2170
|
}
|
|
2171
|
+
if (responseFormat) {
|
|
2172
|
+
if (isResponsesAPI) {
|
|
2173
|
+
body.text = {
|
|
2174
|
+
...body.text,
|
|
2175
|
+
format: toResponsesTextFormat(responseFormat)
|
|
2176
|
+
};
|
|
2177
|
+
} else {
|
|
2178
|
+
body.response_format = responseFormat;
|
|
2179
|
+
}
|
|
2180
|
+
}
|
|
2149
2181
|
if (provider === "mistral" && isMistralReasoningEffortModel(model) && reasoning_effort && isMistralReasoningEffort(reasoning_effort)) {
|
|
2150
2182
|
body.reasoning_effort = reasoning_effort;
|
|
2151
2183
|
}
|
|
@@ -2255,7 +2287,7 @@ If it's in another language, summarize in that language.
|
|
|
2255
2287
|
* @param model Name of the model to use
|
|
2256
2288
|
* @param visionModel Name of the vision model
|
|
2257
2289
|
*/
|
|
2258
|
-
constructor(apiKey, model = MODEL_GPT_4O_MINI, visionModel = MODEL_GPT_4O_MINI, tools, endpoint = ENDPOINT_OPENAI_CHAT_COMPLETIONS_API, mcpServers = [], responseLength, verbosity, reasoning_effort, enableReasoningSummary = false, provider = "openai", validateVisionModel = true) {
|
|
2290
|
+
constructor(apiKey, model = MODEL_GPT_4O_MINI, visionModel = MODEL_GPT_4O_MINI, tools, endpoint = ENDPOINT_OPENAI_CHAT_COMPLETIONS_API, mcpServers = [], responseLength, verbosity, reasoning_effort, enableReasoningSummary = false, provider = "openai", validateVisionModel = true, responseFormat) {
|
|
2259
2291
|
this.provider = provider;
|
|
2260
2292
|
this.apiKey = apiKey;
|
|
2261
2293
|
this.model = model;
|
|
@@ -2266,6 +2298,7 @@ If it's in another language, summarize in that language.
|
|
|
2266
2298
|
this.verbosity = verbosity;
|
|
2267
2299
|
this.reasoning_effort = reasoning_effort;
|
|
2268
2300
|
this.enableReasoningSummary = enableReasoningSummary;
|
|
2301
|
+
this.responseFormat = responseFormat;
|
|
2269
2302
|
if (validateVisionModel && !VISION_SUPPORTED_MODELS.includes(visionModel)) {
|
|
2270
2303
|
throw new Error(
|
|
2271
2304
|
`Model ${visionModel} does not support vision capabilities.`
|
|
@@ -2412,6 +2445,7 @@ If it's in another language, summarize in that language.
|
|
|
2412
2445
|
verbosity: this.verbosity,
|
|
2413
2446
|
reasoning_effort: this.reasoning_effort,
|
|
2414
2447
|
enableReasoningSummary: this.enableReasoningSummary,
|
|
2448
|
+
responseFormat: this.responseFormat,
|
|
2415
2449
|
maxTokens
|
|
2416
2450
|
});
|
|
2417
2451
|
const headers = {};
|
|
@@ -3858,7 +3892,7 @@ If it's in another language, summarize in that language.
|
|
|
3858
3892
|
var OpenAICompatibleChatServiceProvider = class {
|
|
3859
3893
|
createChatService(options) {
|
|
3860
3894
|
this.validateRequiredOptions(options);
|
|
3861
|
-
|
|
3895
|
+
const serviceArgs = [
|
|
3862
3896
|
options.apiKey?.trim() ?? "",
|
|
3863
3897
|
options.model,
|
|
3864
3898
|
options.visionModel ?? options.model,
|
|
@@ -3871,7 +3905,11 @@ If it's in another language, summarize in that language.
|
|
|
3871
3905
|
options.enableReasoningSummary,
|
|
3872
3906
|
this.getProviderName(),
|
|
3873
3907
|
false
|
|
3874
|
-
|
|
3908
|
+
];
|
|
3909
|
+
if (options.responseFormat !== void 0) {
|
|
3910
|
+
serviceArgs.push(options.responseFormat);
|
|
3911
|
+
}
|
|
3912
|
+
return new OpenAIChatService(...serviceArgs);
|
|
3875
3913
|
}
|
|
3876
3914
|
getProviderName() {
|
|
3877
3915
|
return "openai-compatible";
|
|
@@ -3958,7 +3996,7 @@ If it's in another language, summarize in that language.
|
|
|
3958
3996
|
shouldUseResponsesAPI = preference === "responses";
|
|
3959
3997
|
}
|
|
3960
3998
|
const endpoint = optimizedOptions.endpoint || (shouldUseResponsesAPI ? ENDPOINT_OPENAI_RESPONSES_API : ENDPOINT_OPENAI_CHAT_COMPLETIONS_API);
|
|
3961
|
-
|
|
3999
|
+
const serviceArgs = [
|
|
3962
4000
|
optimizedOptions.apiKey,
|
|
3963
4001
|
modelName,
|
|
3964
4002
|
visionModel,
|
|
@@ -3970,7 +4008,11 @@ If it's in another language, summarize in that language.
|
|
|
3970
4008
|
optimizedOptions.reasoning_effort,
|
|
3971
4009
|
optimizedOptions.enableReasoningSummary,
|
|
3972
4010
|
this.getProviderName()
|
|
3973
|
-
|
|
4011
|
+
];
|
|
4012
|
+
if (optimizedOptions.responseFormat !== void 0) {
|
|
4013
|
+
serviceArgs.push(true, optimizedOptions.responseFormat);
|
|
4014
|
+
}
|
|
4015
|
+
return new OpenAIChatService(...serviceArgs);
|
|
3974
4016
|
}
|
|
3975
4017
|
/**
|
|
3976
4018
|
* Get the provider name
|
|
@@ -4645,7 +4687,7 @@ If it's in another language, summarize in that language.
|
|
|
4645
4687
|
* @param model Name of the model to use
|
|
4646
4688
|
* @param visionModel Name of the vision model
|
|
4647
4689
|
*/
|
|
4648
|
-
constructor(apiKey, model = MODEL_GROK_4_1_FAST_NON_REASONING, visionModel = MODEL_GROK_4_1_FAST_NON_REASONING, tools, endpoint = ENDPOINT_XAI_CHAT_COMPLETIONS_API, responseLength) {
|
|
4690
|
+
constructor(apiKey, model = MODEL_GROK_4_1_FAST_NON_REASONING, visionModel = MODEL_GROK_4_1_FAST_NON_REASONING, tools, endpoint = ENDPOINT_XAI_CHAT_COMPLETIONS_API, responseLength, reasoningEffort) {
|
|
4649
4691
|
/** Provider name */
|
|
4650
4692
|
this.provider = "xai";
|
|
4651
4693
|
this.apiKey = apiKey;
|
|
@@ -4654,6 +4696,7 @@ If it's in another language, summarize in that language.
|
|
|
4654
4696
|
this.endpoint = endpoint;
|
|
4655
4697
|
this.responseLength = responseLength;
|
|
4656
4698
|
this.visionModel = visionModel;
|
|
4699
|
+
this.reasoningEffort = reasoningEffort;
|
|
4657
4700
|
}
|
|
4658
4701
|
/**
|
|
4659
4702
|
* Get the current model name
|
|
@@ -4751,6 +4794,9 @@ If it's in another language, summarize in that language.
|
|
|
4751
4794
|
if (tokenLimit !== void 0) {
|
|
4752
4795
|
body.max_tokens = tokenLimit;
|
|
4753
4796
|
}
|
|
4797
|
+
if (this.reasoningEffort && isXaiReasoningEffortModel(model)) {
|
|
4798
|
+
body.reasoning_effort = this.reasoningEffort;
|
|
4799
|
+
}
|
|
4754
4800
|
const tools = this.buildToolsDefinition();
|
|
4755
4801
|
if (tools.length > 0) {
|
|
4756
4802
|
body.tools = tools;
|
|
@@ -4804,7 +4850,8 @@ If it's in another language, summarize in that language.
|
|
|
4804
4850
|
visionModel,
|
|
4805
4851
|
tools,
|
|
4806
4852
|
options.endpoint || ENDPOINT_XAI_CHAT_COMPLETIONS_API,
|
|
4807
|
-
options.responseLength
|
|
4853
|
+
options.responseLength,
|
|
4854
|
+
options.reasoning_effort ?? getDefaultXaiReasoningEffort(model)
|
|
4808
4855
|
);
|
|
4809
4856
|
}
|
|
4810
4857
|
/**
|
|
@@ -5114,6 +5161,34 @@ If it's in another language, summarize in that language.
|
|
|
5114
5161
|
];
|
|
5115
5162
|
|
|
5116
5163
|
// src/services/ChatServiceFactory.ts
|
|
5164
|
+
var TOOL_SUPPORTED_PROVIDERS = /* @__PURE__ */ new Set([
|
|
5165
|
+
"openai",
|
|
5166
|
+
"openai-compatible",
|
|
5167
|
+
"openrouter",
|
|
5168
|
+
"gemini",
|
|
5169
|
+
"claude",
|
|
5170
|
+
"zai",
|
|
5171
|
+
"xai",
|
|
5172
|
+
"kimi",
|
|
5173
|
+
"deepseek",
|
|
5174
|
+
"mistral",
|
|
5175
|
+
"sakana",
|
|
5176
|
+
"plamo"
|
|
5177
|
+
]);
|
|
5178
|
+
var MCP_SUPPORTED_PROVIDERS = /* @__PURE__ */ new Set(["openai", "gemini", "claude"]);
|
|
5179
|
+
var JSON_MODE_SUPPORTED_PROVIDERS = /* @__PURE__ */ new Set([
|
|
5180
|
+
"openai",
|
|
5181
|
+
"openai-compatible",
|
|
5182
|
+
"zai",
|
|
5183
|
+
"kimi"
|
|
5184
|
+
]);
|
|
5185
|
+
var REASONING_EFFORT_BY_PROVIDER = {
|
|
5186
|
+
openai: ["none", "minimal", "low", "medium", "high", "xhigh"],
|
|
5187
|
+
openrouter: ["none", "minimal", "low", "medium", "high"],
|
|
5188
|
+
mistral: ["low", "medium", "high"],
|
|
5189
|
+
plamo: ["none", "medium"],
|
|
5190
|
+
xai: ["low", "high"]
|
|
5191
|
+
};
|
|
5117
5192
|
var ChatServiceFactory = class {
|
|
5118
5193
|
/**
|
|
5119
5194
|
* Register a new provider
|
|
@@ -5152,6 +5227,37 @@ If it's in another language, summarize in that language.
|
|
|
5152
5227
|
const provider = this.providers.get(providerName);
|
|
5153
5228
|
return provider ? provider.getSupportedModels() : [];
|
|
5154
5229
|
}
|
|
5230
|
+
/**
|
|
5231
|
+
* Get machine-readable provider capabilities for UI and agent planning.
|
|
5232
|
+
*/
|
|
5233
|
+
static getProviderCapabilities(providerName, model) {
|
|
5234
|
+
const provider = this.providers.get(providerName);
|
|
5235
|
+
if (!provider) {
|
|
5236
|
+
return void 0;
|
|
5237
|
+
}
|
|
5238
|
+
const vision = model ? this.getVisionSupportLevelForModel(providerName, model) : provider.getVisionSupportLevel();
|
|
5239
|
+
return {
|
|
5240
|
+
provider: providerName,
|
|
5241
|
+
models: provider.getSupportedModels(),
|
|
5242
|
+
defaultModel: typeof provider.getDefaultModel === "function" ? provider.getDefaultModel() : void 0,
|
|
5243
|
+
text: true,
|
|
5244
|
+
streaming: true,
|
|
5245
|
+
vision,
|
|
5246
|
+
tools: TOOL_SUPPORTED_PROVIDERS.has(providerName),
|
|
5247
|
+
mcp: MCP_SUPPORTED_PROVIDERS.has(providerName),
|
|
5248
|
+
jsonMode: JSON_MODE_SUPPORTED_PROVIDERS.has(providerName),
|
|
5249
|
+
responseLength: true,
|
|
5250
|
+
reasoningEffort: REASONING_EFFORT_BY_PROVIDER[providerName] ?? []
|
|
5251
|
+
};
|
|
5252
|
+
}
|
|
5253
|
+
/**
|
|
5254
|
+
* Get machine-readable capabilities for all registered providers.
|
|
5255
|
+
*/
|
|
5256
|
+
static getAllProviderCapabilities() {
|
|
5257
|
+
return this.getAvailableProviders().map((providerName) => this.getProviderCapabilities(providerName)).filter(
|
|
5258
|
+
(capabilities) => capabilities !== void 0
|
|
5259
|
+
);
|
|
5260
|
+
}
|
|
5155
5261
|
/**
|
|
5156
5262
|
* Get provider-level vision support status.
|
|
5157
5263
|
*/
|