@aituber-onair/chat 0.9.0 → 0.11.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 (191) hide show
  1. package/README.ja.md +45 -6
  2. package/README.md +45 -6
  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 +3 -1
  6. package/dist/cjs/constants/claude.js.map +1 -1
  7. package/dist/cjs/constants/index.d.ts +1 -0
  8. package/dist/cjs/constants/index.d.ts.map +1 -1
  9. package/dist/cjs/constants/index.js +1 -0
  10. package/dist/cjs/constants/index.js.map +1 -1
  11. package/dist/cjs/constants/kimi.d.ts +8 -0
  12. package/dist/cjs/constants/kimi.d.ts.map +1 -0
  13. package/dist/cjs/constants/kimi.js +16 -0
  14. package/dist/cjs/constants/kimi.js.map +1 -0
  15. package/dist/cjs/constants/openrouter.d.ts +20 -1
  16. package/dist/cjs/constants/openrouter.d.ts.map +1 -1
  17. package/dist/cjs/constants/openrouter.js +41 -3
  18. package/dist/cjs/constants/openrouter.js.map +1 -1
  19. package/dist/cjs/index.d.ts +3 -1
  20. package/dist/cjs/index.d.ts.map +1 -1
  21. package/dist/cjs/index.js +6 -1
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/services/ChatServiceFactory.d.ts +2 -2
  24. package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -1
  25. package/dist/cjs/services/ChatServiceFactory.js +2 -21
  26. package/dist/cjs/services/ChatServiceFactory.js.map +1 -1
  27. package/dist/cjs/services/providers/ChatServiceProvider.d.ts +38 -6
  28. package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -1
  29. package/dist/cjs/services/providers/claude/ClaudeChatService.d.ts.map +1 -1
  30. package/dist/cjs/services/providers/claude/ClaudeChatService.js +21 -36
  31. package/dist/cjs/services/providers/claude/ClaudeChatService.js.map +1 -1
  32. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts +3 -3
  33. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  34. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js +10 -4
  35. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  36. package/dist/cjs/services/providers/gemini/GeminiChatService.d.ts.map +1 -1
  37. package/dist/cjs/services/providers/gemini/GeminiChatService.js +28 -45
  38. package/dist/cjs/services/providers/gemini/GeminiChatService.js.map +1 -1
  39. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts +3 -3
  40. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -1
  41. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js +9 -4
  42. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -1
  43. package/dist/cjs/services/providers/index.d.ts +8 -0
  44. package/dist/cjs/services/providers/index.d.ts.map +1 -0
  45. package/dist/cjs/services/providers/index.js +18 -0
  46. package/dist/cjs/services/providers/index.js.map +1 -0
  47. package/dist/cjs/services/providers/kimi/KimiChatService.d.ts +75 -0
  48. package/dist/cjs/services/providers/kimi/KimiChatService.d.ts.map +1 -0
  49. package/dist/cjs/services/providers/kimi/KimiChatService.js +173 -0
  50. package/dist/cjs/services/providers/kimi/KimiChatService.js.map +1 -0
  51. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.d.ts +38 -0
  52. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -0
  53. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js +86 -0
  54. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js.map +1 -0
  55. package/dist/cjs/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
  56. package/dist/cjs/services/providers/openai/OpenAIChatService.js +47 -199
  57. package/dist/cjs/services/providers/openai/OpenAIChatService.js.map +1 -1
  58. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts +3 -3
  59. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
  60. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js +9 -4
  61. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
  62. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
  63. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js +31 -165
  64. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
  65. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts +4 -4
  66. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  67. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js +35 -8
  68. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  69. package/dist/cjs/services/providers/zai/ZAIChatService.d.ts.map +1 -1
  70. package/dist/cjs/services/providers/zai/ZAIChatService.js +31 -162
  71. package/dist/cjs/services/providers/zai/ZAIChatService.js.map +1 -1
  72. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts +3 -3
  73. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
  74. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js +9 -8
  75. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
  76. package/dist/cjs/utils/index.d.ts +4 -0
  77. package/dist/cjs/utils/index.d.ts.map +1 -1
  78. package/dist/cjs/utils/index.js +4 -0
  79. package/dist/cjs/utils/index.js.map +1 -1
  80. package/dist/cjs/utils/openaiCompatibleSse.d.ts +10 -0
  81. package/dist/cjs/utils/openaiCompatibleSse.d.ts.map +1 -0
  82. package/dist/cjs/utils/openaiCompatibleSse.js +124 -0
  83. package/dist/cjs/utils/openaiCompatibleSse.js.map +1 -0
  84. package/dist/cjs/utils/openaiCompatibleTools.d.ts +4 -0
  85. package/dist/cjs/utils/openaiCompatibleTools.d.ts.map +1 -0
  86. package/dist/cjs/utils/openaiCompatibleTools.js +25 -0
  87. package/dist/cjs/utils/openaiCompatibleTools.js.map +1 -0
  88. package/dist/cjs/utils/processChatFlow.d.ts +12 -0
  89. package/dist/cjs/utils/processChatFlow.d.ts.map +1 -0
  90. package/dist/cjs/utils/processChatFlow.js +22 -0
  91. package/dist/cjs/utils/processChatFlow.js.map +1 -0
  92. package/dist/cjs/utils/visionModelResolver.d.ts +12 -0
  93. package/dist/cjs/utils/visionModelResolver.d.ts.map +1 -0
  94. package/dist/cjs/utils/visionModelResolver.js +22 -0
  95. package/dist/cjs/utils/visionModelResolver.js.map +1 -0
  96. package/dist/esm/constants/claude.d.ts +1 -0
  97. package/dist/esm/constants/claude.d.ts.map +1 -1
  98. package/dist/esm/constants/claude.js +2 -0
  99. package/dist/esm/constants/claude.js.map +1 -1
  100. package/dist/esm/constants/index.d.ts +1 -0
  101. package/dist/esm/constants/index.d.ts.map +1 -1
  102. package/dist/esm/constants/index.js +1 -0
  103. package/dist/esm/constants/index.js.map +1 -1
  104. package/dist/esm/constants/kimi.d.ts +8 -0
  105. package/dist/esm/constants/kimi.d.ts.map +1 -0
  106. package/dist/esm/constants/kimi.js +12 -0
  107. package/dist/esm/constants/kimi.js.map +1 -0
  108. package/dist/esm/constants/openrouter.d.ts +20 -1
  109. package/dist/esm/constants/openrouter.d.ts.map +1 -1
  110. package/dist/esm/constants/openrouter.js +40 -2
  111. package/dist/esm/constants/openrouter.js.map +1 -1
  112. package/dist/esm/index.d.ts +3 -1
  113. package/dist/esm/index.d.ts.map +1 -1
  114. package/dist/esm/index.js +3 -0
  115. package/dist/esm/index.js.map +1 -1
  116. package/dist/esm/services/ChatServiceFactory.d.ts +2 -2
  117. package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -1
  118. package/dist/esm/services/ChatServiceFactory.js +2 -21
  119. package/dist/esm/services/ChatServiceFactory.js.map +1 -1
  120. package/dist/esm/services/providers/ChatServiceProvider.d.ts +38 -6
  121. package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -1
  122. package/dist/esm/services/providers/claude/ClaudeChatService.d.ts.map +1 -1
  123. package/dist/esm/services/providers/claude/ClaudeChatService.js +21 -36
  124. package/dist/esm/services/providers/claude/ClaudeChatService.js.map +1 -1
  125. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts +3 -3
  126. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  127. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js +11 -5
  128. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  129. package/dist/esm/services/providers/gemini/GeminiChatService.d.ts.map +1 -1
  130. package/dist/esm/services/providers/gemini/GeminiChatService.js +28 -45
  131. package/dist/esm/services/providers/gemini/GeminiChatService.js.map +1 -1
  132. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts +3 -3
  133. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -1
  134. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js +9 -4
  135. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -1
  136. package/dist/esm/services/providers/index.d.ts +8 -0
  137. package/dist/esm/services/providers/index.d.ts.map +1 -0
  138. package/dist/esm/services/providers/index.js +15 -0
  139. package/dist/esm/services/providers/index.js.map +1 -0
  140. package/dist/esm/services/providers/kimi/KimiChatService.d.ts +75 -0
  141. package/dist/esm/services/providers/kimi/KimiChatService.d.ts.map +1 -0
  142. package/dist/esm/services/providers/kimi/KimiChatService.js +169 -0
  143. package/dist/esm/services/providers/kimi/KimiChatService.js.map +1 -0
  144. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.d.ts +38 -0
  145. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -0
  146. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js +82 -0
  147. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js.map +1 -0
  148. package/dist/esm/services/providers/openai/OpenAIChatService.d.ts.map +1 -1
  149. package/dist/esm/services/providers/openai/OpenAIChatService.js +47 -199
  150. package/dist/esm/services/providers/openai/OpenAIChatService.js.map +1 -1
  151. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts +3 -3
  152. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
  153. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js +9 -4
  154. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
  155. package/dist/esm/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
  156. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js +31 -165
  157. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
  158. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts +4 -4
  159. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  160. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js +36 -9
  161. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  162. package/dist/esm/services/providers/zai/ZAIChatService.d.ts.map +1 -1
  163. package/dist/esm/services/providers/zai/ZAIChatService.js +31 -162
  164. package/dist/esm/services/providers/zai/ZAIChatService.js.map +1 -1
  165. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts +3 -3
  166. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
  167. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js +9 -8
  168. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
  169. package/dist/esm/utils/index.d.ts +4 -0
  170. package/dist/esm/utils/index.d.ts.map +1 -1
  171. package/dist/esm/utils/index.js +4 -0
  172. package/dist/esm/utils/index.js.map +1 -1
  173. package/dist/esm/utils/openaiCompatibleSse.d.ts +10 -0
  174. package/dist/esm/utils/openaiCompatibleSse.d.ts.map +1 -0
  175. package/dist/esm/utils/openaiCompatibleSse.js +119 -0
  176. package/dist/esm/utils/openaiCompatibleSse.js.map +1 -0
  177. package/dist/esm/utils/openaiCompatibleTools.d.ts +4 -0
  178. package/dist/esm/utils/openaiCompatibleTools.d.ts.map +1 -0
  179. package/dist/esm/utils/openaiCompatibleTools.js +21 -0
  180. package/dist/esm/utils/openaiCompatibleTools.js.map +1 -0
  181. package/dist/esm/utils/processChatFlow.d.ts +12 -0
  182. package/dist/esm/utils/processChatFlow.d.ts.map +1 -0
  183. package/dist/esm/utils/processChatFlow.js +19 -0
  184. package/dist/esm/utils/processChatFlow.js.map +1 -0
  185. package/dist/esm/utils/visionModelResolver.d.ts +12 -0
  186. package/dist/esm/utils/visionModelResolver.d.ts.map +1 -0
  187. package/dist/esm/utils/visionModelResolver.js +18 -0
  188. package/dist/esm/utils/visionModelResolver.js.map +1 -0
  189. package/dist/umd/aituber-onair-chat.js +1615 -1438
  190. package/dist/umd/aituber-onair-chat.min.js +6 -13
  191. package/package.json +1 -1
package/README.ja.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  ![@aituber-onair/chat ロゴ](./images/aituber-onair-chat.png)
4
4
 
5
- AITuber OnAirのチャット・LLM API統合ライブラリです。このパッケージは、OpenAI、Claude、Gemini、OpenRouter、Z.ai等の様々なAIチャットプロバイダーとやり取りするための統一されたインターフェースを提供します。
5
+ AITuber OnAirのチャット・LLM API統合ライブラリです。このパッケージは、OpenAI、Claude、Gemini、OpenRouter、Z.ai、Kimi等の様々なAIチャットプロバイダーとやり取りするための統一されたインターフェースを提供します。
6
6
 
7
7
  ## 機能
8
8
 
9
- - 🤖 **複数のAIプロバイダー対応**: OpenAI、Claude (Anthropic)、Google Gemini、OpenRouter、Z.ai
9
+ - 🤖 **複数のAIプロバイダー対応**: OpenAI、Claude (Anthropic)、Google Gemini、OpenRouter、Z.ai、Kimi
10
10
  - 🔄 **統一されたインターフェース**: 異なるプロバイダー間での一貫したAPI
11
11
  - 🛠️ **ツール・関数呼び出し**: AI関数呼び出しの自動反復処理をサポート
12
12
  - 💬 **ストリーミングレスポンス**: リアルタイムストリーミングチャット応答
@@ -150,7 +150,7 @@ const openaiService = ChatServiceFactory.createChatService('openai', {
150
150
  ```typescript
151
151
  const claudeService = ChatServiceFactory.createChatService('claude', {
152
152
  apiKey: process.env.ANTHROPIC_API_KEY,
153
- model: 'claude-sonnet-4-5-20250929'
153
+ model: 'claude-opus-4-6'
154
154
  });
155
155
  ```
156
156
 
@@ -179,7 +179,15 @@ const openRouterService = ChatServiceFactory.createChatService('openrouter', {
179
179
  - `gpt-oss-20b:free`モデルでは、技術的制限によりトークン制限が自動的に無効化されます
180
180
  - 応答の長さを制御するには、プロンプト内で指示してください(例:「40文字以内で返答してください」)
181
181
  - 無料階層にはレート制限があります(20リクエスト/分)
182
- - 現在は`openai/gpt-oss-20b:free`モデルのみサポートしています
182
+ - サポート対象モデル(キュレーション済み):
183
+ - `openai/gpt-oss-20b:free`
184
+ - `openai/gpt-5.1-chat`, `openai/gpt-5.1-codex`, `openai/gpt-5-mini`, `openai/gpt-5-nano`
185
+ - `openai/gpt-4o`, `openai/gpt-4.1-mini`, `openai/gpt-4.1-nano`
186
+ - `anthropic/claude-opus-4`, `anthropic/claude-sonnet-4`
187
+ - `anthropic/claude-3.7-sonnet`, `anthropic/claude-3.5-sonnet`, `anthropic/claude-haiku-4.5`
188
+ - `google/gemini-2.5-pro`, `google/gemini-2.5-flash`, `google/gemini-2.5-flash-lite-preview-09-2025`
189
+ - `z-ai/glm-4.7-flash`, `z-ai/glm-4.5-air`, `z-ai/glm-4.5-air:free`
190
+ - `moonshotai/kimi-k2.5`
183
191
 
184
192
  #### Z.ai(GLM)
185
193
 
@@ -196,6 +204,36 @@ const zaiService = ChatServiceFactory.createChatService('zai', {
196
204
  - Z.aiはOpenAI互換のChat Completionsを利用します。
197
205
  - `thinking` はデフォルトで無効化しています。
198
206
 
207
+ #### Kimi(Moonshot)
208
+
209
+ ```typescript
210
+ const kimiService = ChatServiceFactory.createChatService('kimi', {
211
+ apiKey: process.env.MOONSHOT_API_KEY,
212
+ model: 'kimi-k2.5',
213
+ // Optional: エンドポイント/ベースURLの上書き
214
+ // endpoint: 'https://api.moonshot.ai/v1/chat/completions',
215
+ // baseUrl: 'https://api.moonshot.ai/v1',
216
+ thinking: { type: 'enabled' }
217
+ });
218
+ ```
219
+
220
+ 注意:
221
+ - KimiはOpenAI互換のChat Completionsを利用します。
222
+ - ツール使用時は`thinking`を`{ type: 'disabled' }`に強制します。
223
+
224
+ 自前ホスティング例:
225
+
226
+ ```typescript
227
+ const kimiService = ChatServiceFactory.createChatService('kimi', {
228
+ apiKey: process.env.MOONSHOT_API_KEY,
229
+ baseUrl: 'http://localhost:8000/v1',
230
+ thinking: { type: 'disabled' }
231
+ });
232
+ ```
233
+
234
+ 注意:
235
+ - 自前ホスティングではthinking制御に`chat_template_kwargs`を使用します。
236
+
199
237
  ### ビジョンチャット
200
238
 
201
239
  ```typescript
@@ -418,9 +456,10 @@ type ChatResponseLength = 'veryShort' | 'short' | 'medium' | 'long' | 'veryLong'
418
456
 
419
457
  - **OpenAI**: GPT-5.1、GPT-5(Nano/Mini/Standard)、GPT-4.1(miniとnanoを含む), GPT-4, GPT-4o-mini, O3-mini, o1, o1-miniのモデルをサポート
420
458
  - **Gemini**: Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.5 Flash Lite Preview, Gemini 2.0 Flash, Gemini 2.0 Flash-Liteのモデルをサポート
421
- - **Claude**: Claude Opus 4.5, Claude Sonnet 4.5, Claude Haiku 4.5, Claude 4 Sonnet, Claude 4 Opus, Claude 3.7 Sonnet, Claude 3.5 Haiku/Sonnet, Claude 3 Haikuのモデルをサポート
422
- - **OpenRouter**: `openai/gpt-oss-20b:free`(トークン制限の特別処理がある無料利用枠モデル)をサポート
459
+ - **Claude**: Claude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.5, Claude Haiku 4.5, Claude 4 Sonnet, Claude 4 Opus, Claude 3.7 Sonnet, Claude 3.5 Haiku/Sonnet, Claude 3 Haikuのモデルをサポート
460
+ - **OpenRouter**: OpenRouterのキュレーション済みモデル一覧(OpenAI/Claude/Gemini/Z.ai/Kimi)をサポート。モデルIDはOpenRouter節を参照してください
423
461
  - **Z.ai**: GLM-4.7(Flash/FlashX含む)とGLM-4.6V-Flash(ビジョン)をサポート
462
+ - **Kimi**: Kimi K2.5(`kimi-k2.5`、ビジョン対応)をサポート
424
463
 
425
464
  ## ライセンス
426
465
 
package/README.md CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  ![@aituber-onair/chat logo](https://github.com/shinshin86/aituber-onair/raw/main/packages/chat/images/aituber-onair-chat.png)
4
4
 
5
- Chat and LLM API integration library for AITuber OnAir. This package provides a unified interface for interacting with various AI chat providers including OpenAI, Claude, Gemini, OpenRouter, and Z.ai.
5
+ Chat and LLM API integration library for AITuber OnAir. This package provides a unified interface for interacting with various AI chat providers including OpenAI, Claude, Gemini, OpenRouter, Z.ai, and Kimi.
6
6
 
7
7
  ## Features
8
8
 
9
- - 🤖 **Multiple AI Provider Support**: OpenAI, Claude (Anthropic), Google Gemini, OpenRouter, and Z.ai
9
+ - 🤖 **Multiple AI Provider Support**: OpenAI, Claude (Anthropic), Google Gemini, OpenRouter, Z.ai, and Kimi
10
10
  - 🔄 **Unified Interface**: Consistent API across different providers
11
11
  - 🛠️ **Tool/Function Calling**: Support for AI function calling with automatic iteration
12
12
  - 💬 **Streaming Responses**: Real-time streaming chat responses
@@ -150,7 +150,7 @@ const openaiService = ChatServiceFactory.createChatService('openai', {
150
150
  ```typescript
151
151
  const claudeService = ChatServiceFactory.createChatService('claude', {
152
152
  apiKey: process.env.ANTHROPIC_API_KEY,
153
- model: 'claude-sonnet-4-5-20250929'
153
+ model: 'claude-opus-4-6'
154
154
  });
155
155
  ```
156
156
 
@@ -179,7 +179,15 @@ const openRouterService = ChatServiceFactory.createChatService('openrouter', {
179
179
  - Token limits are automatically disabled for the `gpt-oss-20b:free` model due to technical limitations
180
180
  - To control response length, include instructions in your prompt (e.g., "Please respond in 40 characters or less")
181
181
  - Free tier has rate limits (20 requests/minute)
182
- - Only `openai/gpt-oss-20b:free` model is currently supported
182
+ - Supported models (curated list):
183
+ - `openai/gpt-oss-20b:free`
184
+ - `openai/gpt-5.1-chat`, `openai/gpt-5.1-codex`, `openai/gpt-5-mini`, `openai/gpt-5-nano`
185
+ - `openai/gpt-4o`, `openai/gpt-4.1-mini`, `openai/gpt-4.1-nano`
186
+ - `anthropic/claude-opus-4`, `anthropic/claude-sonnet-4`
187
+ - `anthropic/claude-3.7-sonnet`, `anthropic/claude-3.5-sonnet`, `anthropic/claude-haiku-4.5`
188
+ - `google/gemini-2.5-pro`, `google/gemini-2.5-flash`, `google/gemini-2.5-flash-lite-preview-09-2025`
189
+ - `z-ai/glm-4.7-flash`, `z-ai/glm-4.5-air`, `z-ai/glm-4.5-air:free`
190
+ - `moonshotai/kimi-k2.5`
183
191
 
184
192
  #### Z.ai (GLM)
185
193
 
@@ -196,6 +204,36 @@ Notes:
196
204
  - Z.ai uses OpenAI-compatible Chat Completions.
197
205
  - `thinking` is disabled by default to match fast response behavior.
198
206
 
207
+ #### Kimi (Moonshot)
208
+
209
+ ```typescript
210
+ const kimiService = ChatServiceFactory.createChatService('kimi', {
211
+ apiKey: process.env.MOONSHOT_API_KEY,
212
+ model: 'kimi-k2.5',
213
+ // Optional: override endpoint or baseUrl
214
+ // endpoint: 'https://api.moonshot.ai/v1/chat/completions',
215
+ // baseUrl: 'https://api.moonshot.ai/v1',
216
+ thinking: { type: 'enabled' }
217
+ });
218
+ ```
219
+
220
+ Notes:
221
+ - Kimi uses OpenAI-compatible Chat Completions.
222
+ - When tools are enabled, `thinking` is forced to `{ type: 'disabled' }`.
223
+
224
+ Self-hosted example:
225
+
226
+ ```typescript
227
+ const kimiService = ChatServiceFactory.createChatService('kimi', {
228
+ apiKey: process.env.MOONSHOT_API_KEY,
229
+ baseUrl: 'http://localhost:8000/v1',
230
+ thinking: { type: 'disabled' }
231
+ });
232
+ ```
233
+
234
+ Notes for self-hosted:
235
+ - Self-hosted endpoints use `chat_template_kwargs` for thinking controls.
236
+
199
237
  ### Vision Chat
200
238
 
201
239
  ```typescript
@@ -418,9 +456,10 @@ Currently, the following AI providers are built-in:
418
456
 
419
457
  - **OpenAI**: Supports models like GPT-5.1, GPT-5 (Nano/Mini/Standard), GPT-4.1 (including mini and nano), GPT-4, GPT-4o-mini, O3-mini, o1, o1-mini
420
458
  - **Gemini**: Supports models like Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.5 Flash Lite Preview, Gemini 2.0 Flash, Gemini 2.0 Flash-Lite
421
- - **Claude**: Supports models like Claude Opus 4.5, Claude Sonnet 4.5, Claude Haiku 4.5, Claude 4 Sonnet, Claude 4 Opus, Claude 3.7 Sonnet, Claude 3.5 Haiku/Sonnet, Claude 3 Haiku
422
- - **OpenRouter**: Supports `openai/gpt-oss-20b:free` (free tier model with special handling for token limits)
459
+ - **Claude**: Supports models like Claude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.5, Claude Haiku 4.5, Claude 4 Sonnet, Claude 4 Opus, Claude 3.7 Sonnet, Claude 3.5 Haiku/Sonnet, Claude 3 Haiku
460
+ - **OpenRouter**: Supports a curated OpenRouter model list (OpenAI/Claude/Gemini/Z.ai/Kimi). See the OpenRouter section for model IDs.
423
461
  - **Z.ai**: Supports GLM-4.7 (including Flash/FlashX) and GLM-4.6V-Flash (vision)
462
+ - **Kimi**: Supports Kimi K2.5 (`kimi-k2.5`) with vision support
424
463
 
425
464
  ## License
426
465
 
@@ -8,5 +8,6 @@ export declare const MODEL_CLAUDE_4_OPUS = "claude-4-opus-20250514";
8
8
  export declare const MODEL_CLAUDE_4_5_SONNET = "claude-sonnet-4-5-20250929";
9
9
  export declare const MODEL_CLAUDE_4_5_HAIKU = "claude-haiku-4-5-20251001";
10
10
  export declare const MODEL_CLAUDE_4_5_OPUS = "claude-opus-4-5-20251101";
11
+ export declare const MODEL_CLAUDE_4_6_OPUS = "claude-opus-4-6";
11
12
  export declare const CLAUDE_VISION_SUPPORTED_MODELS: string[];
12
13
  //# sourceMappingURL=claude.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,0CAA0C,CAAC;AAG3E,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAEhE,eAAO,MAAM,8BAA8B,UAU1C,CAAC"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,0CAA0C,CAAC;AAG3E,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAEvD,eAAO,MAAM,8BAA8B,UAW1C,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CLAUDE_VISION_SUPPORTED_MODELS = exports.MODEL_CLAUDE_4_5_OPUS = exports.MODEL_CLAUDE_4_5_HAIKU = exports.MODEL_CLAUDE_4_5_SONNET = exports.MODEL_CLAUDE_4_OPUS = exports.MODEL_CLAUDE_4_SONNET = exports.MODEL_CLAUDE_3_7_SONNET = exports.MODEL_CLAUDE_3_5_SONNET = exports.MODEL_CLAUDE_3_5_HAIKU = exports.MODEL_CLAUDE_3_HAIKU = exports.ENDPOINT_CLAUDE_API = void 0;
3
+ exports.CLAUDE_VISION_SUPPORTED_MODELS = exports.MODEL_CLAUDE_4_6_OPUS = exports.MODEL_CLAUDE_4_5_OPUS = exports.MODEL_CLAUDE_4_5_HAIKU = exports.MODEL_CLAUDE_4_5_SONNET = exports.MODEL_CLAUDE_4_OPUS = exports.MODEL_CLAUDE_4_SONNET = exports.MODEL_CLAUDE_3_7_SONNET = exports.MODEL_CLAUDE_3_5_SONNET = exports.MODEL_CLAUDE_3_5_HAIKU = exports.MODEL_CLAUDE_3_HAIKU = exports.ENDPOINT_CLAUDE_API = void 0;
4
4
  exports.ENDPOINT_CLAUDE_API = 'https://api.anthropic.com/v1/messages';
5
5
  // claude model
6
6
  exports.MODEL_CLAUDE_3_HAIKU = 'claude-3-haiku-20240307';
@@ -12,6 +12,7 @@ exports.MODEL_CLAUDE_4_OPUS = 'claude-4-opus-20250514';
12
12
  exports.MODEL_CLAUDE_4_5_SONNET = 'claude-sonnet-4-5-20250929';
13
13
  exports.MODEL_CLAUDE_4_5_HAIKU = 'claude-haiku-4-5-20251001';
14
14
  exports.MODEL_CLAUDE_4_5_OPUS = 'claude-opus-4-5-20251101';
15
+ exports.MODEL_CLAUDE_4_6_OPUS = 'claude-opus-4-6';
15
16
  exports.CLAUDE_VISION_SUPPORTED_MODELS = [
16
17
  exports.MODEL_CLAUDE_3_HAIKU,
17
18
  exports.MODEL_CLAUDE_3_5_HAIKU,
@@ -22,5 +23,6 @@ exports.CLAUDE_VISION_SUPPORTED_MODELS = [
22
23
  exports.MODEL_CLAUDE_4_5_SONNET,
23
24
  exports.MODEL_CLAUDE_4_5_HAIKU,
24
25
  exports.MODEL_CLAUDE_4_5_OPUS,
26
+ exports.MODEL_CLAUDE_4_6_OPUS,
25
27
  ];
26
28
  //# sourceMappingURL=claude.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,uCAAuC,CAAC;AAE3E,eAAe;AACF,QAAA,oBAAoB,GAAG,yBAAyB,CAAC;AACjD,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AACrD,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,qBAAqB,GAAG,0BAA0B,CAAC;AACnD,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAC/C,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AACrD,QAAA,qBAAqB,GAAG,0BAA0B,CAAC;AAEnD,QAAA,8BAA8B,GAAG;IAC5C,4BAAoB;IACpB,8BAAsB;IACtB,+BAAuB;IACvB,+BAAuB;IACvB,6BAAqB;IACrB,2BAAmB;IACnB,+BAAuB;IACvB,8BAAsB;IACtB,6BAAqB;CACtB,CAAC"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,uCAAuC,CAAC;AAE3E,eAAe;AACF,QAAA,oBAAoB,GAAG,yBAAyB,CAAC;AACjD,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AACrD,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,qBAAqB,GAAG,0BAA0B,CAAC;AACnD,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAC/C,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AACrD,QAAA,qBAAqB,GAAG,0BAA0B,CAAC;AACnD,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAE1C,QAAA,8BAA8B,GAAG;IAC5C,4BAAoB;IACpB,8BAAsB;IACtB,+BAAuB;IACvB,+BAAuB;IACvB,6BAAqB;IACrB,2BAAmB;IACnB,+BAAuB;IACvB,8BAAsB;IACtB,6BAAqB;IACrB,6BAAqB;CACtB,CAAC"}
@@ -6,6 +6,7 @@ export * from './gemini';
6
6
  export * from './claude';
7
7
  export * from './openrouter';
8
8
  export * from './zai';
9
+ export * from './kimi';
9
10
  export * from './chat';
10
11
  export * from './prompts';
11
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
@@ -22,6 +22,7 @@ __exportStar(require("./gemini"), exports);
22
22
  __exportStar(require("./claude"), exports);
23
23
  __exportStar(require("./openrouter"), exports);
24
24
  __exportStar(require("./zai"), exports);
25
+ __exportStar(require("./kimi"), exports);
25
26
  __exportStar(require("./chat"), exports);
26
27
  __exportStar(require("./prompts"), exports);
27
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,+CAA6B;AAC7B,wCAAsB;AACtB,yCAAuB;AACvB,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;;GAEG;AACH,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,+CAA6B;AAC7B,wCAAsB;AACtB,yCAAuB;AACvB,yCAAuB;AACvB,4CAA0B"}
@@ -0,0 +1,8 @@
1
+ export declare const ENDPOINT_KIMI_CHAT_COMPLETIONS_API = "https://api.moonshot.ai/v1/chat/completions";
2
+ export declare const MODEL_KIMI_K2_5 = "kimi-k2.5";
3
+ export declare const KIMI_VISION_SUPPORTED_MODELS: string[];
4
+ /**
5
+ * Check if a model supports vision capabilities
6
+ */
7
+ export declare function isKimiVisionModel(model: string): boolean;
8
+ //# sourceMappingURL=kimi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi.d.ts","sourceRoot":"","sources":["../../../src/constants/kimi.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,gDACA,CAAC;AAGhD,eAAO,MAAM,eAAe,cAAc,CAAC;AAG3C,eAAO,MAAM,4BAA4B,UAAoB,CAAC;AAE9D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KIMI_VISION_SUPPORTED_MODELS = exports.MODEL_KIMI_K2_5 = exports.ENDPOINT_KIMI_CHAT_COMPLETIONS_API = void 0;
4
+ exports.isKimiVisionModel = isKimiVisionModel;
5
+ exports.ENDPOINT_KIMI_CHAT_COMPLETIONS_API = 'https://api.moonshot.ai/v1/chat/completions';
6
+ // Kimi models
7
+ exports.MODEL_KIMI_K2_5 = 'kimi-k2.5';
8
+ // Vision support for models
9
+ exports.KIMI_VISION_SUPPORTED_MODELS = [exports.MODEL_KIMI_K2_5];
10
+ /**
11
+ * Check if a model supports vision capabilities
12
+ */
13
+ function isKimiVisionModel(model) {
14
+ return exports.KIMI_VISION_SUPPORTED_MODELS.includes(model);
15
+ }
16
+ //# sourceMappingURL=kimi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi.js","sourceRoot":"","sources":["../../../src/constants/kimi.ts"],"names":[],"mappings":";;;AAYA,8CAEC;AAdY,QAAA,kCAAkC,GAC7C,6CAA6C,CAAC;AAEhD,cAAc;AACD,QAAA,eAAe,GAAG,WAAW,CAAC;AAE3C,4BAA4B;AACf,QAAA,4BAA4B,GAAG,CAAC,uBAAe,CAAC,CAAC;AAE9D;;GAEG;AACH,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,OAAO,oCAA4B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC"}
@@ -1,7 +1,26 @@
1
1
  export declare const ENDPOINT_OPENROUTER_API = "https://openrouter.ai/api/v1/chat/completions";
2
2
  export declare const MODEL_GPT_OSS_20B_FREE = "openai/gpt-oss-20b:free";
3
+ export declare const MODEL_MOONSHOTAI_KIMI_K2_5 = "moonshotai/kimi-k2.5";
4
+ export declare const MODEL_OPENAI_GPT_5_1_CHAT = "openai/gpt-5.1-chat";
5
+ export declare const MODEL_OPENAI_GPT_5_1_CODEX = "openai/gpt-5.1-codex";
6
+ export declare const MODEL_OPENAI_GPT_5_MINI = "openai/gpt-5-mini";
7
+ export declare const MODEL_OPENAI_GPT_5_NANO = "openai/gpt-5-nano";
8
+ export declare const MODEL_OPENAI_GPT_4O = "openai/gpt-4o";
9
+ export declare const MODEL_OPENAI_GPT_4_1_MINI = "openai/gpt-4.1-mini";
10
+ export declare const MODEL_OPENAI_GPT_4_1_NANO = "openai/gpt-4.1-nano";
11
+ export declare const MODEL_ANTHROPIC_CLAUDE_OPUS_4 = "anthropic/claude-opus-4";
12
+ export declare const MODEL_ANTHROPIC_CLAUDE_SONNET_4 = "anthropic/claude-sonnet-4";
13
+ export declare const MODEL_ANTHROPIC_CLAUDE_3_7_SONNET = "anthropic/claude-3.7-sonnet";
14
+ export declare const MODEL_ANTHROPIC_CLAUDE_3_5_SONNET = "anthropic/claude-3.5-sonnet";
15
+ export declare const MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU = "anthropic/claude-haiku-4.5";
16
+ export declare const MODEL_GOOGLE_GEMINI_2_5_PRO = "google/gemini-2.5-pro";
17
+ export declare const MODEL_GOOGLE_GEMINI_2_5_FLASH = "google/gemini-2.5-flash";
18
+ export declare const MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025 = "google/gemini-2.5-flash-lite-preview-09-2025";
19
+ export declare const MODEL_ZAI_GLM_4_7_FLASH = "z-ai/glm-4.7-flash";
20
+ export declare const MODEL_ZAI_GLM_4_5_AIR = "z-ai/glm-4.5-air";
21
+ export declare const MODEL_ZAI_GLM_4_5_AIR_FREE = "z-ai/glm-4.5-air:free";
3
22
  export declare const OPENROUTER_FREE_MODELS: string[];
4
- export declare const OPENROUTER_VISION_SUPPORTED_MODELS: never[];
23
+ export declare const OPENROUTER_VISION_SUPPORTED_MODELS: string[];
5
24
  export declare const OPENROUTER_FREE_RATE_LIMIT_PER_MINUTE = 20;
6
25
  export declare const OPENROUTER_FREE_DAILY_LIMIT_LOW_CREDITS = 50;
7
26
  export declare const OPENROUTER_FREE_DAILY_LIMIT_HIGH_CREDITS = 1000;
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../../src/constants/openrouter.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,kDACa,CAAC;AAGlD,eAAO,MAAM,sBAAsB,4BAA4B,CAAC;AAGhE,eAAO,MAAM,sBAAsB,UAA2B,CAAC;AAG/D,eAAO,MAAM,kCAAkC,SAAK,CAAC;AAGrD,eAAO,MAAM,qCAAqC,KAAK,CAAC;AACxD,eAAO,MAAM,uCAAuC,KAAK,CAAC;AAC1D,eAAO,MAAM,wCAAwC,OAAO,CAAC;AAC7D,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAI9D"}
1
+ {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../../../src/constants/openrouter.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,kDACa,CAAC;AAGlD,eAAO,MAAM,sBAAsB,4BAA4B,CAAC;AAChE,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AACjE,eAAO,MAAM,yBAAyB,wBAAwB,CAAC;AAC/D,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AACjE,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAC3D,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAC3D,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,yBAAyB,wBAAwB,CAAC;AAC/D,eAAO,MAAM,yBAAyB,wBAAwB,CAAC;AAC/D,eAAO,MAAM,6BAA6B,4BAA4B,CAAC;AACvE,eAAO,MAAM,+BAA+B,8BAA8B,CAAC;AAC3E,eAAO,MAAM,iCAAiC,gCAAgC,CAAC;AAC/E,eAAO,MAAM,iCAAiC,gCAAgC,CAAC;AAC/E,eAAO,MAAM,gCAAgC,+BAA+B,CAAC;AAC7E,eAAO,MAAM,2BAA2B,0BAA0B,CAAC;AACnE,eAAO,MAAM,6BAA6B,4BAA4B,CAAC;AACvE,eAAO,MAAM,kDAAkD,iDACf,CAAC;AACjD,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAC5D,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AACxD,eAAO,MAAM,0BAA0B,0BAA0B,CAAC;AAGlE,eAAO,MAAM,sBAAsB,UAGlC,CAAC;AAGF,eAAO,MAAM,kCAAkC,UAgB9C,CAAC;AAGF,eAAO,MAAM,qCAAqC,KAAK,CAAC;AACxD,eAAO,MAAM,uCAAuC,KAAK,CAAC;AAC1D,eAAO,MAAM,wCAAwC,OAAO,CAAC;AAC7D,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAI9D"}
@@ -1,15 +1,53 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.OPENROUTER_CREDITS_THRESHOLD = exports.OPENROUTER_FREE_DAILY_LIMIT_HIGH_CREDITS = exports.OPENROUTER_FREE_DAILY_LIMIT_LOW_CREDITS = exports.OPENROUTER_FREE_RATE_LIMIT_PER_MINUTE = exports.OPENROUTER_VISION_SUPPORTED_MODELS = exports.OPENROUTER_FREE_MODELS = exports.MODEL_GPT_OSS_20B_FREE = exports.ENDPOINT_OPENROUTER_API = void 0;
3
+ exports.OPENROUTER_CREDITS_THRESHOLD = exports.OPENROUTER_FREE_DAILY_LIMIT_HIGH_CREDITS = exports.OPENROUTER_FREE_DAILY_LIMIT_LOW_CREDITS = exports.OPENROUTER_FREE_RATE_LIMIT_PER_MINUTE = exports.OPENROUTER_VISION_SUPPORTED_MODELS = exports.OPENROUTER_FREE_MODELS = exports.MODEL_ZAI_GLM_4_5_AIR_FREE = exports.MODEL_ZAI_GLM_4_5_AIR = exports.MODEL_ZAI_GLM_4_7_FLASH = exports.MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025 = exports.MODEL_GOOGLE_GEMINI_2_5_FLASH = exports.MODEL_GOOGLE_GEMINI_2_5_PRO = exports.MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU = exports.MODEL_ANTHROPIC_CLAUDE_3_5_SONNET = exports.MODEL_ANTHROPIC_CLAUDE_3_7_SONNET = exports.MODEL_ANTHROPIC_CLAUDE_SONNET_4 = exports.MODEL_ANTHROPIC_CLAUDE_OPUS_4 = exports.MODEL_OPENAI_GPT_4_1_NANO = exports.MODEL_OPENAI_GPT_4_1_MINI = exports.MODEL_OPENAI_GPT_4O = exports.MODEL_OPENAI_GPT_5_NANO = exports.MODEL_OPENAI_GPT_5_MINI = exports.MODEL_OPENAI_GPT_5_1_CODEX = exports.MODEL_OPENAI_GPT_5_1_CHAT = exports.MODEL_MOONSHOTAI_KIMI_K2_5 = exports.MODEL_GPT_OSS_20B_FREE = exports.ENDPOINT_OPENROUTER_API = void 0;
4
4
  exports.isOpenRouterFreeModel = isOpenRouterFreeModel;
5
5
  exports.isOpenRouterVisionModel = isOpenRouterVisionModel;
6
6
  exports.ENDPOINT_OPENROUTER_API = 'https://openrouter.ai/api/v1/chat/completions';
7
7
  // OpenRouter models
8
8
  exports.MODEL_GPT_OSS_20B_FREE = 'openai/gpt-oss-20b:free';
9
+ exports.MODEL_MOONSHOTAI_KIMI_K2_5 = 'moonshotai/kimi-k2.5';
10
+ exports.MODEL_OPENAI_GPT_5_1_CHAT = 'openai/gpt-5.1-chat';
11
+ exports.MODEL_OPENAI_GPT_5_1_CODEX = 'openai/gpt-5.1-codex';
12
+ exports.MODEL_OPENAI_GPT_5_MINI = 'openai/gpt-5-mini';
13
+ exports.MODEL_OPENAI_GPT_5_NANO = 'openai/gpt-5-nano';
14
+ exports.MODEL_OPENAI_GPT_4O = 'openai/gpt-4o';
15
+ exports.MODEL_OPENAI_GPT_4_1_MINI = 'openai/gpt-4.1-mini';
16
+ exports.MODEL_OPENAI_GPT_4_1_NANO = 'openai/gpt-4.1-nano';
17
+ exports.MODEL_ANTHROPIC_CLAUDE_OPUS_4 = 'anthropic/claude-opus-4';
18
+ exports.MODEL_ANTHROPIC_CLAUDE_SONNET_4 = 'anthropic/claude-sonnet-4';
19
+ exports.MODEL_ANTHROPIC_CLAUDE_3_7_SONNET = 'anthropic/claude-3.7-sonnet';
20
+ exports.MODEL_ANTHROPIC_CLAUDE_3_5_SONNET = 'anthropic/claude-3.5-sonnet';
21
+ exports.MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU = 'anthropic/claude-haiku-4.5';
22
+ exports.MODEL_GOOGLE_GEMINI_2_5_PRO = 'google/gemini-2.5-pro';
23
+ exports.MODEL_GOOGLE_GEMINI_2_5_FLASH = 'google/gemini-2.5-flash';
24
+ exports.MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025 = 'google/gemini-2.5-flash-lite-preview-09-2025';
25
+ exports.MODEL_ZAI_GLM_4_7_FLASH = 'z-ai/glm-4.7-flash';
26
+ exports.MODEL_ZAI_GLM_4_5_AIR = 'z-ai/glm-4.5-air';
27
+ exports.MODEL_ZAI_GLM_4_5_AIR_FREE = 'z-ai/glm-4.5-air:free';
9
28
  // Free tier models
10
- exports.OPENROUTER_FREE_MODELS = [exports.MODEL_GPT_OSS_20B_FREE];
29
+ exports.OPENROUTER_FREE_MODELS = [
30
+ exports.MODEL_GPT_OSS_20B_FREE,
31
+ exports.MODEL_ZAI_GLM_4_5_AIR_FREE,
32
+ ];
11
33
  // Vision supported models on OpenRouter
12
- exports.OPENROUTER_VISION_SUPPORTED_MODELS = [];
34
+ exports.OPENROUTER_VISION_SUPPORTED_MODELS = [
35
+ exports.MODEL_OPENAI_GPT_5_1_CHAT,
36
+ exports.MODEL_OPENAI_GPT_5_1_CODEX,
37
+ exports.MODEL_OPENAI_GPT_5_MINI,
38
+ exports.MODEL_OPENAI_GPT_5_NANO,
39
+ exports.MODEL_OPENAI_GPT_4O,
40
+ exports.MODEL_OPENAI_GPT_4_1_MINI,
41
+ exports.MODEL_OPENAI_GPT_4_1_NANO,
42
+ exports.MODEL_ANTHROPIC_CLAUDE_OPUS_4,
43
+ exports.MODEL_ANTHROPIC_CLAUDE_SONNET_4,
44
+ exports.MODEL_ANTHROPIC_CLAUDE_3_7_SONNET,
45
+ exports.MODEL_ANTHROPIC_CLAUDE_4_5_HAIKU,
46
+ exports.MODEL_GOOGLE_GEMINI_2_5_PRO,
47
+ exports.MODEL_GOOGLE_GEMINI_2_5_FLASH,
48
+ exports.MODEL_GOOGLE_GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025,
49
+ exports.MODEL_MOONSHOTAI_KIMI_K2_5,
50
+ ];
13
51
  // Rate limits for free tier
14
52
  exports.OPENROUTER_FREE_RATE_LIMIT_PER_MINUTE = 20;
15
53
  exports.OPENROUTER_FREE_DAILY_LIMIT_LOW_CREDITS = 50;
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../../src/constants/openrouter.ts"],"names":[],"mappings":";;;AAuBA,sDAEC;AAOD,0DAIC;AApCY,QAAA,uBAAuB,GAClC,+CAA+C,CAAC;AAElD,oBAAoB;AACP,QAAA,sBAAsB,GAAG,yBAAyB,CAAC;AAEhE,mBAAmB;AACN,QAAA,sBAAsB,GAAG,CAAC,8BAAsB,CAAC,CAAC;AAE/D,wCAAwC;AAC3B,QAAA,kCAAkC,GAAG,EAAE,CAAC;AAErD,4BAA4B;AACf,QAAA,qCAAqC,GAAG,EAAE,CAAC;AAC3C,QAAA,uCAAuC,GAAG,EAAE,CAAC;AAC7C,QAAA,wCAAwC,GAAG,IAAI,CAAC;AAChD,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAE/C;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,KAAa;IACjD,OAAO,8BAAsB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,KAAa;IACnD,OAAO,0CAAkC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAC7D,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC5B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../../src/constants/openrouter.ts"],"names":[],"mappings":";;;AA8DA,sDAEC;AAOD,0DAIC;AA3EY,QAAA,uBAAuB,GAClC,+CAA+C,CAAC;AAElD,oBAAoB;AACP,QAAA,sBAAsB,GAAG,yBAAyB,CAAC;AACnD,QAAA,0BAA0B,GAAG,sBAAsB,CAAC;AACpD,QAAA,yBAAyB,GAAG,qBAAqB,CAAC;AAClD,QAAA,0BAA0B,GAAG,sBAAsB,CAAC;AACpD,QAAA,uBAAuB,GAAG,mBAAmB,CAAC;AAC9C,QAAA,uBAAuB,GAAG,mBAAmB,CAAC;AAC9C,QAAA,mBAAmB,GAAG,eAAe,CAAC;AACtC,QAAA,yBAAyB,GAAG,qBAAqB,CAAC;AAClD,QAAA,yBAAyB,GAAG,qBAAqB,CAAC;AAClD,QAAA,6BAA6B,GAAG,yBAAyB,CAAC;AAC1D,QAAA,+BAA+B,GAAG,2BAA2B,CAAC;AAC9D,QAAA,iCAAiC,GAAG,6BAA6B,CAAC;AAClE,QAAA,iCAAiC,GAAG,6BAA6B,CAAC;AAClE,QAAA,gCAAgC,GAAG,4BAA4B,CAAC;AAChE,QAAA,2BAA2B,GAAG,uBAAuB,CAAC;AACtD,QAAA,6BAA6B,GAAG,yBAAyB,CAAC;AAC1D,QAAA,kDAAkD,GAC7D,8CAA8C,CAAC;AACpC,QAAA,uBAAuB,GAAG,oBAAoB,CAAC;AAC/C,QAAA,qBAAqB,GAAG,kBAAkB,CAAC;AAC3C,QAAA,0BAA0B,GAAG,uBAAuB,CAAC;AAElE,mBAAmB;AACN,QAAA,sBAAsB,GAAG;IACpC,8BAAsB;IACtB,kCAA0B;CAC3B,CAAC;AAEF,wCAAwC;AAC3B,QAAA,kCAAkC,GAAG;IAChD,iCAAyB;IACzB,kCAA0B;IAC1B,+BAAuB;IACvB,+BAAuB;IACvB,2BAAmB;IACnB,iCAAyB;IACzB,iCAAyB;IACzB,qCAA6B;IAC7B,uCAA+B;IAC/B,yCAAiC;IACjC,wCAAgC;IAChC,mCAA2B;IAC3B,qCAA6B;IAC7B,0DAAkD;IAClD,kCAA0B;CAC3B,CAAC;AAEF,4BAA4B;AACf,QAAA,qCAAqC,GAAG,EAAE,CAAC;AAC3C,QAAA,uCAAuC,GAAG,EAAE,CAAC;AAC7C,QAAA,wCAAwC,GAAG,IAAI,CAAC;AAChD,QAAA,4BAA4B,GAAG,EAAE,CAAC;AAE/C;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,KAAa;IACjD,OAAO,8BAAsB,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,KAAa;IACnD,OAAO,0CAAkC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAC7D,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAC5B,CAAC;AACJ,CAAC"}
@@ -5,7 +5,7 @@
5
5
  export * from './types';
6
6
  export type { ChatService } from './services/ChatService';
7
7
  export { ChatServiceFactory } from './services/ChatServiceFactory';
8
- export type { ChatServiceOptions, ChatServiceProvider, } from './services/providers/ChatServiceProvider';
8
+ export type { ChatServiceOptions, ChatServiceOptionsByProvider, ChatProviderName, OpenAIChatServiceOptions, OpenRouterChatServiceOptions, GeminiChatServiceOptions, ClaudeChatServiceOptions, ZAIChatServiceOptions, KimiChatServiceOptions, ChatServiceProvider, } from './services/providers/ChatServiceProvider';
9
9
  export { OpenAIChatService } from './services/providers/openai/OpenAIChatService';
10
10
  export { OpenAIChatServiceProvider } from './services/providers/openai/OpenAIChatServiceProvider';
11
11
  export { GeminiChatService } from './services/providers/gemini/GeminiChatService';
@@ -16,6 +16,8 @@ export { OpenRouterChatService } from './services/providers/openrouter/OpenRoute
16
16
  export { OpenRouterChatServiceProvider } from './services/providers/openrouter/OpenRouterChatServiceProvider';
17
17
  export { ZAIChatService } from './services/providers/zai/ZAIChatService';
18
18
  export { ZAIChatServiceProvider } from './services/providers/zai/ZAIChatServiceProvider';
19
+ export { KimiChatService } from './services/providers/kimi/KimiChatService';
20
+ export { KimiChatServiceProvider } from './services/providers/kimi/KimiChatServiceProvider';
19
21
  export * from './constants';
20
22
  export * from './utils';
21
23
  export { installGASFetch } from './adapters/gasFetch';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,SAAS,CAAC;AAGxB,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,YAAY,EACV,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAGlG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAGlG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAGlG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAG9G,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAGzF,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,SAAS,CAAC;AAGxB,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGnE,YAAY,EACV,kBAAkB,EAClB,4BAA4B,EAC5B,gBAAgB,EAChB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAGlG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAGlG,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAGlG,OAAO,EAAE,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAG9G,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAGzF,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAG5F,cAAc,aAAa,CAAC;AAG5B,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -18,7 +18,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
18
18
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
19
19
  };
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.installGASFetch = exports.ZAIChatServiceProvider = exports.ZAIChatService = exports.OpenRouterChatServiceProvider = exports.OpenRouterChatService = exports.ClaudeChatServiceProvider = exports.ClaudeChatService = exports.GeminiChatServiceProvider = exports.GeminiChatService = exports.OpenAIChatServiceProvider = exports.OpenAIChatService = exports.ChatServiceFactory = void 0;
21
+ exports.installGASFetch = exports.KimiChatServiceProvider = exports.KimiChatService = exports.ZAIChatServiceProvider = exports.ZAIChatService = exports.OpenRouterChatServiceProvider = exports.OpenRouterChatService = exports.ClaudeChatServiceProvider = exports.ClaudeChatService = exports.GeminiChatServiceProvider = exports.GeminiChatService = exports.OpenAIChatServiceProvider = exports.OpenAIChatService = exports.ChatServiceFactory = void 0;
22
22
  // Type definitions exports
23
23
  __exportStar(require("./types"), exports);
24
24
  var ChatServiceFactory_1 = require("./services/ChatServiceFactory");
@@ -48,6 +48,11 @@ var ZAIChatService_1 = require("./services/providers/zai/ZAIChatService");
48
48
  Object.defineProperty(exports, "ZAIChatService", { enumerable: true, get: function () { return ZAIChatService_1.ZAIChatService; } });
49
49
  var ZAIChatServiceProvider_1 = require("./services/providers/zai/ZAIChatServiceProvider");
50
50
  Object.defineProperty(exports, "ZAIChatServiceProvider", { enumerable: true, get: function () { return ZAIChatServiceProvider_1.ZAIChatServiceProvider; } });
51
+ // Kimi provider exports
52
+ var KimiChatService_1 = require("./services/providers/kimi/KimiChatService");
53
+ Object.defineProperty(exports, "KimiChatService", { enumerable: true, get: function () { return KimiChatService_1.KimiChatService; } });
54
+ var KimiChatServiceProvider_1 = require("./services/providers/kimi/KimiChatServiceProvider");
55
+ Object.defineProperty(exports, "KimiChatServiceProvider", { enumerable: true, get: function () { return KimiChatServiceProvider_1.KimiChatServiceProvider; } });
51
56
  // Constants exports
52
57
  __exportStar(require("./constants"), exports);
53
58
  // Utility exports
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,2BAA2B;AAC3B,0CAAwB;AAIxB,oEAAmE;AAA1D,wHAAA,kBAAkB,OAAA;AAQ3B,0BAA0B;AAC1B,mFAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,sIAAA,yBAAyB,OAAA;AAElC,0BAA0B;AAC1B,mFAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,sIAAA,yBAAyB,OAAA;AAElC,0BAA0B;AAC1B,mFAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,sIAAA,yBAAyB,OAAA;AAElC,8BAA8B;AAC9B,+FAA8F;AAArF,8HAAA,qBAAqB,OAAA;AAC9B,+GAA8G;AAArG,8IAAA,6BAA6B,OAAA;AAEtC,wBAAwB;AACxB,0EAAyE;AAAhE,gHAAA,cAAc,OAAA;AACvB,0FAAyF;AAAhF,gIAAA,sBAAsB,OAAA;AAE/B,oBAAoB;AACpB,8CAA4B;AAE5B,kBAAkB;AAClB,0CAAwB;AAExB,WAAW;AACX,gDAAsD;AAA7C,2GAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,2BAA2B;AAC3B,0CAAwB;AAIxB,oEAAmE;AAA1D,wHAAA,kBAAkB,OAAA;AAgB3B,0BAA0B;AAC1B,mFAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,sIAAA,yBAAyB,OAAA;AAElC,0BAA0B;AAC1B,mFAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,sIAAA,yBAAyB,OAAA;AAElC,0BAA0B;AAC1B,mFAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,sIAAA,yBAAyB,OAAA;AAElC,8BAA8B;AAC9B,+FAA8F;AAArF,8HAAA,qBAAqB,OAAA;AAC9B,+GAA8G;AAArG,8IAAA,6BAA6B,OAAA;AAEtC,wBAAwB;AACxB,0EAAyE;AAAhE,gHAAA,cAAc,OAAA;AACvB,0FAAyF;AAAhF,gIAAA,sBAAsB,OAAA;AAE/B,wBAAwB;AACxB,6EAA4E;AAAnE,kHAAA,eAAe,OAAA;AACxB,6FAA4F;AAAnF,kIAAA,uBAAuB,OAAA;AAEhC,oBAAoB;AACpB,8CAA4B;AAE5B,kBAAkB;AAClB,0CAAwB;AAExB,WAAW;AACX,gDAAsD;AAA7C,2GAAA,eAAe,OAAA"}
@@ -1,5 +1,5 @@
1
1
  import { ChatService } from './ChatService';
2
- import { ChatServiceOptions, ChatServiceProvider } from './providers/ChatServiceProvider';
2
+ import { ChatServiceOptionsByProvider, ChatProviderName, ChatServiceProvider } from './providers/ChatServiceProvider';
3
3
  /**
4
4
  * Chat service factory
5
5
  * Manages and creates various AI providers
@@ -18,7 +18,7 @@ export declare class ChatServiceFactory {
18
18
  * @param options Service options
19
19
  * @returns Created ChatService instance
20
20
  */
21
- static createChatService(providerName: string, options: ChatServiceOptions): ChatService;
21
+ static createChatService<TProvider extends ChatProviderName>(providerName: TProvider, options: ChatServiceOptionsByProvider[TProvider]): ChatService;
22
22
  /**
23
23
  * Get registered providers
24
24
  * @returns Provider map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatServiceFactory.d.ts","sourceRoot":"","sources":["../../../src/services/ChatServiceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAOzC;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAAC,SAAS,CAA+C;IAEvE;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAI5D;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,CACtB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,kBAAkB,GAC1B,WAAW;IAQd;;;OAGG;IACH,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAIvD;;;OAGG;IACH,MAAM,CAAC,qBAAqB,IAAI,MAAM,EAAE;IAIxC;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE;CAI1D"}
1
+ {"version":3,"file":"ChatServiceFactory.d.ts","sourceRoot":"","sources":["../../../src/services/ChatServiceFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAEL,4BAA4B,EAC5B,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,iCAAiC,CAAC;AAGzC;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAAC,SAAS,CAA+C;IAEvE;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAI5D;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,CAAC,SAAS,SAAS,gBAAgB,EACzD,YAAY,EAAE,SAAS,EACvB,OAAO,EAAE,4BAA4B,CAAC,SAAS,CAAC,GAC/C,WAAW;IAYd;;;OAGG;IACH,MAAM,CAAC,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAIvD;;;OAGG;IACH,MAAM,CAAC,qBAAqB,IAAI,MAAM,EAAE;IAIxC;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE;CAI1D"}
@@ -1,11 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ChatServiceFactory = void 0;
4
- const OpenAIChatServiceProvider_1 = require("./providers/openai/OpenAIChatServiceProvider");
5
- const GeminiChatServiceProvider_1 = require("./providers/gemini/GeminiChatServiceProvider");
6
- const ClaudeChatServiceProvider_1 = require("./providers/claude/ClaudeChatServiceProvider");
7
- const OpenRouterChatServiceProvider_1 = require("./providers/openrouter/OpenRouterChatServiceProvider");
8
- const ZAIChatServiceProvider_1 = require("./providers/zai/ZAIChatServiceProvider");
4
+ const providers_1 = require("./providers");
9
5
  /**
10
6
  * Chat service factory
11
7
  * Manages and creates various AI providers
@@ -18,12 +14,6 @@ class ChatServiceFactory {
18
14
  static registerProvider(provider) {
19
15
  this.providers.set(provider.getProviderName(), provider);
20
16
  }
21
- /**
22
- * Create a chat service with the specified provider name and options
23
- * @param providerName Provider name
24
- * @param options Service options
25
- * @returns Created ChatService instance
26
- */
27
17
  static createChatService(providerName, options) {
28
18
  const provider = this.providers.get(providerName);
29
19
  if (!provider) {
@@ -58,14 +48,5 @@ class ChatServiceFactory {
58
48
  exports.ChatServiceFactory = ChatServiceFactory;
59
49
  /** Map of registered providers */
60
50
  ChatServiceFactory.providers = new Map();
61
- // Register OpenAI as a provider
62
- ChatServiceFactory.registerProvider(new OpenAIChatServiceProvider_1.OpenAIChatServiceProvider());
63
- // Register Gemini as a provider
64
- ChatServiceFactory.registerProvider(new GeminiChatServiceProvider_1.GeminiChatServiceProvider());
65
- // Register Claude as a provider
66
- ChatServiceFactory.registerProvider(new ClaudeChatServiceProvider_1.ClaudeChatServiceProvider());
67
- // Register OpenRouter as a provider
68
- ChatServiceFactory.registerProvider(new OpenRouterChatServiceProvider_1.OpenRouterChatServiceProvider());
69
- // Register Z.ai as a provider
70
- ChatServiceFactory.registerProvider(new ZAIChatServiceProvider_1.ZAIChatServiceProvider());
51
+ providers_1.DEFAULT_CHAT_SERVICE_PROVIDERS.forEach((provider) => ChatServiceFactory.registerProvider(provider));
71
52
  //# sourceMappingURL=ChatServiceFactory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatServiceFactory.js","sourceRoot":"","sources":["../../../src/services/ChatServiceFactory.ts"],"names":[],"mappings":";;;AAKA,4FAAyF;AACzF,4FAAyF;AACzF,4FAAyF;AACzF,wGAAqG;AACrG,mFAAgF;AAEhF;;;GAGG;AACH,MAAa,kBAAkB;IAI7B;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAA6B;QACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,CACtB,YAAoB,EACpB,OAA2B;QAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,qBAAqB;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,YAAoB;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,CAAC;;AArDH,gDAsDC;AArDC,kCAAkC;AACnB,4BAAS,GAAqC,IAAI,GAAG,EAAE,CAAC;AAsDzE,gCAAgC;AAChC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,qDAAyB,EAAE,CAAC,CAAC;AACrE,gCAAgC;AAChC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,qDAAyB,EAAE,CAAC,CAAC;AACrE,gCAAgC;AAChC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,qDAAyB,EAAE,CAAC,CAAC;AACrE,oCAAoC;AACpC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,6DAA6B,EAAE,CAAC,CAAC;AACzE,8BAA8B;AAC9B,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,+CAAsB,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"ChatServiceFactory.js","sourceRoot":"","sources":["../../../src/services/ChatServiceFactory.ts"],"names":[],"mappings":";;;AAOA,2CAA6D;AAE7D;;;GAGG;AACH,MAAa,kBAAkB;IAI7B;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAA6B;QACnD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAYD,MAAM,CAAC,iBAAiB,CACtB,YAAoB,EACpB,OAA2B;QAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,YAAY,EAAE,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,qBAAqB;QAC1B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,YAAoB;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,CAAC;;AAzDH,gDA0DC;AAzDC,kCAAkC;AACnB,4BAAS,GAAqC,IAAI,GAAG,EAAE,CAAC;AA0DzE,0CAA8B,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAClD,kBAAkB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAC9C,CAAC"}
@@ -1,9 +1,10 @@
1
1
  import { ChatService } from '../ChatService';
2
2
  import { ChatResponseLength, GPT5PresetKey } from '../../constants/chat';
3
+ import { ToolDefinition, MCPServerConfig } from '../../types';
3
4
  /**
4
5
  * Options for chat service providers
5
6
  */
6
- export interface ChatServiceOptions {
7
+ export interface BaseChatServiceOptions {
7
8
  /** API Key */
8
9
  apiKey: string;
9
10
  /** Model name */
@@ -12,6 +13,8 @@ export interface ChatServiceOptions {
12
13
  visionModel?: string;
13
14
  /** API endpoint type (chat/completions or responses (OpenAI only)) */
14
15
  endpoint?: string;
16
+ /** Base URL for OpenAI-compatible APIs (Kimi only) */
17
+ baseUrl?: string;
15
18
  /** Response length setting */
16
19
  responseLength?: ChatResponseLength;
17
20
  /** Verbosity level for GPT-5 models (OpenAI only) */
@@ -33,25 +36,53 @@ export interface ChatServiceOptions {
33
36
  type: 'text' | 'json_object' | 'json_schema';
34
37
  json_schema?: any;
35
38
  };
36
- /** Thinking mode options (Z.ai only) */
39
+ /** Thinking mode options (Z.ai/Kimi only) */
37
40
  thinking?: {
38
41
  type: 'enabled' | 'disabled';
39
42
  clear_thinking?: boolean;
40
43
  };
41
- /** Additional provider-specific options */
42
- [key: string]: any;
44
+ /** Tool definitions (OpenAI-compatible tools) */
45
+ tools?: ToolDefinition[];
43
46
  }
47
+ type DisallowKeys<T, K extends keyof T> = Omit<T, K> & {
48
+ [P in K]?: never;
49
+ };
50
+ export type OpenAIChatServiceOptions = DisallowKeys<BaseChatServiceOptions, 'baseUrl' | 'thinking' | 'includeReasoning' | 'reasoningMaxTokens'> & {
51
+ mcpServers?: MCPServerConfig[];
52
+ };
53
+ export type OpenRouterChatServiceOptions = DisallowKeys<BaseChatServiceOptions, 'gpt5Preset' | 'gpt5EndpointPreference' | 'enableReasoningSummary' | 'verbosity' | 'baseUrl' | 'thinking' | 'responseFormat'> & {
54
+ appName?: string;
55
+ appUrl?: string;
56
+ };
57
+ export type GeminiChatServiceOptions = DisallowKeys<BaseChatServiceOptions, 'endpoint' | 'baseUrl' | 'verbosity' | 'reasoning_effort' | 'gpt5Preset' | 'gpt5EndpointPreference' | 'enableReasoningSummary' | 'includeReasoning' | 'reasoningMaxTokens' | 'responseFormat' | 'thinking'> & {
58
+ mcpServers?: MCPServerConfig[];
59
+ };
60
+ export type ClaudeChatServiceOptions = DisallowKeys<BaseChatServiceOptions, 'endpoint' | 'baseUrl' | 'verbosity' | 'reasoning_effort' | 'gpt5Preset' | 'gpt5EndpointPreference' | 'enableReasoningSummary' | 'includeReasoning' | 'reasoningMaxTokens' | 'responseFormat' | 'thinking'> & {
61
+ mcpServers?: MCPServerConfig[];
62
+ };
63
+ export type KimiChatServiceOptions = DisallowKeys<BaseChatServiceOptions, 'verbosity' | 'reasoning_effort' | 'gpt5Preset' | 'gpt5EndpointPreference' | 'enableReasoningSummary' | 'includeReasoning' | 'reasoningMaxTokens'>;
64
+ export type ZAIChatServiceOptions = DisallowKeys<BaseChatServiceOptions, 'verbosity' | 'reasoning_effort' | 'gpt5Preset' | 'gpt5EndpointPreference' | 'enableReasoningSummary' | 'includeReasoning' | 'reasoningMaxTokens' | 'baseUrl'>;
65
+ export type ChatServiceOptions<TExtra extends Record<string, unknown> = Record<string, unknown>> = BaseChatServiceOptions & TExtra;
66
+ export type ChatServiceOptionsByProvider = {
67
+ openai: OpenAIChatServiceOptions;
68
+ openrouter: OpenRouterChatServiceOptions;
69
+ gemini: GeminiChatServiceOptions;
70
+ claude: ClaudeChatServiceOptions;
71
+ zai: ZAIChatServiceOptions;
72
+ kimi: KimiChatServiceOptions;
73
+ };
74
+ export type ChatProviderName = keyof ChatServiceOptionsByProvider;
44
75
  /**
45
76
  * Chat service provider interface
46
77
  * Abstraction for various AI API providers (OpenAI, Gemini, Claude, etc.)
47
78
  */
48
- export interface ChatServiceProvider {
79
+ export interface ChatServiceProvider<TOptions extends BaseChatServiceOptions = BaseChatServiceOptions> {
49
80
  /**
50
81
  * Create a chat service instance
51
82
  * @param options Service options
52
83
  * @returns ChatService implementation
53
84
  */
54
- createChatService(options: ChatServiceOptions): ChatService;
85
+ createChatService(options: TOptions): ChatService;
55
86
  /**
56
87
  * Get the provider name
57
88
  * @returns Provider name
@@ -73,4 +104,5 @@ export interface ChatServiceProvider {
73
104
  */
74
105
  supportsVision(): boolean;
75
106
  }
107
+ export {};
76
108
  //# sourceMappingURL=ChatServiceProvider.d.ts.map