@aituber-onair/chat 0.54.0 → 0.55.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 (79) hide show
  1. package/README.ja.md +28 -4
  2. package/README.md +28 -4
  3. package/dist/cjs/constants/claude.d.ts +1 -0
  4. package/dist/cjs/constants/claude.d.ts.map +1 -1
  5. package/dist/cjs/constants/claude.js +4 -1
  6. package/dist/cjs/constants/claude.js.map +1 -1
  7. package/dist/cjs/constants/deepseek.d.ts +1 -0
  8. package/dist/cjs/constants/deepseek.d.ts.map +1 -1
  9. package/dist/cjs/constants/deepseek.js +5 -2
  10. package/dist/cjs/constants/deepseek.js.map +1 -1
  11. package/dist/cjs/constants/openai.d.ts +5 -0
  12. package/dist/cjs/constants/openai.d.ts.map +1 -1
  13. package/dist/cjs/constants/openai.js +19 -3
  14. package/dist/cjs/constants/openai.js.map +1 -1
  15. package/dist/cjs/constants/openrouter.d.ts +11 -0
  16. package/dist/cjs/constants/openrouter.d.ts.map +1 -1
  17. package/dist/cjs/constants/openrouter.js +93 -3
  18. package/dist/cjs/constants/openrouter.js.map +1 -1
  19. package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -1
  20. package/dist/cjs/services/ChatServiceFactory.js +18 -15
  21. package/dist/cjs/services/ChatServiceFactory.js.map +1 -1
  22. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  23. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js +1 -0
  24. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  25. package/dist/cjs/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
  26. package/dist/cjs/services/providers/openai/OpenAIChatService.js +6 -2
  27. package/dist/cjs/services/providers/openai/OpenAIChatService.js.map +1 -1
  28. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
  29. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js +7 -4
  30. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
  31. package/dist/cjs/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
  32. package/dist/cjs/services/providers/openai/openaiRequestBuilder.js +9 -3
  33. package/dist/cjs/services/providers/openai/openaiRequestBuilder.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 +8 -2
  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 +11 -0
  39. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  40. package/dist/esm/constants/claude.d.ts +1 -0
  41. package/dist/esm/constants/claude.d.ts.map +1 -1
  42. package/dist/esm/constants/claude.js +3 -0
  43. package/dist/esm/constants/claude.js.map +1 -1
  44. package/dist/esm/constants/deepseek.d.ts +1 -0
  45. package/dist/esm/constants/deepseek.d.ts.map +1 -1
  46. package/dist/esm/constants/deepseek.js +4 -1
  47. package/dist/esm/constants/deepseek.js.map +1 -1
  48. package/dist/esm/constants/openai.d.ts +5 -0
  49. package/dist/esm/constants/openai.d.ts.map +1 -1
  50. package/dist/esm/constants/openai.js +16 -2
  51. package/dist/esm/constants/openai.js.map +1 -1
  52. package/dist/esm/constants/openrouter.d.ts +11 -0
  53. package/dist/esm/constants/openrouter.d.ts.map +1 -1
  54. package/dist/esm/constants/openrouter.js +91 -1
  55. package/dist/esm/constants/openrouter.js.map +1 -1
  56. package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -1
  57. package/dist/esm/services/ChatServiceFactory.js +18 -15
  58. package/dist/esm/services/ChatServiceFactory.js.map +1 -1
  59. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  60. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js +2 -1
  61. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  62. package/dist/esm/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
  63. package/dist/esm/services/providers/openai/OpenAIChatService.js +7 -3
  64. package/dist/esm/services/providers/openai/OpenAIChatService.js.map +1 -1
  65. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
  66. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js +8 -5
  67. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
  68. package/dist/esm/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
  69. package/dist/esm/services/providers/openai/openaiRequestBuilder.js +10 -4
  70. package/dist/esm/services/providers/openai/openaiRequestBuilder.js.map +1 -1
  71. package/dist/esm/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
  72. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js +9 -3
  73. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
  74. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  75. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js +12 -1
  76. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  77. package/dist/umd/aituber-onair-chat.js +153 -15
  78. package/dist/umd/aituber-onair-chat.min.js +7 -7
  79. package/package.json +1 -1
@@ -77,6 +77,7 @@ var AITuberOnAirChat = (() => {
77
77
  MODEL_ANTHROPIC_CLAUDE_3_7_SONNET: () => MODEL_ANTHROPIC_CLAUDE_3_7_SONNET,
78
78
  MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU: () => MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU,
79
79
  MODEL_ANTHROPIC_CLAUDE_FABLE_5: () => MODEL_ANTHROPIC_CLAUDE_FABLE_5,
80
+ MODEL_ANTHROPIC_CLAUDE_FABLE_5_1: () => MODEL_ANTHROPIC_CLAUDE_FABLE_5_1,
80
81
  MODEL_ANTHROPIC_CLAUDE_HAIKU_LATEST: () => MODEL_ANTHROPIC_CLAUDE_HAIKU_LATEST,
81
82
  MODEL_ANTHROPIC_CLAUDE_OPUS_4: () => MODEL_ANTHROPIC_CLAUDE_OPUS_4,
82
83
  MODEL_ANTHROPIC_CLAUDE_OPUS_4_8: () => MODEL_ANTHROPIC_CLAUDE_OPUS_4_8,
@@ -97,10 +98,12 @@ var AITuberOnAirChat = (() => {
97
98
  MODEL_CLAUDE_4_8_OPUS: () => MODEL_CLAUDE_4_8_OPUS,
98
99
  MODEL_CLAUDE_4_OPUS: () => MODEL_CLAUDE_4_OPUS,
99
100
  MODEL_CLAUDE_4_SONNET: () => MODEL_CLAUDE_4_SONNET,
101
+ MODEL_CLAUDE_5_1_FABLE: () => MODEL_CLAUDE_5_1_FABLE,
100
102
  MODEL_CLAUDE_5_FABLE: () => MODEL_CLAUDE_5_FABLE,
101
103
  MODEL_CLAUDE_5_OPUS: () => MODEL_CLAUDE_5_OPUS,
102
104
  MODEL_CLAUDE_5_SONNET: () => MODEL_CLAUDE_5_SONNET,
103
105
  MODEL_DEEPSEEK_CHAT: () => MODEL_DEEPSEEK_CHAT,
106
+ MODEL_DEEPSEEK_FLASH: () => MODEL_DEEPSEEK_FLASH,
104
107
  MODEL_DEEPSEEK_REASONER: () => MODEL_DEEPSEEK_REASONER,
105
108
  MODEL_DEEPSEEK_V4_FLASH: () => MODEL_DEEPSEEK_V4_FLASH,
106
109
  MODEL_DEEPSEEK_V4_FLASH_VISION_EXP: () => MODEL_DEEPSEEK_V4_FLASH_VISION_EXP,
@@ -146,6 +149,7 @@ var AITuberOnAirChat = (() => {
146
149
  MODEL_GOOGLE_GEMINI_3_5_FLASH_LITE: () => MODEL_GOOGLE_GEMINI_3_5_FLASH_LITE,
147
150
  MODEL_GOOGLE_GEMINI_3_6_FLASH: () => MODEL_GOOGLE_GEMINI_3_6_FLASH,
148
151
  MODEL_GOOGLE_GEMINI_3_7_FLASH: () => MODEL_GOOGLE_GEMINI_3_7_FLASH,
152
+ MODEL_GOOGLE_GEMINI_3_8_FLASH: () => MODEL_GOOGLE_GEMINI_3_8_FLASH,
149
153
  MODEL_GOOGLE_GEMINI_FLASH_LATEST: () => MODEL_GOOGLE_GEMINI_FLASH_LATEST,
150
154
  MODEL_GOOGLE_GEMINI_PRO_LATEST: () => MODEL_GOOGLE_GEMINI_PRO_LATEST,
151
155
  MODEL_GPT_4O: () => MODEL_GPT_4O,
@@ -166,6 +170,7 @@ var AITuberOnAirChat = (() => {
166
170
  MODEL_GPT_5_6_TERRA: () => MODEL_GPT_5_6_TERRA,
167
171
  MODEL_GPT_5_MINI: () => MODEL_GPT_5_MINI,
168
172
  MODEL_GPT_5_NANO: () => MODEL_GPT_5_NANO,
173
+ MODEL_GPT_6_ASTRA: () => MODEL_GPT_6_ASTRA,
169
174
  MODEL_GPT_OSS_20B_FREE: () => MODEL_GPT_OSS_20B_FREE,
170
175
  MODEL_GROK_4_1_FAST_NON_REASONING: () => MODEL_GROK_4_1_FAST_NON_REASONING,
171
176
  MODEL_GROK_4_1_FAST_REASONING: () => MODEL_GROK_4_1_FAST_REASONING,
@@ -174,6 +179,8 @@ var AITuberOnAirChat = (() => {
174
179
  MODEL_GROK_4_3: () => MODEL_GROK_4_3,
175
180
  MODEL_GROK_4_5: () => MODEL_GROK_4_5,
176
181
  MODEL_GROK_4_6: () => MODEL_GROK_4_6,
182
+ MODEL_INCEPTION_MERCURY_2_5: () => MODEL_INCEPTION_MERCURY_2_5,
183
+ MODEL_INCLUSIONAI_LING_3_0_FLASH_VL_FREE: () => MODEL_INCLUSIONAI_LING_3_0_FLASH_VL_FREE,
177
184
  MODEL_KIMI_K2_5: () => MODEL_KIMI_K2_5,
178
185
  MODEL_KIMI_K2_6: () => MODEL_KIMI_K2_6,
179
186
  MODEL_KIMI_K2_7_CODE: () => MODEL_KIMI_K2_7_CODE,
@@ -181,6 +188,7 @@ var AITuberOnAirChat = (() => {
181
188
  MODEL_KIMI_K3: () => MODEL_KIMI_K3,
182
189
  MODEL_KWAIPILOT_KAT_CODER_AIR_V2_5: () => MODEL_KWAIPILOT_KAT_CODER_AIR_V2_5,
183
190
  MODEL_KWAIPILOT_KAT_CODER_PRO_V2_5: () => MODEL_KWAIPILOT_KAT_CODER_PRO_V2_5,
191
+ MODEL_META_MUSE_SPARK_1_3: () => MODEL_META_MUSE_SPARK_1_3,
184
192
  MODEL_MINISTRAL_14B_2512: () => MODEL_MINISTRAL_14B_2512,
185
193
  MODEL_MINISTRAL_3B_2512: () => MODEL_MINISTRAL_3B_2512,
186
194
  MODEL_MINISTRAL_8B_2512: () => MODEL_MINISTRAL_8B_2512,
@@ -195,6 +203,8 @@ var AITuberOnAirChat = (() => {
195
203
  MODEL_MOONSHOTAI_KIMI_K2_7_CODE: () => MODEL_MOONSHOTAI_KIMI_K2_7_CODE,
196
204
  MODEL_MOONSHOTAI_KIMI_K3: () => MODEL_MOONSHOTAI_KIMI_K3,
197
205
  MODEL_MOONSHOTAI_KIMI_LATEST: () => MODEL_MOONSHOTAI_KIMI_LATEST,
206
+ MODEL_NEX_AGI_NEX_N2_5_MINI_FREE: () => MODEL_NEX_AGI_NEX_N2_5_MINI_FREE,
207
+ MODEL_NEX_AGI_NEX_N2_5_PRO_FREE: () => MODEL_NEX_AGI_NEX_N2_5_PRO_FREE,
198
208
  MODEL_O1: () => MODEL_O1,
199
209
  MODEL_O1_MINI: () => MODEL_O1_MINI,
200
210
  MODEL_O3_MINI: () => MODEL_O3_MINI,
@@ -210,10 +220,13 @@ var AITuberOnAirChat = (() => {
210
220
  MODEL_OPENAI_GPT_5_6_TERRA: () => MODEL_OPENAI_GPT_5_6_TERRA,
211
221
  MODEL_OPENAI_GPT_5_MINI: () => MODEL_OPENAI_GPT_5_MINI,
212
222
  MODEL_OPENAI_GPT_5_NANO: () => MODEL_OPENAI_GPT_5_NANO,
223
+ MODEL_OPENAI_GPT_6_ASTRA: () => MODEL_OPENAI_GPT_6_ASTRA,
224
+ MODEL_OPENAI_GPT_6_ASTRA_PRO: () => MODEL_OPENAI_GPT_6_ASTRA_PRO,
213
225
  MODEL_OPENAI_GPT_LATEST: () => MODEL_OPENAI_GPT_LATEST,
214
226
  MODEL_OPENAI_GPT_MINI_LATEST: () => MODEL_OPENAI_GPT_MINI_LATEST,
215
227
  MODEL_OPENROUTER_AUTO: () => MODEL_OPENROUTER_AUTO,
216
228
  MODEL_OPENROUTER_AUTO_BETA: () => MODEL_OPENROUTER_AUTO_BETA,
229
+ MODEL_OPENROUTER_DEEPSEEK_V4_1_FLASH: () => MODEL_OPENROUTER_DEEPSEEK_V4_1_FLASH,
217
230
  MODEL_OPENROUTER_DEEPSEEK_V4_FLASH: () => MODEL_OPENROUTER_DEEPSEEK_V4_FLASH,
218
231
  MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731: () => MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731,
219
232
  MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_VISION_EXP: () => MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_VISION_EXP,
@@ -222,6 +235,7 @@ var AITuberOnAirChat = (() => {
222
235
  MODEL_PLAMO_2_2_PRIME: () => MODEL_PLAMO_2_2_PRIME,
223
236
  MODEL_PLAMO_3_0_PRIME: () => MODEL_PLAMO_3_0_PRIME,
224
237
  MODEL_QWEN_QWEN_3_8_FLASH: () => MODEL_QWEN_QWEN_3_8_FLASH,
238
+ MODEL_QWEN_QWEN_3_8_MAX_0902: () => MODEL_QWEN_QWEN_3_8_MAX_0902,
225
239
  MODEL_SAKANA_NAMAZU: () => MODEL_SAKANA_NAMAZU,
226
240
  MODEL_XAI_GROK_4_5: () => MODEL_XAI_GROK_4_5,
227
241
  MODEL_XAI_GROK_4_6: () => MODEL_XAI_GROK_4_6,
@@ -282,6 +296,7 @@ var AITuberOnAirChat = (() => {
282
296
  getDefaultKimiReasoningEffort: () => getDefaultKimiReasoningEffort,
283
297
  getDefaultOpenRouterReasoningEffort: () => getDefaultOpenRouterReasoningEffort,
284
298
  getDefaultReasoningEffortForGPT5Model: () => getDefaultReasoningEffortForGPT5Model,
299
+ getDefaultReasoningEffortForOpenAIModel: () => getDefaultReasoningEffortForOpenAIModel,
285
300
  getDefaultXaiReasoningEffort: () => getDefaultXaiReasoningEffort,
286
301
  getDefaultZaiReasoningEffort: () => getDefaultZaiReasoningEffort,
287
302
  getGeminiSupportedReasoningEfforts: () => getGeminiSupportedReasoningEfforts,
@@ -302,6 +317,7 @@ var AITuberOnAirChat = (() => {
302
317
  isMistralReasoningEffort: () => isMistralReasoningEffort,
303
318
  isMistralReasoningEffortModel: () => isMistralReasoningEffortModel,
304
319
  isMistralVisionModel: () => isMistralVisionModel,
320
+ isOpenAIReasoningModel: () => isOpenAIReasoningModel,
305
321
  isOpenRouterFreeModel: () => isOpenRouterFreeModel,
306
322
  isOpenRouterVisionModel: () => isOpenRouterVisionModel,
307
323
  isResponsesOnlyGPT5Model: () => isResponsesOnlyGPT5Model,
@@ -336,6 +352,7 @@ var AITuberOnAirChat = (() => {
336
352
  // src/constants/openai.ts
337
353
  var ENDPOINT_OPENAI_CHAT_COMPLETIONS_API = "https://api.openai.com/v1/chat/completions";
338
354
  var ENDPOINT_OPENAI_RESPONSES_API = "https://api.openai.com/v1/responses";
355
+ var MODEL_GPT_6_ASTRA = "gpt-6-astra";
339
356
  var MODEL_GPT_5_NANO = "gpt-5-nano";
340
357
  var MODEL_GPT_5_MINI = "gpt-5-mini";
341
358
  var MODEL_GPT_5 = "gpt-5";
@@ -358,6 +375,7 @@ var AITuberOnAirChat = (() => {
358
375
  var MODEL_O1_MINI = "o1-mini";
359
376
  var MODEL_O1 = "o1";
360
377
  var VISION_SUPPORTED_MODELS = [
378
+ MODEL_GPT_6_ASTRA,
361
379
  MODEL_GPT_5_NANO,
362
380
  MODEL_GPT_5_MINI,
363
381
  MODEL_GPT_5,
@@ -397,14 +415,17 @@ var AITuberOnAirChat = (() => {
397
415
  function isGPT5Model(model) {
398
416
  return GPT_5_MODELS.includes(model);
399
417
  }
418
+ function isOpenAIReasoningModel(model) {
419
+ return model === MODEL_GPT_6_ASTRA || isGPT5Model(model);
420
+ }
400
421
  function isResponsesOnlyGPT5Model(model) {
401
422
  return model === MODEL_GPT_5_4_PRO;
402
423
  }
403
424
  function allowsReasoningXHigh(model) {
404
- return 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;
425
+ return model === MODEL_GPT_6_ASTRA || 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;
405
426
  }
406
427
  function allowsReasoningMax(model) {
407
- return model === MODEL_GPT_5_6 || model === MODEL_GPT_5_6_SOL || model === MODEL_GPT_5_6_TERRA || model === MODEL_GPT_5_6_LUNA;
428
+ return model === MODEL_GPT_6_ASTRA || model === MODEL_GPT_5_6 || model === MODEL_GPT_5_6_SOL || model === MODEL_GPT_5_6_TERRA || model === MODEL_GPT_5_6_LUNA;
408
429
  }
409
430
  function allowsReasoningNone(model) {
410
431
  return 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;
@@ -424,6 +445,9 @@ var AITuberOnAirChat = (() => {
424
445
  }
425
446
  return "medium";
426
447
  }
448
+ function getDefaultReasoningEffortForOpenAIModel(model) {
449
+ return model === MODEL_GPT_6_ASTRA ? "low" : getDefaultReasoningEffortForGPT5Model(model);
450
+ }
427
451
 
428
452
  // src/constants/gemini.ts
429
453
  var ENDPOINT_GEMINI_API = "https://generativelanguage.googleapis.com";
@@ -520,6 +544,7 @@ var AITuberOnAirChat = (() => {
520
544
 
521
545
  // src/constants/claude.ts
522
546
  var ENDPOINT_CLAUDE_API = "https://api.anthropic.com/v1/messages";
547
+ var MODEL_CLAUDE_5_1_FABLE = "claude-fable-5-1";
523
548
  var MODEL_CLAUDE_3_HAIKU = "claude-3-haiku-20240307";
524
549
  var MODEL_CLAUDE_3_5_HAIKU = "claude-3-5-haiku-20241022";
525
550
  var MODEL_CLAUDE_3_5_SONNET = "claude-3-5-sonnet-20241022";
@@ -564,11 +589,13 @@ var AITuberOnAirChat = (() => {
564
589
  [MODEL_CLAUDE_4_6_OPUS]: CLAUDE_MAX_REASONING_EFFORTS,
565
590
  [MODEL_CLAUDE_4_7_OPUS]: CLAUDE_XHIGH_REASONING_EFFORTS,
566
591
  [MODEL_CLAUDE_4_8_OPUS]: CLAUDE_XHIGH_REASONING_EFFORTS,
592
+ [MODEL_CLAUDE_5_1_FABLE]: CLAUDE_XHIGH_REASONING_EFFORTS,
567
593
  [MODEL_CLAUDE_5_FABLE]: CLAUDE_XHIGH_REASONING_EFFORTS,
568
594
  [MODEL_CLAUDE_5_SONNET]: CLAUDE_XHIGH_REASONING_EFFORTS,
569
595
  [MODEL_CLAUDE_5_OPUS]: CLAUDE_XHIGH_REASONING_EFFORTS
570
596
  };
571
597
  var CLAUDE_VISION_SUPPORTED_MODELS = [
598
+ MODEL_CLAUDE_5_1_FABLE,
572
599
  MODEL_CLAUDE_4_5_SONNET,
573
600
  MODEL_CLAUDE_4_5_HAIKU,
574
601
  MODEL_CLAUDE_4_5_OPUS,
@@ -605,6 +632,17 @@ var AITuberOnAirChat = (() => {
605
632
 
606
633
  // src/constants/openrouter.ts
607
634
  var ENDPOINT_OPENROUTER_API = "https://openrouter.ai/api/v1/chat/completions";
635
+ var MODEL_OPENAI_GPT_6_ASTRA = "openai/gpt-6-astra";
636
+ var MODEL_OPENAI_GPT_6_ASTRA_PRO = "openai/gpt-6-astra-pro";
637
+ var MODEL_ANTHROPIC_CLAUDE_FABLE_5_1 = "anthropic/claude-fable-5.1";
638
+ var MODEL_OPENROUTER_DEEPSEEK_V4_1_FLASH = "deepseek/deepseek-v4.1-flash";
639
+ var MODEL_GOOGLE_GEMINI_3_8_FLASH = "google/gemini-3.8-flash";
640
+ var MODEL_INCLUSIONAI_LING_3_0_FLASH_VL_FREE = "inclusionai/ling-3.0-flash-vl:free";
641
+ var MODEL_INCEPTION_MERCURY_2_5 = "inception/mercury-2.5";
642
+ var MODEL_NEX_AGI_NEX_N2_5_MINI_FREE = "nex-agi/nex-n2.5-mini:free";
643
+ var MODEL_NEX_AGI_NEX_N2_5_PRO_FREE = "nex-agi/nex-n2.5-pro:free";
644
+ var MODEL_QWEN_QWEN_3_8_MAX_0902 = "qwen/qwen3.8-max-0902";
645
+ var MODEL_META_MUSE_SPARK_1_3 = "meta/muse-spark-1.3";
608
646
  var MODEL_OPENROUTER_AUTO = "openrouter/auto";
609
647
  var MODEL_OPENROUTER_AUTO_BETA = "openrouter/auto-beta";
610
648
  var MODEL_OPENROUTER_FUSION = "openrouter/fusion";
@@ -711,8 +749,69 @@ var AITuberOnAirChat = (() => {
711
749
  "xhigh",
712
750
  "max"
713
751
  ];
714
- var OPENROUTER_FREE_MODELS = [MODEL_GPT_OSS_20B_FREE];
752
+ var OPENROUTER_MODEL_REASONING = {
753
+ [MODEL_OPENAI_GPT_6_ASTRA]: {
754
+ efforts: ["max", "xhigh", "high", "medium", "low"],
755
+ defaultEffort: "medium"
756
+ },
757
+ [MODEL_OPENAI_GPT_6_ASTRA_PRO]: {
758
+ efforts: ["max", "xhigh", "high", "medium", "low"],
759
+ defaultEffort: "medium"
760
+ },
761
+ [MODEL_ANTHROPIC_CLAUDE_FABLE_5_1]: {
762
+ efforts: ["max", "xhigh", "high", "medium", "low"],
763
+ defaultEffort: "high"
764
+ },
765
+ [MODEL_OPENROUTER_DEEPSEEK_V4_1_FLASH]: {
766
+ efforts: ["max", "high", "low", "none"],
767
+ defaultEffort: "none"
768
+ },
769
+ [MODEL_GOOGLE_GEMINI_3_8_FLASH]: {
770
+ efforts: ["high", "medium", "low"],
771
+ defaultEffort: "medium"
772
+ },
773
+ [MODEL_INCLUSIONAI_LING_3_0_FLASH_VL_FREE]: {
774
+ efforts: [],
775
+ defaultEffort: void 0
776
+ },
777
+ [MODEL_INCEPTION_MERCURY_2_5]: {
778
+ efforts: ["high", "medium", "low", "none"],
779
+ defaultEffort: "none"
780
+ },
781
+ [MODEL_NEX_AGI_NEX_N2_5_MINI_FREE]: {
782
+ efforts: ["high", "medium", "none"],
783
+ defaultEffort: "none"
784
+ },
785
+ [MODEL_NEX_AGI_NEX_N2_5_PRO_FREE]: {
786
+ efforts: ["high", "medium", "none"],
787
+ defaultEffort: "none"
788
+ },
789
+ [MODEL_QWEN_QWEN_3_8_MAX_0902]: {
790
+ efforts: ["xhigh", "high", "medium", "low", "minimal"],
791
+ defaultEffort: "xhigh"
792
+ },
793
+ [MODEL_META_MUSE_SPARK_1_3]: {
794
+ efforts: ["max", "xhigh", "high", "medium", "low", "minimal"],
795
+ defaultEffort: "medium"
796
+ }
797
+ };
798
+ var OPENROUTER_FREE_MODELS = [
799
+ MODEL_GPT_OSS_20B_FREE,
800
+ MODEL_INCLUSIONAI_LING_3_0_FLASH_VL_FREE,
801
+ MODEL_NEX_AGI_NEX_N2_5_MINI_FREE,
802
+ MODEL_NEX_AGI_NEX_N2_5_PRO_FREE
803
+ ];
715
804
  var OPENROUTER_VISION_SUPPORTED_MODELS = [
805
+ MODEL_OPENAI_GPT_6_ASTRA,
806
+ MODEL_OPENAI_GPT_6_ASTRA_PRO,
807
+ MODEL_ANTHROPIC_CLAUDE_FABLE_5_1,
808
+ MODEL_OPENROUTER_DEEPSEEK_V4_1_FLASH,
809
+ MODEL_GOOGLE_GEMINI_3_8_FLASH,
810
+ MODEL_INCLUSIONAI_LING_3_0_FLASH_VL_FREE,
811
+ MODEL_NEX_AGI_NEX_N2_5_MINI_FREE,
812
+ MODEL_NEX_AGI_NEX_N2_5_PRO_FREE,
813
+ MODEL_QWEN_QWEN_3_8_MAX_0902,
814
+ MODEL_META_MUSE_SPARK_1_3,
716
815
  MODEL_OPENROUTER_AUTO_BETA,
717
816
  MODEL_MOONSHOTAI_KIMI_K3,
718
817
  MODEL_MOONSHOTAI_KIMI_K2_6,
@@ -770,6 +869,11 @@ var AITuberOnAirChat = (() => {
770
869
  }
771
870
  function getOpenRouterSupportedReasoningEfforts(model) {
772
871
  const normalizedModel = model.trim();
872
+ const profile = Object.prototype.hasOwnProperty.call(
873
+ OPENROUTER_MODEL_REASONING,
874
+ normalizedModel
875
+ ) ? OPENROUTER_MODEL_REASONING[normalizedModel] : void 0;
876
+ if (profile) return profile.efforts;
773
877
  if (normalizedModel === MODEL_ZAI_GLM_5_3 || normalizedModel === MODEL_ZAI_GLM_5_3_FLASH) {
774
878
  return OPENROUTER_ALWAYS_THINKING_REASONING_EFFORTS;
775
879
  }
@@ -792,6 +896,11 @@ var AITuberOnAirChat = (() => {
792
896
  }
793
897
  function getDefaultOpenRouterReasoningEffort(model) {
794
898
  const normalizedModel = model.trim();
899
+ const profile = Object.prototype.hasOwnProperty.call(
900
+ OPENROUTER_MODEL_REASONING,
901
+ normalizedModel
902
+ ) ? OPENROUTER_MODEL_REASONING[normalizedModel] : void 0;
903
+ if (profile) return profile.defaultEffort;
795
904
  if (normalizedModel === MODEL_ZAI_GLM_5_3 || normalizedModel === MODEL_ZAI_GLM_5_3_FLASH) {
796
905
  return "low";
797
906
  }
@@ -799,7 +908,15 @@ var AITuberOnAirChat = (() => {
799
908
  }
800
909
  function normalizeOpenRouterReasoningEffort(model, effort) {
801
910
  const normalizedModel = model.trim();
911
+ const profile = Object.prototype.hasOwnProperty.call(
912
+ OPENROUTER_MODEL_REASONING,
913
+ normalizedModel
914
+ ) ? OPENROUTER_MODEL_REASONING[normalizedModel] : void 0;
802
915
  const requested = effort ?? getDefaultOpenRouterReasoningEffort(model);
916
+ if (profile) {
917
+ if (requested && profile.efforts.includes(requested)) return requested;
918
+ return profile.defaultEffort;
919
+ }
803
920
  if (!requested) {
804
921
  return void 0;
805
922
  }
@@ -1035,6 +1152,7 @@ var AITuberOnAirChat = (() => {
1035
1152
  // src/constants/deepseek.ts
1036
1153
  var DEEPSEEK_API_BASE_URL = "https://api.deepseek.com";
1037
1154
  var ENDPOINT_DEEPSEEK_CHAT_COMPLETIONS_API = `${DEEPSEEK_API_BASE_URL}/chat/completions`;
1155
+ var MODEL_DEEPSEEK_FLASH = "deepseek-flash";
1038
1156
  var MODEL_DEEPSEEK_V4_FLASH = "deepseek-v4-flash";
1039
1157
  var MODEL_DEEPSEEK_V4_PRO = "deepseek-v4-pro";
1040
1158
  var MODEL_DEEPSEEK_V4_FLASH_VISION_EXP = "deepseek-v4-flash-vision-exp";
@@ -1052,11 +1170,13 @@ var AITuberOnAirChat = (() => {
1052
1170
  var MODEL_DEEPSEEK_CHAT = "deepseek-chat";
1053
1171
  var MODEL_DEEPSEEK_REASONER = "deepseek-reasoner";
1054
1172
  var DEEPSEEK_SUPPORTED_MODELS = [
1173
+ MODEL_DEEPSEEK_FLASH,
1055
1174
  MODEL_DEEPSEEK_V4_FLASH,
1056
1175
  MODEL_DEEPSEEK_V4_PRO,
1057
1176
  MODEL_DEEPSEEK_V4_FLASH_VISION_EXP
1058
1177
  ];
1059
1178
  var DEEPSEEK_VISION_SUPPORTED_MODELS = [
1179
+ MODEL_DEEPSEEK_FLASH,
1060
1180
  MODEL_DEEPSEEK_V4_FLASH_VISION_EXP
1061
1181
  ];
1062
1182
  var DEEPSEEK_DEPRECATED_MODELS = [
@@ -1064,7 +1184,7 @@ var AITuberOnAirChat = (() => {
1064
1184
  MODEL_DEEPSEEK_REASONER
1065
1185
  ];
1066
1186
  function getDeepSeekSupportedReasoningEfforts(model) {
1067
- if (model === MODEL_DEEPSEEK_V4_FLASH) {
1187
+ if (model === MODEL_DEEPSEEK_FLASH || model === MODEL_DEEPSEEK_V4_FLASH) {
1068
1188
  return DEEPSEEK_V4_FLASH_REASONING_EFFORTS;
1069
1189
  }
1070
1190
  if (model === MODEL_DEEPSEEK_V4_FLASH_VISION_EXP) {
@@ -2505,6 +2625,7 @@ If it's in another language, summarize in that language.
2505
2625
  MODEL_CLAUDE_4_6_OPUS,
2506
2626
  MODEL_CLAUDE_4_7_OPUS,
2507
2627
  MODEL_CLAUDE_4_8_OPUS,
2628
+ MODEL_CLAUDE_5_1_FABLE,
2508
2629
  MODEL_CLAUDE_5_FABLE,
2509
2630
  MODEL_CLAUDE_5_SONNET,
2510
2631
  MODEL_CLAUDE_5_OPUS
@@ -2852,6 +2973,9 @@ If it's in another language, summarize in that language.
2852
2973
  chatTemplateThinking,
2853
2974
  maxTokens
2854
2975
  }) {
2976
+ if (model === MODEL_GPT_6_ASTRA && (!reasoning_effort || reasoning_effort === "none" || reasoning_effort === "minimal")) {
2977
+ reasoning_effort = "low";
2978
+ }
2855
2979
  const isResponsesAPI = endpoint === ENDPOINT_OPENAI_RESPONSES_API;
2856
2980
  validateMCPCompatibility(endpoint, mcpServers);
2857
2981
  const body = {
@@ -2883,7 +3007,7 @@ If it's in another language, summarize in that language.
2883
3007
  } else {
2884
3008
  body.messages = provider === "mistral" ? cleanMessagesForMistralChatCompletions(messages) : messages;
2885
3009
  }
2886
- if (isGPT5Model(model)) {
3010
+ if (isOpenAIReasoningModel(model)) {
2887
3011
  if (isResponsesAPI) {
2888
3012
  if (reasoning_effort) {
2889
3013
  body.reasoning = {
@@ -2961,10 +3085,10 @@ If it's in another language, summarize in that language.
2961
3085
  return maxTokens;
2962
3086
  }
2963
3087
  const baseTokenLimit = usesCompatibleChatCompletions(provider) ? responseLength !== void 0 ? getMaxTokensForResponseLength(responseLength) : void 0 : getMaxTokensForResponseLength(responseLength);
2964
- if (provider !== "openai" || !isGPT5Model(model) || responseLength === void 0) {
3088
+ if (provider !== "openai" || !isOpenAIReasoningModel(model) || responseLength === void 0) {
2965
3089
  return baseTokenLimit;
2966
3090
  }
2967
- const effectiveReasoningEffort = reasoning_effort ?? getDefaultReasoningEffortForGPT5Model(model);
3091
+ const effectiveReasoningEffort = reasoning_effort ?? getDefaultReasoningEffortForOpenAIModel(model);
2968
3092
  return Math.max(
2969
3093
  baseTokenLimit ?? 0,
2970
3094
  GPT5_RESPONSE_LENGTH_MIN_TOKENS[responseLength],
@@ -3069,7 +3193,7 @@ If it's in another language, summarize in that language.
3069
3193
  this.apiKey = apiKey;
3070
3194
  this.model = model;
3071
3195
  this.tools = tools || [];
3072
- this.endpoint = endpoint;
3196
+ this.endpoint = (model === MODEL_GPT_6_ASTRA || visionModel === MODEL_GPT_6_ASTRA) && endpoint === ENDPOINT_OPENAI_CHAT_COMPLETIONS_API ? ENDPOINT_OPENAI_RESPONSES_API : endpoint;
3073
3197
  this.mcpServers = mcpServers;
3074
3198
  this.responseLength = responseLength;
3075
3199
  this.verbosity = verbosity;
@@ -4935,11 +5059,11 @@ If it's in another language, summarize in that language.
4935
5059
  const mcpServers = optimizedOptions.mcpServers ?? [];
4936
5060
  const modelName = optimizedOptions.model || this.getDefaultModel();
4937
5061
  let shouldUseResponsesAPI = false;
4938
- if (mcpServers.length > 0) {
5062
+ if (mcpServers.length > 0 || modelName === MODEL_GPT_6_ASTRA || visionModel === MODEL_GPT_6_ASTRA) {
4939
5063
  shouldUseResponsesAPI = true;
4940
5064
  } else if (isResponsesOnlyGPT5Model(modelName)) {
4941
5065
  shouldUseResponsesAPI = true;
4942
- } else if (isGPT5Model(modelName)) {
5066
+ } else if (isOpenAIReasoningModel(modelName)) {
4943
5067
  const preference = optimizedOptions.gpt5EndpointPreference || "chat";
4944
5068
  shouldUseResponsesAPI = preference === "responses";
4945
5069
  }
@@ -4982,6 +5106,7 @@ If it's in another language, summarize in that language.
4982
5106
  MODEL_GPT_5_4,
4983
5107
  MODEL_GPT_5_5,
4984
5108
  MODEL_GPT_5_6,
5109
+ MODEL_GPT_6_ASTRA,
4985
5110
  MODEL_GPT_5_6_SOL,
4986
5111
  MODEL_GPT_5_6_TERRA,
4987
5112
  MODEL_GPT_5_6_LUNA,
@@ -5033,7 +5158,7 @@ If it's in another language, summarize in that language.
5033
5158
  */
5034
5159
  optimizeGPT5Options(options) {
5035
5160
  const modelName = options.model || this.getDefaultModel();
5036
- if (!isGPT5Model(modelName)) {
5161
+ if (!isOpenAIReasoningModel(modelName)) {
5037
5162
  return options;
5038
5163
  }
5039
5164
  const optimized = { ...options };
@@ -5043,7 +5168,7 @@ If it's in another language, summarize in that language.
5043
5168
  optimized.verbosity = preset.verbosity;
5044
5169
  } else {
5045
5170
  if (!options.reasoning_effort) {
5046
- optimized.reasoning_effort = getDefaultReasoningEffortForGPT5Model(modelName);
5171
+ optimized.reasoning_effort = getDefaultReasoningEffortForOpenAIModel(modelName);
5047
5172
  }
5048
5173
  }
5049
5174
  optimized.reasoning_effort = this.normalizeReasoningEffort(
@@ -5314,7 +5439,7 @@ If it's in another language, summarize in that language.
5314
5439
  if (reasoningEffort !== void 0 || this.includeReasoning !== void 0 || this.reasoningMaxTokens || defaultReasoningEffort) {
5315
5440
  body.reasoning = {};
5316
5441
  if (reasoningEffort) {
5317
- const effort = reasoningEffort === "minimal" ? "low" : reasoningEffort;
5442
+ const effort = reasoningEffort === "minimal" && model !== MODEL_QWEN_QWEN_3_8_MAX_0902 && model !== MODEL_META_MUSE_SPARK_1_3 ? "low" : reasoningEffort;
5318
5443
  body.reasoning.effort = effort;
5319
5444
  } else if (defaultReasoningEffort) {
5320
5445
  body.reasoning.effort = defaultReasoningEffort;
@@ -5330,7 +5455,9 @@ If it's in another language, summarize in that language.
5330
5455
  }
5331
5456
  if (this.tools.length > 0) {
5332
5457
  body.tools = buildOpenAICompatibleTools(this.tools, "chat-completions");
5333
- body.tool_choice = "auto";
5458
+ if (model !== MODEL_ANTHROPIC_CLAUDE_FABLE_5_1) {
5459
+ body.tool_choice = "auto";
5460
+ }
5334
5461
  }
5335
5462
  return body;
5336
5463
  }
@@ -5416,6 +5543,17 @@ If it's in another language, summarize in that language.
5416
5543
  */
5417
5544
  getSupportedModels() {
5418
5545
  return [
5546
+ MODEL_OPENAI_GPT_6_ASTRA,
5547
+ MODEL_OPENAI_GPT_6_ASTRA_PRO,
5548
+ MODEL_ANTHROPIC_CLAUDE_FABLE_5_1,
5549
+ MODEL_OPENROUTER_DEEPSEEK_V4_1_FLASH,
5550
+ MODEL_GOOGLE_GEMINI_3_8_FLASH,
5551
+ MODEL_INCLUSIONAI_LING_3_0_FLASH_VL_FREE,
5552
+ MODEL_INCEPTION_MERCURY_2_5,
5553
+ MODEL_NEX_AGI_NEX_N2_5_MINI_FREE,
5554
+ MODEL_NEX_AGI_NEX_N2_5_PRO_FREE,
5555
+ MODEL_QWEN_QWEN_3_8_MAX_0902,
5556
+ MODEL_META_MUSE_SPARK_1_3,
5419
5557
  // OpenRouter routing
5420
5558
  MODEL_OPENROUTER_AUTO,
5421
5559
  MODEL_OPENROUTER_AUTO_BETA,
@@ -6415,7 +6553,7 @@ If it's in another language, summarize in that language.
6415
6553
  mcp: MCP_SUPPORTED_PROVIDERS.has(providerName),
6416
6554
  jsonMode: JSON_MODE_SUPPORTED_PROVIDERS.has(providerName),
6417
6555
  responseLength: true,
6418
- 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] ?? []
6556
+ reasoningEffort: providerName === "openai" && model === MODEL_GPT_6_ASTRA ? ["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] ?? []
6419
6557
  };
6420
6558
  }
6421
6559
  /**