@aituber-onair/chat 0.59.0 → 0.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.ja.md +46 -8
  2. package/README.md +44 -8
  3. package/dist/cjs/constants/mistral.d.ts +1 -0
  4. package/dist/cjs/constants/mistral.d.ts.map +1 -1
  5. package/dist/cjs/constants/mistral.js +4 -1
  6. package/dist/cjs/constants/mistral.js.map +1 -1
  7. package/dist/cjs/constants/openai.d.ts +1 -0
  8. package/dist/cjs/constants/openai.d.ts.map +1 -1
  9. package/dist/cjs/constants/openai.js +10 -5
  10. package/dist/cjs/constants/openai.js.map +1 -1
  11. package/dist/cjs/constants/openrouter.d.ts +11 -0
  12. package/dist/cjs/constants/openrouter.d.ts.map +1 -1
  13. package/dist/cjs/constants/openrouter.js +64 -5
  14. package/dist/cjs/constants/openrouter.js.map +1 -1
  15. package/dist/cjs/constants/zai.d.ts +1 -0
  16. package/dist/cjs/constants/zai.d.ts.map +1 -1
  17. package/dist/cjs/constants/zai.js +6 -2
  18. package/dist/cjs/constants/zai.js.map +1 -1
  19. package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -1
  20. package/dist/cjs/services/ChatServiceFactory.js +2 -1
  21. package/dist/cjs/services/ChatServiceFactory.js.map +1 -1
  22. package/dist/cjs/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
  23. package/dist/cjs/services/providers/openai/OpenAIChatService.js +13 -4
  24. package/dist/cjs/services/providers/openai/OpenAIChatService.js.map +1 -1
  25. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
  26. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js +7 -0
  27. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
  28. package/dist/cjs/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
  29. package/dist/cjs/services/providers/openai/openaiRequestBuilder.js +10 -1
  30. package/dist/cjs/services/providers/openai/openaiRequestBuilder.js.map +1 -1
  31. package/dist/cjs/services/providers/openai/responsesParser.d.ts.map +1 -1
  32. package/dist/cjs/services/providers/openai/responsesParser.js +36 -14
  33. package/dist/cjs/services/providers/openai/responsesParser.js.map +1 -1
  34. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
  35. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js +9 -6
  36. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
  37. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  38. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js +10 -0
  39. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  40. package/dist/cjs/services/providers/zai/ZAIChatService.d.ts.map +1 -1
  41. package/dist/cjs/services/providers/zai/ZAIChatService.js +14 -3
  42. package/dist/cjs/services/providers/zai/ZAIChatService.js.map +1 -1
  43. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
  44. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js +1 -0
  45. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
  46. package/dist/esm/constants/mistral.d.ts +1 -0
  47. package/dist/esm/constants/mistral.d.ts.map +1 -1
  48. package/dist/esm/constants/mistral.js +3 -0
  49. package/dist/esm/constants/mistral.js.map +1 -1
  50. package/dist/esm/constants/openai.d.ts +1 -0
  51. package/dist/esm/constants/openai.d.ts.map +1 -1
  52. package/dist/esm/constants/openai.js +9 -4
  53. package/dist/esm/constants/openai.js.map +1 -1
  54. package/dist/esm/constants/openrouter.d.ts +11 -0
  55. package/dist/esm/constants/openrouter.d.ts.map +1 -1
  56. package/dist/esm/constants/openrouter.js +62 -3
  57. package/dist/esm/constants/openrouter.js.map +1 -1
  58. package/dist/esm/constants/zai.d.ts +1 -0
  59. package/dist/esm/constants/zai.d.ts.map +1 -1
  60. package/dist/esm/constants/zai.js +5 -1
  61. package/dist/esm/constants/zai.js.map +1 -1
  62. package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -1
  63. package/dist/esm/services/ChatServiceFactory.js +3 -2
  64. package/dist/esm/services/ChatServiceFactory.js.map +1 -1
  65. package/dist/esm/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
  66. package/dist/esm/services/providers/openai/OpenAIChatService.js +14 -5
  67. package/dist/esm/services/providers/openai/OpenAIChatService.js.map +1 -1
  68. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
  69. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js +8 -1
  70. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
  71. package/dist/esm/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
  72. package/dist/esm/services/providers/openai/openaiRequestBuilder.js +11 -2
  73. package/dist/esm/services/providers/openai/openaiRequestBuilder.js.map +1 -1
  74. package/dist/esm/services/providers/openai/responsesParser.d.ts.map +1 -1
  75. package/dist/esm/services/providers/openai/responsesParser.js +36 -14
  76. package/dist/esm/services/providers/openai/responsesParser.js.map +1 -1
  77. package/dist/esm/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
  78. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js +10 -7
  79. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
  80. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  81. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js +11 -1
  82. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  83. package/dist/esm/services/providers/zai/ZAIChatService.d.ts.map +1 -1
  84. package/dist/esm/services/providers/zai/ZAIChatService.js +15 -4
  85. package/dist/esm/services/providers/zai/ZAIChatService.js.map +1 -1
  86. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
  87. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js +2 -1
  88. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
  89. package/dist/umd/aituber-onair-chat.js +172 -46
  90. package/dist/umd/aituber-onair-chat.min.js +8 -8
  91. package/package.json +2 -1
@@ -82,8 +82,10 @@ var AITuberOnAirChat = (() => {
82
82
  MODEL_ANTHROPIC_CLAUDE_OPUS_4: () => MODEL_ANTHROPIC_CLAUDE_OPUS_4,
83
83
  MODEL_ANTHROPIC_CLAUDE_OPUS_4_8: () => MODEL_ANTHROPIC_CLAUDE_OPUS_4_8,
84
84
  MODEL_ANTHROPIC_CLAUDE_OPUS_5: () => MODEL_ANTHROPIC_CLAUDE_OPUS_5,
85
+ MODEL_ANTHROPIC_CLAUDE_OPUS_5_5: () => MODEL_ANTHROPIC_CLAUDE_OPUS_5_5,
85
86
  MODEL_ANTHROPIC_CLAUDE_SONNET_4: () => MODEL_ANTHROPIC_CLAUDE_SONNET_4,
86
87
  MODEL_ANTHROPIC_CLAUDE_SONNET_5: () => MODEL_ANTHROPIC_CLAUDE_SONNET_5,
88
+ MODEL_ANTHROPIC_CLAUDE_SONNET_5_5: () => MODEL_ANTHROPIC_CLAUDE_SONNET_5_5,
87
89
  MODEL_ANTHROPIC_CLAUDE_SONNET_LATEST: () => MODEL_ANTHROPIC_CLAUDE_SONNET_LATEST,
88
90
  MODEL_CLAUDE_3_5_HAIKU: () => MODEL_CLAUDE_3_5_HAIKU,
89
91
  MODEL_CLAUDE_3_5_SONNET: () => MODEL_CLAUDE_3_5_SONNET,
@@ -144,6 +146,7 @@ var AITuberOnAirChat = (() => {
144
146
  MODEL_GLM_5_2: () => MODEL_GLM_5_2,
145
147
  MODEL_GLM_5_3: () => MODEL_GLM_5_3,
146
148
  MODEL_GLM_5_3_FLASH: () => MODEL_GLM_5_3_FLASH,
149
+ MODEL_GLM_5_3_FLASHX: () => MODEL_GLM_5_3_FLASHX,
147
150
  MODEL_GLM_5_TURBO: () => MODEL_GLM_5_TURBO,
148
151
  MODEL_GOOGLE_GEMINI_2_5_FLASH: () => MODEL_GOOGLE_GEMINI_2_5_FLASH,
149
152
  MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025: () => MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025,
@@ -172,6 +175,7 @@ var AITuberOnAirChat = (() => {
172
175
  MODEL_GPT_5_6_TERRA: () => MODEL_GPT_5_6_TERRA,
173
176
  MODEL_GPT_5_MINI: () => MODEL_GPT_5_MINI,
174
177
  MODEL_GPT_5_NANO: () => MODEL_GPT_5_NANO,
178
+ MODEL_GPT_6_1_SOL: () => MODEL_GPT_6_1_SOL,
175
179
  MODEL_GPT_6_ASTRA: () => MODEL_GPT_6_ASTRA,
176
180
  MODEL_GPT_6_LUNA: () => MODEL_GPT_6_LUNA,
177
181
  MODEL_GPT_6_SOL: () => MODEL_GPT_6_SOL,
@@ -203,6 +207,7 @@ var AITuberOnAirChat = (() => {
203
207
  MODEL_MISTRAL_MEDIUM_3_5: () => MODEL_MISTRAL_MEDIUM_3_5,
204
208
  MODEL_MISTRAL_SMALL_2603: () => MODEL_MISTRAL_SMALL_2603,
205
209
  MODEL_MISTRAL_SMALL_LATEST: () => MODEL_MISTRAL_SMALL_LATEST,
210
+ MODEL_MISTRAL_ZAI_GLM_5_3: () => MODEL_MISTRAL_ZAI_GLM_5_3,
206
211
  MODEL_MOONSHOTAI_KIMI_K2_5: () => MODEL_MOONSHOTAI_KIMI_K2_5,
207
212
  MODEL_MOONSHOTAI_KIMI_K2_6: () => MODEL_MOONSHOTAI_KIMI_K2_6,
208
213
  MODEL_MOONSHOTAI_KIMI_K2_7_CODE: () => MODEL_MOONSHOTAI_KIMI_K2_7_CODE,
@@ -210,6 +215,7 @@ var AITuberOnAirChat = (() => {
210
215
  MODEL_MOONSHOTAI_KIMI_LATEST: () => MODEL_MOONSHOTAI_KIMI_LATEST,
211
216
  MODEL_NEX_AGI_NEX_N2_5_MINI_FREE: () => MODEL_NEX_AGI_NEX_N2_5_MINI_FREE,
212
217
  MODEL_NEX_AGI_NEX_N2_5_PRO_FREE: () => MODEL_NEX_AGI_NEX_N2_5_PRO_FREE,
218
+ MODEL_NVIDIA_NEMOTRON_3_5_LIGHTNING: () => MODEL_NVIDIA_NEMOTRON_3_5_LIGHTNING,
213
219
  MODEL_O1: () => MODEL_O1,
214
220
  MODEL_O1_MINI: () => MODEL_O1_MINI,
215
221
  MODEL_O3_MINI: () => MODEL_O3_MINI,
@@ -225,8 +231,11 @@ var AITuberOnAirChat = (() => {
225
231
  MODEL_OPENAI_GPT_5_6_TERRA: () => MODEL_OPENAI_GPT_5_6_TERRA,
226
232
  MODEL_OPENAI_GPT_5_MINI: () => MODEL_OPENAI_GPT_5_MINI,
227
233
  MODEL_OPENAI_GPT_5_NANO: () => MODEL_OPENAI_GPT_5_NANO,
234
+ MODEL_OPENAI_GPT_6_1_SOL: () => MODEL_OPENAI_GPT_6_1_SOL,
228
235
  MODEL_OPENAI_GPT_6_ASTRA: () => MODEL_OPENAI_GPT_6_ASTRA,
229
236
  MODEL_OPENAI_GPT_6_ASTRA_PRO: () => MODEL_OPENAI_GPT_6_ASTRA_PRO,
237
+ MODEL_OPENAI_GPT_6_LUNA: () => MODEL_OPENAI_GPT_6_LUNA,
238
+ MODEL_OPENAI_GPT_6_SOL: () => MODEL_OPENAI_GPT_6_SOL,
230
239
  MODEL_OPENAI_GPT_LATEST: () => MODEL_OPENAI_GPT_LATEST,
231
240
  MODEL_OPENAI_GPT_MINI_LATEST: () => MODEL_OPENAI_GPT_MINI_LATEST,
232
241
  MODEL_OPENROUTER_AUTO: () => MODEL_OPENROUTER_AUTO,
@@ -239,11 +248,14 @@ var AITuberOnAirChat = (() => {
239
248
  MODEL_OPENROUTER_FUSION: () => MODEL_OPENROUTER_FUSION,
240
249
  MODEL_PLAMO_2_2_PRIME: () => MODEL_PLAMO_2_2_PRIME,
241
250
  MODEL_PLAMO_3_0_PRIME: () => MODEL_PLAMO_3_0_PRIME,
251
+ MODEL_QWEN_QWEN_3_8_27B: () => MODEL_QWEN_QWEN_3_8_27B,
242
252
  MODEL_QWEN_QWEN_3_8_FLASH: () => MODEL_QWEN_QWEN_3_8_FLASH,
243
253
  MODEL_QWEN_QWEN_3_8_MAX_0902: () => MODEL_QWEN_QWEN_3_8_MAX_0902,
254
+ MODEL_QWEN_QWEN_3_8_OMNI_FLASH: () => MODEL_QWEN_QWEN_3_8_OMNI_FLASH,
244
255
  MODEL_SAKANA_NAMAZU: () => MODEL_SAKANA_NAMAZU,
245
256
  MODEL_XAI_GROK_4_5: () => MODEL_XAI_GROK_4_5,
246
257
  MODEL_XAI_GROK_4_6: () => MODEL_XAI_GROK_4_6,
258
+ MODEL_XAI_GROK_4_7: () => MODEL_XAI_GROK_4_7,
247
259
  MODEL_XAI_GROK_LATEST: () => MODEL_XAI_GROK_LATEST,
248
260
  MODEL_ZAI_GLM_4_5_AIR: () => MODEL_ZAI_GLM_4_5_AIR,
249
261
  MODEL_ZAI_GLM_4_5_AIR_FREE: () => MODEL_ZAI_GLM_4_5_AIR_FREE,
@@ -251,6 +263,7 @@ var AITuberOnAirChat = (() => {
251
263
  MODEL_ZAI_GLM_5_2: () => MODEL_ZAI_GLM_5_2,
252
264
  MODEL_ZAI_GLM_5_3: () => MODEL_ZAI_GLM_5_3,
253
265
  MODEL_ZAI_GLM_5_3_FLASH: () => MODEL_ZAI_GLM_5_3_FLASH,
266
+ MODEL_ZAI_GLM_5_3_FLASHX: () => MODEL_ZAI_GLM_5_3_FLASHX,
254
267
  MistralChatService: () => MistralChatService,
255
268
  MistralChatServiceProvider: () => MistralChatServiceProvider,
256
269
  OPENAI_COMPATIBLE_LOCAL_PRESETS: () => OPENAI_COMPATIBLE_LOCAL_PRESETS,
@@ -260,6 +273,7 @@ var AITuberOnAirChat = (() => {
260
273
  OPENROUTER_FREE_DAILY_LIMIT_LOW_CREDITS: () => OPENROUTER_FREE_DAILY_LIMIT_LOW_CREDITS,
261
274
  OPENROUTER_FREE_MODELS: () => OPENROUTER_FREE_MODELS,
262
275
  OPENROUTER_FREE_RATE_LIMIT_PER_MINUTE: () => OPENROUTER_FREE_RATE_LIMIT_PER_MINUTE,
276
+ OPENROUTER_MODELS_WITHOUT_REASONING_BUDGET: () => OPENROUTER_MODELS_WITHOUT_REASONING_BUDGET,
263
277
  OPENROUTER_VISION_SUPPORTED_MODELS: () => OPENROUTER_VISION_SUPPORTED_MODELS,
264
278
  OpenAIChatService: () => OpenAIChatService,
265
279
  OpenAIChatServiceProvider: () => OpenAIChatServiceProvider,
@@ -362,6 +376,7 @@ var AITuberOnAirChat = (() => {
362
376
  // src/constants/openai.ts
363
377
  var ENDPOINT_OPENAI_CHAT_COMPLETIONS_API = "https://api.openai.com/v1/chat/completions";
364
378
  var ENDPOINT_OPENAI_RESPONSES_API = "https://api.openai.com/v1/responses";
379
+ var MODEL_GPT_6_1_SOL = "gpt-6.1-sol";
365
380
  var MODEL_GPT_6_ASTRA = "gpt-6-astra";
366
381
  var MODEL_GPT_6_SOL = "gpt-6-sol";
367
382
  var MODEL_GPT_6_LUNA = "gpt-6-luna";
@@ -387,6 +402,7 @@ var AITuberOnAirChat = (() => {
387
402
  var MODEL_O1_MINI = "o1-mini";
388
403
  var MODEL_O1 = "o1";
389
404
  var VISION_SUPPORTED_MODELS = [
405
+ MODEL_GPT_6_1_SOL,
390
406
  MODEL_GPT_6_ASTRA,
391
407
  MODEL_GPT_6_SOL,
392
408
  MODEL_GPT_6_LUNA,
@@ -430,16 +446,16 @@ var AITuberOnAirChat = (() => {
430
446
  return GPT_5_MODELS.includes(model);
431
447
  }
432
448
  function isOpenAIReasoningModel(model) {
433
- return model === MODEL_GPT_6_ASTRA || model === MODEL_GPT_6_SOL || model === MODEL_GPT_6_LUNA || isGPT5Model(model);
449
+ return model === MODEL_GPT_6_1_SOL || model === MODEL_GPT_6_ASTRA || model === MODEL_GPT_6_SOL || model === MODEL_GPT_6_LUNA || isGPT5Model(model);
434
450
  }
435
451
  function isResponsesOnlyGPT5Model(model) {
436
452
  return model === MODEL_GPT_5_4_PRO;
437
453
  }
438
454
  function allowsReasoningXHigh(model) {
439
- return model === MODEL_GPT_6_ASTRA || model === MODEL_GPT_6_SOL || model === MODEL_GPT_6_LUNA || model === MODEL_GPT_5_6 || model === MODEL_GPT_5_6_SOL || model === MODEL_GPT_5_6_TERRA || model === MODEL_GPT_5_6_LUNA || model === MODEL_GPT_5_5 || model === MODEL_GPT_5_4 || model === MODEL_GPT_5_4_MINI || model === MODEL_GPT_5_4_NANO || model === MODEL_GPT_5_4_PRO;
455
+ return model === MODEL_GPT_6_1_SOL || model === MODEL_GPT_6_ASTRA || model === MODEL_GPT_6_SOL || model === MODEL_GPT_6_LUNA || model === MODEL_GPT_5_6 || model === MODEL_GPT_5_6_SOL || model === MODEL_GPT_5_6_TERRA || model === MODEL_GPT_5_6_LUNA || model === MODEL_GPT_5_5 || model === MODEL_GPT_5_4 || model === MODEL_GPT_5_4_MINI || model === MODEL_GPT_5_4_NANO || model === MODEL_GPT_5_4_PRO;
440
456
  }
441
457
  function allowsReasoningMax(model) {
442
- return model === MODEL_GPT_6_ASTRA || model === MODEL_GPT_6_SOL || model === MODEL_GPT_6_LUNA || model === MODEL_GPT_5_6 || model === MODEL_GPT_5_6_SOL || model === MODEL_GPT_5_6_TERRA || model === MODEL_GPT_5_6_LUNA;
458
+ return model === MODEL_GPT_6_1_SOL || model === MODEL_GPT_6_ASTRA || model === MODEL_GPT_6_SOL || model === MODEL_GPT_6_LUNA || model === MODEL_GPT_5_6 || model === MODEL_GPT_5_6_SOL || model === MODEL_GPT_5_6_TERRA || model === MODEL_GPT_5_6_LUNA;
443
459
  }
444
460
  function allowsReasoningNone(model) {
445
461
  return model === MODEL_GPT_6_SOL || model === MODEL_GPT_6_LUNA || model === MODEL_GPT_5_6 || model === MODEL_GPT_5_6_SOL || model === MODEL_GPT_5_6_TERRA || model === MODEL_GPT_5_6_LUNA || model === MODEL_GPT_5_1 || model === MODEL_GPT_5_4 || model === MODEL_GPT_5_5 || model === MODEL_GPT_5_4_MINI || model === MODEL_GPT_5_4_NANO;
@@ -460,7 +476,7 @@ var AITuberOnAirChat = (() => {
460
476
  return "medium";
461
477
  }
462
478
  function getDefaultReasoningEffortForOpenAIModel(model) {
463
- return model === MODEL_GPT_6_ASTRA ? "low" : model === MODEL_GPT_6_SOL ? "medium" : model === MODEL_GPT_6_LUNA ? "low" : getDefaultReasoningEffortForGPT5Model(model);
479
+ return model === MODEL_GPT_6_1_SOL || model === MODEL_GPT_6_ASTRA ? "low" : model === MODEL_GPT_6_SOL ? "medium" : model === MODEL_GPT_6_LUNA ? "low" : getDefaultReasoningEffortForGPT5Model(model);
464
480
  }
465
481
 
466
482
  // src/constants/gemini.ts
@@ -651,6 +667,12 @@ var AITuberOnAirChat = (() => {
651
667
 
652
668
  // src/constants/openrouter.ts
653
669
  var ENDPOINT_OPENROUTER_API = "https://openrouter.ai/api/v1/chat/completions";
670
+ var MODEL_OPENAI_GPT_6_1_SOL = "openai/gpt-6.1-sol";
671
+ var MODEL_OPENAI_GPT_6_SOL = "openai/gpt-6-sol";
672
+ var MODEL_OPENAI_GPT_6_LUNA = "openai/gpt-6-luna";
673
+ var MODEL_ANTHROPIC_CLAUDE_SONNET_5_5 = "anthropic/claude-sonnet-5.5";
674
+ var MODEL_ANTHROPIC_CLAUDE_OPUS_5_5 = "anthropic/claude-opus-5.5";
675
+ var MODEL_XAI_GROK_4_7 = "x-ai/grok-4.7";
654
676
  var MODEL_OPENAI_GPT_6_ASTRA = "openai/gpt-6-astra";
655
677
  var MODEL_OPENAI_GPT_6_ASTRA_PRO = "openai/gpt-6-astra-pro";
656
678
  var MODEL_ANTHROPIC_CLAUDE_FABLE_5_1 = "anthropic/claude-fable-5.1";
@@ -662,6 +684,14 @@ var AITuberOnAirChat = (() => {
662
684
  var MODEL_NEX_AGI_NEX_N2_5_PRO_FREE = "nex-agi/nex-n2.5-pro:free";
663
685
  var MODEL_QWEN_QWEN_3_8_MAX_0902 = "qwen/qwen3.8-max-0902";
664
686
  var MODEL_META_MUSE_SPARK_1_3 = "meta/muse-spark-1.3";
687
+ var MODEL_NVIDIA_NEMOTRON_3_5_LIGHTNING = "nvidia/nemotron-3.5-lightning";
688
+ var MODEL_QWEN_QWEN_3_8_27B = "qwen/qwen3.8-27b";
689
+ var MODEL_QWEN_QWEN_3_8_OMNI_FLASH = "qwen/qwen3.8-omni-flash";
690
+ var OPENROUTER_MODELS_WITHOUT_REASONING_BUDGET = [
691
+ MODEL_NVIDIA_NEMOTRON_3_5_LIGHTNING,
692
+ MODEL_QWEN_QWEN_3_8_27B,
693
+ MODEL_QWEN_QWEN_3_8_OMNI_FLASH
694
+ ];
665
695
  var MODEL_OPENROUTER_AUTO = "openrouter/auto";
666
696
  var MODEL_OPENROUTER_AUTO_BETA = "openrouter/auto-beta";
667
697
  var MODEL_OPENROUTER_FUSION = "openrouter/fusion";
@@ -707,6 +737,7 @@ var AITuberOnAirChat = (() => {
707
737
  var MODEL_ZAI_GLM_5_2 = "z-ai/glm-5.2";
708
738
  var MODEL_ZAI_GLM_5_3 = "z-ai/glm-5.3";
709
739
  var MODEL_ZAI_GLM_5_3_FLASH = "z-ai/glm-5.3-flash";
740
+ var MODEL_ZAI_GLM_5_3_FLASHX = "z-ai/glm-5.3-flashx";
710
741
  var MODEL_ZAI_GLM_4_7_FLASH = "z-ai/glm-4.7-flash";
711
742
  var MODEL_ZAI_GLM_4_5_AIR = "z-ai/glm-4.5-air";
712
743
  var MODEL_ZAI_GLM_4_5_AIR_FREE = "z-ai/glm-4.5-air:free";
@@ -769,6 +800,37 @@ var AITuberOnAirChat = (() => {
769
800
  "max"
770
801
  ];
771
802
  var OPENROUTER_MODEL_REASONING = {
803
+ [MODEL_NVIDIA_NEMOTRON_3_5_LIGHTNING]: {
804
+ efforts: [],
805
+ defaultEffort: void 0
806
+ },
807
+ [MODEL_QWEN_QWEN_3_8_27B]: { efforts: [], defaultEffort: void 0 },
808
+ [MODEL_QWEN_QWEN_3_8_OMNI_FLASH]: { efforts: [], defaultEffort: void 0 },
809
+ // Chat-oriented defaults avoid disabling mandatory reasoning and favor latency.
810
+ [MODEL_OPENAI_GPT_6_1_SOL]: {
811
+ efforts: ["low", "medium", "high", "xhigh", "max"],
812
+ defaultEffort: "low"
813
+ },
814
+ [MODEL_OPENAI_GPT_6_SOL]: {
815
+ efforts: ["none", "low", "medium", "high", "xhigh", "max"],
816
+ defaultEffort: "none"
817
+ },
818
+ [MODEL_OPENAI_GPT_6_LUNA]: {
819
+ efforts: ["none", "low", "medium", "high", "xhigh", "max"],
820
+ defaultEffort: "none"
821
+ },
822
+ [MODEL_ANTHROPIC_CLAUDE_SONNET_5_5]: {
823
+ efforts: ["low", "medium", "high", "xhigh", "max"],
824
+ defaultEffort: "low"
825
+ },
826
+ [MODEL_ANTHROPIC_CLAUDE_OPUS_5_5]: {
827
+ efforts: ["low", "medium", "high", "xhigh", "max"],
828
+ defaultEffort: "low"
829
+ },
830
+ [MODEL_XAI_GROK_4_7]: {
831
+ efforts: ["low", "medium", "high", "xhigh"],
832
+ defaultEffort: "low"
833
+ },
772
834
  [MODEL_OPENAI_GPT_6_ASTRA]: {
773
835
  efforts: ["max", "xhigh", "high", "medium", "low"],
774
836
  defaultEffort: "medium"
@@ -821,6 +883,14 @@ var AITuberOnAirChat = (() => {
821
883
  MODEL_NEX_AGI_NEX_N2_5_PRO_FREE
822
884
  ];
823
885
  var OPENROUTER_VISION_SUPPORTED_MODELS = [
886
+ MODEL_QWEN_QWEN_3_8_27B,
887
+ MODEL_QWEN_QWEN_3_8_OMNI_FLASH,
888
+ MODEL_OPENAI_GPT_6_1_SOL,
889
+ MODEL_OPENAI_GPT_6_SOL,
890
+ MODEL_OPENAI_GPT_6_LUNA,
891
+ MODEL_ANTHROPIC_CLAUDE_SONNET_5_5,
892
+ MODEL_ANTHROPIC_CLAUDE_OPUS_5_5,
893
+ MODEL_XAI_GROK_4_7,
824
894
  MODEL_OPENAI_GPT_6_ASTRA,
825
895
  MODEL_OPENAI_GPT_6_ASTRA_PRO,
826
896
  MODEL_ANTHROPIC_CLAUDE_FABLE_5_1,
@@ -866,6 +936,7 @@ var AITuberOnAirChat = (() => {
866
936
  MODEL_GOOGLE_GEMINI_2_5_FLASH,
867
937
  MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025,
868
938
  MODEL_ZAI_GLM_5_3_FLASH,
939
+ MODEL_ZAI_GLM_5_3_FLASHX,
869
940
  MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_VISION_EXP,
870
941
  MODEL_QWEN_QWEN_3_8_FLASH,
871
942
  MODEL_MOONSHOTAI_KIMI_K2_7_CODE,
@@ -893,7 +964,7 @@ var AITuberOnAirChat = (() => {
893
964
  normalizedModel
894
965
  ) ? OPENROUTER_MODEL_REASONING[normalizedModel] : void 0;
895
966
  if (profile) return profile.efforts;
896
- if (normalizedModel === MODEL_ZAI_GLM_5_3 || normalizedModel === MODEL_ZAI_GLM_5_3_FLASH) {
967
+ if (normalizedModel === MODEL_ZAI_GLM_5_3 || normalizedModel === MODEL_ZAI_GLM_5_3_FLASH || normalizedModel === MODEL_ZAI_GLM_5_3_FLASHX) {
897
968
  return OPENROUTER_ALWAYS_THINKING_REASONING_EFFORTS;
898
969
  }
899
970
  if (normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_VISION_EXP) {
@@ -920,7 +991,7 @@ var AITuberOnAirChat = (() => {
920
991
  normalizedModel
921
992
  ) ? OPENROUTER_MODEL_REASONING[normalizedModel] : void 0;
922
993
  if (profile) return profile.defaultEffort;
923
- if (normalizedModel === MODEL_ZAI_GLM_5_3 || normalizedModel === MODEL_ZAI_GLM_5_3_FLASH) {
994
+ if (normalizedModel === MODEL_ZAI_GLM_5_3 || normalizedModel === MODEL_ZAI_GLM_5_3_FLASH || normalizedModel === MODEL_ZAI_GLM_5_3_FLASHX) {
924
995
  return "low";
925
996
  }
926
997
  return normalizedModel === MODEL_ZAI_GLM_5_2 || normalizedModel === MODEL_QWEN_QWEN_3_8_FLASH || normalizedModel === MODEL_MOONSHOTAI_KIMI_K2_6 || normalizedModel === MODEL_ANTHROPIC_CLAUDE_SONNET_5 || normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_VISION_EXP || normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH || normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731 || normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813 ? "none" : void 0;
@@ -939,7 +1010,7 @@ var AITuberOnAirChat = (() => {
939
1010
  if (!requested) {
940
1011
  return void 0;
941
1012
  }
942
- if (normalizedModel === MODEL_ZAI_GLM_5_3 || normalizedModel === MODEL_ZAI_GLM_5_3_FLASH) {
1013
+ if (normalizedModel === MODEL_ZAI_GLM_5_3 || normalizedModel === MODEL_ZAI_GLM_5_3_FLASH || normalizedModel === MODEL_ZAI_GLM_5_3_FLASHX) {
943
1014
  if (requested === "high") {
944
1015
  return "high";
945
1016
  }
@@ -989,6 +1060,7 @@ var AITuberOnAirChat = (() => {
989
1060
  var ENDPOINT_ZAI_CHAT_COMPLETIONS_API = "https://api.z.ai/api/paas/v4/chat/completions";
990
1061
  var MODEL_GLM_5_3 = "glm-5.3";
991
1062
  var MODEL_GLM_5_3_FLASH = "glm-5.3-flash";
1063
+ var MODEL_GLM_5_3_FLASHX = "glm-5.3-flashx";
992
1064
  var MODEL_GLM_5_2 = "glm-5.2";
993
1065
  var MODEL_GLM_5_1 = "glm-5.1";
994
1066
  var MODEL_GLM_5 = "glm-5";
@@ -1016,7 +1088,7 @@ var AITuberOnAirChat = (() => {
1016
1088
  "max"
1017
1089
  ];
1018
1090
  function isZaiAlwaysThinkingModel(model) {
1019
- return model === MODEL_GLM_5_3 || model === MODEL_GLM_5_3_FLASH;
1091
+ return model === MODEL_GLM_5_3 || model === MODEL_GLM_5_3_FLASH || model === MODEL_GLM_5_3_FLASHX;
1020
1092
  }
1021
1093
  function getZaiSupportedReasoningEfforts(model) {
1022
1094
  if (isZaiAlwaysThinkingModel(model)) {
@@ -1056,6 +1128,7 @@ var AITuberOnAirChat = (() => {
1056
1128
  return "max";
1057
1129
  }
1058
1130
  var ZAI_VISION_SUPPORTED_MODELS = [
1131
+ MODEL_GLM_5_3_FLASHX,
1059
1132
  MODEL_GLM_5_3_FLASH,
1060
1133
  MODEL_GLM_5V_TURBO,
1061
1134
  MODEL_GLM_4_6V,
@@ -1255,6 +1328,7 @@ var AITuberOnAirChat = (() => {
1255
1328
  var MODEL_MISTRAL_MEDIUM_2508 = "mistral-medium-2508";
1256
1329
  var MODEL_MISTRAL_LARGE_LATEST = "mistral-large-latest";
1257
1330
  var MODEL_MISTRAL_LARGE_2512 = "mistral-large-2512";
1331
+ var MODEL_MISTRAL_ZAI_GLM_5_3 = "zai-glm-5-3";
1258
1332
  var MISTRAL_SUPPORTED_MODELS = [
1259
1333
  MODEL_MISTRAL_SMALL_LATEST,
1260
1334
  MODEL_MINISTRAL_3B_2512,
@@ -1263,7 +1337,8 @@ var AITuberOnAirChat = (() => {
1263
1337
  MODEL_MISTRAL_MEDIUM_3_5,
1264
1338
  MODEL_MISTRAL_LARGE_LATEST,
1265
1339
  MODEL_MISTRAL_LARGE_2512,
1266
- MODEL_MISTRAL_SMALL_2603
1340
+ MODEL_MISTRAL_SMALL_2603,
1341
+ MODEL_MISTRAL_ZAI_GLM_5_3
1267
1342
  ];
1268
1343
  var MISTRAL_DEPRECATED_MODELS = [MODEL_MISTRAL_MEDIUM_2508];
1269
1344
  var MISTRAL_REASONING_EFFORT_SUPPORTED_MODELS = [
@@ -2874,6 +2949,15 @@ If it's in another language, summarize in that language.
2874
2949
  };
2875
2950
 
2876
2951
  // src/services/providers/openai/responsesParser.ts
2952
+ function throwIfResponsesError(data, eventType) {
2953
+ const response = data?.response ?? data;
2954
+ const error = response?.error;
2955
+ if (!error && response?.status !== "failed" && eventType !== "error" && eventType !== "response.failed") {
2956
+ return;
2957
+ }
2958
+ const message = typeof error === "string" ? error : error?.message ?? data?.message ?? "The provider response failed.";
2959
+ throw new Error(`Provider response error: ${message}`);
2960
+ }
2877
2961
  async function parseOpenAIResponsesStream(res, onPartial, options = {}) {
2878
2962
  const reader = res.body.getReader();
2879
2963
  const dec = new TextDecoder();
@@ -2884,12 +2968,12 @@ If it's in another language, summarize in that language.
2884
2968
  let incompleteDetails;
2885
2969
  let usage;
2886
2970
  let buf = "";
2971
+ let eventType = "";
2972
+ let eventData = "";
2887
2973
  while (true) {
2888
2974
  const { done, value } = await reader.read();
2889
2975
  if (done) break;
2890
2976
  buf += dec.decode(value, { stream: true });
2891
- let eventType = "";
2892
- let eventData = "";
2893
2977
  const lines = buf.split("\n");
2894
2978
  buf = lines.pop() || "";
2895
2979
  for (let i = 0; i < lines.length; i++) {
@@ -2899,31 +2983,36 @@ If it's in another language, summarize in that language.
2899
2983
  } else if (line.startsWith("data:")) {
2900
2984
  eventData = line.slice(5).trim();
2901
2985
  } else if (line === "" && eventType && eventData) {
2986
+ let json;
2902
2987
  try {
2903
- const json = JSON.parse(eventData);
2904
- handleResponsesSSEEvent(
2905
- eventType,
2906
- json,
2907
- onPartial,
2908
- textBlocks,
2909
- toolCallsMap,
2910
- providerItems,
2911
- (metadata) => {
2912
- if (metadata.responseStatus !== void 0) {
2913
- responseStatus = metadata.responseStatus;
2914
- }
2915
- if (metadata.incompleteDetails !== void 0) {
2916
- incompleteDetails = metadata.incompleteDetails;
2917
- }
2918
- if (metadata.usage !== void 0) {
2919
- usage = metadata.usage;
2920
- }
2921
- }
2922
- );
2988
+ json = JSON.parse(eventData);
2923
2989
  } catch (error) {
2924
2990
  options.onJsonError?.(eventData, error);
2925
2991
  console.warn("Failed to parse SSE data:", eventData);
2992
+ eventType = "";
2993
+ eventData = "";
2994
+ continue;
2926
2995
  }
2996
+ throwIfResponsesError(json, eventType);
2997
+ handleResponsesSSEEvent(
2998
+ eventType,
2999
+ json,
3000
+ onPartial,
3001
+ textBlocks,
3002
+ toolCallsMap,
3003
+ providerItems,
3004
+ (metadata) => {
3005
+ if (metadata.responseStatus !== void 0) {
3006
+ responseStatus = metadata.responseStatus;
3007
+ }
3008
+ if (metadata.incompleteDetails !== void 0) {
3009
+ incompleteDetails = metadata.incompleteDetails;
3010
+ }
3011
+ if (metadata.usage !== void 0) {
3012
+ usage = metadata.usage;
3013
+ }
3014
+ }
3015
+ );
2927
3016
  eventType = "";
2928
3017
  eventData = "";
2929
3018
  }
@@ -3051,6 +3140,7 @@ If it's in another language, summarize in that language.
3051
3140
  };
3052
3141
  }
3053
3142
  function parseOpenAIResponsesOneShot(data, options = {}) {
3143
+ throwIfResponsesError(data);
3054
3144
  const blocks = [];
3055
3145
  if (data.output && Array.isArray(data.output)) {
3056
3146
  data.output.forEach((outputItem) => {
@@ -3185,10 +3275,15 @@ If it's in another language, summarize in that language.
3185
3275
  chatTemplateThinking,
3186
3276
  maxTokens
3187
3277
  }) {
3188
- if (model === MODEL_GPT_6_ASTRA && (!reasoning_effort || reasoning_effort === "none" || reasoning_effort === "minimal")) {
3278
+ if ((model === MODEL_GPT_6_ASTRA || provider === "openai" && model === MODEL_GPT_6_1_SOL) && (!reasoning_effort || reasoning_effort === "none" || reasoning_effort === "minimal")) {
3189
3279
  reasoning_effort = "low";
3190
3280
  }
3191
3281
  const isResponsesAPI = endpoint === ENDPOINT_OPENAI_RESPONSES_API;
3282
+ if (provider === "openai" && model === MODEL_GPT_6_1_SOL && (tools.length > 0 || mcpServers.length > 0) && !isResponsesAPI) {
3283
+ throw new Error(
3284
+ "GPT-6.1 Sol tool calling requires the OpenAI Responses API endpoint: " + ENDPOINT_OPENAI_RESPONSES_API + ". Custom endpoints use Chat Completions and cannot be used with this model's tools."
3285
+ );
3286
+ }
3192
3287
  validateMCPCompatibility(endpoint, mcpServers);
3193
3288
  const body = {
3194
3289
  model,
@@ -3405,7 +3500,8 @@ If it's in another language, summarize in that language.
3405
3500
  this.apiKey = apiKey;
3406
3501
  this.model = model;
3407
3502
  this.tools = tools || [];
3408
- this.endpoint = (model === MODEL_GPT_6_ASTRA || visionModel === MODEL_GPT_6_ASTRA) && endpoint === ENDPOINT_OPENAI_CHAT_COMPLETIONS_API ? ENDPOINT_OPENAI_RESPONSES_API : endpoint;
3503
+ const solToolsRequireResponses = provider === "openai" && (model === MODEL_GPT_6_1_SOL || visionModel === MODEL_GPT_6_1_SOL) && (this.tools.length > 0 || mcpServers.length > 0);
3504
+ this.endpoint = (model === MODEL_GPT_6_ASTRA || visionModel === MODEL_GPT_6_ASTRA || solToolsRequireResponses) && endpoint === ENDPOINT_OPENAI_CHAT_COMPLETIONS_API ? ENDPOINT_OPENAI_RESPONSES_API : endpoint;
3409
3505
  this.mcpServers = mcpServers;
3410
3506
  this.responseLength = responseLength;
3411
3507
  this.verbosity = verbosity;
@@ -3572,15 +3668,18 @@ If it's in another language, summarize in that language.
3572
3668
  return res;
3573
3669
  }
3574
3670
  async handleStream(res, onPartial) {
3575
- return parseOpenAICompatibleTextStream(res, onPartial);
3671
+ return parseOpenAICompatibleTextStream(res, onPartial, {
3672
+ throwOnApiError: true
3673
+ });
3576
3674
  }
3577
3675
  async parseStream(res, onPartial) {
3578
3676
  return parseOpenAICompatibleToolStream(res, onPartial, {
3579
- appendTextBlock: StreamTextAccumulator.addTextBlock
3677
+ appendTextBlock: StreamTextAccumulator.addTextBlock,
3678
+ throwOnApiError: true
3580
3679
  });
3581
3680
  }
3582
3681
  parseOneShot(data) {
3583
- return parseOpenAICompatibleOneShot(data);
3682
+ return parseOpenAICompatibleOneShot(data, { throwOnApiError: true });
3584
3683
  }
3585
3684
  };
3586
3685
 
@@ -5540,6 +5639,9 @@ If it's in another language, summarize in that language.
5540
5639
  shouldUseResponsesAPI = preference !== "chat" || optimizedOptions.reasoning_effort !== "none";
5541
5640
  } else if (isResponsesOnlyGPT5Model(modelName)) {
5542
5641
  shouldUseResponsesAPI = true;
5642
+ } else if (modelName === MODEL_GPT_6_1_SOL || visionModel === MODEL_GPT_6_1_SOL) {
5643
+ const preference = optimizedOptions.gpt5EndpointPreference || "responses";
5644
+ shouldUseResponsesAPI = (tools?.length ?? 0) > 0 || preference !== "chat";
5543
5645
  } else if (isOpenAIReasoningModel(modelName)) {
5544
5646
  const preference = optimizedOptions.gpt5EndpointPreference || "chat";
5545
5647
  shouldUseResponsesAPI = preference === "responses";
@@ -5583,6 +5685,7 @@ If it's in another language, summarize in that language.
5583
5685
  MODEL_GPT_5_4,
5584
5686
  MODEL_GPT_5_5,
5585
5687
  MODEL_GPT_5_6,
5688
+ MODEL_GPT_6_1_SOL,
5586
5689
  MODEL_GPT_6_ASTRA,
5587
5690
  MODEL_GPT_6_SOL,
5588
5691
  MODEL_GPT_6_LUNA,
@@ -5910,12 +6013,13 @@ If it's in another language, summarize in that language.
5910
6013
  } else if (tokenLimit) {
5911
6014
  body.max_tokens = tokenLimit;
5912
6015
  }
6016
+ const reasoningMaxTokens = OPENROUTER_MODELS_WITHOUT_REASONING_BUDGET.includes(model.trim()) ? void 0 : this.reasoningMaxTokens;
5913
6017
  const defaultReasoningEffort = getDefaultOpenRouterReasoningEffort(model);
5914
6018
  const reasoningEffort = normalizeOpenRouterReasoningEffort(
5915
6019
  model,
5916
6020
  this.reasoning_effort
5917
6021
  );
5918
- if (reasoningEffort !== void 0 || this.includeReasoning !== void 0 || this.reasoningMaxTokens || defaultReasoningEffort) {
6022
+ if (reasoningEffort !== void 0 || this.includeReasoning !== void 0 || reasoningMaxTokens || defaultReasoningEffort) {
5919
6023
  body.reasoning = {};
5920
6024
  if (reasoningEffort) {
5921
6025
  const effort = reasoningEffort === "minimal" && model !== MODEL_QWEN_QWEN_3_8_MAX_0902 && model !== MODEL_META_MUSE_SPARK_1_3 ? "low" : reasoningEffort;
@@ -5926,8 +6030,8 @@ If it's in another language, summarize in that language.
5926
6030
  if (reasoningEffort === "none" || this.includeReasoning !== true) {
5927
6031
  body.reasoning.exclude = true;
5928
6032
  }
5929
- if (this.reasoningMaxTokens) {
5930
- body.reasoning.max_tokens = this.reasoningMaxTokens;
6033
+ if (reasoningMaxTokens) {
6034
+ body.reasoning.max_tokens = reasoningMaxTokens;
5931
6035
  }
5932
6036
  } else {
5933
6037
  body.reasoning = { exclude: true };
@@ -5947,7 +6051,7 @@ If it's in another language, summarize in that language.
5947
6051
  async handleStream(res, onPartial, model) {
5948
6052
  const text = await parseOpenAICompatibleTextStream(res, onPartial, {
5949
6053
  onJsonError: (payload) => console.debug("Failed to parse SSE data:", payload),
5950
- throwOnApiError: isOpenRouterAutoModel(model)
6054
+ throwOnApiError: true
5951
6055
  });
5952
6056
  ensureAutoRouterOutput(model, text.trim().length > 0);
5953
6057
  return text;
@@ -5958,7 +6062,7 @@ If it's in another language, summarize in that language.
5958
6062
  async parseStream(res, onPartial, model) {
5959
6063
  const completion = await parseOpenAICompatibleToolStream(res, onPartial, {
5960
6064
  onJsonError: (payload) => console.debug("Failed to parse SSE data:", payload),
5961
- throwOnApiError: isOpenRouterAutoModel(model)
6065
+ throwOnApiError: true
5962
6066
  });
5963
6067
  ensureAutoRouterOutput(model, hasUsableCompletionOutput(completion));
5964
6068
  return completion;
@@ -5968,7 +6072,7 @@ If it's in another language, summarize in that language.
5968
6072
  */
5969
6073
  parseOneShot(data, model) {
5970
6074
  const completion = parseOpenAICompatibleOneShot(data, {
5971
- throwOnApiError: isOpenRouterAutoModel(model)
6075
+ throwOnApiError: true
5972
6076
  });
5973
6077
  ensureAutoRouterOutput(model, hasUsableCompletionOutput(completion));
5974
6078
  return completion;
@@ -6022,6 +6126,12 @@ If it's in another language, summarize in that language.
6022
6126
  */
6023
6127
  getSupportedModels() {
6024
6128
  return [
6129
+ MODEL_OPENAI_GPT_6_1_SOL,
6130
+ MODEL_OPENAI_GPT_6_SOL,
6131
+ MODEL_OPENAI_GPT_6_LUNA,
6132
+ MODEL_ANTHROPIC_CLAUDE_SONNET_5_5,
6133
+ MODEL_ANTHROPIC_CLAUDE_OPUS_5_5,
6134
+ MODEL_XAI_GROK_4_7,
6025
6135
  MODEL_OPENAI_GPT_6_ASTRA,
6026
6136
  MODEL_OPENAI_GPT_6_ASTRA_PRO,
6027
6137
  MODEL_ANTHROPIC_CLAUDE_FABLE_5_1,
@@ -6033,6 +6143,9 @@ If it's in another language, summarize in that language.
6033
6143
  MODEL_NEX_AGI_NEX_N2_5_PRO_FREE,
6034
6144
  MODEL_QWEN_QWEN_3_8_MAX_0902,
6035
6145
  MODEL_META_MUSE_SPARK_1_3,
6146
+ MODEL_NVIDIA_NEMOTRON_3_5_LIGHTNING,
6147
+ MODEL_QWEN_QWEN_3_8_27B,
6148
+ MODEL_QWEN_QWEN_3_8_OMNI_FLASH,
6036
6149
  // OpenRouter routing
6037
6150
  MODEL_OPENROUTER_AUTO,
6038
6151
  MODEL_OPENROUTER_AUTO_BETA,
@@ -6075,6 +6188,7 @@ If it's in another language, summarize in that language.
6075
6188
  // Z.ai models
6076
6189
  MODEL_ZAI_GLM_5_3,
6077
6190
  MODEL_ZAI_GLM_5_3_FLASH,
6191
+ MODEL_ZAI_GLM_5_3_FLASHX,
6078
6192
  MODEL_ZAI_GLM_5_2,
6079
6193
  MODEL_ZAI_GLM_4_7_FLASH,
6080
6194
  MODEL_ZAI_GLM_4_5_AIR,
@@ -6673,10 +6787,19 @@ If it's in another language, summarize in that language.
6673
6787
  if (this.responseFormat) {
6674
6788
  body.response_format = this.responseFormat;
6675
6789
  }
6676
- if (this.thinking) {
6790
+ if (model === MODEL_GLM_5_3_FLASHX) {
6791
+ body.thinking = {
6792
+ type: "enabled",
6793
+ clear_thinking: this.thinking?.clear_thinking ?? true
6794
+ };
6795
+ body.reasoning_effort = normalizeZaiReasoningEffort(
6796
+ model,
6797
+ this.reasoningEffort
6798
+ );
6799
+ } else if (this.thinking) {
6677
6800
  body.thinking = this.thinking;
6678
6801
  }
6679
- if (isZaiReasoningEffortModel(model) && this.reasoningEffort) {
6802
+ if (model !== MODEL_GLM_5_3_FLASHX && isZaiReasoningEffortModel(model) && this.reasoningEffort) {
6680
6803
  body.reasoning_effort = this.reasoningEffort;
6681
6804
  }
6682
6805
  const tools = this.buildToolsDefinition();
@@ -6694,6 +6817,7 @@ If it's in another language, summarize in that language.
6694
6817
  }
6695
6818
  async handleStream(res, onPartial) {
6696
6819
  return parseOpenAICompatibleTextStream(res, onPartial, {
6820
+ throwOnApiError: true,
6697
6821
  onJsonError: (payload) => console.debug("Failed to parse SSE data:", payload)
6698
6822
  });
6699
6823
  }
@@ -6702,6 +6826,7 @@ If it's in another language, summarize in that language.
6702
6826
  */
6703
6827
  async parseStream(res, onPartial) {
6704
6828
  return parseOpenAICompatibleToolStream(res, onPartial, {
6829
+ throwOnApiError: true,
6705
6830
  onJsonError: (payload) => console.debug("Failed to parse SSE data:", payload)
6706
6831
  });
6707
6832
  }
@@ -6709,7 +6834,7 @@ If it's in another language, summarize in that language.
6709
6834
  * Parse non-streaming response
6710
6835
  */
6711
6836
  parseOneShot(data) {
6712
- return parseOpenAICompatibleOneShot(data);
6837
+ return parseOpenAICompatibleOneShot(data, { throwOnApiError: true });
6713
6838
  }
6714
6839
  };
6715
6840
 
@@ -6778,6 +6903,7 @@ If it's in another language, summarize in that language.
6778
6903
  return [
6779
6904
  MODEL_GLM_5_3,
6780
6905
  MODEL_GLM_5_3_FLASH,
6906
+ MODEL_GLM_5_3_FLASHX,
6781
6907
  MODEL_GLM_5_2,
6782
6908
  MODEL_GLM_5_1,
6783
6909
  MODEL_GLM_5,
@@ -7034,7 +7160,7 @@ If it's in another language, summarize in that language.
7034
7160
  mcp: MCP_SUPPORTED_PROVIDERS.has(providerName),
7035
7161
  jsonMode: JSON_MODE_SUPPORTED_PROVIDERS.has(providerName),
7036
7162
  responseLength: true,
7037
- reasoningEffort: providerName === "openai" && model === MODEL_GPT_6_ASTRA ? ["low", "medium", "high", "xhigh", "max"] : providerName === "openai" && model === MODEL_GPT_6_SOL ? ["none", "low", "medium", "high", "xhigh", "max"] : providerName === "openai" && model === MODEL_GPT_6_LUNA ? ["none", "low", "medium", "high", "xhigh", "max"] : 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] ?? []
7163
+ reasoningEffort: providerName === "openai" && (model === MODEL_GPT_6_1_SOL || model === MODEL_GPT_6_ASTRA) ? ["low", "medium", "high", "xhigh", "max"] : providerName === "openai" && model === MODEL_GPT_6_SOL ? ["none", "low", "medium", "high", "xhigh", "max"] : providerName === "openai" && model === MODEL_GPT_6_LUNA ? ["none", "low", "medium", "high", "xhigh", "max"] : 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] ?? []
7038
7164
  };
7039
7165
  }
7040
7166
  /**