@aituber-onair/chat 0.43.0 → 0.45.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 +40 -9
- package/README.md +40 -9
- 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 +27 -2
- 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/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.map +1 -1
- package/dist/cjs/services/providers/xai/XAIChatService.js +1 -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 +2 -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 +24 -1
- 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/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.map +1 -1
- package/dist/esm/services/providers/xai/XAIChatService.js +2 -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 +3 -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 +129 -9
- 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,
|
|
@@ -145,6 +146,7 @@ var AITuberOnAirChat = (() => {
|
|
|
145
146
|
MODEL_GROK_4_20_NON_REASONING: () => MODEL_GROK_4_20_NON_REASONING,
|
|
146
147
|
MODEL_GROK_4_20_REASONING: () => MODEL_GROK_4_20_REASONING,
|
|
147
148
|
MODEL_GROK_4_3: () => MODEL_GROK_4_3,
|
|
149
|
+
MODEL_GROK_4_5: () => MODEL_GROK_4_5,
|
|
148
150
|
MODEL_KIMI_K2_5: () => MODEL_KIMI_K2_5,
|
|
149
151
|
MODEL_KIMI_K2_6: () => MODEL_KIMI_K2_6,
|
|
150
152
|
MODEL_KIMI_K2_7_CODE: () => MODEL_KIMI_K2_7_CODE,
|
|
@@ -228,9 +230,11 @@ var AITuberOnAirChat = (() => {
|
|
|
228
230
|
isOpenRouterVisionModel: () => isOpenRouterVisionModel,
|
|
229
231
|
isResponsesOnlyGPT5Model: () => isResponsesOnlyGPT5Model,
|
|
230
232
|
isXaiReasoningEffortModel: () => isXaiReasoningEffortModel,
|
|
233
|
+
isXaiReasoningEffortNoneModel: () => isXaiReasoningEffortNoneModel,
|
|
231
234
|
isXaiVisionModel: () => isXaiVisionModel,
|
|
232
235
|
isZaiToolStreamModel: () => isZaiToolStreamModel,
|
|
233
236
|
isZaiVisionModel: () => isZaiVisionModel,
|
|
237
|
+
normalizeXaiReasoningEffort: () => normalizeXaiReasoningEffort,
|
|
234
238
|
parseOpenAICompatibleOneShot: () => parseOpenAICompatibleOneShot,
|
|
235
239
|
parseOpenAICompatibleTextStream: () => parseOpenAICompatibleTextStream,
|
|
236
240
|
parseOpenAICompatibleToolStream: () => parseOpenAICompatibleToolStream,
|
|
@@ -372,6 +376,7 @@ var AITuberOnAirChat = (() => {
|
|
|
372
376
|
var MODEL_CLAUDE_4_6_OPUS = "claude-opus-4-6";
|
|
373
377
|
var MODEL_CLAUDE_4_7_OPUS = "claude-opus-4-7";
|
|
374
378
|
var MODEL_CLAUDE_4_8_OPUS = "claude-opus-4-8";
|
|
379
|
+
var MODEL_CLAUDE_5_SONNET = "claude-sonnet-5";
|
|
375
380
|
var CLAUDE_VISION_SUPPORTED_MODELS = [
|
|
376
381
|
MODEL_CLAUDE_3_HAIKU,
|
|
377
382
|
MODEL_CLAUDE_4_SONNET,
|
|
@@ -382,7 +387,8 @@ var AITuberOnAirChat = (() => {
|
|
|
382
387
|
MODEL_CLAUDE_4_6_SONNET,
|
|
383
388
|
MODEL_CLAUDE_4_6_OPUS,
|
|
384
389
|
MODEL_CLAUDE_4_7_OPUS,
|
|
385
|
-
MODEL_CLAUDE_4_8_OPUS
|
|
390
|
+
MODEL_CLAUDE_4_8_OPUS,
|
|
391
|
+
MODEL_CLAUDE_5_SONNET
|
|
386
392
|
];
|
|
387
393
|
|
|
388
394
|
// src/constants/openrouter.ts
|
|
@@ -490,12 +496,14 @@ var AITuberOnAirChat = (() => {
|
|
|
490
496
|
|
|
491
497
|
// src/constants/xai.ts
|
|
492
498
|
var ENDPOINT_XAI_CHAT_COMPLETIONS_API = "https://api.x.ai/v1/chat/completions";
|
|
499
|
+
var MODEL_GROK_4_5 = "grok-4.5";
|
|
493
500
|
var MODEL_GROK_4_3 = "grok-4.3";
|
|
494
501
|
var MODEL_GROK_4_20_REASONING = "grok-4.20-0309-reasoning";
|
|
495
502
|
var MODEL_GROK_4_20_NON_REASONING = "grok-4.20-0309-non-reasoning";
|
|
496
503
|
var MODEL_GROK_4_1_FAST_REASONING = "grok-4-1-fast-reasoning";
|
|
497
504
|
var MODEL_GROK_4_1_FAST_NON_REASONING = "grok-4-1-fast-non-reasoning";
|
|
498
505
|
var XAI_VISION_SUPPORTED_MODELS = [
|
|
506
|
+
MODEL_GROK_4_5,
|
|
499
507
|
MODEL_GROK_4_3,
|
|
500
508
|
MODEL_GROK_4_20_REASONING,
|
|
501
509
|
MODEL_GROK_4_20_NON_REASONING,
|
|
@@ -506,10 +514,25 @@ var AITuberOnAirChat = (() => {
|
|
|
506
514
|
return XAI_VISION_SUPPORTED_MODELS.includes(model);
|
|
507
515
|
}
|
|
508
516
|
function isXaiReasoningEffortModel(model) {
|
|
517
|
+
return model === MODEL_GROK_4_5 || model === MODEL_GROK_4_3;
|
|
518
|
+
}
|
|
519
|
+
function isXaiReasoningEffortNoneModel(model) {
|
|
509
520
|
return model === MODEL_GROK_4_3;
|
|
510
521
|
}
|
|
511
522
|
function getDefaultXaiReasoningEffort(model) {
|
|
512
|
-
|
|
523
|
+
if (model === MODEL_GROK_4_5) {
|
|
524
|
+
return "low";
|
|
525
|
+
}
|
|
526
|
+
return isXaiReasoningEffortNoneModel(model) ? "none" : void 0;
|
|
527
|
+
}
|
|
528
|
+
function normalizeXaiReasoningEffort(model, reasoningEffort) {
|
|
529
|
+
if (!isXaiReasoningEffortModel(model)) {
|
|
530
|
+
return void 0;
|
|
531
|
+
}
|
|
532
|
+
if (reasoningEffort === "none" && !isXaiReasoningEffortNoneModel(model)) {
|
|
533
|
+
return "low";
|
|
534
|
+
}
|
|
535
|
+
return reasoningEffort ?? getDefaultXaiReasoningEffort(model);
|
|
513
536
|
}
|
|
514
537
|
|
|
515
538
|
// src/constants/kimi.ts
|
|
@@ -1817,6 +1840,7 @@ If it's in another language, summarize in that language.
|
|
|
1817
1840
|
MODEL_CLAUDE_4_6_OPUS,
|
|
1818
1841
|
MODEL_CLAUDE_4_7_OPUS,
|
|
1819
1842
|
MODEL_CLAUDE_4_8_OPUS,
|
|
1843
|
+
MODEL_CLAUDE_5_SONNET,
|
|
1820
1844
|
MODEL_CLAUDE_3_HAIKU
|
|
1821
1845
|
];
|
|
1822
1846
|
}
|
|
@@ -2082,6 +2106,15 @@ If it's in another language, summarize in that language.
|
|
|
2082
2106
|
"sakana",
|
|
2083
2107
|
"plamo"
|
|
2084
2108
|
]);
|
|
2109
|
+
function toResponsesTextFormat(responseFormat) {
|
|
2110
|
+
if (responseFormat.type !== "json_schema") {
|
|
2111
|
+
return responseFormat;
|
|
2112
|
+
}
|
|
2113
|
+
return {
|
|
2114
|
+
type: responseFormat.type,
|
|
2115
|
+
...responseFormat.json_schema
|
|
2116
|
+
};
|
|
2117
|
+
}
|
|
2085
2118
|
function buildOpenAIRequestBody({
|
|
2086
2119
|
provider,
|
|
2087
2120
|
endpoint,
|
|
@@ -2094,6 +2127,7 @@ If it's in another language, summarize in that language.
|
|
|
2094
2127
|
verbosity,
|
|
2095
2128
|
reasoning_effort,
|
|
2096
2129
|
enableReasoningSummary,
|
|
2130
|
+
responseFormat,
|
|
2097
2131
|
maxTokens
|
|
2098
2132
|
}) {
|
|
2099
2133
|
const isResponsesAPI = endpoint === ENDPOINT_OPENAI_RESPONSES_API;
|
|
@@ -2154,6 +2188,16 @@ If it's in another language, summarize in that language.
|
|
|
2154
2188
|
}
|
|
2155
2189
|
}
|
|
2156
2190
|
}
|
|
2191
|
+
if (responseFormat) {
|
|
2192
|
+
if (isResponsesAPI) {
|
|
2193
|
+
body.text = {
|
|
2194
|
+
...body.text,
|
|
2195
|
+
format: toResponsesTextFormat(responseFormat)
|
|
2196
|
+
};
|
|
2197
|
+
} else {
|
|
2198
|
+
body.response_format = responseFormat;
|
|
2199
|
+
}
|
|
2200
|
+
}
|
|
2157
2201
|
if (provider === "mistral" && isMistralReasoningEffortModel(model) && reasoning_effort && isMistralReasoningEffort(reasoning_effort)) {
|
|
2158
2202
|
body.reasoning_effort = reasoning_effort;
|
|
2159
2203
|
}
|
|
@@ -2263,7 +2307,7 @@ If it's in another language, summarize in that language.
|
|
|
2263
2307
|
* @param model Name of the model to use
|
|
2264
2308
|
* @param visionModel Name of the vision model
|
|
2265
2309
|
*/
|
|
2266
|
-
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) {
|
|
2310
|
+
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) {
|
|
2267
2311
|
this.provider = provider;
|
|
2268
2312
|
this.apiKey = apiKey;
|
|
2269
2313
|
this.model = model;
|
|
@@ -2274,6 +2318,7 @@ If it's in another language, summarize in that language.
|
|
|
2274
2318
|
this.verbosity = verbosity;
|
|
2275
2319
|
this.reasoning_effort = reasoning_effort;
|
|
2276
2320
|
this.enableReasoningSummary = enableReasoningSummary;
|
|
2321
|
+
this.responseFormat = responseFormat;
|
|
2277
2322
|
if (validateVisionModel && !VISION_SUPPORTED_MODELS.includes(visionModel)) {
|
|
2278
2323
|
throw new Error(
|
|
2279
2324
|
`Model ${visionModel} does not support vision capabilities.`
|
|
@@ -2420,6 +2465,7 @@ If it's in another language, summarize in that language.
|
|
|
2420
2465
|
verbosity: this.verbosity,
|
|
2421
2466
|
reasoning_effort: this.reasoning_effort,
|
|
2422
2467
|
enableReasoningSummary: this.enableReasoningSummary,
|
|
2468
|
+
responseFormat: this.responseFormat,
|
|
2423
2469
|
maxTokens
|
|
2424
2470
|
});
|
|
2425
2471
|
const headers = {};
|
|
@@ -3866,7 +3912,7 @@ If it's in another language, summarize in that language.
|
|
|
3866
3912
|
var OpenAICompatibleChatServiceProvider = class {
|
|
3867
3913
|
createChatService(options) {
|
|
3868
3914
|
this.validateRequiredOptions(options);
|
|
3869
|
-
|
|
3915
|
+
const serviceArgs = [
|
|
3870
3916
|
options.apiKey?.trim() ?? "",
|
|
3871
3917
|
options.model,
|
|
3872
3918
|
options.visionModel ?? options.model,
|
|
@@ -3879,7 +3925,11 @@ If it's in another language, summarize in that language.
|
|
|
3879
3925
|
options.enableReasoningSummary,
|
|
3880
3926
|
this.getProviderName(),
|
|
3881
3927
|
false
|
|
3882
|
-
|
|
3928
|
+
];
|
|
3929
|
+
if (options.responseFormat !== void 0) {
|
|
3930
|
+
serviceArgs.push(options.responseFormat);
|
|
3931
|
+
}
|
|
3932
|
+
return new OpenAIChatService(...serviceArgs);
|
|
3883
3933
|
}
|
|
3884
3934
|
getProviderName() {
|
|
3885
3935
|
return "openai-compatible";
|
|
@@ -3966,7 +4016,7 @@ If it's in another language, summarize in that language.
|
|
|
3966
4016
|
shouldUseResponsesAPI = preference === "responses";
|
|
3967
4017
|
}
|
|
3968
4018
|
const endpoint = optimizedOptions.endpoint || (shouldUseResponsesAPI ? ENDPOINT_OPENAI_RESPONSES_API : ENDPOINT_OPENAI_CHAT_COMPLETIONS_API);
|
|
3969
|
-
|
|
4019
|
+
const serviceArgs = [
|
|
3970
4020
|
optimizedOptions.apiKey,
|
|
3971
4021
|
modelName,
|
|
3972
4022
|
visionModel,
|
|
@@ -3978,7 +4028,11 @@ If it's in another language, summarize in that language.
|
|
|
3978
4028
|
optimizedOptions.reasoning_effort,
|
|
3979
4029
|
optimizedOptions.enableReasoningSummary,
|
|
3980
4030
|
this.getProviderName()
|
|
3981
|
-
|
|
4031
|
+
];
|
|
4032
|
+
if (optimizedOptions.responseFormat !== void 0) {
|
|
4033
|
+
serviceArgs.push(true, optimizedOptions.responseFormat);
|
|
4034
|
+
}
|
|
4035
|
+
return new OpenAIChatService(...serviceArgs);
|
|
3982
4036
|
}
|
|
3983
4037
|
/**
|
|
3984
4038
|
* Get the provider name
|
|
@@ -4761,7 +4815,10 @@ If it's in another language, summarize in that language.
|
|
|
4761
4815
|
body.max_tokens = tokenLimit;
|
|
4762
4816
|
}
|
|
4763
4817
|
if (this.reasoningEffort && isXaiReasoningEffortModel(model)) {
|
|
4764
|
-
body.reasoning_effort =
|
|
4818
|
+
body.reasoning_effort = normalizeXaiReasoningEffort(
|
|
4819
|
+
model,
|
|
4820
|
+
this.reasoningEffort
|
|
4821
|
+
);
|
|
4765
4822
|
}
|
|
4766
4823
|
const tools = this.buildToolsDefinition();
|
|
4767
4824
|
if (tools.length > 0) {
|
|
@@ -4817,7 +4874,10 @@ If it's in another language, summarize in that language.
|
|
|
4817
4874
|
tools,
|
|
4818
4875
|
options.endpoint || ENDPOINT_XAI_CHAT_COMPLETIONS_API,
|
|
4819
4876
|
options.responseLength,
|
|
4820
|
-
|
|
4877
|
+
normalizeXaiReasoningEffort(
|
|
4878
|
+
model,
|
|
4879
|
+
options.reasoning_effort ?? getDefaultXaiReasoningEffort(model)
|
|
4880
|
+
)
|
|
4821
4881
|
);
|
|
4822
4882
|
}
|
|
4823
4883
|
/**
|
|
@@ -4831,6 +4891,7 @@ If it's in another language, summarize in that language.
|
|
|
4831
4891
|
*/
|
|
4832
4892
|
getSupportedModels() {
|
|
4833
4893
|
return [
|
|
4894
|
+
MODEL_GROK_4_5,
|
|
4834
4895
|
MODEL_GROK_4_3,
|
|
4835
4896
|
MODEL_GROK_4_20_REASONING,
|
|
4836
4897
|
MODEL_GROK_4_20_NON_REASONING,
|
|
@@ -5127,6 +5188,34 @@ If it's in another language, summarize in that language.
|
|
|
5127
5188
|
];
|
|
5128
5189
|
|
|
5129
5190
|
// src/services/ChatServiceFactory.ts
|
|
5191
|
+
var TOOL_SUPPORTED_PROVIDERS = /* @__PURE__ */ new Set([
|
|
5192
|
+
"openai",
|
|
5193
|
+
"openai-compatible",
|
|
5194
|
+
"openrouter",
|
|
5195
|
+
"gemini",
|
|
5196
|
+
"claude",
|
|
5197
|
+
"zai",
|
|
5198
|
+
"xai",
|
|
5199
|
+
"kimi",
|
|
5200
|
+
"deepseek",
|
|
5201
|
+
"mistral",
|
|
5202
|
+
"sakana",
|
|
5203
|
+
"plamo"
|
|
5204
|
+
]);
|
|
5205
|
+
var MCP_SUPPORTED_PROVIDERS = /* @__PURE__ */ new Set(["openai", "gemini", "claude"]);
|
|
5206
|
+
var JSON_MODE_SUPPORTED_PROVIDERS = /* @__PURE__ */ new Set([
|
|
5207
|
+
"openai",
|
|
5208
|
+
"openai-compatible",
|
|
5209
|
+
"zai",
|
|
5210
|
+
"kimi"
|
|
5211
|
+
]);
|
|
5212
|
+
var REASONING_EFFORT_BY_PROVIDER = {
|
|
5213
|
+
openai: ["none", "minimal", "low", "medium", "high", "xhigh"],
|
|
5214
|
+
openrouter: ["none", "minimal", "low", "medium", "high"],
|
|
5215
|
+
mistral: ["low", "medium", "high"],
|
|
5216
|
+
plamo: ["none", "medium"],
|
|
5217
|
+
xai: ["none", "low", "medium", "high"]
|
|
5218
|
+
};
|
|
5130
5219
|
var ChatServiceFactory = class {
|
|
5131
5220
|
/**
|
|
5132
5221
|
* Register a new provider
|
|
@@ -5165,6 +5254,37 @@ If it's in another language, summarize in that language.
|
|
|
5165
5254
|
const provider = this.providers.get(providerName);
|
|
5166
5255
|
return provider ? provider.getSupportedModels() : [];
|
|
5167
5256
|
}
|
|
5257
|
+
/**
|
|
5258
|
+
* Get machine-readable provider capabilities for UI and agent planning.
|
|
5259
|
+
*/
|
|
5260
|
+
static getProviderCapabilities(providerName, model) {
|
|
5261
|
+
const provider = this.providers.get(providerName);
|
|
5262
|
+
if (!provider) {
|
|
5263
|
+
return void 0;
|
|
5264
|
+
}
|
|
5265
|
+
const vision = model ? this.getVisionSupportLevelForModel(providerName, model) : provider.getVisionSupportLevel();
|
|
5266
|
+
return {
|
|
5267
|
+
provider: providerName,
|
|
5268
|
+
models: provider.getSupportedModels(),
|
|
5269
|
+
defaultModel: typeof provider.getDefaultModel === "function" ? provider.getDefaultModel() : void 0,
|
|
5270
|
+
text: true,
|
|
5271
|
+
streaming: true,
|
|
5272
|
+
vision,
|
|
5273
|
+
tools: TOOL_SUPPORTED_PROVIDERS.has(providerName),
|
|
5274
|
+
mcp: MCP_SUPPORTED_PROVIDERS.has(providerName),
|
|
5275
|
+
jsonMode: JSON_MODE_SUPPORTED_PROVIDERS.has(providerName),
|
|
5276
|
+
responseLength: true,
|
|
5277
|
+
reasoningEffort: REASONING_EFFORT_BY_PROVIDER[providerName] ?? []
|
|
5278
|
+
};
|
|
5279
|
+
}
|
|
5280
|
+
/**
|
|
5281
|
+
* Get machine-readable capabilities for all registered providers.
|
|
5282
|
+
*/
|
|
5283
|
+
static getAllProviderCapabilities() {
|
|
5284
|
+
return this.getAvailableProviders().map((providerName) => this.getProviderCapabilities(providerName)).filter(
|
|
5285
|
+
(capabilities) => capabilities !== void 0
|
|
5286
|
+
);
|
|
5287
|
+
}
|
|
5168
5288
|
/**
|
|
5169
5289
|
* Get provider-level vision support status.
|
|
5170
5290
|
*/
|