@aituber-onair/chat 0.50.0 → 0.52.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 +63 -35
- package/README.md +62 -36
- package/dist/cjs/backend.d.ts +20 -0
- package/dist/cjs/backend.d.ts.map +1 -0
- package/dist/cjs/backend.js +115 -0
- package/dist/cjs/backend.js.map +1 -0
- package/dist/cjs/constants/claude.d.ts +2 -0
- package/dist/cjs/constants/claude.d.ts.map +1 -1
- package/dist/cjs/constants/claude.js +13 -4
- package/dist/cjs/constants/claude.js.map +1 -1
- package/dist/cjs/constants/gemini.d.ts +1 -0
- package/dist/cjs/constants/gemini.d.ts.map +1 -1
- package/dist/cjs/constants/gemini.js +11 -1
- package/dist/cjs/constants/gemini.js.map +1 -1
- package/dist/cjs/constants/mistral.d.ts +2 -0
- package/dist/cjs/constants/mistral.d.ts.map +1 -1
- package/dist/cjs/constants/mistral.js +3 -3
- package/dist/cjs/constants/mistral.js.map +1 -1
- package/dist/cjs/constants/openrouter.d.ts +5 -0
- package/dist/cjs/constants/openrouter.d.ts.map +1 -1
- package/dist/cjs/constants/openrouter.js +39 -9
- package/dist/cjs/constants/openrouter.js.map +1 -1
- package/dist/cjs/constants/plamo.d.ts +2 -0
- package/dist/cjs/constants/plamo.d.ts.map +1 -1
- package/dist/cjs/constants/plamo.js +4 -5
- package/dist/cjs/constants/plamo.js.map +1 -1
- package/dist/cjs/constants/sakana.d.ts +3 -0
- package/dist/cjs/constants/sakana.d.ts.map +1 -1
- package/dist/cjs/constants/sakana.js +7 -3
- package/dist/cjs/constants/sakana.js.map +1 -1
- package/dist/cjs/constants/xai.d.ts +7 -1
- package/dist/cjs/constants/xai.d.ts.map +1 -1
- package/dist/cjs/constants/xai.js +35 -9
- package/dist/cjs/constants/xai.js.map +1 -1
- package/dist/cjs/constants/zai.d.ts +8 -0
- package/dist/cjs/constants/zai.d.ts.map +1 -1
- package/dist/cjs/constants/zai.js +38 -0
- package/dist/cjs/constants/zai.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -1
- package/dist/cjs/services/ChatServiceFactory.js +22 -24
- package/dist/cjs/services/ChatServiceFactory.js.map +1 -1
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts +5 -1
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/claude/ClaudeChatService.d.ts +2 -3
- package/dist/cjs/services/providers/claude/ClaudeChatService.d.ts.map +1 -1
- package/dist/cjs/services/providers/claude/ClaudeChatService.js +23 -15
- package/dist/cjs/services/providers/claude/ClaudeChatService.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 -3
- package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
- package/dist/cjs/services/providers/gemini/GeminiChatService.d.ts.map +1 -1
- package/dist/cjs/services/providers/gemini/GeminiChatService.js +3 -0
- package/dist/cjs/services/providers/gemini/GeminiChatService.js.map +1 -1
- package/dist/cjs/services/providers/gemini/geminiMessageConverter.d.ts +5 -0
- package/dist/cjs/services/providers/gemini/geminiMessageConverter.d.ts.map +1 -1
- package/dist/cjs/services/providers/gemini/geminiMessageConverter.js +16 -0
- package/dist/cjs/services/providers/gemini/geminiMessageConverter.js.map +1 -1
- package/dist/cjs/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
- package/dist/cjs/services/providers/openai/openaiRequestBuilder.js +27 -5
- package/dist/cjs/services/providers/openai/openaiRequestBuilder.js.map +1 -1
- package/dist/cjs/services/providers/openai/responsesParser.d.ts.map +1 -1
- package/dist/cjs/services/providers/openai/responsesParser.js +71 -6
- package/dist/cjs/services/providers/openai/responsesParser.js.map +1 -1
- package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js +4 -4
- package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.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 +3 -4
- package/dist/cjs/services/providers/xai/XAIChatServiceProvider.js.map +1 -1
- package/dist/cjs/services/providers/zai/ZAIChatService.d.ts +3 -1
- package/dist/cjs/services/providers/zai/ZAIChatService.d.ts.map +1 -1
- package/dist/cjs/services/providers/zai/ZAIChatService.js +5 -1
- package/dist/cjs/services/providers/zai/ZAIChatService.js.map +1 -1
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js +27 -2
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
- package/dist/cjs/types/toolChat.d.ts +6 -0
- package/dist/cjs/types/toolChat.d.ts.map +1 -1
- package/dist/esm/backend.d.ts +20 -0
- package/dist/esm/backend.d.ts.map +1 -0
- package/dist/esm/backend.js +111 -0
- package/dist/esm/backend.js.map +1 -0
- package/dist/esm/constants/claude.d.ts +2 -0
- package/dist/esm/constants/claude.d.ts.map +1 -1
- package/dist/esm/constants/claude.js +12 -3
- package/dist/esm/constants/claude.js.map +1 -1
- package/dist/esm/constants/gemini.d.ts +1 -0
- package/dist/esm/constants/gemini.d.ts.map +1 -1
- package/dist/esm/constants/gemini.js +10 -0
- package/dist/esm/constants/gemini.js.map +1 -1
- package/dist/esm/constants/mistral.d.ts +2 -0
- package/dist/esm/constants/mistral.d.ts.map +1 -1
- package/dist/esm/constants/mistral.js +2 -2
- package/dist/esm/constants/mistral.js.map +1 -1
- package/dist/esm/constants/openrouter.d.ts +5 -0
- package/dist/esm/constants/openrouter.d.ts.map +1 -1
- package/dist/esm/constants/openrouter.js +37 -7
- package/dist/esm/constants/openrouter.js.map +1 -1
- package/dist/esm/constants/plamo.d.ts +2 -0
- package/dist/esm/constants/plamo.d.ts.map +1 -1
- package/dist/esm/constants/plamo.js +3 -4
- package/dist/esm/constants/plamo.js.map +1 -1
- package/dist/esm/constants/sakana.d.ts +3 -0
- package/dist/esm/constants/sakana.d.ts.map +1 -1
- package/dist/esm/constants/sakana.js +6 -2
- package/dist/esm/constants/sakana.js.map +1 -1
- package/dist/esm/constants/xai.d.ts +7 -1
- package/dist/esm/constants/xai.d.ts.map +1 -1
- package/dist/esm/constants/xai.js +33 -8
- package/dist/esm/constants/xai.js.map +1 -1
- package/dist/esm/constants/zai.d.ts +8 -0
- package/dist/esm/constants/zai.d.ts.map +1 -1
- package/dist/esm/constants/zai.js +34 -0
- package/dist/esm/constants/zai.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -1
- package/dist/esm/services/ChatServiceFactory.js +22 -24
- package/dist/esm/services/ChatServiceFactory.js.map +1 -1
- package/dist/esm/services/providers/ChatServiceProvider.d.ts +5 -1
- package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/claude/ClaudeChatService.d.ts +2 -3
- package/dist/esm/services/providers/claude/ClaudeChatService.d.ts.map +1 -1
- package/dist/esm/services/providers/claude/ClaudeChatService.js +23 -15
- package/dist/esm/services/providers/claude/ClaudeChatService.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 -4
- package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
- package/dist/esm/services/providers/gemini/GeminiChatService.d.ts.map +1 -1
- package/dist/esm/services/providers/gemini/GeminiChatService.js +4 -1
- package/dist/esm/services/providers/gemini/GeminiChatService.js.map +1 -1
- package/dist/esm/services/providers/gemini/geminiMessageConverter.d.ts +5 -0
- package/dist/esm/services/providers/gemini/geminiMessageConverter.d.ts.map +1 -1
- package/dist/esm/services/providers/gemini/geminiMessageConverter.js +15 -0
- package/dist/esm/services/providers/gemini/geminiMessageConverter.js.map +1 -1
- package/dist/esm/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
- package/dist/esm/services/providers/openai/openaiRequestBuilder.js +27 -5
- package/dist/esm/services/providers/openai/openaiRequestBuilder.js.map +1 -1
- package/dist/esm/services/providers/openai/responsesParser.d.ts.map +1 -1
- package/dist/esm/services/providers/openai/responsesParser.js +71 -6
- package/dist/esm/services/providers/openai/responsesParser.js.map +1 -1
- package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js +5 -5
- package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.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 +4 -5
- package/dist/esm/services/providers/xai/XAIChatServiceProvider.js.map +1 -1
- package/dist/esm/services/providers/zai/ZAIChatService.d.ts +3 -1
- package/dist/esm/services/providers/zai/ZAIChatService.d.ts.map +1 -1
- package/dist/esm/services/providers/zai/ZAIChatService.js +5 -1
- package/dist/esm/services/providers/zai/ZAIChatService.js.map +1 -1
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js +28 -3
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
- package/dist/esm/types/toolChat.d.ts +6 -0
- package/dist/esm/types/toolChat.d.ts.map +1 -1
- package/dist/umd/aituber-onair-chat.js +432 -83
- package/dist/umd/aituber-onair-chat.min.js +9 -9
- package/package.json +6 -1
|
@@ -22,6 +22,7 @@ var AITuberOnAirChat = (() => {
|
|
|
22
22
|
var index_exports = {};
|
|
23
23
|
__export(index_exports, {
|
|
24
24
|
CHAT_RESPONSE_LENGTH: () => CHAT_RESPONSE_LENGTH,
|
|
25
|
+
CLAUDE_DEPRECATED_MODELS: () => CLAUDE_DEPRECATED_MODELS,
|
|
25
26
|
CLAUDE_VISION_SUPPORTED_MODELS: () => CLAUDE_VISION_SUPPORTED_MODELS,
|
|
26
27
|
ChatServiceFactory: () => ChatServiceFactory,
|
|
27
28
|
ChatServiceHttpClient: () => ChatServiceHttpClient,
|
|
@@ -67,12 +68,14 @@ var AITuberOnAirChat = (() => {
|
|
|
67
68
|
KimiChatServiceProvider: () => KimiChatServiceProvider,
|
|
68
69
|
MAX_TOKENS_BY_LENGTH: () => MAX_TOKENS_BY_LENGTH,
|
|
69
70
|
MISTRAL_API_BASE_URL: () => MISTRAL_API_BASE_URL,
|
|
71
|
+
MISTRAL_DEPRECATED_MODELS: () => MISTRAL_DEPRECATED_MODELS,
|
|
70
72
|
MISTRAL_REASONING_EFFORT_SUPPORTED_MODELS: () => MISTRAL_REASONING_EFFORT_SUPPORTED_MODELS,
|
|
71
73
|
MISTRAL_SUPPORTED_MODELS: () => MISTRAL_SUPPORTED_MODELS,
|
|
72
74
|
MISTRAL_VISION_SUPPORTED_MODELS: () => MISTRAL_VISION_SUPPORTED_MODELS,
|
|
73
75
|
MODEL_ANTHROPIC_CLAUDE_3_5_SONNET: () => MODEL_ANTHROPIC_CLAUDE_3_5_SONNET,
|
|
74
76
|
MODEL_ANTHROPIC_CLAUDE_3_7_SONNET: () => MODEL_ANTHROPIC_CLAUDE_3_7_SONNET,
|
|
75
77
|
MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU: () => MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU,
|
|
78
|
+
MODEL_ANTHROPIC_CLAUDE_FABLE_5: () => MODEL_ANTHROPIC_CLAUDE_FABLE_5,
|
|
76
79
|
MODEL_ANTHROPIC_CLAUDE_HAIKU_LATEST: () => MODEL_ANTHROPIC_CLAUDE_HAIKU_LATEST,
|
|
77
80
|
MODEL_ANTHROPIC_CLAUDE_OPUS_4: () => MODEL_ANTHROPIC_CLAUDE_OPUS_4,
|
|
78
81
|
MODEL_ANTHROPIC_CLAUDE_OPUS_5: () => MODEL_ANTHROPIC_CLAUDE_OPUS_5,
|
|
@@ -91,6 +94,7 @@ var AITuberOnAirChat = (() => {
|
|
|
91
94
|
MODEL_CLAUDE_4_8_OPUS: () => MODEL_CLAUDE_4_8_OPUS,
|
|
92
95
|
MODEL_CLAUDE_4_OPUS: () => MODEL_CLAUDE_4_OPUS,
|
|
93
96
|
MODEL_CLAUDE_4_SONNET: () => MODEL_CLAUDE_4_SONNET,
|
|
97
|
+
MODEL_CLAUDE_5_FABLE: () => MODEL_CLAUDE_5_FABLE,
|
|
94
98
|
MODEL_CLAUDE_5_OPUS: () => MODEL_CLAUDE_5_OPUS,
|
|
95
99
|
MODEL_CLAUDE_5_SONNET: () => MODEL_CLAUDE_5_SONNET,
|
|
96
100
|
MODEL_DEEPSEEK_CHAT: () => MODEL_DEEPSEEK_CHAT,
|
|
@@ -100,6 +104,7 @@ var AITuberOnAirChat = (() => {
|
|
|
100
104
|
MODEL_FUGU: () => MODEL_FUGU,
|
|
101
105
|
MODEL_FUGU_ULTRA: () => MODEL_FUGU_ULTRA,
|
|
102
106
|
MODEL_FUGU_ULTRA_20260615: () => MODEL_FUGU_ULTRA_20260615,
|
|
107
|
+
MODEL_FUGU_ULTRA_V1_1: () => MODEL_FUGU_ULTRA_V1_1,
|
|
103
108
|
MODEL_GEMINI_2_5_FLASH: () => MODEL_GEMINI_2_5_FLASH,
|
|
104
109
|
MODEL_GEMINI_2_5_FLASH_LITE: () => MODEL_GEMINI_2_5_FLASH_LITE,
|
|
105
110
|
MODEL_GEMINI_2_5_FLASH_LITE_PREVIEW_06_17: () => MODEL_GEMINI_2_5_FLASH_LITE_PREVIEW_06_17,
|
|
@@ -110,6 +115,7 @@ var AITuberOnAirChat = (() => {
|
|
|
110
115
|
MODEL_GEMINI_3_5_FLASH: () => MODEL_GEMINI_3_5_FLASH,
|
|
111
116
|
MODEL_GEMINI_3_5_FLASH_LITE: () => MODEL_GEMINI_3_5_FLASH_LITE,
|
|
112
117
|
MODEL_GEMINI_3_6_FLASH: () => MODEL_GEMINI_3_6_FLASH,
|
|
118
|
+
MODEL_GEMINI_3_7_FLASH: () => MODEL_GEMINI_3_7_FLASH,
|
|
113
119
|
MODEL_GEMINI_3_FLASH_PREVIEW: () => MODEL_GEMINI_3_FLASH_PREVIEW,
|
|
114
120
|
MODEL_GEMINI_3_PRO_PREVIEW: () => MODEL_GEMINI_3_PRO_PREVIEW,
|
|
115
121
|
MODEL_GEMINI_NANO: () => MODEL_GEMINI_NANO,
|
|
@@ -132,6 +138,7 @@ var AITuberOnAirChat = (() => {
|
|
|
132
138
|
MODEL_GOOGLE_GEMINI_2_5_PRO: () => MODEL_GOOGLE_GEMINI_2_5_PRO,
|
|
133
139
|
MODEL_GOOGLE_GEMINI_3_5_FLASH_LITE: () => MODEL_GOOGLE_GEMINI_3_5_FLASH_LITE,
|
|
134
140
|
MODEL_GOOGLE_GEMINI_3_6_FLASH: () => MODEL_GOOGLE_GEMINI_3_6_FLASH,
|
|
141
|
+
MODEL_GOOGLE_GEMINI_3_7_FLASH: () => MODEL_GOOGLE_GEMINI_3_7_FLASH,
|
|
135
142
|
MODEL_GOOGLE_GEMINI_FLASH_LATEST: () => MODEL_GOOGLE_GEMINI_FLASH_LATEST,
|
|
136
143
|
MODEL_GOOGLE_GEMINI_PRO_LATEST: () => MODEL_GOOGLE_GEMINI_PRO_LATEST,
|
|
137
144
|
MODEL_GPT_4O: () => MODEL_GPT_4O,
|
|
@@ -159,6 +166,7 @@ var AITuberOnAirChat = (() => {
|
|
|
159
166
|
MODEL_GROK_4_20_REASONING: () => MODEL_GROK_4_20_REASONING,
|
|
160
167
|
MODEL_GROK_4_3: () => MODEL_GROK_4_3,
|
|
161
168
|
MODEL_GROK_4_5: () => MODEL_GROK_4_5,
|
|
169
|
+
MODEL_GROK_4_6: () => MODEL_GROK_4_6,
|
|
162
170
|
MODEL_KIMI_K2_5: () => MODEL_KIMI_K2_5,
|
|
163
171
|
MODEL_KIMI_K2_6: () => MODEL_KIMI_K2_6,
|
|
164
172
|
MODEL_KIMI_K2_7_CODE: () => MODEL_KIMI_K2_7_CODE,
|
|
@@ -200,10 +208,12 @@ var AITuberOnAirChat = (() => {
|
|
|
200
208
|
MODEL_OPENROUTER_AUTO_BETA: () => MODEL_OPENROUTER_AUTO_BETA,
|
|
201
209
|
MODEL_OPENROUTER_DEEPSEEK_V4_FLASH: () => MODEL_OPENROUTER_DEEPSEEK_V4_FLASH,
|
|
202
210
|
MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731: () => MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731,
|
|
211
|
+
MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813: () => MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813,
|
|
203
212
|
MODEL_OPENROUTER_FUSION: () => MODEL_OPENROUTER_FUSION,
|
|
204
213
|
MODEL_PLAMO_2_2_PRIME: () => MODEL_PLAMO_2_2_PRIME,
|
|
205
214
|
MODEL_PLAMO_3_0_PRIME: () => MODEL_PLAMO_3_0_PRIME,
|
|
206
215
|
MODEL_XAI_GROK_4_5: () => MODEL_XAI_GROK_4_5,
|
|
216
|
+
MODEL_XAI_GROK_4_6: () => MODEL_XAI_GROK_4_6,
|
|
207
217
|
MODEL_XAI_GROK_LATEST: () => MODEL_XAI_GROK_LATEST,
|
|
208
218
|
MODEL_ZAI_GLM_4_5_AIR: () => MODEL_ZAI_GLM_4_5_AIR,
|
|
209
219
|
MODEL_ZAI_GLM_4_5_AIR_FREE: () => MODEL_ZAI_GLM_4_5_AIR_FREE,
|
|
@@ -212,6 +222,7 @@ var AITuberOnAirChat = (() => {
|
|
|
212
222
|
MistralChatService: () => MistralChatService,
|
|
213
223
|
MistralChatServiceProvider: () => MistralChatServiceProvider,
|
|
214
224
|
OPENROUTER_CREDITS_THRESHOLD: () => OPENROUTER_CREDITS_THRESHOLD,
|
|
225
|
+
OPENROUTER_DEPRECATED_MODELS: () => OPENROUTER_DEPRECATED_MODELS,
|
|
215
226
|
OPENROUTER_FREE_DAILY_LIMIT_HIGH_CREDITS: () => OPENROUTER_FREE_DAILY_LIMIT_HIGH_CREDITS,
|
|
216
227
|
OPENROUTER_FREE_DAILY_LIMIT_LOW_CREDITS: () => OPENROUTER_FREE_DAILY_LIMIT_LOW_CREDITS,
|
|
217
228
|
OPENROUTER_FREE_MODELS: () => OPENROUTER_FREE_MODELS,
|
|
@@ -223,10 +234,12 @@ var AITuberOnAirChat = (() => {
|
|
|
223
234
|
OpenRouterChatService: () => OpenRouterChatService,
|
|
224
235
|
OpenRouterChatServiceProvider: () => OpenRouterChatServiceProvider,
|
|
225
236
|
PLAMO_API_BASE_URL: () => PLAMO_API_BASE_URL,
|
|
237
|
+
PLAMO_DEPRECATED_MODELS: () => PLAMO_DEPRECATED_MODELS,
|
|
226
238
|
PLAMO_SUPPORTED_MODELS: () => PLAMO_SUPPORTED_MODELS,
|
|
227
239
|
PlamoChatService: () => PlamoChatService,
|
|
228
240
|
PlamoChatServiceProvider: () => PlamoChatServiceProvider,
|
|
229
241
|
SAKANA_API_BASE_URL: () => SAKANA_API_BASE_URL,
|
|
242
|
+
SAKANA_COMPATIBILITY_MODELS: () => SAKANA_COMPATIBILITY_MODELS,
|
|
230
243
|
SAKANA_SUPPORTED_MODELS: () => SAKANA_SUPPORTED_MODELS,
|
|
231
244
|
SakanaChatService: () => SakanaChatService,
|
|
232
245
|
SakanaChatServiceProvider: () => SakanaChatServiceProvider,
|
|
@@ -234,6 +247,7 @@ var AITuberOnAirChat = (() => {
|
|
|
234
247
|
VISION_SUPPORTED_MODELS: () => VISION_SUPPORTED_MODELS,
|
|
235
248
|
XAIChatService: () => XAIChatService,
|
|
236
249
|
XAIChatServiceProvider: () => XAIChatServiceProvider,
|
|
250
|
+
XAI_DEPRECATED_MODELS: () => XAI_DEPRECATED_MODELS,
|
|
237
251
|
XAI_VISION_SUPPORTED_MODELS: () => XAI_VISION_SUPPORTED_MODELS,
|
|
238
252
|
ZAIChatService: () => ZAIChatService,
|
|
239
253
|
ZAIChatServiceProvider: () => ZAIChatServiceProvider,
|
|
@@ -244,6 +258,8 @@ var AITuberOnAirChat = (() => {
|
|
|
244
258
|
allowsReasoningNone: () => allowsReasoningNone,
|
|
245
259
|
allowsReasoningXHigh: () => allowsReasoningXHigh,
|
|
246
260
|
buildOpenAICompatibleTools: () => buildOpenAICompatibleTools,
|
|
261
|
+
buildToolContinuationMessages: () => buildToolContinuationMessages,
|
|
262
|
+
getChatBackendProviderCapabilities: () => getChatBackendProviderCapabilities,
|
|
247
263
|
getClaudeSupportedReasoningEfforts: () => getClaudeSupportedReasoningEfforts,
|
|
248
264
|
getDeepSeekSupportedReasoningEfforts: () => getDeepSeekSupportedReasoningEfforts,
|
|
249
265
|
getDefaultClaudeReasoningEffort: () => getDefaultClaudeReasoningEffort,
|
|
@@ -253,10 +269,13 @@ var AITuberOnAirChat = (() => {
|
|
|
253
269
|
getDefaultOpenRouterReasoningEffort: () => getDefaultOpenRouterReasoningEffort,
|
|
254
270
|
getDefaultReasoningEffortForGPT5Model: () => getDefaultReasoningEffortForGPT5Model,
|
|
255
271
|
getDefaultXaiReasoningEffort: () => getDefaultXaiReasoningEffort,
|
|
272
|
+
getDefaultZaiReasoningEffort: () => getDefaultZaiReasoningEffort,
|
|
256
273
|
getGeminiSupportedReasoningEfforts: () => getGeminiSupportedReasoningEfforts,
|
|
257
274
|
getKimiSupportedReasoningEfforts: () => getKimiSupportedReasoningEfforts,
|
|
258
275
|
getMaxTokensForResponseLength: () => getMaxTokensForResponseLength,
|
|
259
276
|
getOpenRouterSupportedReasoningEfforts: () => getOpenRouterSupportedReasoningEfforts,
|
|
277
|
+
getXaiSupportedReasoningEfforts: () => getXaiSupportedReasoningEfforts,
|
|
278
|
+
getZaiSupportedReasoningEfforts: () => getZaiSupportedReasoningEfforts,
|
|
260
279
|
installGASFetch: () => installGASFetch,
|
|
261
280
|
isClaudeReasoningEffortModel: () => isClaudeReasoningEffortModel,
|
|
262
281
|
isDeepSeekReasoningEffortModel: () => isDeepSeekReasoningEffortModel,
|
|
@@ -274,6 +293,7 @@ var AITuberOnAirChat = (() => {
|
|
|
274
293
|
isXaiReasoningEffortModel: () => isXaiReasoningEffortModel,
|
|
275
294
|
isXaiReasoningEffortNoneModel: () => isXaiReasoningEffortNoneModel,
|
|
276
295
|
isXaiVisionModel: () => isXaiVisionModel,
|
|
296
|
+
isZaiReasoningEffortModel: () => isZaiReasoningEffortModel,
|
|
277
297
|
isZaiToolStreamModel: () => isZaiToolStreamModel,
|
|
278
298
|
isZaiVisionModel: () => isZaiVisionModel,
|
|
279
299
|
normalizeClaudeReasoningEffort: () => normalizeClaudeReasoningEffort,
|
|
@@ -281,6 +301,7 @@ var AITuberOnAirChat = (() => {
|
|
|
281
301
|
normalizeGeminiReasoningEffort: () => normalizeGeminiReasoningEffort,
|
|
282
302
|
normalizeOpenRouterReasoningEffort: () => normalizeOpenRouterReasoningEffort,
|
|
283
303
|
normalizeXaiReasoningEffort: () => normalizeXaiReasoningEffort,
|
|
304
|
+
normalizeZaiReasoningEffort: () => normalizeZaiReasoningEffort,
|
|
284
305
|
parseOpenAICompatibleOneShot: () => parseOpenAICompatibleOneShot,
|
|
285
306
|
parseOpenAICompatibleTextStream: () => parseOpenAICompatibleTextStream,
|
|
286
307
|
parseOpenAICompatibleToolStream: () => parseOpenAICompatibleToolStream,
|
|
@@ -391,6 +412,7 @@ var AITuberOnAirChat = (() => {
|
|
|
391
412
|
var ENDPOINT_GEMINI_API = "https://generativelanguage.googleapis.com";
|
|
392
413
|
var MODEL_GEMMA_4_31B_IT = "gemma-4-31b-it";
|
|
393
414
|
var MODEL_GEMMA_4_26B_A4B_IT = "gemma-4-26b-a4b-it";
|
|
415
|
+
var MODEL_GEMINI_3_7_FLASH = "gemini-3.7-flash";
|
|
394
416
|
var MODEL_GEMINI_3_6_FLASH = "gemini-3.6-flash";
|
|
395
417
|
var MODEL_GEMINI_3_5_FLASH = "gemini-3.5-flash";
|
|
396
418
|
var MODEL_GEMINI_3_5_FLASH_LITE = "gemini-3.5-flash-lite";
|
|
@@ -404,6 +426,7 @@ var AITuberOnAirChat = (() => {
|
|
|
404
426
|
var MODEL_GEMINI_2_5_FLASH_LITE = "gemini-2.5-flash-lite";
|
|
405
427
|
var MODEL_GEMINI_2_5_FLASH_LITE_PREVIEW_06_17 = "gemini-2.5-flash-lite-preview-06-17";
|
|
406
428
|
var GEMINI_RECOMMENDED_MODELS = [
|
|
429
|
+
MODEL_GEMINI_3_7_FLASH,
|
|
407
430
|
MODEL_GEMINI_3_6_FLASH,
|
|
408
431
|
MODEL_GEMINI_3_5_FLASH,
|
|
409
432
|
MODEL_GEMINI_3_5_FLASH_LITE,
|
|
@@ -436,6 +459,11 @@ var AITuberOnAirChat = (() => {
|
|
|
436
459
|
"medium",
|
|
437
460
|
"high"
|
|
438
461
|
];
|
|
462
|
+
var GEMINI_3_7_FLASH_REASONING_EFFORTS = [
|
|
463
|
+
"low",
|
|
464
|
+
"medium",
|
|
465
|
+
"high"
|
|
466
|
+
];
|
|
439
467
|
var GEMINI_FLASH_REASONING_EFFORT_MODELS = [
|
|
440
468
|
MODEL_GEMINI_3_6_FLASH,
|
|
441
469
|
MODEL_GEMINI_3_5_FLASH,
|
|
@@ -449,6 +477,9 @@ var AITuberOnAirChat = (() => {
|
|
|
449
477
|
MODEL_GEMINI_3_PRO_PREVIEW
|
|
450
478
|
];
|
|
451
479
|
function getGeminiSupportedReasoningEfforts(model) {
|
|
480
|
+
if (model === MODEL_GEMINI_3_7_FLASH) {
|
|
481
|
+
return GEMINI_3_7_FLASH_REASONING_EFFORTS;
|
|
482
|
+
}
|
|
452
483
|
if (GEMINI_FLASH_REASONING_EFFORT_MODELS.includes(model)) {
|
|
453
484
|
return GEMINI_FLASH_REASONING_EFFORTS;
|
|
454
485
|
}
|
|
@@ -489,8 +520,17 @@ var AITuberOnAirChat = (() => {
|
|
|
489
520
|
var MODEL_CLAUDE_4_6_OPUS = "claude-opus-4-6";
|
|
490
521
|
var MODEL_CLAUDE_4_7_OPUS = "claude-opus-4-7";
|
|
491
522
|
var MODEL_CLAUDE_4_8_OPUS = "claude-opus-4-8";
|
|
523
|
+
var MODEL_CLAUDE_5_FABLE = "claude-fable-5";
|
|
492
524
|
var MODEL_CLAUDE_5_SONNET = "claude-sonnet-5";
|
|
493
525
|
var MODEL_CLAUDE_5_OPUS = "claude-opus-5";
|
|
526
|
+
var CLAUDE_DEPRECATED_MODELS = [
|
|
527
|
+
MODEL_CLAUDE_3_HAIKU,
|
|
528
|
+
MODEL_CLAUDE_3_5_HAIKU,
|
|
529
|
+
MODEL_CLAUDE_3_5_SONNET,
|
|
530
|
+
MODEL_CLAUDE_3_7_SONNET,
|
|
531
|
+
MODEL_CLAUDE_4_SONNET,
|
|
532
|
+
MODEL_CLAUDE_4_OPUS
|
|
533
|
+
];
|
|
494
534
|
var CLAUDE_STANDARD_REASONING_EFFORTS = [
|
|
495
535
|
"low",
|
|
496
536
|
"medium",
|
|
@@ -511,13 +551,11 @@ var AITuberOnAirChat = (() => {
|
|
|
511
551
|
[MODEL_CLAUDE_4_6_OPUS]: CLAUDE_MAX_REASONING_EFFORTS,
|
|
512
552
|
[MODEL_CLAUDE_4_7_OPUS]: CLAUDE_XHIGH_REASONING_EFFORTS,
|
|
513
553
|
[MODEL_CLAUDE_4_8_OPUS]: CLAUDE_XHIGH_REASONING_EFFORTS,
|
|
554
|
+
[MODEL_CLAUDE_5_FABLE]: CLAUDE_XHIGH_REASONING_EFFORTS,
|
|
514
555
|
[MODEL_CLAUDE_5_SONNET]: CLAUDE_XHIGH_REASONING_EFFORTS,
|
|
515
556
|
[MODEL_CLAUDE_5_OPUS]: CLAUDE_XHIGH_REASONING_EFFORTS
|
|
516
557
|
};
|
|
517
558
|
var CLAUDE_VISION_SUPPORTED_MODELS = [
|
|
518
|
-
MODEL_CLAUDE_3_HAIKU,
|
|
519
|
-
MODEL_CLAUDE_4_SONNET,
|
|
520
|
-
MODEL_CLAUDE_4_OPUS,
|
|
521
559
|
MODEL_CLAUDE_4_5_SONNET,
|
|
522
560
|
MODEL_CLAUDE_4_5_HAIKU,
|
|
523
561
|
MODEL_CLAUDE_4_5_OPUS,
|
|
@@ -525,6 +563,7 @@ var AITuberOnAirChat = (() => {
|
|
|
525
563
|
MODEL_CLAUDE_4_6_OPUS,
|
|
526
564
|
MODEL_CLAUDE_4_7_OPUS,
|
|
527
565
|
MODEL_CLAUDE_4_8_OPUS,
|
|
566
|
+
MODEL_CLAUDE_5_FABLE,
|
|
528
567
|
MODEL_CLAUDE_5_SONNET,
|
|
529
568
|
MODEL_CLAUDE_5_OPUS
|
|
530
569
|
];
|
|
@@ -577,6 +616,7 @@ var AITuberOnAirChat = (() => {
|
|
|
577
616
|
var MODEL_OPENAI_GPT_4_1_NANO = "openai/gpt-4.1-nano";
|
|
578
617
|
var MODEL_ANTHROPIC_CLAUDE_SONNET_LATEST = "~anthropic/claude-sonnet-latest";
|
|
579
618
|
var MODEL_ANTHROPIC_CLAUDE_HAIKU_LATEST = "~anthropic/claude-haiku-latest";
|
|
619
|
+
var MODEL_ANTHROPIC_CLAUDE_FABLE_5 = "anthropic/claude-fable-5";
|
|
580
620
|
var MODEL_ANTHROPIC_CLAUDE_OPUS_5 = "anthropic/claude-opus-5";
|
|
581
621
|
var MODEL_ANTHROPIC_CLAUDE_OPUS_4 = "anthropic/claude-opus-4";
|
|
582
622
|
var MODEL_ANTHROPIC_CLAUDE_SONNET_4 = "anthropic/claude-sonnet-4";
|
|
@@ -585,6 +625,7 @@ var AITuberOnAirChat = (() => {
|
|
|
585
625
|
var MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU = "anthropic/claude-haiku-4.5";
|
|
586
626
|
var MODEL_GOOGLE_GEMINI_PRO_LATEST = "~google/gemini-pro-latest";
|
|
587
627
|
var MODEL_GOOGLE_GEMINI_FLASH_LATEST = "~google/gemini-flash-latest";
|
|
628
|
+
var MODEL_GOOGLE_GEMINI_3_7_FLASH = "google/gemini-3.7-flash";
|
|
588
629
|
var MODEL_GOOGLE_GEMINI_3_6_FLASH = "google/gemini-3.6-flash";
|
|
589
630
|
var MODEL_GOOGLE_GEMINI_3_5_FLASH_LITE = "google/gemini-3.5-flash-lite";
|
|
590
631
|
var MODEL_GOOGLE_GEMINI_2_5_PRO = "google/gemini-2.5-pro";
|
|
@@ -597,9 +638,17 @@ var AITuberOnAirChat = (() => {
|
|
|
597
638
|
var MODEL_KWAIPILOT_KAT_CODER_AIR_V2_5 = "kwaipilot/kat-coder-air-v2.5";
|
|
598
639
|
var MODEL_KWAIPILOT_KAT_CODER_PRO_V2_5 = "kwaipilot/kat-coder-pro-v2.5";
|
|
599
640
|
var MODEL_XAI_GROK_LATEST = "~x-ai/grok-latest";
|
|
641
|
+
var MODEL_XAI_GROK_4_6 = "x-ai/grok-4.6";
|
|
600
642
|
var MODEL_XAI_GROK_4_5 = "x-ai/grok-4.5";
|
|
601
643
|
var MODEL_OPENROUTER_DEEPSEEK_V4_FLASH = "deepseek/deepseek-v4-flash";
|
|
602
644
|
var MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731 = "deepseek/deepseek-v4-flash-0731";
|
|
645
|
+
var MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813 = "deepseek/deepseek-v4-pro-0813";
|
|
646
|
+
var OPENROUTER_DEPRECATED_MODELS = [
|
|
647
|
+
MODEL_OPENAI_GPT_5_1_CHAT,
|
|
648
|
+
MODEL_ANTHROPIC_CLAUDE_3_7_SONNET,
|
|
649
|
+
MODEL_ANTHROPIC_CLAUDE_3_5_SONNET,
|
|
650
|
+
MODEL_ZAI_GLM_4_5_AIR_FREE
|
|
651
|
+
];
|
|
603
652
|
var DEFAULT_OPENROUTER_REASONING_EFFORTS = [
|
|
604
653
|
"none",
|
|
605
654
|
"minimal",
|
|
@@ -618,10 +667,12 @@ var AITuberOnAirChat = (() => {
|
|
|
618
667
|
"high",
|
|
619
668
|
"max"
|
|
620
669
|
];
|
|
621
|
-
var
|
|
622
|
-
|
|
623
|
-
|
|
670
|
+
var OPENROUTER_DEEPSEEK_V4_PRO_REASONING_EFFORTS = [
|
|
671
|
+
"none",
|
|
672
|
+
"high",
|
|
673
|
+
"xhigh"
|
|
624
674
|
];
|
|
675
|
+
var OPENROUTER_FREE_MODELS = [MODEL_GPT_OSS_20B_FREE];
|
|
625
676
|
var OPENROUTER_VISION_SUPPORTED_MODELS = [
|
|
626
677
|
MODEL_OPENROUTER_AUTO_BETA,
|
|
627
678
|
MODEL_MOONSHOTAI_KIMI_K3,
|
|
@@ -633,7 +684,6 @@ var AITuberOnAirChat = (() => {
|
|
|
633
684
|
MODEL_OPENAI_GPT_5_6_LUNA,
|
|
634
685
|
MODEL_OPENAI_GPT_5_5_PRO,
|
|
635
686
|
MODEL_OPENAI_GPT_5_5,
|
|
636
|
-
MODEL_OPENAI_GPT_5_1_CHAT,
|
|
637
687
|
MODEL_OPENAI_GPT_5_1_CODEX,
|
|
638
688
|
MODEL_OPENAI_GPT_5_MINI,
|
|
639
689
|
MODEL_OPENAI_GPT_5_NANO,
|
|
@@ -642,13 +692,14 @@ var AITuberOnAirChat = (() => {
|
|
|
642
692
|
MODEL_OPENAI_GPT_4_1_NANO,
|
|
643
693
|
MODEL_ANTHROPIC_CLAUDE_SONNET_LATEST,
|
|
644
694
|
MODEL_ANTHROPIC_CLAUDE_HAIKU_LATEST,
|
|
695
|
+
MODEL_ANTHROPIC_CLAUDE_FABLE_5,
|
|
645
696
|
MODEL_ANTHROPIC_CLAUDE_OPUS_5,
|
|
646
697
|
MODEL_ANTHROPIC_CLAUDE_OPUS_4,
|
|
647
698
|
MODEL_ANTHROPIC_CLAUDE_SONNET_4,
|
|
648
|
-
MODEL_ANTHROPIC_CLAUDE_3_7_SONNET,
|
|
649
699
|
MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU,
|
|
650
700
|
MODEL_GOOGLE_GEMINI_PRO_LATEST,
|
|
651
701
|
MODEL_GOOGLE_GEMINI_FLASH_LATEST,
|
|
702
|
+
MODEL_GOOGLE_GEMINI_3_7_FLASH,
|
|
652
703
|
MODEL_GOOGLE_GEMINI_3_6_FLASH,
|
|
653
704
|
MODEL_GOOGLE_GEMINI_3_5_FLASH_LITE,
|
|
654
705
|
MODEL_GOOGLE_GEMINI_2_5_PRO,
|
|
@@ -657,6 +708,7 @@ var AITuberOnAirChat = (() => {
|
|
|
657
708
|
MODEL_MOONSHOTAI_KIMI_K2_7_CODE,
|
|
658
709
|
MODEL_MOONSHOTAI_KIMI_K2_5,
|
|
659
710
|
MODEL_XAI_GROK_LATEST,
|
|
711
|
+
MODEL_XAI_GROK_4_6,
|
|
660
712
|
MODEL_XAI_GROK_4_5
|
|
661
713
|
];
|
|
662
714
|
var OPENROUTER_FREE_RATE_LIMIT_PER_MINUTE = 20;
|
|
@@ -679,11 +731,14 @@ var AITuberOnAirChat = (() => {
|
|
|
679
731
|
if (normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731) {
|
|
680
732
|
return OPENROUTER_DEEPSEEK_V4_FLASH_0731_REASONING_EFFORTS;
|
|
681
733
|
}
|
|
734
|
+
if (normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813) {
|
|
735
|
+
return OPENROUTER_DEEPSEEK_V4_PRO_REASONING_EFFORTS;
|
|
736
|
+
}
|
|
682
737
|
return DEFAULT_OPENROUTER_REASONING_EFFORTS;
|
|
683
738
|
}
|
|
684
739
|
function getDefaultOpenRouterReasoningEffort(model) {
|
|
685
740
|
const normalizedModel = model.trim();
|
|
686
|
-
return normalizedModel === MODEL_ZAI_GLM_5_2 || normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH || normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731 ? "none" : void 0;
|
|
741
|
+
return normalizedModel === MODEL_ZAI_GLM_5_2 || normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH || normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731 || normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813 ? "none" : void 0;
|
|
687
742
|
}
|
|
688
743
|
function normalizeOpenRouterReasoningEffort(model, effort) {
|
|
689
744
|
const normalizedModel = model.trim();
|
|
@@ -706,6 +761,17 @@ var AITuberOnAirChat = (() => {
|
|
|
706
761
|
return "high";
|
|
707
762
|
}
|
|
708
763
|
}
|
|
764
|
+
if (normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813) {
|
|
765
|
+
if (requested === "minimal" || requested === "low") {
|
|
766
|
+
return "none";
|
|
767
|
+
}
|
|
768
|
+
if (requested === "medium") {
|
|
769
|
+
return "high";
|
|
770
|
+
}
|
|
771
|
+
if (requested === "max") {
|
|
772
|
+
return "xhigh";
|
|
773
|
+
}
|
|
774
|
+
}
|
|
709
775
|
return requested;
|
|
710
776
|
}
|
|
711
777
|
|
|
@@ -723,6 +789,37 @@ var AITuberOnAirChat = (() => {
|
|
|
723
789
|
var MODEL_GLM_4_6V = "glm-4.6V";
|
|
724
790
|
var MODEL_GLM_4_6V_FLASHX = "glm-4.6V-FlashX";
|
|
725
791
|
var MODEL_GLM_4_6V_FLASH = "glm-4.6V-Flash";
|
|
792
|
+
var ZAI_GLM_5_2_REASONING_EFFORTS = [
|
|
793
|
+
"none",
|
|
794
|
+
"minimal",
|
|
795
|
+
"low",
|
|
796
|
+
"medium",
|
|
797
|
+
"high",
|
|
798
|
+
"xhigh",
|
|
799
|
+
"max"
|
|
800
|
+
];
|
|
801
|
+
function getZaiSupportedReasoningEfforts(model) {
|
|
802
|
+
return model === MODEL_GLM_5_2 ? ZAI_GLM_5_2_REASONING_EFFORTS : [];
|
|
803
|
+
}
|
|
804
|
+
function isZaiReasoningEffortModel(model) {
|
|
805
|
+
return getZaiSupportedReasoningEfforts(model).length > 0;
|
|
806
|
+
}
|
|
807
|
+
function getDefaultZaiReasoningEffort(model) {
|
|
808
|
+
return isZaiReasoningEffortModel(model) ? "none" : void 0;
|
|
809
|
+
}
|
|
810
|
+
function normalizeZaiReasoningEffort(model, effort) {
|
|
811
|
+
if (!isZaiReasoningEffortModel(model)) {
|
|
812
|
+
return void 0;
|
|
813
|
+
}
|
|
814
|
+
const requested = effort ?? getDefaultZaiReasoningEffort(model);
|
|
815
|
+
if (requested === "none" || requested === "minimal") {
|
|
816
|
+
return "none";
|
|
817
|
+
}
|
|
818
|
+
if (requested === "low" || requested === "medium" || requested === "high") {
|
|
819
|
+
return "high";
|
|
820
|
+
}
|
|
821
|
+
return "max";
|
|
822
|
+
}
|
|
726
823
|
var ZAI_VISION_SUPPORTED_MODELS = [
|
|
727
824
|
MODEL_GLM_5V_TURBO,
|
|
728
825
|
MODEL_GLM_4_6V,
|
|
@@ -738,31 +835,47 @@ var AITuberOnAirChat = (() => {
|
|
|
738
835
|
|
|
739
836
|
// src/constants/xai.ts
|
|
740
837
|
var ENDPOINT_XAI_CHAT_COMPLETIONS_API = "https://api.x.ai/v1/chat/completions";
|
|
838
|
+
var MODEL_GROK_4_6 = "grok-4.6";
|
|
741
839
|
var MODEL_GROK_4_5 = "grok-4.5";
|
|
742
840
|
var MODEL_GROK_4_3 = "grok-4.3";
|
|
743
841
|
var MODEL_GROK_4_20_REASONING = "grok-4.20-0309-reasoning";
|
|
744
842
|
var MODEL_GROK_4_20_NON_REASONING = "grok-4.20-0309-non-reasoning";
|
|
745
843
|
var MODEL_GROK_4_1_FAST_REASONING = "grok-4-1-fast-reasoning";
|
|
746
844
|
var MODEL_GROK_4_1_FAST_NON_REASONING = "grok-4-1-fast-non-reasoning";
|
|
845
|
+
var XAI_DEPRECATED_MODELS = [
|
|
846
|
+
MODEL_GROK_4_1_FAST_REASONING,
|
|
847
|
+
MODEL_GROK_4_1_FAST_NON_REASONING
|
|
848
|
+
];
|
|
747
849
|
var XAI_VISION_SUPPORTED_MODELS = [
|
|
850
|
+
MODEL_GROK_4_6,
|
|
748
851
|
MODEL_GROK_4_5,
|
|
749
852
|
MODEL_GROK_4_3,
|
|
750
853
|
MODEL_GROK_4_20_REASONING,
|
|
751
|
-
MODEL_GROK_4_20_NON_REASONING
|
|
752
|
-
MODEL_GROK_4_1_FAST_REASONING,
|
|
753
|
-
MODEL_GROK_4_1_FAST_NON_REASONING
|
|
854
|
+
MODEL_GROK_4_20_NON_REASONING
|
|
754
855
|
];
|
|
755
856
|
function isXaiVisionModel(model) {
|
|
756
857
|
return XAI_VISION_SUPPORTED_MODELS.includes(model);
|
|
757
858
|
}
|
|
758
859
|
function isXaiReasoningEffortModel(model) {
|
|
759
|
-
return model
|
|
860
|
+
return getXaiSupportedReasoningEfforts(model).length > 0;
|
|
861
|
+
}
|
|
862
|
+
function getXaiSupportedReasoningEfforts(model) {
|
|
863
|
+
if (model === MODEL_GROK_4_6) {
|
|
864
|
+
return ["low", "medium", "high", "xhigh"];
|
|
865
|
+
}
|
|
866
|
+
if (model === MODEL_GROK_4_5) {
|
|
867
|
+
return ["low", "medium", "high"];
|
|
868
|
+
}
|
|
869
|
+
if (model === MODEL_GROK_4_3) {
|
|
870
|
+
return ["none", "low", "medium", "high"];
|
|
871
|
+
}
|
|
872
|
+
return [];
|
|
760
873
|
}
|
|
761
874
|
function isXaiReasoningEffortNoneModel(model) {
|
|
762
|
-
return model
|
|
875
|
+
return getXaiSupportedReasoningEfforts(model).includes("none");
|
|
763
876
|
}
|
|
764
877
|
function getDefaultXaiReasoningEffort(model) {
|
|
765
|
-
if (model === MODEL_GROK_4_5) {
|
|
878
|
+
if (model === MODEL_GROK_4_6 || model === MODEL_GROK_4_5) {
|
|
766
879
|
return "low";
|
|
767
880
|
}
|
|
768
881
|
return isXaiReasoningEffortNoneModel(model) ? "none" : void 0;
|
|
@@ -771,10 +884,14 @@ var AITuberOnAirChat = (() => {
|
|
|
771
884
|
if (!isXaiReasoningEffortModel(model)) {
|
|
772
885
|
return void 0;
|
|
773
886
|
}
|
|
774
|
-
if (reasoningEffort ===
|
|
775
|
-
return
|
|
887
|
+
if (reasoningEffort === void 0) {
|
|
888
|
+
return getDefaultXaiReasoningEffort(model);
|
|
776
889
|
}
|
|
777
|
-
|
|
890
|
+
const supported = getXaiSupportedReasoningEfforts(model);
|
|
891
|
+
if (supported.includes(reasoningEffort)) {
|
|
892
|
+
return reasoningEffort;
|
|
893
|
+
}
|
|
894
|
+
return reasoningEffort === "none" ? "low" : "high";
|
|
778
895
|
}
|
|
779
896
|
|
|
780
897
|
// src/constants/kimi.ts
|
|
@@ -890,9 +1007,9 @@ var AITuberOnAirChat = (() => {
|
|
|
890
1007
|
MODEL_MISTRAL_MEDIUM_3_5,
|
|
891
1008
|
MODEL_MISTRAL_LARGE_LATEST,
|
|
892
1009
|
MODEL_MISTRAL_LARGE_2512,
|
|
893
|
-
MODEL_MISTRAL_SMALL_2603
|
|
894
|
-
MODEL_MISTRAL_MEDIUM_2508
|
|
1010
|
+
MODEL_MISTRAL_SMALL_2603
|
|
895
1011
|
];
|
|
1012
|
+
var MISTRAL_DEPRECATED_MODELS = [MODEL_MISTRAL_MEDIUM_2508];
|
|
896
1013
|
var MISTRAL_REASONING_EFFORT_SUPPORTED_MODELS = [
|
|
897
1014
|
MODEL_MISTRAL_SMALL_LATEST,
|
|
898
1015
|
MODEL_MISTRAL_MEDIUM_3_5
|
|
@@ -904,7 +1021,6 @@ var AITuberOnAirChat = (() => {
|
|
|
904
1021
|
MODEL_MINISTRAL_14B_2512,
|
|
905
1022
|
MODEL_MISTRAL_SMALL_2603,
|
|
906
1023
|
MODEL_MISTRAL_MEDIUM_3_5,
|
|
907
|
-
MODEL_MISTRAL_MEDIUM_2508,
|
|
908
1024
|
MODEL_MISTRAL_LARGE_LATEST,
|
|
909
1025
|
MODEL_MISTRAL_LARGE_2512
|
|
910
1026
|
];
|
|
@@ -923,9 +1039,10 @@ var AITuberOnAirChat = (() => {
|
|
|
923
1039
|
var ENDPOINT_SAKANA_CHAT_COMPLETIONS_API = `${SAKANA_API_BASE_URL}/chat/completions`;
|
|
924
1040
|
var MODEL_FUGU = "fugu";
|
|
925
1041
|
var MODEL_FUGU_ULTRA = "fugu-ultra";
|
|
1042
|
+
var MODEL_FUGU_ULTRA_V1_1 = "fugu-ultra-v1.1";
|
|
926
1043
|
var MODEL_FUGU_ULTRA_20260615 = "fugu-ultra-20260615";
|
|
927
|
-
var SAKANA_SUPPORTED_MODELS = [
|
|
928
|
-
|
|
1044
|
+
var SAKANA_SUPPORTED_MODELS = [MODEL_FUGU, MODEL_FUGU_ULTRA_V1_1];
|
|
1045
|
+
var SAKANA_COMPATIBILITY_MODELS = [
|
|
929
1046
|
MODEL_FUGU_ULTRA,
|
|
930
1047
|
MODEL_FUGU_ULTRA_20260615
|
|
931
1048
|
];
|
|
@@ -935,10 +1052,8 @@ var AITuberOnAirChat = (() => {
|
|
|
935
1052
|
var ENDPOINT_PLAMO_CHAT_COMPLETIONS_API = `${PLAMO_API_BASE_URL}/chat/completions`;
|
|
936
1053
|
var MODEL_PLAMO_3_0_PRIME = "plamo-3.0-prime";
|
|
937
1054
|
var MODEL_PLAMO_2_2_PRIME = "plamo-2.2-prime";
|
|
938
|
-
var PLAMO_SUPPORTED_MODELS = [
|
|
939
|
-
|
|
940
|
-
MODEL_PLAMO_2_2_PRIME
|
|
941
|
-
];
|
|
1055
|
+
var PLAMO_SUPPORTED_MODELS = [MODEL_PLAMO_3_0_PRIME];
|
|
1056
|
+
var PLAMO_DEPRECATED_MODELS = [MODEL_PLAMO_2_2_PRIME];
|
|
942
1057
|
|
|
943
1058
|
// src/constants/chat.ts
|
|
944
1059
|
var CHAT_RESPONSE_LENGTH = {
|
|
@@ -1901,7 +2016,9 @@ If it's in another language, summarize in that language.
|
|
|
1901
2016
|
hasTools: this.tools.length > 0 || this.mcpServers.length > 0,
|
|
1902
2017
|
runWithoutTools: async () => {
|
|
1903
2018
|
const res = await this.callClaude(messages, this.model, true);
|
|
1904
|
-
return this.
|
|
2019
|
+
return this.convertToStandardCompletion(
|
|
2020
|
+
await this.parseStream(res, onPartialResponse)
|
|
2021
|
+
);
|
|
1905
2022
|
},
|
|
1906
2023
|
runWithTools: () => this.chatOnce(messages, true, onPartialResponse),
|
|
1907
2024
|
onCompleteResponse,
|
|
@@ -1919,7 +2036,9 @@ If it's in another language, summarize in that language.
|
|
|
1919
2036
|
hasTools: this.tools.length > 0 || this.mcpServers.length > 0,
|
|
1920
2037
|
runWithoutTools: async () => {
|
|
1921
2038
|
const res = await this.callClaude(messages, this.visionModel, true);
|
|
1922
|
-
return this.
|
|
2039
|
+
return this.convertToStandardCompletion(
|
|
2040
|
+
await this.parseStream(res, onPartialResponse)
|
|
2041
|
+
);
|
|
1923
2042
|
},
|
|
1924
2043
|
runWithTools: () => this.visionChatOnce(messages),
|
|
1925
2044
|
onCompleteResponse,
|
|
@@ -1991,6 +2110,8 @@ If it's in another language, summarize in that language.
|
|
|
1991
2110
|
const textBlocks = [];
|
|
1992
2111
|
const providerBlocks = /* @__PURE__ */ new Map();
|
|
1993
2112
|
const toolCalls = /* @__PURE__ */ new Map();
|
|
2113
|
+
let finishReason;
|
|
2114
|
+
let stopDetails;
|
|
1994
2115
|
let buf = "";
|
|
1995
2116
|
while (true) {
|
|
1996
2117
|
const { done, value } = await reader.read();
|
|
@@ -2004,6 +2125,14 @@ If it's in another language, summarize in that language.
|
|
|
2004
2125
|
const payload = line.slice(5).trim();
|
|
2005
2126
|
if (payload === "[DONE]") break;
|
|
2006
2127
|
const ev = JSON.parse(payload);
|
|
2128
|
+
if (ev.type === "message_delta") {
|
|
2129
|
+
if (typeof ev.delta?.stop_reason === "string") {
|
|
2130
|
+
finishReason = ev.delta.stop_reason;
|
|
2131
|
+
}
|
|
2132
|
+
if (ev.delta?.stop_details !== void 0 || ev.stop_details !== void 0) {
|
|
2133
|
+
stopDetails = ev.delta?.stop_details ?? ev.stop_details;
|
|
2134
|
+
}
|
|
2135
|
+
}
|
|
2007
2136
|
if (ev.type === "content_block_start" && ev.content_block && typeof ev.index === "number") {
|
|
2008
2137
|
providerBlocks.set(ev.index, { ...ev.content_block });
|
|
2009
2138
|
}
|
|
@@ -2086,18 +2215,17 @@ If it's in another language, summarize in that language.
|
|
|
2086
2215
|
}
|
|
2087
2216
|
}
|
|
2088
2217
|
}
|
|
2218
|
+
const hasToolUse = textBlocks.some(
|
|
2219
|
+
(b) => b.type === "tool_use" || b.type === "mcp_tool_use"
|
|
2220
|
+
);
|
|
2089
2221
|
return {
|
|
2090
2222
|
blocks: textBlocks,
|
|
2091
2223
|
providerContent: [...providerBlocks.entries()].sort(([a], [b]) => a - b).map(([, block]) => block),
|
|
2092
|
-
stop_reason:
|
|
2093
|
-
|
|
2094
|
-
|
|
2224
|
+
stop_reason: hasToolUse ? "tool_use" : "end",
|
|
2225
|
+
finish_reason: finishReason,
|
|
2226
|
+
stop_details: stopDetails
|
|
2095
2227
|
};
|
|
2096
2228
|
}
|
|
2097
|
-
async parsePureStream(res, onPartial) {
|
|
2098
|
-
const { blocks } = await this.parseStream(res, onPartial);
|
|
2099
|
-
return blocks.filter((b) => b.type === "text").map((b) => b.text).join("");
|
|
2100
|
-
}
|
|
2101
2229
|
parseOneShot(data) {
|
|
2102
2230
|
const blocks = [];
|
|
2103
2231
|
(data.content ?? []).forEach((c) => {
|
|
@@ -2133,12 +2261,15 @@ If it's in another language, summarize in that language.
|
|
|
2133
2261
|
});
|
|
2134
2262
|
}
|
|
2135
2263
|
});
|
|
2264
|
+
const hasToolUse = blocks.some(
|
|
2265
|
+
(b) => b.type === "tool_use" || b.type === "mcp_tool_use"
|
|
2266
|
+
);
|
|
2136
2267
|
return {
|
|
2137
2268
|
blocks,
|
|
2138
2269
|
providerContent: (data.content ?? []).map((block) => ({ ...block })),
|
|
2139
|
-
stop_reason:
|
|
2140
|
-
|
|
2141
|
-
|
|
2270
|
+
stop_reason: hasToolUse ? "tool_use" : "end",
|
|
2271
|
+
finish_reason: data.stop_reason,
|
|
2272
|
+
stop_details: data.stop_details
|
|
2142
2273
|
};
|
|
2143
2274
|
}
|
|
2144
2275
|
/**
|
|
@@ -2188,6 +2319,8 @@ If it's in another language, summarize in that language.
|
|
|
2188
2319
|
return {
|
|
2189
2320
|
blocks: standardBlocks,
|
|
2190
2321
|
stop_reason: completion.stop_reason,
|
|
2322
|
+
finish_reason: completion.finish_reason,
|
|
2323
|
+
stop_details: completion.stop_details,
|
|
2191
2324
|
assistant_message: {
|
|
2192
2325
|
role: "assistant",
|
|
2193
2326
|
content: standardBlocks.filter((block) => block.type === "text").map((block) => block.text).join(""),
|
|
@@ -2244,8 +2377,6 @@ If it's in another language, summarize in that language.
|
|
|
2244
2377
|
*/
|
|
2245
2378
|
getSupportedModels() {
|
|
2246
2379
|
return [
|
|
2247
|
-
MODEL_CLAUDE_4_SONNET,
|
|
2248
|
-
MODEL_CLAUDE_4_OPUS,
|
|
2249
2380
|
MODEL_CLAUDE_4_5_SONNET,
|
|
2250
2381
|
MODEL_CLAUDE_4_5_HAIKU,
|
|
2251
2382
|
MODEL_CLAUDE_4_5_OPUS,
|
|
@@ -2253,9 +2384,9 @@ If it's in another language, summarize in that language.
|
|
|
2253
2384
|
MODEL_CLAUDE_4_6_OPUS,
|
|
2254
2385
|
MODEL_CLAUDE_4_7_OPUS,
|
|
2255
2386
|
MODEL_CLAUDE_4_8_OPUS,
|
|
2387
|
+
MODEL_CLAUDE_5_FABLE,
|
|
2256
2388
|
MODEL_CLAUDE_5_SONNET,
|
|
2257
|
-
MODEL_CLAUDE_5_OPUS
|
|
2258
|
-
MODEL_CLAUDE_3_HAIKU
|
|
2389
|
+
MODEL_CLAUDE_5_OPUS
|
|
2259
2390
|
];
|
|
2260
2391
|
}
|
|
2261
2392
|
/**
|
|
@@ -2294,6 +2425,7 @@ If it's in another language, summarize in that language.
|
|
|
2294
2425
|
const dec = new TextDecoder();
|
|
2295
2426
|
const textBlocks = [];
|
|
2296
2427
|
const toolCallsMap = /* @__PURE__ */ new Map();
|
|
2428
|
+
const providerItems = /* @__PURE__ */ new Map();
|
|
2297
2429
|
let responseStatus;
|
|
2298
2430
|
let incompleteDetails;
|
|
2299
2431
|
let usage;
|
|
@@ -2321,7 +2453,7 @@ If it's in another language, summarize in that language.
|
|
|
2321
2453
|
onPartial,
|
|
2322
2454
|
textBlocks,
|
|
2323
2455
|
toolCallsMap,
|
|
2324
|
-
|
|
2456
|
+
providerItems,
|
|
2325
2457
|
(metadata) => {
|
|
2326
2458
|
if (metadata.responseStatus !== void 0) {
|
|
2327
2459
|
responseStatus = metadata.responseStatus;
|
|
@@ -2348,21 +2480,31 @@ If it's in another language, summarize in that language.
|
|
|
2348
2480
|
type: "tool_use",
|
|
2349
2481
|
id: tool.id,
|
|
2350
2482
|
name: tool.name,
|
|
2351
|
-
input: tool.
|
|
2483
|
+
input: safeParseToolCallInput(tool.arguments, options.onJsonError)
|
|
2352
2484
|
})
|
|
2353
2485
|
);
|
|
2486
|
+
const providerContent = Array.from(providerItems.values());
|
|
2487
|
+
const text = StreamTextAccumulator.getFullText(textBlocks);
|
|
2354
2488
|
return {
|
|
2355
2489
|
blocks: [...textBlocks, ...toolBlocks],
|
|
2356
2490
|
stop_reason: toolBlocks.length ? "tool_use" : "end",
|
|
2357
2491
|
truncated: responseStatus === "incomplete",
|
|
2358
2492
|
response_status: responseStatus,
|
|
2359
2493
|
incomplete_details: incompleteDetails,
|
|
2360
|
-
usage
|
|
2494
|
+
usage,
|
|
2495
|
+
...providerContent.length > 0 ? {
|
|
2496
|
+
assistant_message: {
|
|
2497
|
+
role: "assistant",
|
|
2498
|
+
content: text,
|
|
2499
|
+
provider_content: providerContent
|
|
2500
|
+
}
|
|
2501
|
+
} : {}
|
|
2361
2502
|
};
|
|
2362
2503
|
}
|
|
2363
|
-
function handleResponsesSSEEvent(eventType, data, onPartial, textBlocks, toolCallsMap,
|
|
2504
|
+
function handleResponsesSSEEvent(eventType, data, onPartial, textBlocks, toolCallsMap, providerItems, onMetadata) {
|
|
2364
2505
|
switch (eventType) {
|
|
2365
2506
|
case "response.output_item.added":
|
|
2507
|
+
rememberProviderItem(providerItems, data.item);
|
|
2366
2508
|
if (data.item?.type === "message" && Array.isArray(data.item.content)) {
|
|
2367
2509
|
data.item.content.forEach((c) => {
|
|
2368
2510
|
if (c.type === "output_text" && c.text) {
|
|
@@ -2372,12 +2514,41 @@ If it's in another language, summarize in that language.
|
|
|
2372
2514
|
});
|
|
2373
2515
|
} else if (data.item?.type === "function_call") {
|
|
2374
2516
|
toolCallsMap.set(data.item.id, {
|
|
2375
|
-
id: data.item.id,
|
|
2517
|
+
id: data.item.call_id ?? data.item.id,
|
|
2376
2518
|
name: data.item.name,
|
|
2377
|
-
|
|
2378
|
-
|
|
2379
|
-
|
|
2380
|
-
|
|
2519
|
+
arguments: data.item.arguments ?? ""
|
|
2520
|
+
});
|
|
2521
|
+
}
|
|
2522
|
+
break;
|
|
2523
|
+
case "response.function_call_arguments.delta": {
|
|
2524
|
+
const tool = toolCallsMap.get(data.item_id);
|
|
2525
|
+
if (tool && typeof data.delta === "string") {
|
|
2526
|
+
tool.arguments += data.delta;
|
|
2527
|
+
}
|
|
2528
|
+
const item = providerItems.get(data.item_id);
|
|
2529
|
+
if (item && typeof data.delta === "string") {
|
|
2530
|
+
item.arguments = `${item.arguments ?? ""}${data.delta}`;
|
|
2531
|
+
}
|
|
2532
|
+
break;
|
|
2533
|
+
}
|
|
2534
|
+
case "response.function_call_arguments.done": {
|
|
2535
|
+
const tool = toolCallsMap.get(data.item_id);
|
|
2536
|
+
if (tool && typeof data.arguments === "string") {
|
|
2537
|
+
tool.arguments = data.arguments;
|
|
2538
|
+
}
|
|
2539
|
+
const item = providerItems.get(data.item_id);
|
|
2540
|
+
if (item && typeof data.arguments === "string") {
|
|
2541
|
+
item.arguments = data.arguments;
|
|
2542
|
+
}
|
|
2543
|
+
break;
|
|
2544
|
+
}
|
|
2545
|
+
case "response.output_item.done":
|
|
2546
|
+
rememberProviderItem(providerItems, data.item);
|
|
2547
|
+
if (data.item?.type === "function_call") {
|
|
2548
|
+
toolCallsMap.set(data.item.id, {
|
|
2549
|
+
id: data.item.call_id ?? data.item.id,
|
|
2550
|
+
name: data.item.name,
|
|
2551
|
+
arguments: data.item.arguments ?? ""
|
|
2381
2552
|
});
|
|
2382
2553
|
}
|
|
2383
2554
|
break;
|
|
@@ -2412,6 +2583,11 @@ If it's in another language, summarize in that language.
|
|
|
2412
2583
|
break;
|
|
2413
2584
|
}
|
|
2414
2585
|
}
|
|
2586
|
+
function rememberProviderItem(items, item) {
|
|
2587
|
+
if (!item || typeof item !== "object") return;
|
|
2588
|
+
const key = typeof item.id === "string" && item.id ? item.id : `output-item-${items.size}`;
|
|
2589
|
+
items.set(key, { ...item });
|
|
2590
|
+
}
|
|
2415
2591
|
function extractResponsesMetadata(data, fallbackStatus) {
|
|
2416
2592
|
const response = data?.response ?? data;
|
|
2417
2593
|
return {
|
|
@@ -2434,7 +2610,7 @@ If it's in another language, summarize in that language.
|
|
|
2434
2610
|
if (outputItem.type === "function_call") {
|
|
2435
2611
|
blocks.push({
|
|
2436
2612
|
type: "tool_use",
|
|
2437
|
-
id: outputItem.id,
|
|
2613
|
+
id: outputItem.call_id ?? outputItem.id,
|
|
2438
2614
|
name: outputItem.name,
|
|
2439
2615
|
input: safeParseToolCallInput(
|
|
2440
2616
|
outputItem.arguments,
|
|
@@ -2450,7 +2626,16 @@ If it's in another language, summarize in that language.
|
|
|
2450
2626
|
truncated: data?.status === "incomplete",
|
|
2451
2627
|
response_status: data?.status,
|
|
2452
2628
|
incomplete_details: data?.incomplete_details ?? null,
|
|
2453
|
-
usage: data?.usage
|
|
2629
|
+
usage: data?.usage,
|
|
2630
|
+
...Array.isArray(data?.output) && data.output.length > 0 ? {
|
|
2631
|
+
assistant_message: {
|
|
2632
|
+
role: "assistant",
|
|
2633
|
+
content: blocks.filter(
|
|
2634
|
+
(block) => block.type === "text"
|
|
2635
|
+
).map((block) => block.text).join(""),
|
|
2636
|
+
provider_content: data.output
|
|
2637
|
+
}
|
|
2638
|
+
} : {}
|
|
2454
2639
|
};
|
|
2455
2640
|
}
|
|
2456
2641
|
|
|
@@ -2669,10 +2854,22 @@ If it's in another language, summarize in that language.
|
|
|
2669
2854
|
}
|
|
2670
2855
|
}
|
|
2671
2856
|
function cleanMessagesForResponsesAPI(messages) {
|
|
2672
|
-
return messages.
|
|
2673
|
-
|
|
2857
|
+
return messages.flatMap((msg) => {
|
|
2858
|
+
if (msg.role === "assistant" && msg.provider_content?.length) {
|
|
2859
|
+
return msg.provider_content;
|
|
2860
|
+
}
|
|
2861
|
+
if (msg.role === "tool" && msg.tool_call_id) {
|
|
2862
|
+
return [
|
|
2863
|
+
{
|
|
2864
|
+
type: "function_call_output",
|
|
2865
|
+
call_id: msg.tool_call_id,
|
|
2866
|
+
output: msg.content
|
|
2867
|
+
}
|
|
2868
|
+
];
|
|
2869
|
+
}
|
|
2870
|
+
const items = [];
|
|
2674
2871
|
const cleanMsg = {
|
|
2675
|
-
role
|
|
2872
|
+
role: msg.role === "tool" ? "user" : msg.role
|
|
2676
2873
|
};
|
|
2677
2874
|
if (typeof msg.content === "string") {
|
|
2678
2875
|
cleanMsg.content = msg.content;
|
|
@@ -2694,7 +2891,19 @@ If it's in another language, summarize in that language.
|
|
|
2694
2891
|
} else {
|
|
2695
2892
|
cleanMsg.content = msg.content;
|
|
2696
2893
|
}
|
|
2697
|
-
|
|
2894
|
+
const hasContent = typeof cleanMsg.content !== "string" || cleanMsg.content.length > 0;
|
|
2895
|
+
if (hasContent) items.push(cleanMsg);
|
|
2896
|
+
if (msg.role === "assistant" && msg.tool_calls) {
|
|
2897
|
+
items.push(
|
|
2898
|
+
...msg.tool_calls.map((call) => ({
|
|
2899
|
+
type: "function_call",
|
|
2900
|
+
call_id: call.id,
|
|
2901
|
+
name: call.function.name,
|
|
2902
|
+
arguments: call.function.arguments
|
|
2903
|
+
}))
|
|
2904
|
+
);
|
|
2905
|
+
}
|
|
2906
|
+
return items;
|
|
2698
2907
|
});
|
|
2699
2908
|
}
|
|
2700
2909
|
function cleanMessagesForMistralChatCompletions(messages) {
|
|
@@ -3130,6 +3339,7 @@ If it's in another language, summarize in that language.
|
|
|
3130
3339
|
currentRole = null;
|
|
3131
3340
|
};
|
|
3132
3341
|
for (const msg of messages) {
|
|
3342
|
+
if (msg.role === "system") continue;
|
|
3133
3343
|
const role = mapRoleToGemini(msg.role);
|
|
3134
3344
|
if (msg.tool_calls) {
|
|
3135
3345
|
pushCurrent();
|
|
@@ -3173,6 +3383,7 @@ If it's in another language, summarize in that language.
|
|
|
3173
3383
|
currentRole = null;
|
|
3174
3384
|
};
|
|
3175
3385
|
for (const msg of messages) {
|
|
3386
|
+
if (msg.role === "system") continue;
|
|
3176
3387
|
const role = mapRoleToGemini(msg.role);
|
|
3177
3388
|
if (msg.tool_calls) {
|
|
3178
3389
|
pushCurrent();
|
|
@@ -3227,6 +3438,18 @@ If it's in another language, summarize in that language.
|
|
|
3227
3438
|
pushCurrent();
|
|
3228
3439
|
return geminiMessages;
|
|
3229
3440
|
}
|
|
3441
|
+
function extractGeminiSystemInstruction(messages) {
|
|
3442
|
+
const parts = messages.flatMap((message) => {
|
|
3443
|
+
if (message.role !== "system") return [];
|
|
3444
|
+
if (typeof message.content === "string") {
|
|
3445
|
+
return message.content ? [{ text: message.content }] : [];
|
|
3446
|
+
}
|
|
3447
|
+
return message.content.flatMap(
|
|
3448
|
+
(block) => block.type === "text" && block.text ? [{ text: block.text }] : []
|
|
3449
|
+
);
|
|
3450
|
+
});
|
|
3451
|
+
return parts.length > 0 ? { parts } : void 0;
|
|
3452
|
+
}
|
|
3230
3453
|
function createFunctionCallPart(call, options) {
|
|
3231
3454
|
options.callIdMap?.set(call.id, call.function.name);
|
|
3232
3455
|
const context = options.functionCallContextMap?.get(call.id);
|
|
@@ -3569,6 +3792,8 @@ If it's in another language, summarize in that language.
|
|
|
3569
3792
|
maxOutputTokens: maxTokens !== void 0 ? maxTokens : getMaxTokensForResponseLength(this.responseLength)
|
|
3570
3793
|
}
|
|
3571
3794
|
};
|
|
3795
|
+
const systemInstruction = extractGeminiSystemInstruction(messages);
|
|
3796
|
+
if (systemInstruction) body.systemInstruction = systemInstruction;
|
|
3572
3797
|
const thinkingConfig = this.resolveThinkingConfig(model);
|
|
3573
3798
|
if (thinkingConfig) {
|
|
3574
3799
|
body.generationConfig.thinkingConfig = thinkingConfig;
|
|
@@ -5057,7 +5282,6 @@ If it's in another language, summarize in that language.
|
|
|
5057
5282
|
MODEL_OPENROUTER_FUSION,
|
|
5058
5283
|
// Free models
|
|
5059
5284
|
MODEL_GPT_OSS_20B_FREE,
|
|
5060
|
-
MODEL_ZAI_GLM_4_5_AIR_FREE,
|
|
5061
5285
|
// OpenAI models
|
|
5062
5286
|
MODEL_OPENAI_GPT_LATEST,
|
|
5063
5287
|
MODEL_OPENAI_GPT_MINI_LATEST,
|
|
@@ -5066,7 +5290,6 @@ If it's in another language, summarize in that language.
|
|
|
5066
5290
|
MODEL_OPENAI_GPT_5_6_LUNA,
|
|
5067
5291
|
MODEL_OPENAI_GPT_5_5_PRO,
|
|
5068
5292
|
MODEL_OPENAI_GPT_5_5,
|
|
5069
|
-
MODEL_OPENAI_GPT_5_1_CHAT,
|
|
5070
5293
|
MODEL_OPENAI_GPT_5_1_CODEX,
|
|
5071
5294
|
MODEL_OPENAI_GPT_5_MINI,
|
|
5072
5295
|
MODEL_OPENAI_GPT_5_NANO,
|
|
@@ -5076,15 +5299,15 @@ If it's in another language, summarize in that language.
|
|
|
5076
5299
|
// Anthropic models
|
|
5077
5300
|
MODEL_ANTHROPIC_CLAUDE_SONNET_LATEST,
|
|
5078
5301
|
MODEL_ANTHROPIC_CLAUDE_HAIKU_LATEST,
|
|
5302
|
+
MODEL_ANTHROPIC_CLAUDE_FABLE_5,
|
|
5079
5303
|
MODEL_ANTHROPIC_CLAUDE_OPUS_5,
|
|
5080
5304
|
MODEL_ANTHROPIC_CLAUDE_OPUS_4,
|
|
5081
5305
|
MODEL_ANTHROPIC_CLAUDE_SONNET_4,
|
|
5082
|
-
MODEL_ANTHROPIC_CLAUDE_3_7_SONNET,
|
|
5083
|
-
MODEL_ANTHROPIC_CLAUDE_3_5_SONNET,
|
|
5084
5306
|
MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU,
|
|
5085
5307
|
// Gemini models
|
|
5086
5308
|
MODEL_GOOGLE_GEMINI_PRO_LATEST,
|
|
5087
5309
|
MODEL_GOOGLE_GEMINI_FLASH_LATEST,
|
|
5310
|
+
MODEL_GOOGLE_GEMINI_3_7_FLASH,
|
|
5088
5311
|
MODEL_GOOGLE_GEMINI_3_6_FLASH,
|
|
5089
5312
|
MODEL_GOOGLE_GEMINI_3_5_FLASH_LITE,
|
|
5090
5313
|
MODEL_GOOGLE_GEMINI_2_5_PRO,
|
|
@@ -5096,10 +5319,12 @@ If it's in another language, summarize in that language.
|
|
|
5096
5319
|
MODEL_ZAI_GLM_4_5_AIR,
|
|
5097
5320
|
// xAI models
|
|
5098
5321
|
MODEL_XAI_GROK_LATEST,
|
|
5322
|
+
MODEL_XAI_GROK_4_6,
|
|
5099
5323
|
MODEL_XAI_GROK_4_5,
|
|
5100
5324
|
// DeepSeek models
|
|
5101
5325
|
MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731,
|
|
5102
5326
|
MODEL_OPENROUTER_DEEPSEEK_V4_FLASH,
|
|
5327
|
+
MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813,
|
|
5103
5328
|
// Other models
|
|
5104
5329
|
MODEL_MOONSHOTAI_KIMI_LATEST,
|
|
5105
5330
|
MODEL_MOONSHOTAI_KIMI_K3,
|
|
@@ -5323,7 +5548,7 @@ If it's in another language, summarize in that language.
|
|
|
5323
5548
|
* @param model Name of the model to use
|
|
5324
5549
|
* @param visionModel Name of the vision model
|
|
5325
5550
|
*/
|
|
5326
|
-
constructor(apiKey, model =
|
|
5551
|
+
constructor(apiKey, model = MODEL_GROK_4_3, visionModel = MODEL_GROK_4_3, tools, endpoint = ENDPOINT_XAI_CHAT_COMPLETIONS_API, responseLength, reasoningEffort = "none") {
|
|
5327
5552
|
/** Provider name */
|
|
5328
5553
|
this.provider = "xai";
|
|
5329
5554
|
this.apiKey = apiKey;
|
|
@@ -5507,25 +5732,24 @@ If it's in another language, summarize in that language.
|
|
|
5507
5732
|
*/
|
|
5508
5733
|
getSupportedModels() {
|
|
5509
5734
|
return [
|
|
5735
|
+
MODEL_GROK_4_6,
|
|
5510
5736
|
MODEL_GROK_4_5,
|
|
5511
5737
|
MODEL_GROK_4_3,
|
|
5512
5738
|
MODEL_GROK_4_20_REASONING,
|
|
5513
|
-
MODEL_GROK_4_20_NON_REASONING
|
|
5514
|
-
MODEL_GROK_4_1_FAST_REASONING,
|
|
5515
|
-
MODEL_GROK_4_1_FAST_NON_REASONING
|
|
5739
|
+
MODEL_GROK_4_20_NON_REASONING
|
|
5516
5740
|
];
|
|
5517
5741
|
}
|
|
5518
5742
|
/**
|
|
5519
5743
|
* Get the default model
|
|
5520
5744
|
*/
|
|
5521
5745
|
getDefaultModel() {
|
|
5522
|
-
return
|
|
5746
|
+
return MODEL_GROK_4_3;
|
|
5523
5747
|
}
|
|
5524
5748
|
/**
|
|
5525
5749
|
* Get the default vision model
|
|
5526
5750
|
*/
|
|
5527
5751
|
getDefaultVisionModel() {
|
|
5528
|
-
return
|
|
5752
|
+
return MODEL_GROK_4_3;
|
|
5529
5753
|
}
|
|
5530
5754
|
/**
|
|
5531
5755
|
* Check if this provider supports vision
|
|
@@ -5555,7 +5779,7 @@ If it's in another language, summarize in that language.
|
|
|
5555
5779
|
* @param model Name of the model to use
|
|
5556
5780
|
* @param visionModel Name of the vision model
|
|
5557
5781
|
*/
|
|
5558
|
-
constructor(apiKey, model = MODEL_GLM_5_2, visionModel = MODEL_GLM_4_6V_FLASH, tools, endpoint = ENDPOINT_ZAI_CHAT_COMPLETIONS_API, responseLength, responseFormat, thinking) {
|
|
5782
|
+
constructor(apiKey, model = MODEL_GLM_5_2, visionModel = MODEL_GLM_4_6V_FLASH, tools, endpoint = ENDPOINT_ZAI_CHAT_COMPLETIONS_API, responseLength, responseFormat, thinking, reasoningEffort) {
|
|
5559
5783
|
/** Provider name */
|
|
5560
5784
|
this.provider = "zai";
|
|
5561
5785
|
this.apiKey = apiKey;
|
|
@@ -5565,6 +5789,7 @@ If it's in another language, summarize in that language.
|
|
|
5565
5789
|
this.responseLength = responseLength;
|
|
5566
5790
|
this.responseFormat = responseFormat;
|
|
5567
5791
|
this.thinking = thinking ?? { type: "disabled" };
|
|
5792
|
+
this.reasoningEffort = reasoningEffort;
|
|
5568
5793
|
this.visionModel = visionModel;
|
|
5569
5794
|
}
|
|
5570
5795
|
/**
|
|
@@ -5669,6 +5894,9 @@ If it's in another language, summarize in that language.
|
|
|
5669
5894
|
if (this.thinking) {
|
|
5670
5895
|
body.thinking = this.thinking;
|
|
5671
5896
|
}
|
|
5897
|
+
if (model === MODEL_GLM_5_2 && this.reasoningEffort) {
|
|
5898
|
+
body.reasoning_effort = this.reasoningEffort;
|
|
5899
|
+
}
|
|
5672
5900
|
const tools = this.buildToolsDefinition();
|
|
5673
5901
|
if (tools.length > 0) {
|
|
5674
5902
|
body.tools = tools;
|
|
@@ -5719,7 +5947,26 @@ If it's in another language, summarize in that language.
|
|
|
5719
5947
|
validate: "explicit"
|
|
5720
5948
|
});
|
|
5721
5949
|
const tools = options.tools;
|
|
5722
|
-
const
|
|
5950
|
+
const supportedReasoningEfforts = getZaiSupportedReasoningEfforts(model);
|
|
5951
|
+
if (options.reasoning_effort !== void 0 && !supportedReasoningEfforts.includes(options.reasoning_effort)) {
|
|
5952
|
+
const supportedMessage = supportedReasoningEfforts.length > 0 ? `Supported values: ${supportedReasoningEfforts.join(", ")}.` : "This model does not expose configurable effort.";
|
|
5953
|
+
throw new Error(
|
|
5954
|
+
`Model ${model} does not support Z.ai reasoning_effort: ${options.reasoning_effort}. ${supportedMessage}`
|
|
5955
|
+
);
|
|
5956
|
+
}
|
|
5957
|
+
const normalizedReasoningEffort = normalizeZaiReasoningEffort(
|
|
5958
|
+
model,
|
|
5959
|
+
options.reasoning_effort
|
|
5960
|
+
);
|
|
5961
|
+
const usesExplicitThinking = options.thinking !== void 0;
|
|
5962
|
+
const thinking = usesExplicitThinking && options.reasoning_effort === void 0 ? options.thinking : normalizedReasoningEffort === "high" || normalizedReasoningEffort === "max" ? {
|
|
5963
|
+
type: "enabled",
|
|
5964
|
+
clear_thinking: options.thinking?.clear_thinking
|
|
5965
|
+
} : {
|
|
5966
|
+
type: "disabled",
|
|
5967
|
+
clear_thinking: options.thinking?.clear_thinking
|
|
5968
|
+
};
|
|
5969
|
+
const reasoningEffort = thinking?.type === "enabled" && options.reasoning_effort !== void 0 ? normalizedReasoningEffort : void 0;
|
|
5723
5970
|
return new ZAIChatService(
|
|
5724
5971
|
options.apiKey,
|
|
5725
5972
|
model,
|
|
@@ -5728,7 +5975,8 @@ If it's in another language, summarize in that language.
|
|
|
5728
5975
|
options.endpoint || ENDPOINT_ZAI_CHAT_COMPLETIONS_API,
|
|
5729
5976
|
options.responseLength,
|
|
5730
5977
|
options.responseFormat,
|
|
5731
|
-
thinking
|
|
5978
|
+
thinking,
|
|
5979
|
+
reasoningEffort
|
|
5732
5980
|
);
|
|
5733
5981
|
}
|
|
5734
5982
|
/**
|
|
@@ -5805,21 +6053,120 @@ If it's in another language, summarize in that language.
|
|
|
5805
6053
|
new PlamoChatServiceProvider()
|
|
5806
6054
|
];
|
|
5807
6055
|
|
|
5808
|
-
// src/
|
|
5809
|
-
var
|
|
6056
|
+
// src/backend.ts
|
|
6057
|
+
var KNOWN_CHAT_PROVIDERS = /* @__PURE__ */ new Set([
|
|
6058
|
+
"claude",
|
|
6059
|
+
"claude-agent-sdk",
|
|
6060
|
+
"codex-sdk",
|
|
6061
|
+
"copilot-sdk",
|
|
6062
|
+
"deepseek",
|
|
6063
|
+
"gemini",
|
|
6064
|
+
"gemini-nano",
|
|
6065
|
+
"kimi",
|
|
6066
|
+
"mistral",
|
|
5810
6067
|
"openai",
|
|
5811
6068
|
"openai-compatible",
|
|
5812
6069
|
"openrouter",
|
|
5813
|
-
"
|
|
5814
|
-
"
|
|
5815
|
-
"zai",
|
|
6070
|
+
"plamo",
|
|
6071
|
+
"sakana",
|
|
5816
6072
|
"xai",
|
|
5817
|
-
"
|
|
6073
|
+
"zai"
|
|
6074
|
+
]);
|
|
6075
|
+
var TOOL_SUPPORTED_PROVIDERS = /* @__PURE__ */ new Set([
|
|
6076
|
+
"claude",
|
|
5818
6077
|
"deepseek",
|
|
6078
|
+
"gemini",
|
|
6079
|
+
"kimi",
|
|
5819
6080
|
"mistral",
|
|
6081
|
+
"openai",
|
|
6082
|
+
"openai-compatible",
|
|
6083
|
+
"openrouter",
|
|
6084
|
+
"plamo",
|
|
5820
6085
|
"sakana",
|
|
5821
|
-
"
|
|
6086
|
+
"xai",
|
|
6087
|
+
"zai"
|
|
5822
6088
|
]);
|
|
6089
|
+
var NON_STREAMING_PROVIDERS = /* @__PURE__ */ new Set(["codex-sdk"]);
|
|
6090
|
+
function getChatBackendProviderCapabilities(provider) {
|
|
6091
|
+
if (!KNOWN_CHAT_PROVIDERS.has(provider)) return void 0;
|
|
6092
|
+
return {
|
|
6093
|
+
text: true,
|
|
6094
|
+
streaming: !NON_STREAMING_PROVIDERS.has(provider),
|
|
6095
|
+
tools: TOOL_SUPPORTED_PROVIDERS.has(provider)
|
|
6096
|
+
};
|
|
6097
|
+
}
|
|
6098
|
+
function buildToolContinuationMessages(input) {
|
|
6099
|
+
const isClaude = input.provider === "claude";
|
|
6100
|
+
const messages = input.messages.filter(
|
|
6101
|
+
(message) => !isEmptyClaudeAssistantMessage(isClaude, message)
|
|
6102
|
+
);
|
|
6103
|
+
const toolUses = input.completion.blocks.filter(
|
|
6104
|
+
(block) => block.type === "tool_use"
|
|
6105
|
+
);
|
|
6106
|
+
const assistantMessage = input.completion.assistant_message ?? buildAssistantToolCall(isClaude, toolUses);
|
|
6107
|
+
if (!isEmptyClaudeAssistantMessage(isClaude, assistantMessage)) {
|
|
6108
|
+
messages.push({ ...assistantMessage });
|
|
6109
|
+
}
|
|
6110
|
+
messages.push(...buildToolResultMessages(isClaude, input.toolResults));
|
|
6111
|
+
return messages;
|
|
6112
|
+
}
|
|
6113
|
+
function isEmptyClaudeAssistantMessage(isClaude, message) {
|
|
6114
|
+
if (!isClaude || message.role !== "assistant") {
|
|
6115
|
+
return false;
|
|
6116
|
+
}
|
|
6117
|
+
const content = message.content;
|
|
6118
|
+
return Array.isArray(content) && content.length === 0;
|
|
6119
|
+
}
|
|
6120
|
+
function buildAssistantToolCall(isClaude, toolUses) {
|
|
6121
|
+
if (isClaude) {
|
|
6122
|
+
return {
|
|
6123
|
+
role: "assistant",
|
|
6124
|
+
content: toolUses.map((toolUse) => ({
|
|
6125
|
+
type: "tool_use",
|
|
6126
|
+
id: toolUse.id,
|
|
6127
|
+
name: toolUse.name,
|
|
6128
|
+
input: toolUse.input ?? {}
|
|
6129
|
+
}))
|
|
6130
|
+
};
|
|
6131
|
+
}
|
|
6132
|
+
return {
|
|
6133
|
+
role: "assistant",
|
|
6134
|
+
content: [],
|
|
6135
|
+
tool_calls: toolUses.map((toolUse) => ({
|
|
6136
|
+
id: toolUse.id,
|
|
6137
|
+
type: "function",
|
|
6138
|
+
function: {
|
|
6139
|
+
name: toolUse.name,
|
|
6140
|
+
arguments: JSON.stringify(toolUse.input ?? {})
|
|
6141
|
+
}
|
|
6142
|
+
}))
|
|
6143
|
+
};
|
|
6144
|
+
}
|
|
6145
|
+
function buildToolResultMessages(isClaude, toolResults) {
|
|
6146
|
+
if (isClaude) {
|
|
6147
|
+
return toolResults.map(
|
|
6148
|
+
(result) => ({
|
|
6149
|
+
role: "user",
|
|
6150
|
+
content: [
|
|
6151
|
+
{
|
|
6152
|
+
type: "tool_result",
|
|
6153
|
+
tool_use_id: result.tool_use_id,
|
|
6154
|
+
content: result.content
|
|
6155
|
+
}
|
|
6156
|
+
]
|
|
6157
|
+
})
|
|
6158
|
+
);
|
|
6159
|
+
}
|
|
6160
|
+
return toolResults.map(
|
|
6161
|
+
(result) => ({
|
|
6162
|
+
role: "tool",
|
|
6163
|
+
tool_call_id: result.tool_use_id,
|
|
6164
|
+
content: result.content
|
|
6165
|
+
})
|
|
6166
|
+
);
|
|
6167
|
+
}
|
|
6168
|
+
|
|
6169
|
+
// src/services/ChatServiceFactory.ts
|
|
5823
6170
|
var MCP_SUPPORTED_PROVIDERS = /* @__PURE__ */ new Set(["openai", "gemini", "claude"]);
|
|
5824
6171
|
var JSON_MODE_SUPPORTED_PROVIDERS = /* @__PURE__ */ new Set([
|
|
5825
6172
|
"openai",
|
|
@@ -5835,8 +6182,9 @@ If it's in another language, summarize in that language.
|
|
|
5835
6182
|
kimi: ["low", "high", "max"],
|
|
5836
6183
|
mistral: ["low", "medium", "high"],
|
|
5837
6184
|
plamo: ["none", "medium"],
|
|
5838
|
-
xai: ["none", "low", "medium", "high"],
|
|
5839
|
-
deepseek: ["none", "low", "high", "max"]
|
|
6185
|
+
xai: ["none", "low", "medium", "high", "xhigh"],
|
|
6186
|
+
deepseek: ["none", "low", "high", "max"],
|
|
6187
|
+
zai: ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
|
|
5840
6188
|
};
|
|
5841
6189
|
var ChatServiceFactory = class {
|
|
5842
6190
|
/**
|
|
@@ -5885,18 +6233,19 @@ If it's in another language, summarize in that language.
|
|
|
5885
6233
|
return void 0;
|
|
5886
6234
|
}
|
|
5887
6235
|
const vision = model ? this.getVisionSupportLevelForModel(providerName, model) : provider.getVisionSupportLevel();
|
|
6236
|
+
const backendCapabilities = getChatBackendProviderCapabilities(providerName);
|
|
5888
6237
|
return {
|
|
5889
6238
|
provider: providerName,
|
|
5890
6239
|
models: provider.getSupportedModels(),
|
|
5891
6240
|
defaultModel: typeof provider.getDefaultModel === "function" ? provider.getDefaultModel() : void 0,
|
|
5892
6241
|
text: true,
|
|
5893
|
-
streaming: true,
|
|
6242
|
+
streaming: backendCapabilities?.streaming ?? true,
|
|
5894
6243
|
vision,
|
|
5895
|
-
tools:
|
|
6244
|
+
tools: backendCapabilities?.tools ?? false,
|
|
5896
6245
|
mcp: MCP_SUPPORTED_PROVIDERS.has(providerName),
|
|
5897
6246
|
jsonMode: JSON_MODE_SUPPORTED_PROVIDERS.has(providerName),
|
|
5898
6247
|
responseLength: true,
|
|
5899
|
-
reasoningEffort: providerName === "claude" && model ? [...getClaudeSupportedReasoningEfforts(model)] : providerName === "kimi" && model ? [...getKimiSupportedReasoningEfforts(model)] : providerName === "deepseek" && model ? [...getDeepSeekSupportedReasoningEfforts(model)] : providerName === "openrouter" && model ? [...getOpenRouterSupportedReasoningEfforts(model)] : REASONING_EFFORT_BY_PROVIDER[providerName] ?? []
|
|
6248
|
+
reasoningEffort: providerName === "claude" && model ? [...getClaudeSupportedReasoningEfforts(model)] : providerName === "gemini" && model ? [...getGeminiSupportedReasoningEfforts(model)] : providerName === "kimi" && model ? [...getKimiSupportedReasoningEfforts(model)] : providerName === "deepseek" && model ? [...getDeepSeekSupportedReasoningEfforts(model)] : providerName === "openrouter" && model ? [...getOpenRouterSupportedReasoningEfforts(model)] : providerName === "xai" && model ? [...getXaiSupportedReasoningEfforts(model)] : providerName === "zai" && model ? [...getZaiSupportedReasoningEfforts(model)] : REASONING_EFFORT_BY_PROVIDER[providerName] ?? []
|
|
5900
6249
|
};
|
|
5901
6250
|
}
|
|
5902
6251
|
/**
|