@aituber-onair/chat 0.39.0 → 0.41.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 +36 -11
- package/README.md +35 -11
- package/dist/cjs/constants/index.d.ts +1 -0
- package/dist/cjs/constants/index.d.ts.map +1 -1
- package/dist/cjs/constants/index.js +1 -0
- package/dist/cjs/constants/index.js.map +1 -1
- package/dist/cjs/constants/kimi.d.ts +7 -0
- package/dist/cjs/constants/kimi.d.ts.map +1 -1
- package/dist/cjs/constants/kimi.js +21 -2
- package/dist/cjs/constants/kimi.js.map +1 -1
- package/dist/cjs/constants/openai.d.ts +3 -2
- package/dist/cjs/constants/openai.d.ts.map +1 -1
- package/dist/cjs/constants/openai.js +5 -1
- package/dist/cjs/constants/openai.js.map +1 -1
- package/dist/cjs/constants/openrouter.d.ts +2 -0
- package/dist/cjs/constants/openrouter.d.ts.map +1 -1
- package/dist/cjs/constants/openrouter.js +4 -1
- package/dist/cjs/constants/openrouter.js.map +1 -1
- package/dist/cjs/constants/sakana.d.ts +7 -0
- package/dist/cjs/constants/sakana.d.ts.map +1 -0
- package/dist/cjs/constants/sakana.js +14 -0
- package/dist/cjs/constants/sakana.js.map +1 -0
- package/dist/cjs/constants/zai.d.ts +1 -0
- package/dist/cjs/constants/zai.d.ts.map +1 -1
- package/dist/cjs/constants/zai.js +2 -1
- package/dist/cjs/constants/zai.js.map +1 -1
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts +2 -0
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/index.d.ts +2 -1
- package/dist/cjs/services/providers/index.d.ts.map +1 -1
- package/dist/cjs/services/providers/index.js +2 -0
- package/dist/cjs/services/providers/index.js.map +1 -1
- package/dist/cjs/services/providers/kimi/KimiChatService.d.ts +1 -0
- package/dist/cjs/services/providers/kimi/KimiChatService.d.ts.map +1 -1
- package/dist/cjs/services/providers/kimi/KimiChatService.js +13 -1
- package/dist/cjs/services/providers/kimi/KimiChatService.js.map +1 -1
- package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.d.ts +2 -0
- package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js +22 -5
- package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js.map +1 -1
- package/dist/cjs/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
- package/dist/cjs/services/providers/openai/openaiRequestBuilder.js +4 -0
- package/dist/cjs/services/providers/openai/openaiRequestBuilder.js.map +1 -1
- package/dist/cjs/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
- package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js +12 -4
- package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
- package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js +2 -0
- package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
- package/dist/cjs/services/providers/sakana/SakanaChatService.d.ts +7 -0
- package/dist/cjs/services/providers/sakana/SakanaChatService.d.ts.map +1 -0
- package/dist/cjs/services/providers/sakana/SakanaChatService.js +12 -0
- package/dist/cjs/services/providers/sakana/SakanaChatService.js.map +1 -0
- package/dist/cjs/services/providers/sakana/SakanaChatServiceProvider.d.ts +16 -0
- package/dist/cjs/services/providers/sakana/SakanaChatServiceProvider.d.ts.map +1 -0
- package/dist/cjs/services/providers/sakana/SakanaChatServiceProvider.js +57 -0
- package/dist/cjs/services/providers/sakana/SakanaChatServiceProvider.js.map +1 -0
- package/dist/cjs/services/providers/zai/ZAIChatService.js +1 -1
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js +2 -1
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
- package/dist/esm/constants/index.d.ts +1 -0
- package/dist/esm/constants/index.d.ts.map +1 -1
- package/dist/esm/constants/index.js +1 -0
- package/dist/esm/constants/index.js.map +1 -1
- package/dist/esm/constants/kimi.d.ts +7 -0
- package/dist/esm/constants/kimi.d.ts.map +1 -1
- package/dist/esm/constants/kimi.js +19 -1
- package/dist/esm/constants/kimi.js.map +1 -1
- package/dist/esm/constants/openai.d.ts +3 -2
- package/dist/esm/constants/openai.d.ts.map +1 -1
- package/dist/esm/constants/openai.js +5 -1
- package/dist/esm/constants/openai.js.map +1 -1
- package/dist/esm/constants/openrouter.d.ts +2 -0
- package/dist/esm/constants/openrouter.d.ts.map +1 -1
- package/dist/esm/constants/openrouter.js +3 -0
- package/dist/esm/constants/openrouter.js.map +1 -1
- package/dist/esm/constants/sakana.d.ts +7 -0
- package/dist/esm/constants/sakana.d.ts.map +1 -0
- package/dist/esm/constants/sakana.js +11 -0
- package/dist/esm/constants/sakana.js.map +1 -0
- package/dist/esm/constants/zai.d.ts +1 -0
- package/dist/esm/constants/zai.d.ts.map +1 -1
- package/dist/esm/constants/zai.js +1 -0
- package/dist/esm/constants/zai.js.map +1 -1
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/services/providers/ChatServiceProvider.d.ts +2 -0
- package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/index.d.ts +2 -1
- package/dist/esm/services/providers/index.d.ts.map +1 -1
- package/dist/esm/services/providers/index.js +2 -0
- package/dist/esm/services/providers/index.js.map +1 -1
- package/dist/esm/services/providers/kimi/KimiChatService.d.ts +1 -0
- package/dist/esm/services/providers/kimi/KimiChatService.d.ts.map +1 -1
- package/dist/esm/services/providers/kimi/KimiChatService.js +14 -2
- package/dist/esm/services/providers/kimi/KimiChatService.js.map +1 -1
- package/dist/esm/services/providers/kimi/KimiChatServiceProvider.d.ts +2 -0
- package/dist/esm/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js +23 -6
- package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js.map +1 -1
- package/dist/esm/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
- package/dist/esm/services/providers/openai/openaiRequestBuilder.js +4 -0
- package/dist/esm/services/providers/openai/openaiRequestBuilder.js.map +1 -1
- package/dist/esm/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
- package/dist/esm/services/providers/openrouter/OpenRouterChatService.js +13 -5
- package/dist/esm/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
- package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js +3 -1
- package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
- package/dist/esm/services/providers/sakana/SakanaChatService.d.ts +7 -0
- package/dist/esm/services/providers/sakana/SakanaChatService.d.ts.map +1 -0
- package/dist/esm/services/providers/sakana/SakanaChatService.js +8 -0
- package/dist/esm/services/providers/sakana/SakanaChatService.js.map +1 -0
- package/dist/esm/services/providers/sakana/SakanaChatServiceProvider.d.ts +16 -0
- package/dist/esm/services/providers/sakana/SakanaChatServiceProvider.d.ts.map +1 -0
- package/dist/esm/services/providers/sakana/SakanaChatServiceProvider.js +53 -0
- package/dist/esm/services/providers/sakana/SakanaChatServiceProvider.js.map +1 -0
- package/dist/esm/services/providers/zai/ZAIChatService.js +2 -2
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js +3 -2
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
- package/dist/umd/aituber-onair-chat.js +183 -12
- package/dist/umd/aituber-onair-chat.min.js +10 -10
- package/package.json +1 -1
|
@@ -45,6 +45,7 @@ var AITuberOnAirChat = (() => {
|
|
|
45
45
|
ENDPOINT_OPENAI_CHAT_COMPLETIONS_API: () => ENDPOINT_OPENAI_CHAT_COMPLETIONS_API,
|
|
46
46
|
ENDPOINT_OPENAI_RESPONSES_API: () => ENDPOINT_OPENAI_RESPONSES_API,
|
|
47
47
|
ENDPOINT_OPENROUTER_API: () => ENDPOINT_OPENROUTER_API,
|
|
48
|
+
ENDPOINT_SAKANA_CHAT_COMPLETIONS_API: () => ENDPOINT_SAKANA_CHAT_COMPLETIONS_API,
|
|
48
49
|
ENDPOINT_XAI_CHAT_COMPLETIONS_API: () => ENDPOINT_XAI_CHAT_COMPLETIONS_API,
|
|
49
50
|
ENDPOINT_ZAI_CHAT_COMPLETIONS_API: () => ENDPOINT_ZAI_CHAT_COMPLETIONS_API,
|
|
50
51
|
EmotionParser: () => EmotionParser,
|
|
@@ -59,6 +60,7 @@ var AITuberOnAirChat = (() => {
|
|
|
59
60
|
GeminiNanoChatService: () => GeminiNanoChatService,
|
|
60
61
|
GeminiNanoChatServiceProvider: () => GeminiNanoChatServiceProvider,
|
|
61
62
|
HttpError: () => HttpError,
|
|
63
|
+
KIMI_THINKING_REQUIRED_MODELS: () => KIMI_THINKING_REQUIRED_MODELS,
|
|
62
64
|
KIMI_VISION_SUPPORTED_MODELS: () => KIMI_VISION_SUPPORTED_MODELS,
|
|
63
65
|
KimiChatService: () => KimiChatService,
|
|
64
66
|
KimiChatServiceProvider: () => KimiChatServiceProvider,
|
|
@@ -91,6 +93,9 @@ var AITuberOnAirChat = (() => {
|
|
|
91
93
|
MODEL_DEEPSEEK_REASONER: () => MODEL_DEEPSEEK_REASONER,
|
|
92
94
|
MODEL_DEEPSEEK_V4_FLASH: () => MODEL_DEEPSEEK_V4_FLASH,
|
|
93
95
|
MODEL_DEEPSEEK_V4_PRO: () => MODEL_DEEPSEEK_V4_PRO,
|
|
96
|
+
MODEL_FUGU: () => MODEL_FUGU,
|
|
97
|
+
MODEL_FUGU_ULTRA: () => MODEL_FUGU_ULTRA,
|
|
98
|
+
MODEL_FUGU_ULTRA_20260615: () => MODEL_FUGU_ULTRA_20260615,
|
|
94
99
|
MODEL_GEMINI_2_5_FLASH: () => MODEL_GEMINI_2_5_FLASH,
|
|
95
100
|
MODEL_GEMINI_2_5_FLASH_LITE: () => MODEL_GEMINI_2_5_FLASH_LITE,
|
|
96
101
|
MODEL_GEMINI_2_5_FLASH_LITE_PREVIEW_06_17: () => MODEL_GEMINI_2_5_FLASH_LITE_PREVIEW_06_17,
|
|
@@ -112,6 +117,7 @@ var AITuberOnAirChat = (() => {
|
|
|
112
117
|
MODEL_GLM_4_7_FLASH: () => MODEL_GLM_4_7_FLASH,
|
|
113
118
|
MODEL_GLM_4_7_FLASHX: () => MODEL_GLM_4_7_FLASHX,
|
|
114
119
|
MODEL_GLM_5: () => MODEL_GLM_5,
|
|
120
|
+
MODEL_GLM_5_2: () => MODEL_GLM_5_2,
|
|
115
121
|
MODEL_GLM_5_TURBO: () => MODEL_GLM_5_TURBO,
|
|
116
122
|
MODEL_GOOGLE_GEMINI_2_5_FLASH: () => MODEL_GOOGLE_GEMINI_2_5_FLASH,
|
|
117
123
|
MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025: () => MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025,
|
|
@@ -140,6 +146,8 @@ var AITuberOnAirChat = (() => {
|
|
|
140
146
|
MODEL_GROK_4_3: () => MODEL_GROK_4_3,
|
|
141
147
|
MODEL_KIMI_K2_5: () => MODEL_KIMI_K2_5,
|
|
142
148
|
MODEL_KIMI_K2_6: () => MODEL_KIMI_K2_6,
|
|
149
|
+
MODEL_KIMI_K2_7_CODE: () => MODEL_KIMI_K2_7_CODE,
|
|
150
|
+
MODEL_KIMI_K2_7_CODE_HIGHSPEED: () => MODEL_KIMI_K2_7_CODE_HIGHSPEED,
|
|
143
151
|
MODEL_MISTRAL_LARGE_2512: () => MODEL_MISTRAL_LARGE_2512,
|
|
144
152
|
MODEL_MISTRAL_LARGE_LATEST: () => MODEL_MISTRAL_LARGE_LATEST,
|
|
145
153
|
MODEL_MISTRAL_MEDIUM_2508: () => MODEL_MISTRAL_MEDIUM_2508,
|
|
@@ -147,6 +155,7 @@ var AITuberOnAirChat = (() => {
|
|
|
147
155
|
MODEL_MISTRAL_SMALL_2603: () => MODEL_MISTRAL_SMALL_2603,
|
|
148
156
|
MODEL_MISTRAL_SMALL_LATEST: () => MODEL_MISTRAL_SMALL_LATEST,
|
|
149
157
|
MODEL_MOONSHOTAI_KIMI_K2_5: () => MODEL_MOONSHOTAI_KIMI_K2_5,
|
|
158
|
+
MODEL_MOONSHOTAI_KIMI_K2_7_CODE: () => MODEL_MOONSHOTAI_KIMI_K2_7_CODE,
|
|
150
159
|
MODEL_MOONSHOTAI_KIMI_LATEST: () => MODEL_MOONSHOTAI_KIMI_LATEST,
|
|
151
160
|
MODEL_O1: () => MODEL_O1,
|
|
152
161
|
MODEL_O1_MINI: () => MODEL_O1_MINI,
|
|
@@ -167,6 +176,7 @@ var AITuberOnAirChat = (() => {
|
|
|
167
176
|
MODEL_ZAI_GLM_4_5_AIR: () => MODEL_ZAI_GLM_4_5_AIR,
|
|
168
177
|
MODEL_ZAI_GLM_4_5_AIR_FREE: () => MODEL_ZAI_GLM_4_5_AIR_FREE,
|
|
169
178
|
MODEL_ZAI_GLM_4_7_FLASH: () => MODEL_ZAI_GLM_4_7_FLASH,
|
|
179
|
+
MODEL_ZAI_GLM_5_2: () => MODEL_ZAI_GLM_5_2,
|
|
170
180
|
MistralChatService: () => MistralChatService,
|
|
171
181
|
MistralChatServiceProvider: () => MistralChatServiceProvider,
|
|
172
182
|
OPENROUTER_CREDITS_THRESHOLD: () => OPENROUTER_CREDITS_THRESHOLD,
|
|
@@ -180,6 +190,10 @@ var AITuberOnAirChat = (() => {
|
|
|
180
190
|
OpenAICompatibleChatServiceProvider: () => OpenAICompatibleChatServiceProvider,
|
|
181
191
|
OpenRouterChatService: () => OpenRouterChatService,
|
|
182
192
|
OpenRouterChatServiceProvider: () => OpenRouterChatServiceProvider,
|
|
193
|
+
SAKANA_API_BASE_URL: () => SAKANA_API_BASE_URL,
|
|
194
|
+
SAKANA_SUPPORTED_MODELS: () => SAKANA_SUPPORTED_MODELS,
|
|
195
|
+
SakanaChatService: () => SakanaChatService,
|
|
196
|
+
SakanaChatServiceProvider: () => SakanaChatServiceProvider,
|
|
183
197
|
StreamTextAccumulator: () => StreamTextAccumulator,
|
|
184
198
|
VISION_SUPPORTED_MODELS: () => VISION_SUPPORTED_MODELS,
|
|
185
199
|
XAIChatService: () => XAIChatService,
|
|
@@ -197,6 +211,7 @@ var AITuberOnAirChat = (() => {
|
|
|
197
211
|
getMaxTokensForResponseLength: () => getMaxTokensForResponseLength,
|
|
198
212
|
installGASFetch: () => installGASFetch,
|
|
199
213
|
isGPT5Model: () => isGPT5Model,
|
|
214
|
+
isKimiThinkingRequiredModel: () => isKimiThinkingRequiredModel,
|
|
200
215
|
isKimiVisionModel: () => isKimiVisionModel,
|
|
201
216
|
isMistralReasoningEffort: () => isMistralReasoningEffort,
|
|
202
217
|
isMistralReasoningEffortModel: () => isMistralReasoningEffortModel,
|
|
@@ -292,6 +307,9 @@ var AITuberOnAirChat = (() => {
|
|
|
292
307
|
if (allowsReasoningNone(model)) {
|
|
293
308
|
return "none";
|
|
294
309
|
}
|
|
310
|
+
if (allowsReasoningMinimal(model)) {
|
|
311
|
+
return "minimal";
|
|
312
|
+
}
|
|
295
313
|
return "medium";
|
|
296
314
|
}
|
|
297
315
|
|
|
@@ -363,6 +381,7 @@ var AITuberOnAirChat = (() => {
|
|
|
363
381
|
var MODEL_OPENROUTER_AUTO = "openrouter/auto";
|
|
364
382
|
var MODEL_OPENROUTER_FUSION = "openrouter/fusion";
|
|
365
383
|
var MODEL_GPT_OSS_20B_FREE = "openai/gpt-oss-20b:free";
|
|
384
|
+
var MODEL_MOONSHOTAI_KIMI_K2_7_CODE = "moonshotai/kimi-k2.7-code";
|
|
366
385
|
var MODEL_MOONSHOTAI_KIMI_K2_5 = "moonshotai/kimi-k2.5";
|
|
367
386
|
var MODEL_MOONSHOTAI_KIMI_LATEST = "~moonshotai/kimi-latest";
|
|
368
387
|
var MODEL_OPENAI_GPT_LATEST = "~openai/gpt-latest";
|
|
@@ -388,6 +407,7 @@ var AITuberOnAirChat = (() => {
|
|
|
388
407
|
var MODEL_GOOGLE_GEMINI_2_5_PRO = "google/gemini-2.5-pro";
|
|
389
408
|
var MODEL_GOOGLE_GEMINI_2_5_FLASH = "google/gemini-2.5-flash";
|
|
390
409
|
var MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025 = "google/gemini-2.5-flash-lite-preview-09-2025";
|
|
410
|
+
var MODEL_ZAI_GLM_5_2 = "z-ai/glm-5.2";
|
|
391
411
|
var MODEL_ZAI_GLM_4_7_FLASH = "z-ai/glm-4.7-flash";
|
|
392
412
|
var MODEL_ZAI_GLM_4_5_AIR = "z-ai/glm-4.5-air";
|
|
393
413
|
var MODEL_ZAI_GLM_4_5_AIR_FREE = "z-ai/glm-4.5-air:free";
|
|
@@ -419,6 +439,7 @@ var AITuberOnAirChat = (() => {
|
|
|
419
439
|
MODEL_GOOGLE_GEMINI_2_5_PRO,
|
|
420
440
|
MODEL_GOOGLE_GEMINI_2_5_FLASH,
|
|
421
441
|
MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025,
|
|
442
|
+
MODEL_MOONSHOTAI_KIMI_K2_7_CODE,
|
|
422
443
|
MODEL_MOONSHOTAI_KIMI_K2_5
|
|
423
444
|
];
|
|
424
445
|
var OPENROUTER_FREE_RATE_LIMIT_PER_MINUTE = 20;
|
|
@@ -436,6 +457,7 @@ var AITuberOnAirChat = (() => {
|
|
|
436
457
|
|
|
437
458
|
// src/constants/zai.ts
|
|
438
459
|
var ENDPOINT_ZAI_CHAT_COMPLETIONS_API = "https://api.z.ai/api/paas/v4/chat/completions";
|
|
460
|
+
var MODEL_GLM_5_2 = "glm-5.2";
|
|
439
461
|
var MODEL_GLM_5 = "glm-5";
|
|
440
462
|
var MODEL_GLM_5_TURBO = "glm-5-turbo";
|
|
441
463
|
var MODEL_GLM_4_7 = "glm-4.7";
|
|
@@ -477,12 +499,26 @@ var AITuberOnAirChat = (() => {
|
|
|
477
499
|
|
|
478
500
|
// src/constants/kimi.ts
|
|
479
501
|
var ENDPOINT_KIMI_CHAT_COMPLETIONS_API = "https://api.moonshot.ai/v1/chat/completions";
|
|
502
|
+
var MODEL_KIMI_K2_7_CODE = "kimi-k2.7-code";
|
|
503
|
+
var MODEL_KIMI_K2_7_CODE_HIGHSPEED = "kimi-k2.7-code-highspeed";
|
|
480
504
|
var MODEL_KIMI_K2_6 = "kimi-k2.6";
|
|
481
505
|
var MODEL_KIMI_K2_5 = "kimi-k2.5";
|
|
482
|
-
var KIMI_VISION_SUPPORTED_MODELS = [
|
|
506
|
+
var KIMI_VISION_SUPPORTED_MODELS = [
|
|
507
|
+
MODEL_KIMI_K2_7_CODE,
|
|
508
|
+
MODEL_KIMI_K2_7_CODE_HIGHSPEED,
|
|
509
|
+
MODEL_KIMI_K2_6,
|
|
510
|
+
MODEL_KIMI_K2_5
|
|
511
|
+
];
|
|
512
|
+
var KIMI_THINKING_REQUIRED_MODELS = [
|
|
513
|
+
MODEL_KIMI_K2_7_CODE,
|
|
514
|
+
MODEL_KIMI_K2_7_CODE_HIGHSPEED
|
|
515
|
+
];
|
|
483
516
|
function isKimiVisionModel(model) {
|
|
484
517
|
return KIMI_VISION_SUPPORTED_MODELS.includes(model);
|
|
485
518
|
}
|
|
519
|
+
function isKimiThinkingRequiredModel(model) {
|
|
520
|
+
return KIMI_THINKING_REQUIRED_MODELS.includes(model);
|
|
521
|
+
}
|
|
486
522
|
|
|
487
523
|
// src/constants/deepseek.ts
|
|
488
524
|
var DEEPSEEK_API_BASE_URL = "https://api.deepseek.com";
|
|
@@ -539,6 +575,18 @@ var AITuberOnAirChat = (() => {
|
|
|
539
575
|
return MISTRAL_VISION_SUPPORTED_MODELS.includes(model);
|
|
540
576
|
}
|
|
541
577
|
|
|
578
|
+
// src/constants/sakana.ts
|
|
579
|
+
var SAKANA_API_BASE_URL = "https://api.sakana.ai/v1";
|
|
580
|
+
var ENDPOINT_SAKANA_CHAT_COMPLETIONS_API = `${SAKANA_API_BASE_URL}/chat/completions`;
|
|
581
|
+
var MODEL_FUGU = "fugu";
|
|
582
|
+
var MODEL_FUGU_ULTRA = "fugu-ultra";
|
|
583
|
+
var MODEL_FUGU_ULTRA_20260615 = "fugu-ultra-20260615";
|
|
584
|
+
var SAKANA_SUPPORTED_MODELS = [
|
|
585
|
+
MODEL_FUGU,
|
|
586
|
+
MODEL_FUGU_ULTRA,
|
|
587
|
+
MODEL_FUGU_ULTRA_20260615
|
|
588
|
+
];
|
|
589
|
+
|
|
542
590
|
// src/constants/chat.ts
|
|
543
591
|
var CHAT_RESPONSE_LENGTH = {
|
|
544
592
|
VERY_SHORT: "veryShort",
|
|
@@ -2005,7 +2053,8 @@ If it's in another language, summarize in that language.
|
|
|
2005
2053
|
var OPENAI_COMPATIBLE_CHAT_COMPLETIONS_PROVIDERS = /* @__PURE__ */ new Set([
|
|
2006
2054
|
"openai-compatible",
|
|
2007
2055
|
"deepseek",
|
|
2008
|
-
"mistral"
|
|
2056
|
+
"mistral",
|
|
2057
|
+
"sakana"
|
|
2009
2058
|
]);
|
|
2010
2059
|
function buildOpenAIRequestBody({
|
|
2011
2060
|
provider,
|
|
@@ -3520,7 +3569,7 @@ If it's in another language, summarize in that language.
|
|
|
3520
3569
|
if (this.responseFormat) {
|
|
3521
3570
|
body.response_format = this.responseFormat;
|
|
3522
3571
|
}
|
|
3523
|
-
const effectiveThinking = this.
|
|
3572
|
+
const effectiveThinking = this.resolveEffectiveThinking(model);
|
|
3524
3573
|
if (effectiveThinking) {
|
|
3525
3574
|
if (this.isSelfHostedEndpoint()) {
|
|
3526
3575
|
if (effectiveThinking.type === "disabled") {
|
|
@@ -3543,6 +3592,20 @@ If it's in another language, summarize in that language.
|
|
|
3543
3592
|
normalizeEndpoint(value) {
|
|
3544
3593
|
return value.replace(/\/+$/, "");
|
|
3545
3594
|
}
|
|
3595
|
+
resolveEffectiveThinking(model) {
|
|
3596
|
+
if (isKimiThinkingRequiredModel(model)) {
|
|
3597
|
+
if (this.thinking?.type === "disabled") {
|
|
3598
|
+
throw new Error(
|
|
3599
|
+
`Model ${model} requires thinking mode and does not support thinking: disabled.`
|
|
3600
|
+
);
|
|
3601
|
+
}
|
|
3602
|
+
return this.thinking ?? { type: "enabled" };
|
|
3603
|
+
}
|
|
3604
|
+
if (this.tools.length > 0) {
|
|
3605
|
+
return { type: "disabled" };
|
|
3606
|
+
}
|
|
3607
|
+
return this.thinking;
|
|
3608
|
+
}
|
|
3546
3609
|
buildToolsDefinition() {
|
|
3547
3610
|
return buildOpenAICompatibleTools(this.tools, "chat-completions");
|
|
3548
3611
|
}
|
|
@@ -3569,6 +3632,9 @@ If it's in another language, summarize in that language.
|
|
|
3569
3632
|
|
|
3570
3633
|
// src/services/providers/kimi/KimiChatServiceProvider.ts
|
|
3571
3634
|
var KimiChatServiceProvider = class {
|
|
3635
|
+
constructor() {
|
|
3636
|
+
this.defaultThinking = { type: "enabled" };
|
|
3637
|
+
}
|
|
3572
3638
|
/**
|
|
3573
3639
|
* Create a chat service instance
|
|
3574
3640
|
*/
|
|
@@ -3584,8 +3650,7 @@ If it's in another language, summarize in that language.
|
|
|
3584
3650
|
validate: "explicit"
|
|
3585
3651
|
});
|
|
3586
3652
|
const tools = options.tools;
|
|
3587
|
-
const
|
|
3588
|
-
const thinking = tools && tools.length > 0 ? { type: "disabled" } : defaultThinking;
|
|
3653
|
+
const thinking = this.resolveThinking(model, tools, options.thinking);
|
|
3589
3654
|
return new KimiChatService(
|
|
3590
3655
|
options.apiKey,
|
|
3591
3656
|
model,
|
|
@@ -3607,7 +3672,12 @@ If it's in another language, summarize in that language.
|
|
|
3607
3672
|
* Get the list of supported models
|
|
3608
3673
|
*/
|
|
3609
3674
|
getSupportedModels() {
|
|
3610
|
-
return [
|
|
3675
|
+
return [
|
|
3676
|
+
MODEL_KIMI_K2_7_CODE,
|
|
3677
|
+
MODEL_KIMI_K2_7_CODE_HIGHSPEED,
|
|
3678
|
+
MODEL_KIMI_K2_6,
|
|
3679
|
+
MODEL_KIMI_K2_5
|
|
3680
|
+
];
|
|
3611
3681
|
}
|
|
3612
3682
|
/**
|
|
3613
3683
|
* Get the default model
|
|
@@ -3655,6 +3725,20 @@ If it's in another language, summarize in that language.
|
|
|
3655
3725
|
normalizeEndpoint(value) {
|
|
3656
3726
|
return value.replace(/\/+$/, "");
|
|
3657
3727
|
}
|
|
3728
|
+
resolveThinking(model, tools, thinking) {
|
|
3729
|
+
if (isKimiThinkingRequiredModel(model)) {
|
|
3730
|
+
if (thinking?.type === "disabled") {
|
|
3731
|
+
throw new Error(
|
|
3732
|
+
`Model ${model} requires thinking mode and does not support thinking: disabled.`
|
|
3733
|
+
);
|
|
3734
|
+
}
|
|
3735
|
+
return thinking ?? this.defaultThinking;
|
|
3736
|
+
}
|
|
3737
|
+
if (tools && tools.length > 0) {
|
|
3738
|
+
return { type: "disabled" };
|
|
3739
|
+
}
|
|
3740
|
+
return thinking ?? this.defaultThinking;
|
|
3741
|
+
}
|
|
3658
3742
|
};
|
|
3659
3743
|
|
|
3660
3744
|
// src/services/providers/mistral/MistralChatService.ts
|
|
@@ -3986,7 +4070,8 @@ If it's in another language, summarize in that language.
|
|
|
3986
4070
|
};
|
|
3987
4071
|
|
|
3988
4072
|
// src/services/providers/openrouter/OpenRouterChatService.ts
|
|
3989
|
-
var isTokenLimitUnsupportedModel = (model) => model.trim()
|
|
4073
|
+
var isTokenLimitUnsupportedModel = (model) => [MODEL_GPT_OSS_20B_FREE, MODEL_ZAI_GLM_5_2].includes(model.trim());
|
|
4074
|
+
var getDefaultReasoningEffort = (model) => model.trim() === MODEL_ZAI_GLM_5_2 ? "none" : void 0;
|
|
3990
4075
|
var OpenRouterChatService = class {
|
|
3991
4076
|
/**
|
|
3992
4077
|
* Constructor
|
|
@@ -4182,16 +4267,19 @@ If it's in another language, summarize in that language.
|
|
|
4182
4267
|
const tokenLimit = maxTokens !== void 0 ? maxTokens : getMaxTokensForResponseLength(this.responseLength);
|
|
4183
4268
|
if (tokenLimit && isTokenLimitUnsupportedModel(model)) {
|
|
4184
4269
|
console.warn(
|
|
4185
|
-
`OpenRouter: Token limits are
|
|
4270
|
+
`OpenRouter: Token limits are disabled for ${model} because this model can return empty content when a token limit is set.`
|
|
4186
4271
|
);
|
|
4187
4272
|
} else if (tokenLimit) {
|
|
4188
4273
|
body.max_tokens = tokenLimit;
|
|
4189
4274
|
}
|
|
4190
|
-
|
|
4275
|
+
const defaultReasoningEffort = getDefaultReasoningEffort(model);
|
|
4276
|
+
if (this.reasoning_effort !== void 0 || this.includeReasoning !== void 0 || this.reasoningMaxTokens || defaultReasoningEffort) {
|
|
4191
4277
|
body.reasoning = {};
|
|
4192
4278
|
if (this.reasoning_effort && this.reasoning_effort !== "none") {
|
|
4193
4279
|
const effort = this.reasoning_effort === "minimal" ? "low" : this.reasoning_effort;
|
|
4194
4280
|
body.reasoning.effort = effort;
|
|
4281
|
+
} else if (this.reasoning_effort === void 0 && defaultReasoningEffort) {
|
|
4282
|
+
body.reasoning.effort = defaultReasoningEffort;
|
|
4195
4283
|
}
|
|
4196
4284
|
if (this.reasoning_effort === "none" || this.includeReasoning !== true) {
|
|
4197
4285
|
body.reasoning.exclude = true;
|
|
@@ -4313,10 +4401,12 @@ If it's in another language, summarize in that language.
|
|
|
4313
4401
|
MODEL_GOOGLE_GEMINI_2_5_FLASH,
|
|
4314
4402
|
MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025,
|
|
4315
4403
|
// Z.ai models
|
|
4404
|
+
MODEL_ZAI_GLM_5_2,
|
|
4316
4405
|
MODEL_ZAI_GLM_4_7_FLASH,
|
|
4317
4406
|
MODEL_ZAI_GLM_4_5_AIR,
|
|
4318
4407
|
// Other models
|
|
4319
4408
|
MODEL_MOONSHOTAI_KIMI_LATEST,
|
|
4409
|
+
MODEL_MOONSHOTAI_KIMI_K2_7_CODE,
|
|
4320
4410
|
MODEL_MOONSHOTAI_KIMI_K2_5
|
|
4321
4411
|
];
|
|
4322
4412
|
}
|
|
@@ -4367,6 +4457,85 @@ If it's in another language, summarize in that language.
|
|
|
4367
4457
|
}
|
|
4368
4458
|
};
|
|
4369
4459
|
|
|
4460
|
+
// src/services/providers/sakana/SakanaChatService.ts
|
|
4461
|
+
var SakanaChatService = class extends OpenAIChatService {
|
|
4462
|
+
constructor(apiKey, model = MODEL_FUGU, visionModel = model, tools, endpoint = ENDPOINT_SAKANA_CHAT_COMPLETIONS_API, responseLength) {
|
|
4463
|
+
super(
|
|
4464
|
+
apiKey,
|
|
4465
|
+
model,
|
|
4466
|
+
visionModel,
|
|
4467
|
+
tools,
|
|
4468
|
+
endpoint,
|
|
4469
|
+
[],
|
|
4470
|
+
responseLength,
|
|
4471
|
+
void 0,
|
|
4472
|
+
void 0,
|
|
4473
|
+
false,
|
|
4474
|
+
"sakana",
|
|
4475
|
+
false
|
|
4476
|
+
);
|
|
4477
|
+
}
|
|
4478
|
+
};
|
|
4479
|
+
|
|
4480
|
+
// src/services/providers/sakana/SakanaChatServiceProvider.ts
|
|
4481
|
+
var SakanaChatServiceProvider = class {
|
|
4482
|
+
createChatService(options) {
|
|
4483
|
+
this.validateRequiredOptions(options);
|
|
4484
|
+
const model = options.model || this.getDefaultModel();
|
|
4485
|
+
const tools = options.tools;
|
|
4486
|
+
return new SakanaChatService(
|
|
4487
|
+
options.apiKey,
|
|
4488
|
+
model,
|
|
4489
|
+
options.visionModel ?? model,
|
|
4490
|
+
tools,
|
|
4491
|
+
this.resolveEndpoint(options),
|
|
4492
|
+
options.responseLength
|
|
4493
|
+
);
|
|
4494
|
+
}
|
|
4495
|
+
getProviderName() {
|
|
4496
|
+
return "sakana";
|
|
4497
|
+
}
|
|
4498
|
+
getSupportedModels() {
|
|
4499
|
+
return [...SAKANA_SUPPORTED_MODELS];
|
|
4500
|
+
}
|
|
4501
|
+
getDefaultModel() {
|
|
4502
|
+
return MODEL_FUGU;
|
|
4503
|
+
}
|
|
4504
|
+
supportsVision() {
|
|
4505
|
+
return false;
|
|
4506
|
+
}
|
|
4507
|
+
getVisionSupportLevel() {
|
|
4508
|
+
return "unsupported";
|
|
4509
|
+
}
|
|
4510
|
+
supportsVisionForModel(_model) {
|
|
4511
|
+
return false;
|
|
4512
|
+
}
|
|
4513
|
+
getVisionSupportLevelForModel(_model) {
|
|
4514
|
+
return "unsupported";
|
|
4515
|
+
}
|
|
4516
|
+
validateRequiredOptions(options) {
|
|
4517
|
+
if (!options.apiKey?.trim()) {
|
|
4518
|
+
throw new Error("sakana provider requires apiKey.");
|
|
4519
|
+
}
|
|
4520
|
+
}
|
|
4521
|
+
resolveEndpoint(options) {
|
|
4522
|
+
if (options.endpoint) {
|
|
4523
|
+
return this.normalizeUrl(options.endpoint);
|
|
4524
|
+
}
|
|
4525
|
+
if (options.baseUrl) {
|
|
4526
|
+
const baseUrl = this.normalizeUrl(options.baseUrl);
|
|
4527
|
+
if (baseUrl.endsWith("/chat/completions")) {
|
|
4528
|
+
return baseUrl;
|
|
4529
|
+
}
|
|
4530
|
+
return `${baseUrl}/chat/completions`;
|
|
4531
|
+
}
|
|
4532
|
+
return ENDPOINT_SAKANA_CHAT_COMPLETIONS_API;
|
|
4533
|
+
}
|
|
4534
|
+
normalizeUrl(value) {
|
|
4535
|
+
return value.trim().replace(/\/+$/, "");
|
|
4536
|
+
}
|
|
4537
|
+
};
|
|
4538
|
+
|
|
4370
4539
|
// src/services/providers/xai/XAIChatService.ts
|
|
4371
4540
|
var XAIChatService = class {
|
|
4372
4541
|
/**
|
|
@@ -4595,7 +4764,7 @@ If it's in another language, summarize in that language.
|
|
|
4595
4764
|
* @param model Name of the model to use
|
|
4596
4765
|
* @param visionModel Name of the vision model
|
|
4597
4766
|
*/
|
|
4598
|
-
constructor(apiKey, model =
|
|
4767
|
+
constructor(apiKey, model = MODEL_GLM_5_2, visionModel = MODEL_GLM_4_6V_FLASH, tools, endpoint = ENDPOINT_ZAI_CHAT_COMPLETIONS_API, responseLength, responseFormat, thinking) {
|
|
4599
4768
|
/** Provider name */
|
|
4600
4769
|
this.provider = "zai";
|
|
4601
4770
|
this.apiKey = apiKey;
|
|
@@ -4782,6 +4951,7 @@ If it's in another language, summarize in that language.
|
|
|
4782
4951
|
*/
|
|
4783
4952
|
getSupportedModels() {
|
|
4784
4953
|
return [
|
|
4954
|
+
MODEL_GLM_5_2,
|
|
4785
4955
|
MODEL_GLM_5,
|
|
4786
4956
|
MODEL_GLM_5_TURBO,
|
|
4787
4957
|
MODEL_GLM_4_7,
|
|
@@ -4797,7 +4967,7 @@ If it's in another language, summarize in that language.
|
|
|
4797
4967
|
* Get the default model
|
|
4798
4968
|
*/
|
|
4799
4969
|
getDefaultModel() {
|
|
4800
|
-
return
|
|
4970
|
+
return MODEL_GLM_5_2;
|
|
4801
4971
|
}
|
|
4802
4972
|
/**
|
|
4803
4973
|
* Get the default vision model
|
|
@@ -4837,7 +5007,8 @@ If it's in another language, summarize in that language.
|
|
|
4837
5007
|
new XAIChatServiceProvider(),
|
|
4838
5008
|
new KimiChatServiceProvider(),
|
|
4839
5009
|
new DeepSeekChatServiceProvider(),
|
|
4840
|
-
new MistralChatServiceProvider()
|
|
5010
|
+
new MistralChatServiceProvider(),
|
|
5011
|
+
new SakanaChatServiceProvider()
|
|
4841
5012
|
];
|
|
4842
5013
|
|
|
4843
5014
|
// src/services/ChatServiceFactory.ts
|