@aituber-onair/chat 0.51.0 → 0.53.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 (183) hide show
  1. package/README.ja.md +61 -41
  2. package/README.md +60 -42
  3. package/dist/cjs/constants/claude.d.ts +2 -0
  4. package/dist/cjs/constants/claude.d.ts.map +1 -1
  5. package/dist/cjs/constants/claude.js +13 -4
  6. package/dist/cjs/constants/claude.js.map +1 -1
  7. package/dist/cjs/constants/deepseek.d.ts +3 -0
  8. package/dist/cjs/constants/deepseek.d.ts.map +1 -1
  9. package/dist/cjs/constants/deepseek.js +13 -1
  10. package/dist/cjs/constants/deepseek.js.map +1 -1
  11. package/dist/cjs/constants/gemini.d.ts +1 -0
  12. package/dist/cjs/constants/gemini.d.ts.map +1 -1
  13. package/dist/cjs/constants/gemini.js +11 -1
  14. package/dist/cjs/constants/gemini.js.map +1 -1
  15. package/dist/cjs/constants/mistral.d.ts +2 -0
  16. package/dist/cjs/constants/mistral.d.ts.map +1 -1
  17. package/dist/cjs/constants/mistral.js +3 -3
  18. package/dist/cjs/constants/mistral.js.map +1 -1
  19. package/dist/cjs/constants/openrouter.d.ts +12 -0
  20. package/dist/cjs/constants/openrouter.d.ts.map +1 -1
  21. package/dist/cjs/constants/openrouter.js +108 -9
  22. package/dist/cjs/constants/openrouter.js.map +1 -1
  23. package/dist/cjs/constants/plamo.d.ts +2 -0
  24. package/dist/cjs/constants/plamo.d.ts.map +1 -1
  25. package/dist/cjs/constants/plamo.js +4 -5
  26. package/dist/cjs/constants/plamo.js.map +1 -1
  27. package/dist/cjs/constants/sakana.d.ts +6 -0
  28. package/dist/cjs/constants/sakana.d.ts.map +1 -1
  29. package/dist/cjs/constants/sakana.js +15 -1
  30. package/dist/cjs/constants/sakana.js.map +1 -1
  31. package/dist/cjs/constants/xai.d.ts +1 -0
  32. package/dist/cjs/constants/xai.d.ts.map +1 -1
  33. package/dist/cjs/constants/xai.js +7 -3
  34. package/dist/cjs/constants/xai.js.map +1 -1
  35. package/dist/cjs/constants/zai.d.ts +11 -0
  36. package/dist/cjs/constants/zai.d.ts.map +1 -1
  37. package/dist/cjs/constants/zai.js +69 -2
  38. package/dist/cjs/constants/zai.js.map +1 -1
  39. package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -1
  40. package/dist/cjs/services/ChatServiceFactory.js +16 -9
  41. package/dist/cjs/services/ChatServiceFactory.js.map +1 -1
  42. package/dist/cjs/services/providers/ChatServiceProvider.d.ts +7 -3
  43. package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -1
  44. package/dist/cjs/services/providers/claude/ClaudeChatService.d.ts +2 -3
  45. package/dist/cjs/services/providers/claude/ClaudeChatService.d.ts.map +1 -1
  46. package/dist/cjs/services/providers/claude/ClaudeChatService.js +23 -15
  47. package/dist/cjs/services/providers/claude/ClaudeChatService.js.map +1 -1
  48. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  49. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js +1 -3
  50. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  51. package/dist/cjs/services/providers/deepseek/DeepSeekChatServiceProvider.d.ts +2 -2
  52. package/dist/cjs/services/providers/deepseek/DeepSeekChatServiceProvider.d.ts.map +1 -1
  53. package/dist/cjs/services/providers/deepseek/DeepSeekChatServiceProvider.js +16 -7
  54. package/dist/cjs/services/providers/deepseek/DeepSeekChatServiceProvider.js.map +1 -1
  55. package/dist/cjs/services/providers/openai/OpenAIChatService.d.ts +2 -1
  56. package/dist/cjs/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
  57. package/dist/cjs/services/providers/openai/OpenAIChatService.js +3 -1
  58. package/dist/cjs/services/providers/openai/OpenAIChatService.js.map +1 -1
  59. package/dist/cjs/services/providers/openai/openaiRequestBuilder.d.ts +2 -1
  60. package/dist/cjs/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
  61. package/dist/cjs/services/providers/openai/openaiRequestBuilder.js +4 -1
  62. package/dist/cjs/services/providers/openai/openaiRequestBuilder.js.map +1 -1
  63. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
  64. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js +6 -1
  65. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
  66. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  67. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js +11 -4
  68. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  69. package/dist/cjs/services/providers/sakana/SakanaChatService.d.ts +3 -1
  70. package/dist/cjs/services/providers/sakana/SakanaChatService.d.ts.map +1 -1
  71. package/dist/cjs/services/providers/sakana/SakanaChatService.js +2 -2
  72. package/dist/cjs/services/providers/sakana/SakanaChatService.js.map +1 -1
  73. package/dist/cjs/services/providers/sakana/SakanaChatServiceProvider.d.ts +2 -2
  74. package/dist/cjs/services/providers/sakana/SakanaChatServiceProvider.d.ts.map +1 -1
  75. package/dist/cjs/services/providers/sakana/SakanaChatServiceProvider.js +22 -7
  76. package/dist/cjs/services/providers/sakana/SakanaChatServiceProvider.js.map +1 -1
  77. package/dist/cjs/services/providers/xai/XAIChatService.d.ts.map +1 -1
  78. package/dist/cjs/services/providers/xai/XAIChatService.js +1 -1
  79. package/dist/cjs/services/providers/xai/XAIChatService.js.map +1 -1
  80. package/dist/cjs/services/providers/xai/XAIChatServiceProvider.d.ts.map +1 -1
  81. package/dist/cjs/services/providers/xai/XAIChatServiceProvider.js +2 -4
  82. package/dist/cjs/services/providers/xai/XAIChatServiceProvider.js.map +1 -1
  83. package/dist/cjs/services/providers/zai/ZAIChatService.d.ts +3 -1
  84. package/dist/cjs/services/providers/zai/ZAIChatService.d.ts.map +1 -1
  85. package/dist/cjs/services/providers/zai/ZAIChatService.js +5 -1
  86. package/dist/cjs/services/providers/zai/ZAIChatService.js.map +1 -1
  87. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
  88. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js +37 -2
  89. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
  90. package/dist/cjs/types/toolChat.d.ts +6 -0
  91. package/dist/cjs/types/toolChat.d.ts.map +1 -1
  92. package/dist/esm/constants/claude.d.ts +2 -0
  93. package/dist/esm/constants/claude.d.ts.map +1 -1
  94. package/dist/esm/constants/claude.js +12 -3
  95. package/dist/esm/constants/claude.js.map +1 -1
  96. package/dist/esm/constants/deepseek.d.ts +3 -0
  97. package/dist/esm/constants/deepseek.d.ts.map +1 -1
  98. package/dist/esm/constants/deepseek.js +11 -0
  99. package/dist/esm/constants/deepseek.js.map +1 -1
  100. package/dist/esm/constants/gemini.d.ts +1 -0
  101. package/dist/esm/constants/gemini.d.ts.map +1 -1
  102. package/dist/esm/constants/gemini.js +10 -0
  103. package/dist/esm/constants/gemini.js.map +1 -1
  104. package/dist/esm/constants/mistral.d.ts +2 -0
  105. package/dist/esm/constants/mistral.d.ts.map +1 -1
  106. package/dist/esm/constants/mistral.js +2 -2
  107. package/dist/esm/constants/mistral.js.map +1 -1
  108. package/dist/esm/constants/openrouter.d.ts +12 -0
  109. package/dist/esm/constants/openrouter.d.ts.map +1 -1
  110. package/dist/esm/constants/openrouter.js +106 -7
  111. package/dist/esm/constants/openrouter.js.map +1 -1
  112. package/dist/esm/constants/plamo.d.ts +2 -0
  113. package/dist/esm/constants/plamo.d.ts.map +1 -1
  114. package/dist/esm/constants/plamo.js +3 -4
  115. package/dist/esm/constants/plamo.js.map +1 -1
  116. package/dist/esm/constants/sakana.d.ts +6 -0
  117. package/dist/esm/constants/sakana.d.ts.map +1 -1
  118. package/dist/esm/constants/sakana.js +13 -0
  119. package/dist/esm/constants/sakana.js.map +1 -1
  120. package/dist/esm/constants/xai.d.ts +1 -0
  121. package/dist/esm/constants/xai.d.ts.map +1 -1
  122. package/dist/esm/constants/xai.js +6 -2
  123. package/dist/esm/constants/xai.js.map +1 -1
  124. package/dist/esm/constants/zai.d.ts +11 -0
  125. package/dist/esm/constants/zai.d.ts.map +1 -1
  126. package/dist/esm/constants/zai.js +63 -1
  127. package/dist/esm/constants/zai.js.map +1 -1
  128. package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -1
  129. package/dist/esm/services/ChatServiceFactory.js +16 -9
  130. package/dist/esm/services/ChatServiceFactory.js.map +1 -1
  131. package/dist/esm/services/providers/ChatServiceProvider.d.ts +7 -3
  132. package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -1
  133. package/dist/esm/services/providers/claude/ClaudeChatService.d.ts +2 -3
  134. package/dist/esm/services/providers/claude/ClaudeChatService.d.ts.map +1 -1
  135. package/dist/esm/services/providers/claude/ClaudeChatService.js +23 -15
  136. package/dist/esm/services/providers/claude/ClaudeChatService.js.map +1 -1
  137. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  138. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js +2 -4
  139. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  140. package/dist/esm/services/providers/deepseek/DeepSeekChatServiceProvider.d.ts +2 -2
  141. package/dist/esm/services/providers/deepseek/DeepSeekChatServiceProvider.d.ts.map +1 -1
  142. package/dist/esm/services/providers/deepseek/DeepSeekChatServiceProvider.js +17 -8
  143. package/dist/esm/services/providers/deepseek/DeepSeekChatServiceProvider.js.map +1 -1
  144. package/dist/esm/services/providers/openai/OpenAIChatService.d.ts +2 -1
  145. package/dist/esm/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
  146. package/dist/esm/services/providers/openai/OpenAIChatService.js +3 -1
  147. package/dist/esm/services/providers/openai/OpenAIChatService.js.map +1 -1
  148. package/dist/esm/services/providers/openai/openaiRequestBuilder.d.ts +2 -1
  149. package/dist/esm/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
  150. package/dist/esm/services/providers/openai/openaiRequestBuilder.js +4 -1
  151. package/dist/esm/services/providers/openai/openaiRequestBuilder.js.map +1 -1
  152. package/dist/esm/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
  153. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js +7 -2
  154. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
  155. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  156. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js +12 -5
  157. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  158. package/dist/esm/services/providers/sakana/SakanaChatService.d.ts +3 -1
  159. package/dist/esm/services/providers/sakana/SakanaChatService.d.ts.map +1 -1
  160. package/dist/esm/services/providers/sakana/SakanaChatService.js +2 -2
  161. package/dist/esm/services/providers/sakana/SakanaChatService.js.map +1 -1
  162. package/dist/esm/services/providers/sakana/SakanaChatServiceProvider.d.ts +2 -2
  163. package/dist/esm/services/providers/sakana/SakanaChatServiceProvider.d.ts.map +1 -1
  164. package/dist/esm/services/providers/sakana/SakanaChatServiceProvider.js +23 -8
  165. package/dist/esm/services/providers/sakana/SakanaChatServiceProvider.js.map +1 -1
  166. package/dist/esm/services/providers/xai/XAIChatService.d.ts.map +1 -1
  167. package/dist/esm/services/providers/xai/XAIChatService.js +2 -2
  168. package/dist/esm/services/providers/xai/XAIChatService.js.map +1 -1
  169. package/dist/esm/services/providers/xai/XAIChatServiceProvider.d.ts.map +1 -1
  170. package/dist/esm/services/providers/xai/XAIChatServiceProvider.js +3 -5
  171. package/dist/esm/services/providers/xai/XAIChatServiceProvider.js.map +1 -1
  172. package/dist/esm/services/providers/zai/ZAIChatService.d.ts +3 -1
  173. package/dist/esm/services/providers/zai/ZAIChatService.d.ts.map +1 -1
  174. package/dist/esm/services/providers/zai/ZAIChatService.js +6 -2
  175. package/dist/esm/services/providers/zai/ZAIChatService.js.map +1 -1
  176. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
  177. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js +38 -3
  178. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
  179. package/dist/esm/types/toolChat.d.ts +6 -0
  180. package/dist/esm/types/toolChat.d.ts.map +1 -1
  181. package/dist/umd/aituber-onair-chat.js +376 -71
  182. package/dist/umd/aituber-onair-chat.min.js +9 -9
  183. package/package.json +1 -1
@@ -22,6 +22,7 @@ var AITuberOnAirChat = (() => {
22
22
  var index_exports = {};
23
23
  __export(index_exports, {
24
24
  CHAT_RESPONSE_LENGTH: () => CHAT_RESPONSE_LENGTH,
25
+ CLAUDE_DEPRECATED_MODELS: () => CLAUDE_DEPRECATED_MODELS,
25
26
  CLAUDE_VISION_SUPPORTED_MODELS: () => CLAUDE_VISION_SUPPORTED_MODELS,
26
27
  ChatServiceFactory: () => ChatServiceFactory,
27
28
  ChatServiceHttpClient: () => ChatServiceHttpClient,
@@ -30,6 +31,7 @@ var AITuberOnAirChat = (() => {
30
31
  DEEPSEEK_API_BASE_URL: () => DEEPSEEK_API_BASE_URL,
31
32
  DEEPSEEK_DEPRECATED_MODELS: () => DEEPSEEK_DEPRECATED_MODELS,
32
33
  DEEPSEEK_SUPPORTED_MODELS: () => DEEPSEEK_SUPPORTED_MODELS,
34
+ DEEPSEEK_VISION_SUPPORTED_MODELS: () => DEEPSEEK_VISION_SUPPORTED_MODELS,
33
35
  DEFAULT_MAX_TOKENS: () => DEFAULT_MAX_TOKENS,
34
36
  DEFAULT_SUMMARY_PROMPT_TEMPLATE: () => DEFAULT_SUMMARY_PROMPT_TEMPLATE,
35
37
  DEFAULT_VISION_PROMPT: () => DEFAULT_VISION_PROMPT,
@@ -67,16 +69,20 @@ var AITuberOnAirChat = (() => {
67
69
  KimiChatServiceProvider: () => KimiChatServiceProvider,
68
70
  MAX_TOKENS_BY_LENGTH: () => MAX_TOKENS_BY_LENGTH,
69
71
  MISTRAL_API_BASE_URL: () => MISTRAL_API_BASE_URL,
72
+ MISTRAL_DEPRECATED_MODELS: () => MISTRAL_DEPRECATED_MODELS,
70
73
  MISTRAL_REASONING_EFFORT_SUPPORTED_MODELS: () => MISTRAL_REASONING_EFFORT_SUPPORTED_MODELS,
71
74
  MISTRAL_SUPPORTED_MODELS: () => MISTRAL_SUPPORTED_MODELS,
72
75
  MISTRAL_VISION_SUPPORTED_MODELS: () => MISTRAL_VISION_SUPPORTED_MODELS,
73
76
  MODEL_ANTHROPIC_CLAUDE_3_5_SONNET: () => MODEL_ANTHROPIC_CLAUDE_3_5_SONNET,
74
77
  MODEL_ANTHROPIC_CLAUDE_3_7_SONNET: () => MODEL_ANTHROPIC_CLAUDE_3_7_SONNET,
75
78
  MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU: () => MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU,
79
+ MODEL_ANTHROPIC_CLAUDE_FABLE_5: () => MODEL_ANTHROPIC_CLAUDE_FABLE_5,
76
80
  MODEL_ANTHROPIC_CLAUDE_HAIKU_LATEST: () => MODEL_ANTHROPIC_CLAUDE_HAIKU_LATEST,
77
81
  MODEL_ANTHROPIC_CLAUDE_OPUS_4: () => MODEL_ANTHROPIC_CLAUDE_OPUS_4,
82
+ MODEL_ANTHROPIC_CLAUDE_OPUS_4_8: () => MODEL_ANTHROPIC_CLAUDE_OPUS_4_8,
78
83
  MODEL_ANTHROPIC_CLAUDE_OPUS_5: () => MODEL_ANTHROPIC_CLAUDE_OPUS_5,
79
84
  MODEL_ANTHROPIC_CLAUDE_SONNET_4: () => MODEL_ANTHROPIC_CLAUDE_SONNET_4,
85
+ MODEL_ANTHROPIC_CLAUDE_SONNET_5: () => MODEL_ANTHROPIC_CLAUDE_SONNET_5,
80
86
  MODEL_ANTHROPIC_CLAUDE_SONNET_LATEST: () => MODEL_ANTHROPIC_CLAUDE_SONNET_LATEST,
81
87
  MODEL_CLAUDE_3_5_HAIKU: () => MODEL_CLAUDE_3_5_HAIKU,
82
88
  MODEL_CLAUDE_3_5_SONNET: () => MODEL_CLAUDE_3_5_SONNET,
@@ -91,15 +97,18 @@ var AITuberOnAirChat = (() => {
91
97
  MODEL_CLAUDE_4_8_OPUS: () => MODEL_CLAUDE_4_8_OPUS,
92
98
  MODEL_CLAUDE_4_OPUS: () => MODEL_CLAUDE_4_OPUS,
93
99
  MODEL_CLAUDE_4_SONNET: () => MODEL_CLAUDE_4_SONNET,
100
+ MODEL_CLAUDE_5_FABLE: () => MODEL_CLAUDE_5_FABLE,
94
101
  MODEL_CLAUDE_5_OPUS: () => MODEL_CLAUDE_5_OPUS,
95
102
  MODEL_CLAUDE_5_SONNET: () => MODEL_CLAUDE_5_SONNET,
96
103
  MODEL_DEEPSEEK_CHAT: () => MODEL_DEEPSEEK_CHAT,
97
104
  MODEL_DEEPSEEK_REASONER: () => MODEL_DEEPSEEK_REASONER,
98
105
  MODEL_DEEPSEEK_V4_FLASH: () => MODEL_DEEPSEEK_V4_FLASH,
106
+ MODEL_DEEPSEEK_V4_FLASH_VISION_EXP: () => MODEL_DEEPSEEK_V4_FLASH_VISION_EXP,
99
107
  MODEL_DEEPSEEK_V4_PRO: () => MODEL_DEEPSEEK_V4_PRO,
100
108
  MODEL_FUGU: () => MODEL_FUGU,
101
109
  MODEL_FUGU_ULTRA: () => MODEL_FUGU_ULTRA,
102
110
  MODEL_FUGU_ULTRA_20260615: () => MODEL_FUGU_ULTRA_20260615,
111
+ MODEL_FUGU_ULTRA_V1_1: () => MODEL_FUGU_ULTRA_V1_1,
103
112
  MODEL_GEMINI_2_5_FLASH: () => MODEL_GEMINI_2_5_FLASH,
104
113
  MODEL_GEMINI_2_5_FLASH_LITE: () => MODEL_GEMINI_2_5_FLASH_LITE,
105
114
  MODEL_GEMINI_2_5_FLASH_LITE_PREVIEW_06_17: () => MODEL_GEMINI_2_5_FLASH_LITE_PREVIEW_06_17,
@@ -110,6 +119,7 @@ var AITuberOnAirChat = (() => {
110
119
  MODEL_GEMINI_3_5_FLASH: () => MODEL_GEMINI_3_5_FLASH,
111
120
  MODEL_GEMINI_3_5_FLASH_LITE: () => MODEL_GEMINI_3_5_FLASH_LITE,
112
121
  MODEL_GEMINI_3_6_FLASH: () => MODEL_GEMINI_3_6_FLASH,
122
+ MODEL_GEMINI_3_7_FLASH: () => MODEL_GEMINI_3_7_FLASH,
113
123
  MODEL_GEMINI_3_FLASH_PREVIEW: () => MODEL_GEMINI_3_FLASH_PREVIEW,
114
124
  MODEL_GEMINI_3_PRO_PREVIEW: () => MODEL_GEMINI_3_PRO_PREVIEW,
115
125
  MODEL_GEMINI_NANO: () => MODEL_GEMINI_NANO,
@@ -126,12 +136,15 @@ var AITuberOnAirChat = (() => {
126
136
  MODEL_GLM_5V_TURBO: () => MODEL_GLM_5V_TURBO,
127
137
  MODEL_GLM_5_1: () => MODEL_GLM_5_1,
128
138
  MODEL_GLM_5_2: () => MODEL_GLM_5_2,
139
+ MODEL_GLM_5_3: () => MODEL_GLM_5_3,
140
+ MODEL_GLM_5_3_FLASH: () => MODEL_GLM_5_3_FLASH,
129
141
  MODEL_GLM_5_TURBO: () => MODEL_GLM_5_TURBO,
130
142
  MODEL_GOOGLE_GEMINI_2_5_FLASH: () => MODEL_GOOGLE_GEMINI_2_5_FLASH,
131
143
  MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025: () => MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025,
132
144
  MODEL_GOOGLE_GEMINI_2_5_PRO: () => MODEL_GOOGLE_GEMINI_2_5_PRO,
133
145
  MODEL_GOOGLE_GEMINI_3_5_FLASH_LITE: () => MODEL_GOOGLE_GEMINI_3_5_FLASH_LITE,
134
146
  MODEL_GOOGLE_GEMINI_3_6_FLASH: () => MODEL_GOOGLE_GEMINI_3_6_FLASH,
147
+ MODEL_GOOGLE_GEMINI_3_7_FLASH: () => MODEL_GOOGLE_GEMINI_3_7_FLASH,
135
148
  MODEL_GOOGLE_GEMINI_FLASH_LATEST: () => MODEL_GOOGLE_GEMINI_FLASH_LATEST,
136
149
  MODEL_GOOGLE_GEMINI_PRO_LATEST: () => MODEL_GOOGLE_GEMINI_PRO_LATEST,
137
150
  MODEL_GPT_4O: () => MODEL_GPT_4O,
@@ -177,6 +190,7 @@ var AITuberOnAirChat = (() => {
177
190
  MODEL_MISTRAL_SMALL_2603: () => MODEL_MISTRAL_SMALL_2603,
178
191
  MODEL_MISTRAL_SMALL_LATEST: () => MODEL_MISTRAL_SMALL_LATEST,
179
192
  MODEL_MOONSHOTAI_KIMI_K2_5: () => MODEL_MOONSHOTAI_KIMI_K2_5,
193
+ MODEL_MOONSHOTAI_KIMI_K2_6: () => MODEL_MOONSHOTAI_KIMI_K2_6,
180
194
  MODEL_MOONSHOTAI_KIMI_K2_7_CODE: () => MODEL_MOONSHOTAI_KIMI_K2_7_CODE,
181
195
  MODEL_MOONSHOTAI_KIMI_K3: () => MODEL_MOONSHOTAI_KIMI_K3,
182
196
  MODEL_MOONSHOTAI_KIMI_LATEST: () => MODEL_MOONSHOTAI_KIMI_LATEST,
@@ -201,18 +215,26 @@ var AITuberOnAirChat = (() => {
201
215
  MODEL_OPENROUTER_AUTO_BETA: () => MODEL_OPENROUTER_AUTO_BETA,
202
216
  MODEL_OPENROUTER_DEEPSEEK_V4_FLASH: () => MODEL_OPENROUTER_DEEPSEEK_V4_FLASH,
203
217
  MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731: () => MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731,
218
+ MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_VISION_EXP: () => MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_VISION_EXP,
219
+ MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813: () => MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813,
204
220
  MODEL_OPENROUTER_FUSION: () => MODEL_OPENROUTER_FUSION,
205
221
  MODEL_PLAMO_2_2_PRIME: () => MODEL_PLAMO_2_2_PRIME,
206
222
  MODEL_PLAMO_3_0_PRIME: () => MODEL_PLAMO_3_0_PRIME,
223
+ MODEL_QWEN_QWEN_3_8_FLASH: () => MODEL_QWEN_QWEN_3_8_FLASH,
224
+ MODEL_SAKANA_NAMAZU: () => MODEL_SAKANA_NAMAZU,
207
225
  MODEL_XAI_GROK_4_5: () => MODEL_XAI_GROK_4_5,
226
+ MODEL_XAI_GROK_4_6: () => MODEL_XAI_GROK_4_6,
208
227
  MODEL_XAI_GROK_LATEST: () => MODEL_XAI_GROK_LATEST,
209
228
  MODEL_ZAI_GLM_4_5_AIR: () => MODEL_ZAI_GLM_4_5_AIR,
210
229
  MODEL_ZAI_GLM_4_5_AIR_FREE: () => MODEL_ZAI_GLM_4_5_AIR_FREE,
211
230
  MODEL_ZAI_GLM_4_7_FLASH: () => MODEL_ZAI_GLM_4_7_FLASH,
212
231
  MODEL_ZAI_GLM_5_2: () => MODEL_ZAI_GLM_5_2,
232
+ MODEL_ZAI_GLM_5_3: () => MODEL_ZAI_GLM_5_3,
233
+ MODEL_ZAI_GLM_5_3_FLASH: () => MODEL_ZAI_GLM_5_3_FLASH,
213
234
  MistralChatService: () => MistralChatService,
214
235
  MistralChatServiceProvider: () => MistralChatServiceProvider,
215
236
  OPENROUTER_CREDITS_THRESHOLD: () => OPENROUTER_CREDITS_THRESHOLD,
237
+ OPENROUTER_DEPRECATED_MODELS: () => OPENROUTER_DEPRECATED_MODELS,
216
238
  OPENROUTER_FREE_DAILY_LIMIT_HIGH_CREDITS: () => OPENROUTER_FREE_DAILY_LIMIT_HIGH_CREDITS,
217
239
  OPENROUTER_FREE_DAILY_LIMIT_LOW_CREDITS: () => OPENROUTER_FREE_DAILY_LIMIT_LOW_CREDITS,
218
240
  OPENROUTER_FREE_MODELS: () => OPENROUTER_FREE_MODELS,
@@ -224,17 +246,21 @@ var AITuberOnAirChat = (() => {
224
246
  OpenRouterChatService: () => OpenRouterChatService,
225
247
  OpenRouterChatServiceProvider: () => OpenRouterChatServiceProvider,
226
248
  PLAMO_API_BASE_URL: () => PLAMO_API_BASE_URL,
249
+ PLAMO_DEPRECATED_MODELS: () => PLAMO_DEPRECATED_MODELS,
227
250
  PLAMO_SUPPORTED_MODELS: () => PLAMO_SUPPORTED_MODELS,
228
251
  PlamoChatService: () => PlamoChatService,
229
252
  PlamoChatServiceProvider: () => PlamoChatServiceProvider,
230
253
  SAKANA_API_BASE_URL: () => SAKANA_API_BASE_URL,
254
+ SAKANA_COMPATIBILITY_MODELS: () => SAKANA_COMPATIBILITY_MODELS,
231
255
  SAKANA_SUPPORTED_MODELS: () => SAKANA_SUPPORTED_MODELS,
256
+ SAKANA_VISION_SUPPORTED_MODELS: () => SAKANA_VISION_SUPPORTED_MODELS,
232
257
  SakanaChatService: () => SakanaChatService,
233
258
  SakanaChatServiceProvider: () => SakanaChatServiceProvider,
234
259
  StreamTextAccumulator: () => StreamTextAccumulator,
235
260
  VISION_SUPPORTED_MODELS: () => VISION_SUPPORTED_MODELS,
236
261
  XAIChatService: () => XAIChatService,
237
262
  XAIChatServiceProvider: () => XAIChatServiceProvider,
263
+ XAI_DEPRECATED_MODELS: () => XAI_DEPRECATED_MODELS,
238
264
  XAI_VISION_SUPPORTED_MODELS: () => XAI_VISION_SUPPORTED_MODELS,
239
265
  ZAIChatService: () => ZAIChatService,
240
266
  ZAIChatServiceProvider: () => ZAIChatServiceProvider,
@@ -256,14 +282,17 @@ var AITuberOnAirChat = (() => {
256
282
  getDefaultOpenRouterReasoningEffort: () => getDefaultOpenRouterReasoningEffort,
257
283
  getDefaultReasoningEffortForGPT5Model: () => getDefaultReasoningEffortForGPT5Model,
258
284
  getDefaultXaiReasoningEffort: () => getDefaultXaiReasoningEffort,
285
+ getDefaultZaiReasoningEffort: () => getDefaultZaiReasoningEffort,
259
286
  getGeminiSupportedReasoningEfforts: () => getGeminiSupportedReasoningEfforts,
260
287
  getKimiSupportedReasoningEfforts: () => getKimiSupportedReasoningEfforts,
261
288
  getMaxTokensForResponseLength: () => getMaxTokensForResponseLength,
262
289
  getOpenRouterSupportedReasoningEfforts: () => getOpenRouterSupportedReasoningEfforts,
263
290
  getXaiSupportedReasoningEfforts: () => getXaiSupportedReasoningEfforts,
291
+ getZaiSupportedReasoningEfforts: () => getZaiSupportedReasoningEfforts,
264
292
  installGASFetch: () => installGASFetch,
265
293
  isClaudeReasoningEffortModel: () => isClaudeReasoningEffortModel,
266
294
  isDeepSeekReasoningEffortModel: () => isDeepSeekReasoningEffortModel,
295
+ isDeepSeekVisionModel: () => isDeepSeekVisionModel,
267
296
  isGPT5Model: () => isGPT5Model,
268
297
  isGeminiReasoningEffortModel: () => isGeminiReasoningEffortModel,
269
298
  isKimiReasoningEffortModel: () => isKimiReasoningEffortModel,
@@ -275,9 +304,12 @@ var AITuberOnAirChat = (() => {
275
304
  isOpenRouterFreeModel: () => isOpenRouterFreeModel,
276
305
  isOpenRouterVisionModel: () => isOpenRouterVisionModel,
277
306
  isResponsesOnlyGPT5Model: () => isResponsesOnlyGPT5Model,
307
+ isSakanaVisionModel: () => isSakanaVisionModel,
278
308
  isXaiReasoningEffortModel: () => isXaiReasoningEffortModel,
279
309
  isXaiReasoningEffortNoneModel: () => isXaiReasoningEffortNoneModel,
280
310
  isXaiVisionModel: () => isXaiVisionModel,
311
+ isZaiAlwaysThinkingModel: () => isZaiAlwaysThinkingModel,
312
+ isZaiReasoningEffortModel: () => isZaiReasoningEffortModel,
281
313
  isZaiToolStreamModel: () => isZaiToolStreamModel,
282
314
  isZaiVisionModel: () => isZaiVisionModel,
283
315
  normalizeClaudeReasoningEffort: () => normalizeClaudeReasoningEffort,
@@ -285,6 +317,7 @@ var AITuberOnAirChat = (() => {
285
317
  normalizeGeminiReasoningEffort: () => normalizeGeminiReasoningEffort,
286
318
  normalizeOpenRouterReasoningEffort: () => normalizeOpenRouterReasoningEffort,
287
319
  normalizeXaiReasoningEffort: () => normalizeXaiReasoningEffort,
320
+ normalizeZaiReasoningEffort: () => normalizeZaiReasoningEffort,
288
321
  parseOpenAICompatibleOneShot: () => parseOpenAICompatibleOneShot,
289
322
  parseOpenAICompatibleTextStream: () => parseOpenAICompatibleTextStream,
290
323
  parseOpenAICompatibleToolStream: () => parseOpenAICompatibleToolStream,
@@ -395,6 +428,7 @@ var AITuberOnAirChat = (() => {
395
428
  var ENDPOINT_GEMINI_API = "https://generativelanguage.googleapis.com";
396
429
  var MODEL_GEMMA_4_31B_IT = "gemma-4-31b-it";
397
430
  var MODEL_GEMMA_4_26B_A4B_IT = "gemma-4-26b-a4b-it";
431
+ var MODEL_GEMINI_3_7_FLASH = "gemini-3.7-flash";
398
432
  var MODEL_GEMINI_3_6_FLASH = "gemini-3.6-flash";
399
433
  var MODEL_GEMINI_3_5_FLASH = "gemini-3.5-flash";
400
434
  var MODEL_GEMINI_3_5_FLASH_LITE = "gemini-3.5-flash-lite";
@@ -408,6 +442,7 @@ var AITuberOnAirChat = (() => {
408
442
  var MODEL_GEMINI_2_5_FLASH_LITE = "gemini-2.5-flash-lite";
409
443
  var MODEL_GEMINI_2_5_FLASH_LITE_PREVIEW_06_17 = "gemini-2.5-flash-lite-preview-06-17";
410
444
  var GEMINI_RECOMMENDED_MODELS = [
445
+ MODEL_GEMINI_3_7_FLASH,
411
446
  MODEL_GEMINI_3_6_FLASH,
412
447
  MODEL_GEMINI_3_5_FLASH,
413
448
  MODEL_GEMINI_3_5_FLASH_LITE,
@@ -440,6 +475,11 @@ var AITuberOnAirChat = (() => {
440
475
  "medium",
441
476
  "high"
442
477
  ];
478
+ var GEMINI_3_7_FLASH_REASONING_EFFORTS = [
479
+ "low",
480
+ "medium",
481
+ "high"
482
+ ];
443
483
  var GEMINI_FLASH_REASONING_EFFORT_MODELS = [
444
484
  MODEL_GEMINI_3_6_FLASH,
445
485
  MODEL_GEMINI_3_5_FLASH,
@@ -453,6 +493,9 @@ var AITuberOnAirChat = (() => {
453
493
  MODEL_GEMINI_3_PRO_PREVIEW
454
494
  ];
455
495
  function getGeminiSupportedReasoningEfforts(model) {
496
+ if (model === MODEL_GEMINI_3_7_FLASH) {
497
+ return GEMINI_3_7_FLASH_REASONING_EFFORTS;
498
+ }
456
499
  if (GEMINI_FLASH_REASONING_EFFORT_MODELS.includes(model)) {
457
500
  return GEMINI_FLASH_REASONING_EFFORTS;
458
501
  }
@@ -493,8 +536,17 @@ var AITuberOnAirChat = (() => {
493
536
  var MODEL_CLAUDE_4_6_OPUS = "claude-opus-4-6";
494
537
  var MODEL_CLAUDE_4_7_OPUS = "claude-opus-4-7";
495
538
  var MODEL_CLAUDE_4_8_OPUS = "claude-opus-4-8";
539
+ var MODEL_CLAUDE_5_FABLE = "claude-fable-5";
496
540
  var MODEL_CLAUDE_5_SONNET = "claude-sonnet-5";
497
541
  var MODEL_CLAUDE_5_OPUS = "claude-opus-5";
542
+ var CLAUDE_DEPRECATED_MODELS = [
543
+ MODEL_CLAUDE_3_HAIKU,
544
+ MODEL_CLAUDE_3_5_HAIKU,
545
+ MODEL_CLAUDE_3_5_SONNET,
546
+ MODEL_CLAUDE_3_7_SONNET,
547
+ MODEL_CLAUDE_4_SONNET,
548
+ MODEL_CLAUDE_4_OPUS
549
+ ];
498
550
  var CLAUDE_STANDARD_REASONING_EFFORTS = [
499
551
  "low",
500
552
  "medium",
@@ -515,13 +567,11 @@ var AITuberOnAirChat = (() => {
515
567
  [MODEL_CLAUDE_4_6_OPUS]: CLAUDE_MAX_REASONING_EFFORTS,
516
568
  [MODEL_CLAUDE_4_7_OPUS]: CLAUDE_XHIGH_REASONING_EFFORTS,
517
569
  [MODEL_CLAUDE_4_8_OPUS]: CLAUDE_XHIGH_REASONING_EFFORTS,
570
+ [MODEL_CLAUDE_5_FABLE]: CLAUDE_XHIGH_REASONING_EFFORTS,
518
571
  [MODEL_CLAUDE_5_SONNET]: CLAUDE_XHIGH_REASONING_EFFORTS,
519
572
  [MODEL_CLAUDE_5_OPUS]: CLAUDE_XHIGH_REASONING_EFFORTS
520
573
  };
521
574
  var CLAUDE_VISION_SUPPORTED_MODELS = [
522
- MODEL_CLAUDE_3_HAIKU,
523
- MODEL_CLAUDE_4_SONNET,
524
- MODEL_CLAUDE_4_OPUS,
525
575
  MODEL_CLAUDE_4_5_SONNET,
526
576
  MODEL_CLAUDE_4_5_HAIKU,
527
577
  MODEL_CLAUDE_4_5_OPUS,
@@ -529,6 +579,7 @@ var AITuberOnAirChat = (() => {
529
579
  MODEL_CLAUDE_4_6_OPUS,
530
580
  MODEL_CLAUDE_4_7_OPUS,
531
581
  MODEL_CLAUDE_4_8_OPUS,
582
+ MODEL_CLAUDE_5_FABLE,
532
583
  MODEL_CLAUDE_5_SONNET,
533
584
  MODEL_CLAUDE_5_OPUS
534
585
  ];
@@ -563,6 +614,7 @@ var AITuberOnAirChat = (() => {
563
614
  var MODEL_GPT_OSS_20B_FREE = "openai/gpt-oss-20b:free";
564
615
  var MODEL_MOONSHOTAI_KIMI_K3 = "moonshotai/kimi-k3";
565
616
  var MODEL_MOONSHOTAI_KIMI_K2_7_CODE = "moonshotai/kimi-k2.7-code";
617
+ var MODEL_MOONSHOTAI_KIMI_K2_6 = "moonshotai/kimi-k2.6";
566
618
  var MODEL_MOONSHOTAI_KIMI_K2_5 = "moonshotai/kimi-k2.5";
567
619
  var MODEL_MOONSHOTAI_KIMI_LATEST = "~moonshotai/kimi-latest";
568
620
  var MODEL_OPENAI_GPT_LATEST = "~openai/gpt-latest";
@@ -581,7 +633,10 @@ var AITuberOnAirChat = (() => {
581
633
  var MODEL_OPENAI_GPT_4_1_NANO = "openai/gpt-4.1-nano";
582
634
  var MODEL_ANTHROPIC_CLAUDE_SONNET_LATEST = "~anthropic/claude-sonnet-latest";
583
635
  var MODEL_ANTHROPIC_CLAUDE_HAIKU_LATEST = "~anthropic/claude-haiku-latest";
636
+ var MODEL_ANTHROPIC_CLAUDE_FABLE_5 = "anthropic/claude-fable-5";
637
+ var MODEL_ANTHROPIC_CLAUDE_SONNET_5 = "anthropic/claude-sonnet-5";
584
638
  var MODEL_ANTHROPIC_CLAUDE_OPUS_5 = "anthropic/claude-opus-5";
639
+ var MODEL_ANTHROPIC_CLAUDE_OPUS_4_8 = "anthropic/claude-opus-4.8";
585
640
  var MODEL_ANTHROPIC_CLAUDE_OPUS_4 = "anthropic/claude-opus-4";
586
641
  var MODEL_ANTHROPIC_CLAUDE_SONNET_4 = "anthropic/claude-sonnet-4";
587
642
  var MODEL_ANTHROPIC_CLAUDE_3_7_SONNET = "anthropic/claude-3.7-sonnet";
@@ -589,21 +644,34 @@ var AITuberOnAirChat = (() => {
589
644
  var MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU = "anthropic/claude-haiku-4.5";
590
645
  var MODEL_GOOGLE_GEMINI_PRO_LATEST = "~google/gemini-pro-latest";
591
646
  var MODEL_GOOGLE_GEMINI_FLASH_LATEST = "~google/gemini-flash-latest";
647
+ var MODEL_GOOGLE_GEMINI_3_7_FLASH = "google/gemini-3.7-flash";
592
648
  var MODEL_GOOGLE_GEMINI_3_6_FLASH = "google/gemini-3.6-flash";
593
649
  var MODEL_GOOGLE_GEMINI_3_5_FLASH_LITE = "google/gemini-3.5-flash-lite";
594
650
  var MODEL_GOOGLE_GEMINI_2_5_PRO = "google/gemini-2.5-pro";
595
651
  var MODEL_GOOGLE_GEMINI_2_5_FLASH = "google/gemini-2.5-flash";
596
652
  var MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025 = "google/gemini-2.5-flash-lite-preview-09-2025";
597
653
  var MODEL_ZAI_GLM_5_2 = "z-ai/glm-5.2";
654
+ var MODEL_ZAI_GLM_5_3 = "z-ai/glm-5.3";
655
+ var MODEL_ZAI_GLM_5_3_FLASH = "z-ai/glm-5.3-flash";
598
656
  var MODEL_ZAI_GLM_4_7_FLASH = "z-ai/glm-4.7-flash";
599
657
  var MODEL_ZAI_GLM_4_5_AIR = "z-ai/glm-4.5-air";
600
658
  var MODEL_ZAI_GLM_4_5_AIR_FREE = "z-ai/glm-4.5-air:free";
601
659
  var MODEL_KWAIPILOT_KAT_CODER_AIR_V2_5 = "kwaipilot/kat-coder-air-v2.5";
602
660
  var MODEL_KWAIPILOT_KAT_CODER_PRO_V2_5 = "kwaipilot/kat-coder-pro-v2.5";
603
661
  var MODEL_XAI_GROK_LATEST = "~x-ai/grok-latest";
662
+ var MODEL_XAI_GROK_4_6 = "x-ai/grok-4.6";
604
663
  var MODEL_XAI_GROK_4_5 = "x-ai/grok-4.5";
605
664
  var MODEL_OPENROUTER_DEEPSEEK_V4_FLASH = "deepseek/deepseek-v4-flash";
606
665
  var MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731 = "deepseek/deepseek-v4-flash-0731";
666
+ var MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813 = "deepseek/deepseek-v4-pro-0813";
667
+ var MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_VISION_EXP = "deepseek/deepseek-v4-flash-vision-exp";
668
+ var MODEL_QWEN_QWEN_3_8_FLASH = "qwen/qwen3.8-flash";
669
+ var OPENROUTER_DEPRECATED_MODELS = [
670
+ MODEL_OPENAI_GPT_5_1_CHAT,
671
+ MODEL_ANTHROPIC_CLAUDE_3_7_SONNET,
672
+ MODEL_ANTHROPIC_CLAUDE_3_5_SONNET,
673
+ MODEL_ZAI_GLM_4_5_AIR_FREE
674
+ ];
607
675
  var DEFAULT_OPENROUTER_REASONING_EFFORTS = [
608
676
  "none",
609
677
  "minimal",
@@ -622,13 +690,35 @@ var AITuberOnAirChat = (() => {
622
690
  "high",
623
691
  "max"
624
692
  ];
625
- var OPENROUTER_FREE_MODELS = [
626
- MODEL_GPT_OSS_20B_FREE,
627
- MODEL_ZAI_GLM_4_5_AIR_FREE
693
+ var OPENROUTER_DEEPSEEK_V4_PRO_REASONING_EFFORTS = [
694
+ "none",
695
+ "high",
696
+ "xhigh"
697
+ ];
698
+ var OPENROUTER_ALWAYS_THINKING_REASONING_EFFORTS = [
699
+ "low",
700
+ "high",
701
+ "max"
702
+ ];
703
+ var OPENROUTER_OPTIONAL_LOW_REASONING_EFFORTS = [
704
+ "none",
705
+ "low",
706
+ "high",
707
+ "max"
708
+ ];
709
+ var OPENROUTER_CLAUDE_REASONING_EFFORTS = [
710
+ "none",
711
+ "low",
712
+ "medium",
713
+ "high",
714
+ "xhigh",
715
+ "max"
628
716
  ];
717
+ var OPENROUTER_FREE_MODELS = [MODEL_GPT_OSS_20B_FREE];
629
718
  var OPENROUTER_VISION_SUPPORTED_MODELS = [
630
719
  MODEL_OPENROUTER_AUTO_BETA,
631
720
  MODEL_MOONSHOTAI_KIMI_K3,
721
+ MODEL_MOONSHOTAI_KIMI_K2_6,
632
722
  MODEL_MOONSHOTAI_KIMI_LATEST,
633
723
  MODEL_OPENAI_GPT_LATEST,
634
724
  MODEL_OPENAI_GPT_MINI_LATEST,
@@ -637,7 +727,6 @@ var AITuberOnAirChat = (() => {
637
727
  MODEL_OPENAI_GPT_5_6_LUNA,
638
728
  MODEL_OPENAI_GPT_5_5_PRO,
639
729
  MODEL_OPENAI_GPT_5_5,
640
- MODEL_OPENAI_GPT_5_1_CHAT,
641
730
  MODEL_OPENAI_GPT_5_1_CODEX,
642
731
  MODEL_OPENAI_GPT_5_MINI,
643
732
  MODEL_OPENAI_GPT_5_NANO,
@@ -646,21 +735,28 @@ var AITuberOnAirChat = (() => {
646
735
  MODEL_OPENAI_GPT_4_1_NANO,
647
736
  MODEL_ANTHROPIC_CLAUDE_SONNET_LATEST,
648
737
  MODEL_ANTHROPIC_CLAUDE_HAIKU_LATEST,
738
+ MODEL_ANTHROPIC_CLAUDE_FABLE_5,
739
+ MODEL_ANTHROPIC_CLAUDE_SONNET_5,
649
740
  MODEL_ANTHROPIC_CLAUDE_OPUS_5,
741
+ MODEL_ANTHROPIC_CLAUDE_OPUS_4_8,
650
742
  MODEL_ANTHROPIC_CLAUDE_OPUS_4,
651
743
  MODEL_ANTHROPIC_CLAUDE_SONNET_4,
652
- MODEL_ANTHROPIC_CLAUDE_3_7_SONNET,
653
744
  MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU,
654
745
  MODEL_GOOGLE_GEMINI_PRO_LATEST,
655
746
  MODEL_GOOGLE_GEMINI_FLASH_LATEST,
747
+ MODEL_GOOGLE_GEMINI_3_7_FLASH,
656
748
  MODEL_GOOGLE_GEMINI_3_6_FLASH,
657
749
  MODEL_GOOGLE_GEMINI_3_5_FLASH_LITE,
658
750
  MODEL_GOOGLE_GEMINI_2_5_PRO,
659
751
  MODEL_GOOGLE_GEMINI_2_5_FLASH,
660
752
  MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025,
753
+ MODEL_ZAI_GLM_5_3_FLASH,
754
+ MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_VISION_EXP,
755
+ MODEL_QWEN_QWEN_3_8_FLASH,
661
756
  MODEL_MOONSHOTAI_KIMI_K2_7_CODE,
662
757
  MODEL_MOONSHOTAI_KIMI_K2_5,
663
758
  MODEL_XAI_GROK_LATEST,
759
+ MODEL_XAI_GROK_4_6,
664
760
  MODEL_XAI_GROK_4_5
665
761
  ];
666
762
  var OPENROUTER_FREE_RATE_LIMIT_PER_MINUTE = 20;
@@ -677,17 +773,32 @@ var AITuberOnAirChat = (() => {
677
773
  }
678
774
  function getOpenRouterSupportedReasoningEfforts(model) {
679
775
  const normalizedModel = model.trim();
776
+ if (normalizedModel === MODEL_ZAI_GLM_5_3 || normalizedModel === MODEL_ZAI_GLM_5_3_FLASH) {
777
+ return OPENROUTER_ALWAYS_THINKING_REASONING_EFFORTS;
778
+ }
779
+ if (normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_VISION_EXP) {
780
+ return OPENROUTER_OPTIONAL_LOW_REASONING_EFFORTS;
781
+ }
782
+ if (normalizedModel === MODEL_ANTHROPIC_CLAUDE_SONNET_5 || normalizedModel === MODEL_ANTHROPIC_CLAUDE_OPUS_4_8) {
783
+ return OPENROUTER_CLAUDE_REASONING_EFFORTS;
784
+ }
680
785
  if (normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH) {
681
786
  return OPENROUTER_DEEPSEEK_V4_FLASH_REASONING_EFFORTS;
682
787
  }
683
788
  if (normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731) {
684
789
  return OPENROUTER_DEEPSEEK_V4_FLASH_0731_REASONING_EFFORTS;
685
790
  }
791
+ if (normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813) {
792
+ return OPENROUTER_DEEPSEEK_V4_PRO_REASONING_EFFORTS;
793
+ }
686
794
  return DEFAULT_OPENROUTER_REASONING_EFFORTS;
687
795
  }
688
796
  function getDefaultOpenRouterReasoningEffort(model) {
689
797
  const normalizedModel = model.trim();
690
- return normalizedModel === MODEL_ZAI_GLM_5_2 || normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH || normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731 ? "none" : void 0;
798
+ if (normalizedModel === MODEL_ZAI_GLM_5_3 || normalizedModel === MODEL_ZAI_GLM_5_3_FLASH) {
799
+ return "low";
800
+ }
801
+ 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;
691
802
  }
692
803
  function normalizeOpenRouterReasoningEffort(model, effort) {
693
804
  const normalizedModel = model.trim();
@@ -695,6 +806,15 @@ var AITuberOnAirChat = (() => {
695
806
  if (!requested) {
696
807
  return void 0;
697
808
  }
809
+ if (normalizedModel === MODEL_ZAI_GLM_5_3 || normalizedModel === MODEL_ZAI_GLM_5_3_FLASH) {
810
+ if (requested === "high") {
811
+ return "high";
812
+ }
813
+ if (requested === "max" || requested === "xhigh") {
814
+ return "max";
815
+ }
816
+ return "low";
817
+ }
698
818
  const supported = getOpenRouterSupportedReasoningEfforts(model);
699
819
  if (supported.includes(requested)) {
700
820
  return requested;
@@ -710,11 +830,32 @@ var AITuberOnAirChat = (() => {
710
830
  return "high";
711
831
  }
712
832
  }
833
+ if (normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813) {
834
+ if (requested === "minimal" || requested === "low") {
835
+ return "none";
836
+ }
837
+ if (requested === "medium") {
838
+ return "high";
839
+ }
840
+ if (requested === "max") {
841
+ return "xhigh";
842
+ }
843
+ }
844
+ if (normalizedModel === MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_VISION_EXP) {
845
+ if (requested === "minimal" || requested === "medium") {
846
+ return "low";
847
+ }
848
+ if (requested === "xhigh") {
849
+ return "high";
850
+ }
851
+ }
713
852
  return requested;
714
853
  }
715
854
 
716
855
  // src/constants/zai.ts
717
856
  var ENDPOINT_ZAI_CHAT_COMPLETIONS_API = "https://api.z.ai/api/paas/v4/chat/completions";
857
+ var MODEL_GLM_5_3 = "glm-5.3";
858
+ var MODEL_GLM_5_3_FLASH = "glm-5.3-flash";
718
859
  var MODEL_GLM_5_2 = "glm-5.2";
719
860
  var MODEL_GLM_5_1 = "glm-5.1";
720
861
  var MODEL_GLM_5 = "glm-5";
@@ -727,7 +868,62 @@ var AITuberOnAirChat = (() => {
727
868
  var MODEL_GLM_4_6V = "glm-4.6V";
728
869
  var MODEL_GLM_4_6V_FLASHX = "glm-4.6V-FlashX";
729
870
  var MODEL_GLM_4_6V_FLASH = "glm-4.6V-Flash";
871
+ var ZAI_GLM_5_2_REASONING_EFFORTS = [
872
+ "none",
873
+ "minimal",
874
+ "low",
875
+ "medium",
876
+ "high",
877
+ "xhigh",
878
+ "max"
879
+ ];
880
+ var ZAI_GLM_5_3_REASONING_EFFORTS = [
881
+ "low",
882
+ "high",
883
+ "max"
884
+ ];
885
+ function isZaiAlwaysThinkingModel(model) {
886
+ return model === MODEL_GLM_5_3 || model === MODEL_GLM_5_3_FLASH;
887
+ }
888
+ function getZaiSupportedReasoningEfforts(model) {
889
+ if (isZaiAlwaysThinkingModel(model)) {
890
+ return ZAI_GLM_5_3_REASONING_EFFORTS;
891
+ }
892
+ return model === MODEL_GLM_5_2 ? ZAI_GLM_5_2_REASONING_EFFORTS : [];
893
+ }
894
+ function isZaiReasoningEffortModel(model) {
895
+ return getZaiSupportedReasoningEfforts(model).length > 0;
896
+ }
897
+ function getDefaultZaiReasoningEffort(model) {
898
+ if (isZaiAlwaysThinkingModel(model)) {
899
+ return "low";
900
+ }
901
+ return model === MODEL_GLM_5_2 ? "none" : void 0;
902
+ }
903
+ function normalizeZaiReasoningEffort(model, effort) {
904
+ if (!isZaiReasoningEffortModel(model)) {
905
+ return void 0;
906
+ }
907
+ const requested = effort ?? getDefaultZaiReasoningEffort(model);
908
+ if (isZaiAlwaysThinkingModel(model)) {
909
+ if (requested === "high") {
910
+ return "high";
911
+ }
912
+ if (requested === "max" || requested === "xhigh") {
913
+ return "max";
914
+ }
915
+ return "low";
916
+ }
917
+ if (requested === "none" || requested === "minimal") {
918
+ return "none";
919
+ }
920
+ if (requested === "low" || requested === "medium" || requested === "high") {
921
+ return "high";
922
+ }
923
+ return "max";
924
+ }
730
925
  var ZAI_VISION_SUPPORTED_MODELS = [
926
+ MODEL_GLM_5_3_FLASH,
731
927
  MODEL_GLM_5V_TURBO,
732
928
  MODEL_GLM_4_6V,
733
929
  MODEL_GLM_4_6V_FLASHX,
@@ -737,7 +933,8 @@ var AITuberOnAirChat = (() => {
737
933
  return ZAI_VISION_SUPPORTED_MODELS.includes(model);
738
934
  }
739
935
  function isZaiToolStreamModel(model) {
740
- return model.toLowerCase().startsWith("glm-4.6");
936
+ const normalizedModel = model.toLowerCase();
937
+ return normalizedModel.startsWith("glm-5.3") || normalizedModel.startsWith("glm-4.6");
741
938
  }
742
939
 
743
940
  // src/constants/xai.ts
@@ -749,14 +946,16 @@ var AITuberOnAirChat = (() => {
749
946
  var MODEL_GROK_4_20_NON_REASONING = "grok-4.20-0309-non-reasoning";
750
947
  var MODEL_GROK_4_1_FAST_REASONING = "grok-4-1-fast-reasoning";
751
948
  var MODEL_GROK_4_1_FAST_NON_REASONING = "grok-4-1-fast-non-reasoning";
949
+ var XAI_DEPRECATED_MODELS = [
950
+ MODEL_GROK_4_1_FAST_REASONING,
951
+ MODEL_GROK_4_1_FAST_NON_REASONING
952
+ ];
752
953
  var XAI_VISION_SUPPORTED_MODELS = [
753
954
  MODEL_GROK_4_6,
754
955
  MODEL_GROK_4_5,
755
956
  MODEL_GROK_4_3,
756
957
  MODEL_GROK_4_20_REASONING,
757
- MODEL_GROK_4_20_NON_REASONING,
758
- MODEL_GROK_4_1_FAST_REASONING,
759
- MODEL_GROK_4_1_FAST_NON_REASONING
958
+ MODEL_GROK_4_20_NON_REASONING
760
959
  ];
761
960
  function isXaiVisionModel(model) {
762
961
  return XAI_VISION_SUPPORTED_MODELS.includes(model);
@@ -841,6 +1040,7 @@ var AITuberOnAirChat = (() => {
841
1040
  var ENDPOINT_DEEPSEEK_CHAT_COMPLETIONS_API = `${DEEPSEEK_API_BASE_URL}/chat/completions`;
842
1041
  var MODEL_DEEPSEEK_V4_FLASH = "deepseek-v4-flash";
843
1042
  var MODEL_DEEPSEEK_V4_PRO = "deepseek-v4-pro";
1043
+ var MODEL_DEEPSEEK_V4_FLASH_VISION_EXP = "deepseek-v4-flash-vision-exp";
844
1044
  var DEEPSEEK_V4_FLASH_REASONING_EFFORTS = [
845
1045
  "none",
846
1046
  "low",
@@ -856,7 +1056,11 @@ var AITuberOnAirChat = (() => {
856
1056
  var MODEL_DEEPSEEK_REASONER = "deepseek-reasoner";
857
1057
  var DEEPSEEK_SUPPORTED_MODELS = [
858
1058
  MODEL_DEEPSEEK_V4_FLASH,
859
- MODEL_DEEPSEEK_V4_PRO
1059
+ MODEL_DEEPSEEK_V4_PRO,
1060
+ MODEL_DEEPSEEK_V4_FLASH_VISION_EXP
1061
+ ];
1062
+ var DEEPSEEK_VISION_SUPPORTED_MODELS = [
1063
+ MODEL_DEEPSEEK_V4_FLASH_VISION_EXP
860
1064
  ];
861
1065
  var DEEPSEEK_DEPRECATED_MODELS = [
862
1066
  MODEL_DEEPSEEK_CHAT,
@@ -866,11 +1070,17 @@ var AITuberOnAirChat = (() => {
866
1070
  if (model === MODEL_DEEPSEEK_V4_FLASH) {
867
1071
  return DEEPSEEK_V4_FLASH_REASONING_EFFORTS;
868
1072
  }
1073
+ if (model === MODEL_DEEPSEEK_V4_FLASH_VISION_EXP) {
1074
+ return DEEPSEEK_V4_FLASH_REASONING_EFFORTS;
1075
+ }
869
1076
  if (model === MODEL_DEEPSEEK_V4_PRO) {
870
1077
  return DEEPSEEK_V4_PRO_REASONING_EFFORTS;
871
1078
  }
872
1079
  return [];
873
1080
  }
1081
+ function isDeepSeekVisionModel(model) {
1082
+ return DEEPSEEK_VISION_SUPPORTED_MODELS.includes(model);
1083
+ }
874
1084
  function isDeepSeekReasoningEffortModel(model) {
875
1085
  return getDeepSeekSupportedReasoningEfforts(model).length > 0;
876
1086
  }
@@ -912,9 +1122,9 @@ var AITuberOnAirChat = (() => {
912
1122
  MODEL_MISTRAL_MEDIUM_3_5,
913
1123
  MODEL_MISTRAL_LARGE_LATEST,
914
1124
  MODEL_MISTRAL_LARGE_2512,
915
- MODEL_MISTRAL_SMALL_2603,
916
- MODEL_MISTRAL_MEDIUM_2508
1125
+ MODEL_MISTRAL_SMALL_2603
917
1126
  ];
1127
+ var MISTRAL_DEPRECATED_MODELS = [MODEL_MISTRAL_MEDIUM_2508];
918
1128
  var MISTRAL_REASONING_EFFORT_SUPPORTED_MODELS = [
919
1129
  MODEL_MISTRAL_SMALL_LATEST,
920
1130
  MODEL_MISTRAL_MEDIUM_3_5
@@ -926,7 +1136,6 @@ var AITuberOnAirChat = (() => {
926
1136
  MODEL_MINISTRAL_14B_2512,
927
1137
  MODEL_MISTRAL_SMALL_2603,
928
1138
  MODEL_MISTRAL_MEDIUM_3_5,
929
- MODEL_MISTRAL_MEDIUM_2508,
930
1139
  MODEL_MISTRAL_LARGE_LATEST,
931
1140
  MODEL_MISTRAL_LARGE_2512
932
1141
  ];
@@ -945,9 +1154,19 @@ var AITuberOnAirChat = (() => {
945
1154
  var ENDPOINT_SAKANA_CHAT_COMPLETIONS_API = `${SAKANA_API_BASE_URL}/chat/completions`;
946
1155
  var MODEL_FUGU = "fugu";
947
1156
  var MODEL_FUGU_ULTRA = "fugu-ultra";
1157
+ var MODEL_FUGU_ULTRA_V1_1 = "fugu-ultra-v1.1";
1158
+ var MODEL_SAKANA_NAMAZU = "sakana-namazu";
948
1159
  var MODEL_FUGU_ULTRA_20260615 = "fugu-ultra-20260615";
949
1160
  var SAKANA_SUPPORTED_MODELS = [
950
1161
  MODEL_FUGU,
1162
+ MODEL_FUGU_ULTRA_V1_1,
1163
+ MODEL_SAKANA_NAMAZU
1164
+ ];
1165
+ var SAKANA_VISION_SUPPORTED_MODELS = [MODEL_SAKANA_NAMAZU];
1166
+ function isSakanaVisionModel(model) {
1167
+ return SAKANA_VISION_SUPPORTED_MODELS.includes(model);
1168
+ }
1169
+ var SAKANA_COMPATIBILITY_MODELS = [
951
1170
  MODEL_FUGU_ULTRA,
952
1171
  MODEL_FUGU_ULTRA_20260615
953
1172
  ];
@@ -957,10 +1176,8 @@ var AITuberOnAirChat = (() => {
957
1176
  var ENDPOINT_PLAMO_CHAT_COMPLETIONS_API = `${PLAMO_API_BASE_URL}/chat/completions`;
958
1177
  var MODEL_PLAMO_3_0_PRIME = "plamo-3.0-prime";
959
1178
  var MODEL_PLAMO_2_2_PRIME = "plamo-2.2-prime";
960
- var PLAMO_SUPPORTED_MODELS = [
961
- MODEL_PLAMO_3_0_PRIME,
962
- MODEL_PLAMO_2_2_PRIME
963
- ];
1179
+ var PLAMO_SUPPORTED_MODELS = [MODEL_PLAMO_3_0_PRIME];
1180
+ var PLAMO_DEPRECATED_MODELS = [MODEL_PLAMO_2_2_PRIME];
964
1181
 
965
1182
  // src/constants/chat.ts
966
1183
  var CHAT_RESPONSE_LENGTH = {
@@ -1923,7 +2140,9 @@ If it's in another language, summarize in that language.
1923
2140
  hasTools: this.tools.length > 0 || this.mcpServers.length > 0,
1924
2141
  runWithoutTools: async () => {
1925
2142
  const res = await this.callClaude(messages, this.model, true);
1926
- return this.parsePureStream(res, onPartialResponse);
2143
+ return this.convertToStandardCompletion(
2144
+ await this.parseStream(res, onPartialResponse)
2145
+ );
1927
2146
  },
1928
2147
  runWithTools: () => this.chatOnce(messages, true, onPartialResponse),
1929
2148
  onCompleteResponse,
@@ -1941,7 +2160,9 @@ If it's in another language, summarize in that language.
1941
2160
  hasTools: this.tools.length > 0 || this.mcpServers.length > 0,
1942
2161
  runWithoutTools: async () => {
1943
2162
  const res = await this.callClaude(messages, this.visionModel, true);
1944
- return this.parsePureStream(res, onPartialResponse);
2163
+ return this.convertToStandardCompletion(
2164
+ await this.parseStream(res, onPartialResponse)
2165
+ );
1945
2166
  },
1946
2167
  runWithTools: () => this.visionChatOnce(messages),
1947
2168
  onCompleteResponse,
@@ -2013,6 +2234,8 @@ If it's in another language, summarize in that language.
2013
2234
  const textBlocks = [];
2014
2235
  const providerBlocks = /* @__PURE__ */ new Map();
2015
2236
  const toolCalls = /* @__PURE__ */ new Map();
2237
+ let finishReason;
2238
+ let stopDetails;
2016
2239
  let buf = "";
2017
2240
  while (true) {
2018
2241
  const { done, value } = await reader.read();
@@ -2026,6 +2249,14 @@ If it's in another language, summarize in that language.
2026
2249
  const payload = line.slice(5).trim();
2027
2250
  if (payload === "[DONE]") break;
2028
2251
  const ev = JSON.parse(payload);
2252
+ if (ev.type === "message_delta") {
2253
+ if (typeof ev.delta?.stop_reason === "string") {
2254
+ finishReason = ev.delta.stop_reason;
2255
+ }
2256
+ if (ev.delta?.stop_details !== void 0 || ev.stop_details !== void 0) {
2257
+ stopDetails = ev.delta?.stop_details ?? ev.stop_details;
2258
+ }
2259
+ }
2029
2260
  if (ev.type === "content_block_start" && ev.content_block && typeof ev.index === "number") {
2030
2261
  providerBlocks.set(ev.index, { ...ev.content_block });
2031
2262
  }
@@ -2108,18 +2339,17 @@ If it's in another language, summarize in that language.
2108
2339
  }
2109
2340
  }
2110
2341
  }
2342
+ const hasToolUse = textBlocks.some(
2343
+ (b) => b.type === "tool_use" || b.type === "mcp_tool_use"
2344
+ );
2111
2345
  return {
2112
2346
  blocks: textBlocks,
2113
2347
  providerContent: [...providerBlocks.entries()].sort(([a], [b]) => a - b).map(([, block]) => block),
2114
- stop_reason: textBlocks.some(
2115
- (b) => b.type === "tool_use" || b.type === "mcp_tool_use"
2116
- ) ? "tool_use" : "end"
2348
+ stop_reason: hasToolUse ? "tool_use" : "end",
2349
+ finish_reason: finishReason,
2350
+ stop_details: stopDetails
2117
2351
  };
2118
2352
  }
2119
- async parsePureStream(res, onPartial) {
2120
- const { blocks } = await this.parseStream(res, onPartial);
2121
- return blocks.filter((b) => b.type === "text").map((b) => b.text).join("");
2122
- }
2123
2353
  parseOneShot(data) {
2124
2354
  const blocks = [];
2125
2355
  (data.content ?? []).forEach((c) => {
@@ -2155,12 +2385,15 @@ If it's in another language, summarize in that language.
2155
2385
  });
2156
2386
  }
2157
2387
  });
2388
+ const hasToolUse = blocks.some(
2389
+ (b) => b.type === "tool_use" || b.type === "mcp_tool_use"
2390
+ );
2158
2391
  return {
2159
2392
  blocks,
2160
2393
  providerContent: (data.content ?? []).map((block) => ({ ...block })),
2161
- stop_reason: blocks.some(
2162
- (b) => b.type === "tool_use" || b.type === "mcp_tool_use"
2163
- ) ? "tool_use" : "end"
2394
+ stop_reason: hasToolUse ? "tool_use" : "end",
2395
+ finish_reason: data.stop_reason,
2396
+ stop_details: data.stop_details
2164
2397
  };
2165
2398
  }
2166
2399
  /**
@@ -2210,6 +2443,8 @@ If it's in another language, summarize in that language.
2210
2443
  return {
2211
2444
  blocks: standardBlocks,
2212
2445
  stop_reason: completion.stop_reason,
2446
+ finish_reason: completion.finish_reason,
2447
+ stop_details: completion.stop_details,
2213
2448
  assistant_message: {
2214
2449
  role: "assistant",
2215
2450
  content: standardBlocks.filter((block) => block.type === "text").map((block) => block.text).join(""),
@@ -2266,8 +2501,6 @@ If it's in another language, summarize in that language.
2266
2501
  */
2267
2502
  getSupportedModels() {
2268
2503
  return [
2269
- MODEL_CLAUDE_4_SONNET,
2270
- MODEL_CLAUDE_4_OPUS,
2271
2504
  MODEL_CLAUDE_4_5_SONNET,
2272
2505
  MODEL_CLAUDE_4_5_HAIKU,
2273
2506
  MODEL_CLAUDE_4_5_OPUS,
@@ -2275,9 +2508,9 @@ If it's in another language, summarize in that language.
2275
2508
  MODEL_CLAUDE_4_6_OPUS,
2276
2509
  MODEL_CLAUDE_4_7_OPUS,
2277
2510
  MODEL_CLAUDE_4_8_OPUS,
2511
+ MODEL_CLAUDE_5_FABLE,
2278
2512
  MODEL_CLAUDE_5_SONNET,
2279
- MODEL_CLAUDE_5_OPUS,
2280
- MODEL_CLAUDE_3_HAIKU
2513
+ MODEL_CLAUDE_5_OPUS
2281
2514
  ];
2282
2515
  }
2283
2516
  /**
@@ -2619,6 +2852,7 @@ If it's in another language, summarize in that language.
2619
2852
  reasoning_effort,
2620
2853
  enableReasoningSummary,
2621
2854
  responseFormat,
2855
+ chatTemplateThinking,
2622
2856
  maxTokens
2623
2857
  }) {
2624
2858
  const isResponsesAPI = endpoint === ENDPOINT_OPENAI_RESPONSES_API;
@@ -2703,6 +2937,9 @@ If it's in another language, summarize in that language.
2703
2937
  body.reasoning_effort = reasoning_effort;
2704
2938
  }
2705
2939
  }
2940
+ if (provider === "sakana" && chatTemplateThinking !== void 0) {
2941
+ body.chat_template_kwargs = { thinking: chatTemplateThinking };
2942
+ }
2706
2943
  const toolDefinitions = buildOpenAIToolsDefinition({
2707
2944
  tools,
2708
2945
  mcpServers,
@@ -2830,7 +3067,7 @@ If it's in another language, summarize in that language.
2830
3067
  * @param model Name of the model to use
2831
3068
  * @param visionModel Name of the vision model
2832
3069
  */
2833
- constructor(apiKey, model = MODEL_GPT_4O_MINI, visionModel = MODEL_GPT_4O_MINI, tools, endpoint = ENDPOINT_OPENAI_CHAT_COMPLETIONS_API, mcpServers = [], responseLength, verbosity, reasoning_effort, enableReasoningSummary = false, provider = "openai", validateVisionModel = true, responseFormat) {
3070
+ constructor(apiKey, model = MODEL_GPT_4O_MINI, visionModel = MODEL_GPT_4O_MINI, tools, endpoint = ENDPOINT_OPENAI_CHAT_COMPLETIONS_API, mcpServers = [], responseLength, verbosity, reasoning_effort, enableReasoningSummary = false, provider = "openai", validateVisionModel = true, responseFormat, chatTemplateThinking) {
2834
3071
  this.provider = provider;
2835
3072
  this.apiKey = apiKey;
2836
3073
  this.model = model;
@@ -2842,6 +3079,7 @@ If it's in another language, summarize in that language.
2842
3079
  this.reasoning_effort = reasoning_effort;
2843
3080
  this.enableReasoningSummary = enableReasoningSummary;
2844
3081
  this.responseFormat = responseFormat;
3082
+ this.chatTemplateThinking = chatTemplateThinking;
2845
3083
  if (validateVisionModel && !VISION_SUPPORTED_MODELS.includes(visionModel)) {
2846
3084
  throw new Error(
2847
3085
  `Model ${visionModel} does not support vision capabilities.`
@@ -2989,6 +3227,7 @@ If it's in another language, summarize in that language.
2989
3227
  reasoning_effort: this.reasoning_effort,
2990
3228
  enableReasoningSummary: this.enableReasoningSummary,
2991
3229
  responseFormat: this.responseFormat,
3230
+ chatTemplateThinking: this.chatTemplateThinking,
2992
3231
  maxTokens
2993
3232
  });
2994
3233
  const headers = {};
@@ -3046,11 +3285,19 @@ If it's in another language, summarize in that language.
3046
3285
  createChatService(options) {
3047
3286
  this.validateRequiredOptions(options);
3048
3287
  const model = options.model || this.getDefaultModel();
3288
+ const visionModel = resolveVisionModel({
3289
+ model,
3290
+ visionModel: options.visionModel,
3291
+ defaultModel: this.getDefaultModel(),
3292
+ defaultVisionModel: MODEL_DEEPSEEK_V4_FLASH_VISION_EXP,
3293
+ supportsVisionForModel: (visionModel2) => this.supportsVisionForModel(visionModel2),
3294
+ validate: "explicit"
3295
+ });
3049
3296
  const tools = options.tools;
3050
3297
  return new DeepSeekChatService(
3051
3298
  options.apiKey,
3052
3299
  model,
3053
- options.visionModel ?? model,
3300
+ visionModel,
3054
3301
  tools,
3055
3302
  this.resolveEndpoint(options),
3056
3303
  options.responseLength,
@@ -3067,16 +3314,16 @@ If it's in another language, summarize in that language.
3067
3314
  return MODEL_DEEPSEEK_V4_FLASH;
3068
3315
  }
3069
3316
  supportsVision() {
3070
- return false;
3317
+ return true;
3071
3318
  }
3072
3319
  getVisionSupportLevel() {
3073
- return "unsupported";
3320
+ return "supported";
3074
3321
  }
3075
- supportsVisionForModel(_model) {
3076
- return false;
3322
+ supportsVisionForModel(model) {
3323
+ return isDeepSeekVisionModel(model);
3077
3324
  }
3078
- getVisionSupportLevelForModel(_model) {
3079
- return "unsupported";
3325
+ getVisionSupportLevelForModel(model) {
3326
+ return this.supportsVisionForModel(model) ? "supported" : "unsupported";
3080
3327
  }
3081
3328
  validateRequiredOptions(options) {
3082
3329
  if (!options.apiKey?.trim()) {
@@ -4845,7 +5092,12 @@ If it's in another language, summarize in that language.
4845
5092
 
4846
5093
  // src/services/providers/openrouter/OpenRouterChatService.ts
4847
5094
  var isOpenRouterAutoModel = (model) => [MODEL_OPENROUTER_AUTO, MODEL_OPENROUTER_AUTO_BETA].includes(model.trim());
4848
- var isTokenLimitUnsupportedModel = (model) => [MODEL_GPT_OSS_20B_FREE, MODEL_ZAI_GLM_5_2].includes(model.trim());
5095
+ var isTokenLimitUnsupportedModel = (model) => [
5096
+ MODEL_GPT_OSS_20B_FREE,
5097
+ MODEL_ZAI_GLM_5_3,
5098
+ MODEL_ZAI_GLM_5_3_FLASH,
5099
+ MODEL_ZAI_GLM_5_2
5100
+ ].includes(model.trim());
4849
5101
  var ensureAutoRouterOutput = (model, hasVisibleOutput) => {
4850
5102
  if (isOpenRouterAutoModel(model) && !hasVisibleOutput) {
4851
5103
  throw new Error(
@@ -5173,7 +5425,6 @@ If it's in another language, summarize in that language.
5173
5425
  MODEL_OPENROUTER_FUSION,
5174
5426
  // Free models
5175
5427
  MODEL_GPT_OSS_20B_FREE,
5176
- MODEL_ZAI_GLM_4_5_AIR_FREE,
5177
5428
  // OpenAI models
5178
5429
  MODEL_OPENAI_GPT_LATEST,
5179
5430
  MODEL_OPENAI_GPT_MINI_LATEST,
@@ -5182,7 +5433,6 @@ If it's in another language, summarize in that language.
5182
5433
  MODEL_OPENAI_GPT_5_6_LUNA,
5183
5434
  MODEL_OPENAI_GPT_5_5_PRO,
5184
5435
  MODEL_OPENAI_GPT_5_5,
5185
- MODEL_OPENAI_GPT_5_1_CHAT,
5186
5436
  MODEL_OPENAI_GPT_5_1_CODEX,
5187
5437
  MODEL_OPENAI_GPT_5_MINI,
5188
5438
  MODEL_OPENAI_GPT_5_NANO,
@@ -5192,34 +5442,43 @@ If it's in another language, summarize in that language.
5192
5442
  // Anthropic models
5193
5443
  MODEL_ANTHROPIC_CLAUDE_SONNET_LATEST,
5194
5444
  MODEL_ANTHROPIC_CLAUDE_HAIKU_LATEST,
5445
+ MODEL_ANTHROPIC_CLAUDE_FABLE_5,
5446
+ MODEL_ANTHROPIC_CLAUDE_SONNET_5,
5195
5447
  MODEL_ANTHROPIC_CLAUDE_OPUS_5,
5448
+ MODEL_ANTHROPIC_CLAUDE_OPUS_4_8,
5196
5449
  MODEL_ANTHROPIC_CLAUDE_OPUS_4,
5197
5450
  MODEL_ANTHROPIC_CLAUDE_SONNET_4,
5198
- MODEL_ANTHROPIC_CLAUDE_3_7_SONNET,
5199
- MODEL_ANTHROPIC_CLAUDE_3_5_SONNET,
5200
5451
  MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU,
5201
5452
  // Gemini models
5202
5453
  MODEL_GOOGLE_GEMINI_PRO_LATEST,
5203
5454
  MODEL_GOOGLE_GEMINI_FLASH_LATEST,
5455
+ MODEL_GOOGLE_GEMINI_3_7_FLASH,
5204
5456
  MODEL_GOOGLE_GEMINI_3_6_FLASH,
5205
5457
  MODEL_GOOGLE_GEMINI_3_5_FLASH_LITE,
5206
5458
  MODEL_GOOGLE_GEMINI_2_5_PRO,
5207
5459
  MODEL_GOOGLE_GEMINI_2_5_FLASH,
5208
5460
  MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025,
5209
5461
  // Z.ai models
5462
+ MODEL_ZAI_GLM_5_3,
5463
+ MODEL_ZAI_GLM_5_3_FLASH,
5210
5464
  MODEL_ZAI_GLM_5_2,
5211
5465
  MODEL_ZAI_GLM_4_7_FLASH,
5212
5466
  MODEL_ZAI_GLM_4_5_AIR,
5213
5467
  // xAI models
5214
5468
  MODEL_XAI_GROK_LATEST,
5469
+ MODEL_XAI_GROK_4_6,
5215
5470
  MODEL_XAI_GROK_4_5,
5216
5471
  // DeepSeek models
5217
5472
  MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_0731,
5218
5473
  MODEL_OPENROUTER_DEEPSEEK_V4_FLASH,
5474
+ MODEL_OPENROUTER_DEEPSEEK_V4_PRO_0813,
5475
+ MODEL_OPENROUTER_DEEPSEEK_V4_FLASH_VISION_EXP,
5219
5476
  // Other models
5477
+ MODEL_QWEN_QWEN_3_8_FLASH,
5220
5478
  MODEL_MOONSHOTAI_KIMI_LATEST,
5221
5479
  MODEL_MOONSHOTAI_KIMI_K3,
5222
5480
  MODEL_MOONSHOTAI_KIMI_K2_7_CODE,
5481
+ MODEL_MOONSHOTAI_KIMI_K2_6,
5223
5482
  MODEL_MOONSHOTAI_KIMI_K2_5,
5224
5483
  MODEL_KWAIPILOT_KAT_CODER_AIR_V2_5,
5225
5484
  MODEL_KWAIPILOT_KAT_CODER_PRO_V2_5
@@ -5354,7 +5613,7 @@ If it's in another language, summarize in that language.
5354
5613
 
5355
5614
  // src/services/providers/sakana/SakanaChatService.ts
5356
5615
  var SakanaChatService = class extends OpenAIChatService {
5357
- constructor(apiKey, model = MODEL_FUGU, visionModel = model, tools, endpoint = ENDPOINT_SAKANA_CHAT_COMPLETIONS_API, responseLength) {
5616
+ constructor(apiKey, model = MODEL_FUGU, visionModel = model, tools, endpoint = ENDPOINT_SAKANA_CHAT_COMPLETIONS_API, responseLength, thinking) {
5358
5617
  super(
5359
5618
  apiKey,
5360
5619
  model,
@@ -5367,7 +5626,9 @@ If it's in another language, summarize in that language.
5367
5626
  void 0,
5368
5627
  false,
5369
5628
  "sakana",
5370
- false
5629
+ false,
5630
+ void 0,
5631
+ thinking?.type === "enabled"
5371
5632
  );
5372
5633
  }
5373
5634
  };
@@ -5377,14 +5638,29 @@ If it's in another language, summarize in that language.
5377
5638
  createChatService(options) {
5378
5639
  this.validateRequiredOptions(options);
5379
5640
  const model = options.model || this.getDefaultModel();
5641
+ const visionModel = resolveVisionModel({
5642
+ model,
5643
+ visionModel: options.visionModel,
5644
+ defaultModel: this.getDefaultModel(),
5645
+ defaultVisionModel: MODEL_SAKANA_NAMAZU,
5646
+ supportsVisionForModel: (visionModel2) => this.supportsVisionForModel(visionModel2),
5647
+ validate: "explicit"
5648
+ });
5380
5649
  const tools = options.tools;
5650
+ if (options.thinking !== void 0 && model !== MODEL_SAKANA_NAMAZU) {
5651
+ throw new Error(
5652
+ "Sakana thinking control is only supported for sakana-namazu."
5653
+ );
5654
+ }
5655
+ const thinking = model === MODEL_SAKANA_NAMAZU ? options.thinking ?? { type: "disabled" } : void 0;
5381
5656
  return new SakanaChatService(
5382
5657
  options.apiKey,
5383
5658
  model,
5384
- options.visionModel ?? model,
5659
+ visionModel,
5385
5660
  tools,
5386
5661
  this.resolveEndpoint(options),
5387
- options.responseLength
5662
+ options.responseLength,
5663
+ thinking
5388
5664
  );
5389
5665
  }
5390
5666
  getProviderName() {
@@ -5397,16 +5673,16 @@ If it's in another language, summarize in that language.
5397
5673
  return MODEL_FUGU;
5398
5674
  }
5399
5675
  supportsVision() {
5400
- return false;
5676
+ return true;
5401
5677
  }
5402
5678
  getVisionSupportLevel() {
5403
- return "unsupported";
5679
+ return "supported";
5404
5680
  }
5405
- supportsVisionForModel(_model) {
5406
- return false;
5681
+ supportsVisionForModel(model) {
5682
+ return isSakanaVisionModel(model);
5407
5683
  }
5408
- getVisionSupportLevelForModel(_model) {
5409
- return "unsupported";
5684
+ getVisionSupportLevelForModel(model) {
5685
+ return this.supportsVisionForModel(model) ? "supported" : "unsupported";
5410
5686
  }
5411
5687
  validateRequiredOptions(options) {
5412
5688
  if (!options.apiKey?.trim()) {
@@ -5439,7 +5715,7 @@ If it's in another language, summarize in that language.
5439
5715
  * @param model Name of the model to use
5440
5716
  * @param visionModel Name of the vision model
5441
5717
  */
5442
- constructor(apiKey, model = MODEL_GROK_4_1_FAST_NON_REASONING, visionModel = MODEL_GROK_4_1_FAST_NON_REASONING, tools, endpoint = ENDPOINT_XAI_CHAT_COMPLETIONS_API, responseLength, reasoningEffort) {
5718
+ constructor(apiKey, model = MODEL_GROK_4_3, visionModel = MODEL_GROK_4_3, tools, endpoint = ENDPOINT_XAI_CHAT_COMPLETIONS_API, responseLength, reasoningEffort = "none") {
5443
5719
  /** Provider name */
5444
5720
  this.provider = "xai";
5445
5721
  this.apiKey = apiKey;
@@ -5627,22 +5903,20 @@ If it's in another language, summarize in that language.
5627
5903
  MODEL_GROK_4_5,
5628
5904
  MODEL_GROK_4_3,
5629
5905
  MODEL_GROK_4_20_REASONING,
5630
- MODEL_GROK_4_20_NON_REASONING,
5631
- MODEL_GROK_4_1_FAST_REASONING,
5632
- MODEL_GROK_4_1_FAST_NON_REASONING
5906
+ MODEL_GROK_4_20_NON_REASONING
5633
5907
  ];
5634
5908
  }
5635
5909
  /**
5636
5910
  * Get the default model
5637
5911
  */
5638
5912
  getDefaultModel() {
5639
- return MODEL_GROK_4_1_FAST_NON_REASONING;
5913
+ return MODEL_GROK_4_3;
5640
5914
  }
5641
5915
  /**
5642
5916
  * Get the default vision model
5643
5917
  */
5644
5918
  getDefaultVisionModel() {
5645
- return MODEL_GROK_4_1_FAST_NON_REASONING;
5919
+ return MODEL_GROK_4_3;
5646
5920
  }
5647
5921
  /**
5648
5922
  * Check if this provider supports vision
@@ -5672,7 +5946,7 @@ If it's in another language, summarize in that language.
5672
5946
  * @param model Name of the model to use
5673
5947
  * @param visionModel Name of the vision model
5674
5948
  */
5675
- constructor(apiKey, model = MODEL_GLM_5_2, visionModel = MODEL_GLM_4_6V_FLASH, tools, endpoint = ENDPOINT_ZAI_CHAT_COMPLETIONS_API, responseLength, responseFormat, thinking) {
5949
+ constructor(apiKey, model = MODEL_GLM_5_2, visionModel = MODEL_GLM_4_6V_FLASH, tools, endpoint = ENDPOINT_ZAI_CHAT_COMPLETIONS_API, responseLength, responseFormat, thinking, reasoningEffort) {
5676
5950
  /** Provider name */
5677
5951
  this.provider = "zai";
5678
5952
  this.apiKey = apiKey;
@@ -5682,6 +5956,7 @@ If it's in another language, summarize in that language.
5682
5956
  this.responseLength = responseLength;
5683
5957
  this.responseFormat = responseFormat;
5684
5958
  this.thinking = thinking ?? { type: "disabled" };
5959
+ this.reasoningEffort = reasoningEffort;
5685
5960
  this.visionModel = visionModel;
5686
5961
  }
5687
5962
  /**
@@ -5786,6 +6061,9 @@ If it's in another language, summarize in that language.
5786
6061
  if (this.thinking) {
5787
6062
  body.thinking = this.thinking;
5788
6063
  }
6064
+ if (isZaiReasoningEffortModel(model) && this.reasoningEffort) {
6065
+ body.reasoning_effort = this.reasoningEffort;
6066
+ }
5789
6067
  const tools = this.buildToolsDefinition();
5790
6068
  if (tools.length > 0) {
5791
6069
  body.tools = tools;
@@ -5836,7 +6114,30 @@ If it's in another language, summarize in that language.
5836
6114
  validate: "explicit"
5837
6115
  });
5838
6116
  const tools = options.tools;
5839
- const thinking = options.thinking ?? { type: "disabled" };
6117
+ const supportedReasoningEfforts = getZaiSupportedReasoningEfforts(model);
6118
+ if (options.reasoning_effort !== void 0 && !supportedReasoningEfforts.includes(options.reasoning_effort)) {
6119
+ const supportedMessage = supportedReasoningEfforts.length > 0 ? `Supported values: ${supportedReasoningEfforts.join(", ")}.` : "This model does not expose configurable effort.";
6120
+ throw new Error(
6121
+ `Model ${model} does not support Z.ai reasoning_effort: ${options.reasoning_effort}. ${supportedMessage}`
6122
+ );
6123
+ }
6124
+ const normalizedReasoningEffort = normalizeZaiReasoningEffort(
6125
+ model,
6126
+ options.reasoning_effort
6127
+ );
6128
+ const alwaysThinking = isZaiAlwaysThinkingModel(model);
6129
+ const usesExplicitThinking = options.thinking !== void 0;
6130
+ const thinking = alwaysThinking ? {
6131
+ type: "enabled",
6132
+ clear_thinking: options.thinking?.clear_thinking ?? true
6133
+ } : usesExplicitThinking && options.reasoning_effort === void 0 ? options.thinking : normalizedReasoningEffort === "high" || normalizedReasoningEffort === "max" ? {
6134
+ type: "enabled",
6135
+ clear_thinking: options.thinking?.clear_thinking
6136
+ } : {
6137
+ type: "disabled",
6138
+ clear_thinking: options.thinking?.clear_thinking
6139
+ };
6140
+ const reasoningEffort = alwaysThinking ? normalizedReasoningEffort : thinking?.type === "enabled" && options.reasoning_effort !== void 0 ? normalizedReasoningEffort : void 0;
5840
6141
  return new ZAIChatService(
5841
6142
  options.apiKey,
5842
6143
  model,
@@ -5845,7 +6146,8 @@ If it's in another language, summarize in that language.
5845
6146
  options.endpoint || ENDPOINT_ZAI_CHAT_COMPLETIONS_API,
5846
6147
  options.responseLength,
5847
6148
  options.responseFormat,
5848
- thinking
6149
+ thinking,
6150
+ reasoningEffort
5849
6151
  );
5850
6152
  }
5851
6153
  /**
@@ -5859,6 +6161,8 @@ If it's in another language, summarize in that language.
5859
6161
  */
5860
6162
  getSupportedModels() {
5861
6163
  return [
6164
+ MODEL_GLM_5_3,
6165
+ MODEL_GLM_5_3_FLASH,
5862
6166
  MODEL_GLM_5_2,
5863
6167
  MODEL_GLM_5_1,
5864
6168
  MODEL_GLM_5,
@@ -6052,7 +6356,8 @@ If it's in another language, summarize in that language.
6052
6356
  mistral: ["low", "medium", "high"],
6053
6357
  plamo: ["none", "medium"],
6054
6358
  xai: ["none", "low", "medium", "high", "xhigh"],
6055
- deepseek: ["none", "low", "high", "max"]
6359
+ deepseek: ["none", "low", "high", "max"],
6360
+ zai: ["none", "minimal", "low", "medium", "high", "xhigh", "max"]
6056
6361
  };
6057
6362
  var ChatServiceFactory = class {
6058
6363
  /**
@@ -6113,7 +6418,7 @@ If it's in another language, summarize in that language.
6113
6418
  mcp: MCP_SUPPORTED_PROVIDERS.has(providerName),
6114
6419
  jsonMode: JSON_MODE_SUPPORTED_PROVIDERS.has(providerName),
6115
6420
  responseLength: true,
6116
- reasoningEffort: providerName === "claude" && model ? [...getClaudeSupportedReasoningEfforts(model)] : providerName === "kimi" && model ? [...getKimiSupportedReasoningEfforts(model)] : providerName === "deepseek" && model ? [...getDeepSeekSupportedReasoningEfforts(model)] : providerName === "openrouter" && model ? [...getOpenRouterSupportedReasoningEfforts(model)] : providerName === "xai" && model ? [...getXaiSupportedReasoningEfforts(model)] : REASONING_EFFORT_BY_PROVIDER[providerName] ?? []
6421
+ 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] ?? []
6117
6422
  };
6118
6423
  }
6119
6424
  /**