@aituber-onair/chat 0.21.2 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +63 -3
- package/README.md +64 -3
- package/dist/cjs/constants/index.d.ts +1 -0
- package/dist/cjs/constants/index.d.ts.map +1 -1
- package/dist/cjs/constants/index.js +1 -0
- package/dist/cjs/constants/index.js.map +1 -1
- package/dist/cjs/constants/xai.d.ts +11 -0
- package/dist/cjs/constants/xai.d.ts.map +1 -0
- package/dist/cjs/constants/xai.js +24 -0
- package/dist/cjs/constants/xai.js.map +1 -0
- package/dist/cjs/index.d.ts +3 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +6 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/services/ChatServiceFactory.d.ts +9 -1
- package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -1
- package/dist/cjs/services/ChatServiceFactory.js +25 -0
- package/dist/cjs/services/ChatServiceFactory.js.map +1 -1
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts +20 -1
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts +3 -1
- package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js +7 -1
- package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
- package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts +3 -1
- package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js +7 -1
- package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -1
- package/dist/cjs/services/providers/index.d.ts +2 -1
- package/dist/cjs/services/providers/index.d.ts.map +1 -1
- package/dist/cjs/services/providers/index.js +2 -0
- package/dist/cjs/services/providers/index.js.map +1 -1
- package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.d.ts +3 -1
- package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js +7 -1
- package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js.map +1 -1
- package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts +3 -1
- package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js +7 -1
- package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
- package/dist/cjs/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.d.ts +4 -1
- package/dist/cjs/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.js +10 -1
- package/dist/cjs/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.js.map +1 -1
- package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts +3 -1
- package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js +9 -1
- package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
- package/dist/cjs/services/providers/xai/XAIChatService.d.ts +65 -0
- package/dist/cjs/services/providers/xai/XAIChatService.d.ts.map +1 -0
- package/dist/cjs/services/providers/xai/XAIChatService.js +150 -0
- package/dist/cjs/services/providers/xai/XAIChatService.js.map +1 -0
- package/dist/cjs/services/providers/xai/XAIChatServiceProvider.d.ts +38 -0
- package/dist/cjs/services/providers/xai/XAIChatServiceProvider.d.ts.map +1 -0
- package/dist/cjs/services/providers/xai/XAIChatServiceProvider.js +76 -0
- package/dist/cjs/services/providers/xai/XAIChatServiceProvider.js.map +1 -0
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts +3 -1
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js +7 -1
- package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
- package/dist/esm/constants/index.d.ts +1 -0
- package/dist/esm/constants/index.d.ts.map +1 -1
- package/dist/esm/constants/index.js +1 -0
- package/dist/esm/constants/index.js.map +1 -1
- package/dist/esm/constants/xai.d.ts +11 -0
- package/dist/esm/constants/xai.d.ts.map +1 -0
- package/dist/esm/constants/xai.js +20 -0
- package/dist/esm/constants/xai.js.map +1 -0
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/services/ChatServiceFactory.d.ts +9 -1
- package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -1
- package/dist/esm/services/ChatServiceFactory.js +25 -0
- package/dist/esm/services/ChatServiceFactory.js.map +1 -1
- package/dist/esm/services/providers/ChatServiceProvider.d.ts +20 -1
- package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts +3 -1
- package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js +7 -1
- package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
- package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts +3 -1
- package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js +7 -1
- package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -1
- package/dist/esm/services/providers/index.d.ts +2 -1
- package/dist/esm/services/providers/index.d.ts.map +1 -1
- package/dist/esm/services/providers/index.js +2 -0
- package/dist/esm/services/providers/index.js.map +1 -1
- package/dist/esm/services/providers/kimi/KimiChatServiceProvider.d.ts +3 -1
- package/dist/esm/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js +7 -1
- package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js.map +1 -1
- package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts +3 -1
- package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js +7 -1
- package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
- package/dist/esm/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.d.ts +4 -1
- package/dist/esm/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.js +10 -1
- package/dist/esm/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.js.map +1 -1
- package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts +3 -1
- package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js +9 -1
- package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
- package/dist/esm/services/providers/xai/XAIChatService.d.ts +65 -0
- package/dist/esm/services/providers/xai/XAIChatService.d.ts.map +1 -0
- package/dist/esm/services/providers/xai/XAIChatService.js +146 -0
- package/dist/esm/services/providers/xai/XAIChatService.js.map +1 -0
- package/dist/esm/services/providers/xai/XAIChatServiceProvider.d.ts +38 -0
- package/dist/esm/services/providers/xai/XAIChatServiceProvider.d.ts.map +1 -0
- package/dist/esm/services/providers/xai/XAIChatServiceProvider.js +72 -0
- package/dist/esm/services/providers/xai/XAIChatServiceProvider.js.map +1 -0
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts +3 -1
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js +7 -1
- package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
- package/dist/umd/aituber-onair-chat.js +320 -7
- package/dist/umd/aituber-onair-chat.min.js +6 -6
- package/package.json +1 -1
package/README.ja.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
|
-
AITuber OnAirのチャット・LLM API統合ライブラリです。このパッケージは、OpenAI、ローカルLLM含むOpenAI互換プロバイダー、Claude、Gemini、OpenRouter、Z.ai、Kimi等の様々なAIチャットプロバイダーとやり取りするための統一されたインターフェースを提供します。
|
|
5
|
+
AITuber OnAirのチャット・LLM API統合ライブラリです。このパッケージは、OpenAI、ローカルLLM含むOpenAI互換プロバイダー、Claude、Gemini、OpenRouter、Z.ai、xAI、Kimi等の様々なAIチャットプロバイダーとやり取りするための統一されたインターフェースを提供します。
|
|
6
6
|
|
|
7
7
|
## 機能
|
|
8
8
|
|
|
9
|
-
- 🤖 **複数のAIプロバイダー対応**: OpenAI、ローカルLLM含むOpenAI互換プロバイダー、Claude (Anthropic)、Google Gemini、OpenRouter、Z.ai、Kimi
|
|
9
|
+
- 🤖 **複数のAIプロバイダー対応**: OpenAI、ローカルLLM含むOpenAI互換プロバイダー、Claude (Anthropic)、Google Gemini、OpenRouter、Z.ai、xAI、Kimi
|
|
10
10
|
- 🔄 **統一されたインターフェース**: 異なるプロバイダー間での一貫したAPI
|
|
11
11
|
- 🛠️ **ツール・関数呼び出し**: AI関数呼び出しの自動反復処理をサポート
|
|
12
12
|
- 💬 **ストリーミングレスポンス**: リアルタイムストリーミングチャット応答
|
|
@@ -182,6 +182,9 @@ const compatibleService = ChatServiceFactory.createChatService(
|
|
|
182
182
|
- `openai-compatible` は `endpoint` と `model` の指定が必須です。
|
|
183
183
|
- `openai-compatible` では `apiKey` は任意です。
|
|
184
184
|
- `openai-compatible` では `mcpServers` は利用できません。
|
|
185
|
+
- `openai-compatible` の vision 対応可否は `unknown` として扱われます。
|
|
186
|
+
画像リクエスト自体は許可されますが、未対応の endpoint / model の
|
|
187
|
+
場合は実行時エラーになります。
|
|
185
188
|
- 既存の `openai` プロバイダーの挙動は変更されません。
|
|
186
189
|
|
|
187
190
|
`reasoning_effort` の選択肢はモデルによって異なります。
|
|
@@ -212,7 +215,7 @@ const compatibleService = ChatServiceFactory.createChatService(
|
|
|
212
215
|
|
|
213
216
|
ベストエフォート:
|
|
214
217
|
- tools/function calling
|
|
215
|
-
- vision
|
|
218
|
+
- vision入力(`openai-compatible` では実行時検証)
|
|
216
219
|
- JSONモードの厳密互換
|
|
217
220
|
|
|
218
221
|
### OpenAI互換APIトラブルシューティング
|
|
@@ -226,6 +229,9 @@ const compatibleService = ChatServiceFactory.createChatService(
|
|
|
226
229
|
サーバー側が期待するトークン形式を確認してください。
|
|
227
230
|
- model名: 互換サーバーごとに利用可能なモデルIDが異なります。
|
|
228
231
|
エンドポイントが受け付ける正確なモデル名を指定してください。
|
|
232
|
+
- Vision: `openai-compatible` では画像対応を事前検証しません。
|
|
233
|
+
画像付きリクエストが失敗する場合は、endpoint と model の双方が
|
|
234
|
+
vision入力に対応しているか確認してください。
|
|
229
235
|
- ストリーム互換: `stream: true` では OpenAI互換のSSE形式
|
|
230
236
|
(`data: {...}` + `data: [DONE]`)を想定しています。
|
|
231
237
|
形式が異なる場合、ストリーム解析に失敗する可能性があります。
|
|
@@ -331,6 +337,21 @@ const zaiService = ChatServiceFactory.createChatService('zai', {
|
|
|
331
337
|
- ビジョン対応モデル: `glm-4.6V`, `glm-4.6V-FlashX`, `glm-4.6V-Flash`
|
|
332
338
|
- `thinking` はデフォルトで無効化しています。
|
|
333
339
|
|
|
340
|
+
#### xAI(Grok)
|
|
341
|
+
|
|
342
|
+
```typescript
|
|
343
|
+
const xaiService = ChatServiceFactory.createChatService('xai', {
|
|
344
|
+
apiKey: process.env.XAI_API_KEY,
|
|
345
|
+
model: 'grok-4-1-fast-non-reasoning',
|
|
346
|
+
visionModel: 'grok-4-1-fast-non-reasoning', // 任意: xAI の全モデルがビジョン対応
|
|
347
|
+
});
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
注意:
|
|
351
|
+
- xAIはOpenAI互換のChat Completionsを利用します。
|
|
352
|
+
- 対応モデル: `grok-4.20-0309-reasoning`, `grok-4.20-0309-non-reasoning`, `grok-4-1-fast-reasoning`, `grok-4-1-fast-non-reasoning`
|
|
353
|
+
- すべての対応 xAI モデルでビジョンとツール・関数呼び出しを利用できます。
|
|
354
|
+
|
|
334
355
|
#### Kimi(Moonshot)
|
|
335
356
|
|
|
336
357
|
```typescript
|
|
@@ -363,6 +384,11 @@ const kimiService = ChatServiceFactory.createChatService('kimi', {
|
|
|
363
384
|
|
|
364
385
|
### ビジョンチャット
|
|
365
386
|
|
|
387
|
+
組み込み provider のうち、対応モデル一覧を持つものは vision 対応を
|
|
388
|
+
事前判定します。一方 `openai-compatible` は endpoint / model ごとの差が
|
|
389
|
+
大きいため、原則 `unknown` として扱います。この場合でも画像リクエストは
|
|
390
|
+
許可され、非互換は接続先 endpoint の実行時エラーとして表面化します。
|
|
391
|
+
|
|
366
392
|
```typescript
|
|
367
393
|
const visionMessage = {
|
|
368
394
|
role: 'user',
|
|
@@ -385,6 +411,17 @@ await chatService.processVisionChat(
|
|
|
385
411
|
);
|
|
386
412
|
```
|
|
387
413
|
|
|
414
|
+
`ChatServiceFactory` から事前判定の状態を参照できます。
|
|
415
|
+
|
|
416
|
+
```typescript
|
|
417
|
+
const level = ChatServiceFactory.getVisionSupportLevelForModel(
|
|
418
|
+
'openai-compatible',
|
|
419
|
+
'your-local-model',
|
|
420
|
+
);
|
|
421
|
+
|
|
422
|
+
console.log(level); // 'unknown'
|
|
423
|
+
```
|
|
424
|
+
|
|
388
425
|
### ツール・関数呼び出し
|
|
389
426
|
|
|
390
427
|
```typescript
|
|
@@ -592,17 +629,40 @@ interface MessageWithVision {
|
|
|
592
629
|
}
|
|
593
630
|
|
|
594
631
|
type ChatResponseLength = 'veryShort' | 'short' | 'medium' | 'long' | 'veryLong';
|
|
632
|
+
type VisionSupportLevel = 'supported' | 'unsupported' | 'unknown';
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
### Vision対応判定
|
|
636
|
+
|
|
637
|
+
```typescript
|
|
638
|
+
const providerLevel = ChatServiceFactory.getVisionSupportLevel(
|
|
639
|
+
'openai-compatible',
|
|
640
|
+
);
|
|
641
|
+
const modelLevel = ChatServiceFactory.getVisionSupportLevelForModel(
|
|
642
|
+
'openai-compatible',
|
|
643
|
+
'your-local-model',
|
|
644
|
+
);
|
|
645
|
+
|
|
646
|
+
console.log(providerLevel); // 'unknown'
|
|
647
|
+
console.log(modelLevel); // 'unknown'
|
|
595
648
|
```
|
|
596
649
|
|
|
650
|
+
意味:
|
|
651
|
+
- `supported`: リクエスト送信前に vision 対応と分かっている
|
|
652
|
+
- `unsupported`: リクエスト送信前に非対応と分かっている
|
|
653
|
+
- `unknown`: 事前判定できないが、実際には成功する可能性がある
|
|
654
|
+
|
|
597
655
|
## 利用可能なプロバイダー
|
|
598
656
|
|
|
599
657
|
現在、以下のAIプロバイダーが組み込まれています:
|
|
600
658
|
|
|
601
659
|
- **OpenAI**: GPT-5.4 Pro、GPT-5.4、GPT-5.4 Mini、GPT-5.4 Nano、GPT-5.1、GPT-5(Nano/Mini/Standard)、GPT-4.1(miniとnanoを含む), GPT-4, GPT-4o-mini, O3-mini, o1, o1-miniのモデルをサポート
|
|
660
|
+
- **OpenAI-Compatible**: OpenAI互換 endpoint 経由で任意のローカル/セルフホスト model ID を利用できます。vision 対応可否は endpoint ごとに差があるため、原則 `unknown` 扱いです
|
|
602
661
|
- **Gemini**: Gemini 3.1 Pro Preview, Gemini 3.1 Flash-Lite Preview, Gemini 3 Pro Preview, Gemini 3 Flash Preview, Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.5 Flash Lite Preview, Gemini 2.0 Flash, Gemini 2.0 Flash-Liteのモデルをサポート
|
|
603
662
|
- **Claude**: Claude Sonnet 4.6, 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のモデルをサポート
|
|
604
663
|
- **OpenRouter**: OpenRouterのキュレーション済みモデル一覧(OpenAI/Claude/Gemini/Z.ai/Kimi)をサポート。モデルIDはOpenRouter節を参照してください
|
|
605
664
|
- **Z.ai**: GLM-5/GLM-5-Turbo(テキスト)、GLM-4.7/4.6(テキスト)、GLM-4.6V系(ビジョン)をサポート
|
|
665
|
+
- **xAI**: Grok 4.20 の Reasoning/Non-Reasoning と Grok 4-1 Fast の Reasoning/Non-Reasoning をサポートし、全モデルでビジョン対応
|
|
606
666
|
- **Kimi**: Kimi K2.5(`kimi-k2.5`、ビジョン対応)をサポート
|
|
607
667
|
|
|
608
668
|
## ライセンス
|
package/README.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
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, OpenAI-compatible, Claude, Gemini, OpenRouter, Z.ai, and Kimi.
|
|
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, OpenAI-compatible, Claude, Gemini, OpenRouter, Z.ai, xAI, and Kimi.
|
|
6
6
|
|
|
7
7
|
## Features
|
|
8
8
|
|
|
9
|
-
- 🤖 **Multiple AI Provider Support**: OpenAI, OpenAI-compatible, Claude (Anthropic), Google Gemini, OpenRouter, Z.ai, and Kimi
|
|
9
|
+
- 🤖 **Multiple AI Provider Support**: OpenAI, OpenAI-compatible, Claude (Anthropic), Google Gemini, OpenRouter, Z.ai, xAI, 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
|
|
@@ -182,6 +182,9 @@ Notes:
|
|
|
182
182
|
- `openai-compatible` requires both `endpoint` and `model`.
|
|
183
183
|
- `apiKey` is optional for `openai-compatible`.
|
|
184
184
|
- `openai-compatible` does not support `mcpServers`.
|
|
185
|
+
- Vision support for `openai-compatible` is treated as `unknown`.
|
|
186
|
+
Image requests are allowed, but unsupported endpoints or models will fail
|
|
187
|
+
at runtime.
|
|
185
188
|
- Existing `openai` provider behavior is unchanged.
|
|
186
189
|
|
|
187
190
|
`reasoning_effort` options differ per model:
|
|
@@ -212,7 +215,7 @@ Required:
|
|
|
212
215
|
|
|
213
216
|
Best effort:
|
|
214
217
|
- tools/function calling
|
|
215
|
-
- vision input support
|
|
218
|
+
- vision input support (runtime-validated for `openai-compatible`)
|
|
216
219
|
- strict JSON mode compatibility across implementations
|
|
217
220
|
|
|
218
221
|
### OpenAI-Compatible Troubleshooting
|
|
@@ -224,6 +227,9 @@ Best effort:
|
|
|
224
227
|
Confirm the expected token format on the server side.
|
|
225
228
|
- Model name: Compatible servers often expose different model IDs.
|
|
226
229
|
Confirm the exact model name accepted by your endpoint.
|
|
230
|
+
- Vision: `openai-compatible` does not pre-validate vision capability.
|
|
231
|
+
If an image request fails, confirm that both the endpoint and selected model
|
|
232
|
+
actually support image input.
|
|
227
233
|
- Stream compatibility: `stream: true` assumes OpenAI-compatible SSE chunks
|
|
228
234
|
(`data: { ... }` + `data: [DONE]`). If the format differs, streaming parse
|
|
229
235
|
may fail.
|
|
@@ -327,6 +333,21 @@ Notes:
|
|
|
327
333
|
- Supported vision models: `glm-4.6V`, `glm-4.6V-FlashX`, `glm-4.6V-Flash`
|
|
328
334
|
- `thinking` is disabled by default to match fast response behavior.
|
|
329
335
|
|
|
336
|
+
#### xAI (Grok)
|
|
337
|
+
|
|
338
|
+
```typescript
|
|
339
|
+
const xaiService = ChatServiceFactory.createChatService('xai', {
|
|
340
|
+
apiKey: process.env.XAI_API_KEY,
|
|
341
|
+
model: 'grok-4-1-fast-non-reasoning',
|
|
342
|
+
visionModel: 'grok-4-1-fast-non-reasoning', // Optional: all xAI models support vision
|
|
343
|
+
});
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
Notes:
|
|
347
|
+
- xAI uses OpenAI-compatible Chat Completions.
|
|
348
|
+
- Supported models: `grok-4.20-0309-reasoning`, `grok-4.20-0309-non-reasoning`, `grok-4-1-fast-reasoning`, `grok-4-1-fast-non-reasoning`
|
|
349
|
+
- All supported xAI models support vision and tool/function calling.
|
|
350
|
+
|
|
330
351
|
#### Kimi (Moonshot)
|
|
331
352
|
|
|
332
353
|
```typescript
|
|
@@ -359,6 +380,12 @@ Notes for self-hosted:
|
|
|
359
380
|
|
|
360
381
|
### Vision Chat
|
|
361
382
|
|
|
383
|
+
For built-in providers with curated model lists, the library pre-validates
|
|
384
|
+
vision support. For `openai-compatible`, vision support is reported as
|
|
385
|
+
`'unknown'` unless your application adds its own endpoint-specific knowledge.
|
|
386
|
+
In that case, image requests are still allowed and any incompatibility is
|
|
387
|
+
surfaced as a runtime error from the target endpoint.
|
|
388
|
+
|
|
362
389
|
```typescript
|
|
363
390
|
const visionMessage = {
|
|
364
391
|
role: 'user',
|
|
@@ -381,6 +408,17 @@ await chatService.processVisionChat(
|
|
|
381
408
|
);
|
|
382
409
|
```
|
|
383
410
|
|
|
411
|
+
You can inspect the pre-validation status from `ChatServiceFactory`:
|
|
412
|
+
|
|
413
|
+
```typescript
|
|
414
|
+
const level = ChatServiceFactory.getVisionSupportLevelForModel(
|
|
415
|
+
'openai-compatible',
|
|
416
|
+
'your-local-model',
|
|
417
|
+
);
|
|
418
|
+
|
|
419
|
+
console.log(level); // 'unknown'
|
|
420
|
+
```
|
|
421
|
+
|
|
384
422
|
### Tool/Function Calling
|
|
385
423
|
|
|
386
424
|
```typescript
|
|
@@ -587,17 +625,40 @@ interface MessageWithVision {
|
|
|
587
625
|
}
|
|
588
626
|
|
|
589
627
|
type ChatResponseLength = 'veryShort' | 'short' | 'medium' | 'long' | 'veryLong' | 'deep';
|
|
628
|
+
type VisionSupportLevel = 'supported' | 'unsupported' | 'unknown';
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
### Vision Support Discovery
|
|
632
|
+
|
|
633
|
+
```typescript
|
|
634
|
+
const providerLevel = ChatServiceFactory.getVisionSupportLevel(
|
|
635
|
+
'openai-compatible',
|
|
636
|
+
);
|
|
637
|
+
const modelLevel = ChatServiceFactory.getVisionSupportLevelForModel(
|
|
638
|
+
'openai-compatible',
|
|
639
|
+
'your-local-model',
|
|
640
|
+
);
|
|
641
|
+
|
|
642
|
+
console.log(providerLevel); // 'unknown'
|
|
643
|
+
console.log(modelLevel); // 'unknown'
|
|
590
644
|
```
|
|
591
645
|
|
|
646
|
+
Semantics:
|
|
647
|
+
- `supported`: Known to support vision before sending the request
|
|
648
|
+
- `unsupported`: Known to reject vision before sending the request
|
|
649
|
+
- `unknown`: Cannot be pre-validated, but vision requests may still succeed
|
|
650
|
+
|
|
592
651
|
## Available Providers
|
|
593
652
|
|
|
594
653
|
Currently, the following AI providers are built-in:
|
|
595
654
|
|
|
596
655
|
- **OpenAI**: Supports models like GPT-5.4 Pro, GPT-5.4, GPT-5.4 Mini, GPT-5.4 Nano, 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
|
|
656
|
+
- **OpenAI-Compatible**: Supports arbitrary local/self-hosted model IDs via OpenAI-compatible endpoints. Vision capability is treated as `unknown` unless your app knows the endpoint-specific model catalog.
|
|
597
657
|
- **Gemini**: Supports models like Gemini 3.1 Pro Preview, Gemini 3.1 Flash-Lite Preview, Gemini 3 Pro Preview, Gemini 3 Flash Preview, Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.5 Flash Lite Preview, Gemini 2.0 Flash, Gemini 2.0 Flash-Lite
|
|
598
658
|
- **Claude**: Supports models like Claude Sonnet 4.6, 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
|
|
599
659
|
- **OpenRouter**: Supports a curated OpenRouter model list (OpenAI/Claude/Gemini/Z.ai/Kimi). See the OpenRouter section for model IDs.
|
|
600
660
|
- **Z.ai**: Supports GLM-5/GLM-5-Turbo (text), GLM-4.7/4.6 (text), and GLM-4.6V family (vision)
|
|
661
|
+
- **xAI**: Supports Grok 4.20 Reasoning/Non-Reasoning and Grok 4-1 Fast Reasoning/Non-Reasoning, all with vision support
|
|
601
662
|
- **Kimi**: Supports Kimi K2.5 (`kimi-k2.5`) with vision support
|
|
602
663
|
|
|
603
664
|
## License
|
|
@@ -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,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,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("./xai"), exports);
|
|
25
26
|
__exportStar(require("./kimi"), exports);
|
|
26
27
|
__exportStar(require("./chat"), exports);
|
|
27
28
|
__exportStar(require("./prompts"), exports);
|
|
@@ -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,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,wCAAsB;AACtB,yCAAuB;AACvB,yCAAuB;AACvB,4CAA0B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const ENDPOINT_XAI_CHAT_COMPLETIONS_API = "https://api.x.ai/v1/chat/completions";
|
|
2
|
+
export declare const MODEL_GROK_4_20_REASONING = "grok-4.20-0309-reasoning";
|
|
3
|
+
export declare const MODEL_GROK_4_20_NON_REASONING = "grok-4.20-0309-non-reasoning";
|
|
4
|
+
export declare const MODEL_GROK_4_1_FAST_REASONING = "grok-4-1-fast-reasoning";
|
|
5
|
+
export declare const MODEL_GROK_4_1_FAST_NON_REASONING = "grok-4-1-fast-non-reasoning";
|
|
6
|
+
export declare const XAI_VISION_SUPPORTED_MODELS: string[];
|
|
7
|
+
/**
|
|
8
|
+
* Check if a model supports vision capabilities
|
|
9
|
+
*/
|
|
10
|
+
export declare function isXaiVisionModel(model: string): boolean;
|
|
11
|
+
//# sourceMappingURL=xai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xai.d.ts","sourceRoot":"","sources":["../../../src/constants/xai.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iCAAiC,yCACN,CAAC;AAGzC,eAAO,MAAM,yBAAyB,6BAA6B,CAAC;AACpE,eAAO,MAAM,6BAA6B,iCAAiC,CAAC;AAC5E,eAAO,MAAM,6BAA6B,4BAA4B,CAAC;AACvE,eAAO,MAAM,iCAAiC,gCAAgC,CAAC;AAG/E,eAAO,MAAM,2BAA2B,UAKvC,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.XAI_VISION_SUPPORTED_MODELS = exports.MODEL_GROK_4_1_FAST_NON_REASONING = exports.MODEL_GROK_4_1_FAST_REASONING = exports.MODEL_GROK_4_20_NON_REASONING = exports.MODEL_GROK_4_20_REASONING = exports.ENDPOINT_XAI_CHAT_COMPLETIONS_API = void 0;
|
|
4
|
+
exports.isXaiVisionModel = isXaiVisionModel;
|
|
5
|
+
exports.ENDPOINT_XAI_CHAT_COMPLETIONS_API = 'https://api.x.ai/v1/chat/completions';
|
|
6
|
+
// xAI Grok models
|
|
7
|
+
exports.MODEL_GROK_4_20_REASONING = 'grok-4.20-0309-reasoning';
|
|
8
|
+
exports.MODEL_GROK_4_20_NON_REASONING = 'grok-4.20-0309-non-reasoning';
|
|
9
|
+
exports.MODEL_GROK_4_1_FAST_REASONING = 'grok-4-1-fast-reasoning';
|
|
10
|
+
exports.MODEL_GROK_4_1_FAST_NON_REASONING = 'grok-4-1-fast-non-reasoning';
|
|
11
|
+
// Vision support for models
|
|
12
|
+
exports.XAI_VISION_SUPPORTED_MODELS = [
|
|
13
|
+
exports.MODEL_GROK_4_20_REASONING,
|
|
14
|
+
exports.MODEL_GROK_4_20_NON_REASONING,
|
|
15
|
+
exports.MODEL_GROK_4_1_FAST_REASONING,
|
|
16
|
+
exports.MODEL_GROK_4_1_FAST_NON_REASONING,
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* Check if a model supports vision capabilities
|
|
20
|
+
*/
|
|
21
|
+
function isXaiVisionModel(model) {
|
|
22
|
+
return exports.XAI_VISION_SUPPORTED_MODELS.includes(model);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=xai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xai.js","sourceRoot":"","sources":["../../../src/constants/xai.ts"],"names":[],"mappings":";;;AAoBA,4CAEC;AAtBY,QAAA,iCAAiC,GAC5C,sCAAsC,CAAC;AAEzC,kBAAkB;AACL,QAAA,yBAAyB,GAAG,0BAA0B,CAAC;AACvD,QAAA,6BAA6B,GAAG,8BAA8B,CAAC;AAC/D,QAAA,6BAA6B,GAAG,yBAAyB,CAAC;AAC1D,QAAA,iCAAiC,GAAG,6BAA6B,CAAC;AAE/E,4BAA4B;AACf,QAAA,2BAA2B,GAAG;IACzC,iCAAyB;IACzB,qCAA6B;IAC7B,qCAA6B;IAC7B,yCAAiC;CAClC,CAAC;AAEF;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,OAAO,mCAA2B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -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, ChatServiceOptionsByProvider, ChatProviderName, OpenAIChatServiceOptions, OpenAICompatibleChatServiceOptions, OpenRouterChatServiceOptions, GeminiChatServiceOptions, ClaudeChatServiceOptions, ZAIChatServiceOptions, KimiChatServiceOptions, ChatServiceProvider, } from './services/providers/ChatServiceProvider';
|
|
8
|
+
export type { ChatServiceOptions, ChatServiceOptionsByProvider, ChatProviderName, OpenAIChatServiceOptions, OpenAICompatibleChatServiceOptions, OpenRouterChatServiceOptions, GeminiChatServiceOptions, ClaudeChatServiceOptions, ZAIChatServiceOptions, XAIChatServiceOptions, KimiChatServiceOptions, ChatServiceProvider, VisionSupportLevel, } 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 { OpenAICompatibleChatServiceProvider } from './services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider';
|
|
@@ -17,6 +17,8 @@ export { OpenRouterChatService } from './services/providers/openrouter/OpenRoute
|
|
|
17
17
|
export { OpenRouterChatServiceProvider } from './services/providers/openrouter/OpenRouterChatServiceProvider';
|
|
18
18
|
export { ZAIChatService } from './services/providers/zai/ZAIChatService';
|
|
19
19
|
export { ZAIChatServiceProvider } from './services/providers/zai/ZAIChatServiceProvider';
|
|
20
|
+
export { XAIChatService } from './services/providers/xai/XAIChatService';
|
|
21
|
+
export { XAIChatServiceProvider } from './services/providers/xai/XAIChatServiceProvider';
|
|
20
22
|
export { KimiChatService } from './services/providers/kimi/KimiChatService';
|
|
21
23
|
export { KimiChatServiceProvider } from './services/providers/kimi/KimiChatServiceProvider';
|
|
22
24
|
export * from './constants';
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -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,4BAA4B,EAC5B,gBAAgB,EAChB,wBAAwB,EACxB,kCAAkC,EAClC,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,
|
|
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,kCAAkC,EAClC,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,0CAA0C,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,mCAAmC,EAAE,MAAM,2EAA2E,CAAC;AAGhI,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,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.KimiChatServiceProvider = exports.KimiChatService = exports.ZAIChatServiceProvider = exports.ZAIChatService = exports.OpenRouterChatServiceProvider = exports.OpenRouterChatService = exports.ClaudeChatServiceProvider = exports.ClaudeChatService = exports.GeminiChatServiceProvider = exports.GeminiChatService = exports.OpenAICompatibleChatServiceProvider = exports.OpenAIChatServiceProvider = exports.OpenAIChatService = exports.ChatServiceFactory = void 0;
|
|
21
|
+
exports.installGASFetch = exports.KimiChatServiceProvider = exports.KimiChatService = exports.XAIChatServiceProvider = exports.XAIChatService = exports.ZAIChatServiceProvider = exports.ZAIChatService = exports.OpenRouterChatServiceProvider = exports.OpenRouterChatService = exports.ClaudeChatServiceProvider = exports.ClaudeChatService = exports.GeminiChatServiceProvider = exports.GeminiChatService = exports.OpenAICompatibleChatServiceProvider = 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");
|
|
@@ -50,6 +50,11 @@ var ZAIChatService_1 = require("./services/providers/zai/ZAIChatService");
|
|
|
50
50
|
Object.defineProperty(exports, "ZAIChatService", { enumerable: true, get: function () { return ZAIChatService_1.ZAIChatService; } });
|
|
51
51
|
var ZAIChatServiceProvider_1 = require("./services/providers/zai/ZAIChatServiceProvider");
|
|
52
52
|
Object.defineProperty(exports, "ZAIChatServiceProvider", { enumerable: true, get: function () { return ZAIChatServiceProvider_1.ZAIChatServiceProvider; } });
|
|
53
|
+
// xAI provider exports
|
|
54
|
+
var XAIChatService_1 = require("./services/providers/xai/XAIChatService");
|
|
55
|
+
Object.defineProperty(exports, "XAIChatService", { enumerable: true, get: function () { return XAIChatService_1.XAIChatService; } });
|
|
56
|
+
var XAIChatServiceProvider_1 = require("./services/providers/xai/XAIChatServiceProvider");
|
|
57
|
+
Object.defineProperty(exports, "XAIChatServiceProvider", { enumerable: true, get: function () { return XAIChatServiceProvider_1.XAIChatServiceProvider; } });
|
|
53
58
|
// Kimi provider exports
|
|
54
59
|
var KimiChatService_1 = require("./services/providers/kimi/KimiChatService");
|
|
55
60
|
Object.defineProperty(exports, "KimiChatService", { enumerable: true, get: function () { return KimiChatService_1.KimiChatService; } });
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -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;
|
|
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;AAmB3B,0BAA0B;AAC1B,mFAAkF;AAAzE,sHAAA,iBAAiB,OAAA;AAC1B,mGAAkG;AAAzF,sIAAA,yBAAyB,OAAA;AAClC,iIAAgI;AAAvH,0JAAA,mCAAmC,OAAA;AAE5C,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,uBAAuB;AACvB,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 { ChatServiceOptionsByProvider, ChatProviderName, ChatServiceProvider } from './providers/ChatServiceProvider';
|
|
2
|
+
import { ChatServiceOptionsByProvider, ChatProviderName, ChatServiceProvider, VisionSupportLevel } from './providers/ChatServiceProvider';
|
|
3
3
|
/**
|
|
4
4
|
* Chat service factory
|
|
5
5
|
* Manages and creates various AI providers
|
|
@@ -35,5 +35,13 @@ export declare class ChatServiceFactory {
|
|
|
35
35
|
* @returns Array of supported models, empty array if provider doesn't exist
|
|
36
36
|
*/
|
|
37
37
|
static getSupportedModels(providerName: string): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Get provider-level vision support status.
|
|
40
|
+
*/
|
|
41
|
+
static getVisionSupportLevel(providerName: string): VisionSupportLevel;
|
|
42
|
+
/**
|
|
43
|
+
* Get model-level vision support status.
|
|
44
|
+
*/
|
|
45
|
+
static getVisionSupportLevelForModel(providerName: string, model: string): VisionSupportLevel;
|
|
38
46
|
}
|
|
39
47
|
//# sourceMappingURL=ChatServiceFactory.d.ts.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,EAEL,4BAA4B,EAC5B,gBAAgB,EAChB,mBAAmB,
|
|
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,EACnB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AAGzC;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAoD;IAE5E;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,GAAG,CAAC,GAAG,IAAI;IAIjE;;;;;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,GAAG,CAAC,CAAC;IAI5D;;;OAGG;IACH,MAAM,CAAC,qBAAqB,IAAI,MAAM,EAAE;IAIxC;;;;OAIG;IACH,MAAM,CAAC,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,EAAE;IAKzD;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB;IAKtE;;OAEG;IACH,MAAM,CAAC,6BAA6B,CAClC,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GACZ,kBAAkB;CAkBtB"}
|
|
@@ -44,6 +44,31 @@ class ChatServiceFactory {
|
|
|
44
44
|
const provider = this.providers.get(providerName);
|
|
45
45
|
return provider ? provider.getSupportedModels() : [];
|
|
46
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Get provider-level vision support status.
|
|
49
|
+
*/
|
|
50
|
+
static getVisionSupportLevel(providerName) {
|
|
51
|
+
const provider = this.providers.get(providerName);
|
|
52
|
+
return provider ? provider.getVisionSupportLevel() : 'unsupported';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get model-level vision support status.
|
|
56
|
+
*/
|
|
57
|
+
static getVisionSupportLevelForModel(providerName, model) {
|
|
58
|
+
const provider = this.providers.get(providerName);
|
|
59
|
+
if (!provider) {
|
|
60
|
+
return 'unsupported';
|
|
61
|
+
}
|
|
62
|
+
if (provider.getVisionSupportLevelForModel) {
|
|
63
|
+
return provider.getVisionSupportLevelForModel(model);
|
|
64
|
+
}
|
|
65
|
+
if (provider.supportsVisionForModel) {
|
|
66
|
+
return provider.supportsVisionForModel(model)
|
|
67
|
+
? 'supported'
|
|
68
|
+
: 'unsupported';
|
|
69
|
+
}
|
|
70
|
+
return provider.getVisionSupportLevel();
|
|
71
|
+
}
|
|
47
72
|
}
|
|
48
73
|
exports.ChatServiceFactory = ChatServiceFactory;
|
|
49
74
|
/** Map of registered providers */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatServiceFactory.js","sourceRoot":"","sources":["../../../src/services/ChatServiceFactory.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"ChatServiceFactory.js","sourceRoot":"","sources":["../../../src/services/ChatServiceFactory.ts"],"names":[],"mappings":";;;AAQA,2CAA6D;AAE7D;;;GAGG;AACH,MAAa,kBAAkB;IAI7B;;;OAGG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAkC;QACxD,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;IAED;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,YAAoB;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,6BAA6B,CAClC,YAAoB,EACpB,KAAa;QAEb,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,IAAI,QAAQ,CAAC,6BAA6B,EAAE,CAAC;YAC3C,OAAO,QAAQ,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,QAAQ,CAAC,sBAAsB,EAAE,CAAC;YACpC,OAAO,QAAQ,CAAC,sBAAsB,CAAC,KAAK,CAAC;gBAC3C,CAAC,CAAC,WAAW;gBACb,CAAC,CAAC,aAAa,CAAC;QACpB,CAAC;QAED,OAAO,QAAQ,CAAC,qBAAqB,EAAE,CAAC;IAC1C,CAAC;;AA1FH,gDA2FC;AA1FC,kCAAkC;AACnB,4BAAS,GAA0C,IAAI,GAAG,EAAE,CAAC;AA2F9E,0CAA8B,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAClD,kBAAkB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAC9C,CAAC"}
|
|
@@ -69,6 +69,7 @@ export type ClaudeChatServiceOptions = DisallowKeys<BaseChatServiceOptions, 'end
|
|
|
69
69
|
};
|
|
70
70
|
export type KimiChatServiceOptions = DisallowKeys<BaseChatServiceOptions, 'verbosity' | 'reasoning_effort' | 'gpt5Preset' | 'gpt5EndpointPreference' | 'enableReasoningSummary' | 'includeReasoning' | 'reasoningMaxTokens'>;
|
|
71
71
|
export type ZAIChatServiceOptions = DisallowKeys<BaseChatServiceOptions, 'verbosity' | 'reasoning_effort' | 'gpt5Preset' | 'gpt5EndpointPreference' | 'enableReasoningSummary' | 'includeReasoning' | 'reasoningMaxTokens' | 'baseUrl'>;
|
|
72
|
+
export type XAIChatServiceOptions = DisallowKeys<BaseChatServiceOptions, 'verbosity' | 'reasoning_effort' | 'gpt5Preset' | 'gpt5EndpointPreference' | 'enableReasoningSummary' | 'includeReasoning' | 'reasoningMaxTokens' | 'baseUrl' | 'thinking' | 'responseFormat'>;
|
|
72
73
|
export type ChatServiceOptions<TExtra extends Record<string, unknown> = Record<string, unknown>> = BaseChatServiceOptions & TExtra;
|
|
73
74
|
export type ChatServiceOptionsByProvider = {
|
|
74
75
|
openai: OpenAIChatServiceOptions;
|
|
@@ -77,9 +78,11 @@ export type ChatServiceOptionsByProvider = {
|
|
|
77
78
|
gemini: GeminiChatServiceOptions;
|
|
78
79
|
claude: ClaudeChatServiceOptions;
|
|
79
80
|
zai: ZAIChatServiceOptions;
|
|
81
|
+
xai: XAIChatServiceOptions;
|
|
80
82
|
kimi: KimiChatServiceOptions;
|
|
81
83
|
};
|
|
82
84
|
export type ChatProviderName = keyof ChatServiceOptionsByProvider;
|
|
85
|
+
export type VisionSupportLevel = 'supported' | 'unsupported' | 'unknown';
|
|
83
86
|
/**
|
|
84
87
|
* Chat service provider interface
|
|
85
88
|
* Abstraction for various AI API providers (OpenAI, Gemini, Claude, etc.)
|
|
@@ -106,11 +109,27 @@ export interface ChatServiceProvider<TOptions = BaseChatServiceOptions> {
|
|
|
106
109
|
* @returns Default model name
|
|
107
110
|
*/
|
|
108
111
|
getDefaultModel(): string;
|
|
112
|
+
/**
|
|
113
|
+
* Get the provider-level vision support status.
|
|
114
|
+
* - supported: known to support vision
|
|
115
|
+
* - unsupported: known to not support vision
|
|
116
|
+
* - unknown: depends on endpoint/model and cannot be pre-validated
|
|
117
|
+
*/
|
|
118
|
+
getVisionSupportLevel(): VisionSupportLevel;
|
|
119
|
+
/**
|
|
120
|
+
* Get the model-level vision support status when pre-validation is possible.
|
|
121
|
+
*/
|
|
122
|
+
getVisionSupportLevelForModel?(model: string): VisionSupportLevel;
|
|
109
123
|
/**
|
|
110
124
|
* Check if the provider supports vision (image processing)
|
|
111
|
-
* @returns
|
|
125
|
+
* @returns True when vision can be attempted
|
|
112
126
|
*/
|
|
113
127
|
supportsVision(): boolean;
|
|
128
|
+
/**
|
|
129
|
+
* Check if a specific model supports vision capabilities.
|
|
130
|
+
* Returns true when vision can be attempted for the model.
|
|
131
|
+
*/
|
|
132
|
+
supportsVisionForModel?(model: string): boolean;
|
|
114
133
|
}
|
|
115
134
|
export {};
|
|
116
135
|
//# sourceMappingURL=ChatServiceProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/services/providers/ChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,qDAAqD;IACrD,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,uFAAuF;IACvF,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5E,2FAA2F;IAC3F,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,+IAA+I;IAC/I,sBAAsB,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACvD,mGAAmG;IACnG,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,oDAAoD;IACpD,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,aAAa,CAAC;QAC7C,WAAW,CAAC,EAAE,GAAG,CAAC;KACnB,CAAC;IACF,6CAA6C;IAC7C,QAAQ,CAAC,EAAE;QACT,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;QAC7B,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,CAAC;IACF,iDAAiD;IACjD,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;KACpD,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK;CACjB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,YAAY,CACjD,sBAAsB,EACtB,SAAS,GAAG,UAAU,GAAG,kBAAkB,GAAG,oBAAoB,CACnE,GAAG;IACF,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,kCAAkC,GAAG,IAAI,CACnD,wBAAwB,EACxB,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAC/C,GAAG;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,YAAY,CACrD,sBAAsB,EACpB,YAAY,GACZ,wBAAwB,GACxB,wBAAwB,GACxB,WAAW,GACX,SAAS,GACT,UAAU,GACV,gBAAgB,CACnB,GAAG;IACF,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,YAAY,CACjD,sBAAsB,EACpB,UAAU,GACV,SAAS,GACT,WAAW,GACX,kBAAkB,GAClB,YAAY,GACZ,wBAAwB,GACxB,wBAAwB,GACxB,kBAAkB,GAClB,oBAAoB,GACpB,gBAAgB,GAChB,UAAU,CACb,GAAG;IACF,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,YAAY,CACjD,sBAAsB,EACpB,UAAU,GACV,SAAS,GACT,WAAW,GACX,kBAAkB,GAClB,YAAY,GACZ,wBAAwB,GACxB,wBAAwB,GACxB,kBAAkB,GAClB,oBAAoB,GACpB,gBAAgB,GAChB,UAAU,CACb,GAAG;IACF,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,YAAY,CAC/C,sBAAsB,EACpB,WAAW,GACX,kBAAkB,GAClB,YAAY,GACZ,wBAAwB,GACxB,wBAAwB,GACxB,kBAAkB,GAClB,oBAAoB,CACvB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,YAAY,CAC9C,sBAAsB,EACpB,WAAW,GACX,kBAAkB,GAClB,YAAY,GACZ,wBAAwB,GACxB,wBAAwB,GACxB,kBAAkB,GAClB,oBAAoB,GACpB,SAAS,CACZ,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAC5B,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAC9D,sBAAsB,GAAG,MAAM,CAAC;AAEpC,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,wBAAwB,CAAC;IACjC,mBAAmB,EAAE,kCAAkC,CAAC;IACxD,UAAU,EAAE,4BAA4B,CAAC;IACzC,MAAM,EAAE,wBAAwB,CAAC;IACjC,MAAM,EAAE,wBAAwB,CAAC;IACjC,GAAG,EAAE,qBAAqB,CAAC;IAC3B,IAAI,EAAE,sBAAsB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,MAAM,4BAA4B,CAAC;AAElE;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,QAAQ,GAAG,sBAAsB;IACpE;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,QAAQ,GAAG,WAAW,CAAC;IAElD;;;OAGG;IACH,eAAe,IAAI,MAAM,CAAC;IAE1B;;;OAGG;IACH,kBAAkB,IAAI,MAAM,EAAE,CAAC;IAE/B;;;OAGG;IACH,eAAe,IAAI,MAAM,CAAC;IAE1B;;;OAGG;IACH,cAAc,IAAI,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/services/providers/ChatServiceProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChatService } from '../../ChatService';
|
|
2
|
-
import { ClaudeChatServiceOptions, ChatServiceProvider } from '../ChatServiceProvider';
|
|
2
|
+
import { ClaudeChatServiceOptions, ChatServiceProvider, VisionSupportLevel } from '../ChatServiceProvider';
|
|
3
3
|
/**
|
|
4
4
|
* Claude API provider implementation
|
|
5
5
|
*/
|
|
@@ -30,11 +30,13 @@ export declare class ClaudeChatServiceProvider implements ChatServiceProvider<Cl
|
|
|
30
30
|
* @returns Vision support status (true)
|
|
31
31
|
*/
|
|
32
32
|
supportsVision(): boolean;
|
|
33
|
+
getVisionSupportLevel(): VisionSupportLevel;
|
|
33
34
|
/**
|
|
34
35
|
* Check if a specific model supports vision capabilities
|
|
35
36
|
* @param model The model name to check
|
|
36
37
|
* @returns True if the model supports vision, false otherwise
|
|
37
38
|
*/
|
|
38
39
|
supportsVisionForModel(model: string): boolean;
|
|
40
|
+
getVisionSupportLevelForModel(model: string): VisionSupportLevel;
|
|
39
41
|
}
|
|
40
42
|
//# sourceMappingURL=ClaudeChatServiceProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/claude/ClaudeChatServiceProvider.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"ClaudeChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/claude/ClaudeChatServiceProvider.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EACL,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAGhC;;GAEG;AACH,qBAAa,yBACX,YAAW,mBAAmB,CAAC,wBAAwB,CAAC;IAExD;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,WAAW;IAqBjE;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAgB9B;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,cAAc,IAAI,OAAO;IAIzB,qBAAqB,IAAI,kBAAkB;IAI3C;;;;OAIG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI9C,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB;CAGjE"}
|
|
@@ -63,7 +63,10 @@ class ClaudeChatServiceProvider {
|
|
|
63
63
|
* @returns Vision support status (true)
|
|
64
64
|
*/
|
|
65
65
|
supportsVision() {
|
|
66
|
-
return
|
|
66
|
+
return this.getVisionSupportLevel() !== 'unsupported';
|
|
67
|
+
}
|
|
68
|
+
getVisionSupportLevel() {
|
|
69
|
+
return 'supported';
|
|
67
70
|
}
|
|
68
71
|
/**
|
|
69
72
|
* Check if a specific model supports vision capabilities
|
|
@@ -73,6 +76,9 @@ class ClaudeChatServiceProvider {
|
|
|
73
76
|
supportsVisionForModel(model) {
|
|
74
77
|
return constants_1.CLAUDE_VISION_SUPPORTED_MODELS.includes(model);
|
|
75
78
|
}
|
|
79
|
+
getVisionSupportLevelForModel(model) {
|
|
80
|
+
return this.supportsVisionForModel(model) ? 'supported' : 'unsupported';
|
|
81
|
+
}
|
|
76
82
|
}
|
|
77
83
|
exports.ClaudeChatServiceProvider = ClaudeChatServiceProvider;
|
|
78
84
|
//# sourceMappingURL=ClaudeChatServiceProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/claude/ClaudeChatServiceProvider.ts"],"names":[],"mappings":";;;AAAA,kDAa4B;AAE5B,2DAAwD;
|
|
1
|
+
{"version":3,"file":"ClaudeChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/claude/ClaudeChatServiceProvider.ts"],"names":[],"mappings":";;;AAAA,kDAa4B;AAE5B,2DAAwD;AAOxD,0CAAoD;AAEpD;;GAEG;AACH,MAAa,yBAAyB;IAGpC;;;;OAIG;IACH,iBAAiB,CAAC,OAAiC;QACjD,gFAAgF;QAChF,MAAM,WAAW,GAAG,IAAA,0BAAkB,EAAC;YACrC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;YACpC,kBAAkB,EAAE,IAAI,CAAC,eAAe,EAAE;YAC1C,sBAAsB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;YACrE,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;QAEH,OAAO,IAAI,qCAAiB,CAC1B,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,EACvC,WAAW,EACX,OAAO,CAAC,KAAK,IAAI,EAAE,EACnB,OAAO,CAAC,UAAU,IAAI,EAAE,EACxB,OAAO,CAAC,cAAc,CACvB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,kBAAkB;QAChB,OAAO;YACL,gCAAoB;YACpB,kCAAsB;YACtB,mCAAuB;YACvB,mCAAuB;YACvB,iCAAqB;YACrB,+BAAmB;YACnB,mCAAuB;YACvB,kCAAsB;YACtB,iCAAqB;YACrB,mCAAuB;YACvB,iCAAqB;SACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe;QACb,OAAO,gCAAoB,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,qBAAqB,EAAE,KAAK,aAAa,CAAC;IACxD,CAAC;IAED,qBAAqB;QACnB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,sBAAsB,CAAC,KAAa;QAClC,OAAO,0CAA8B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,6BAA6B,CAAC,KAAa;QACzC,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;IAC1E,CAAC;CACF;AAzFD,8DAyFC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChatService } from '../../ChatService';
|
|
2
|
-
import { GeminiChatServiceOptions, ChatServiceProvider } from '../ChatServiceProvider';
|
|
2
|
+
import { GeminiChatServiceOptions, ChatServiceProvider, VisionSupportLevel } from '../ChatServiceProvider';
|
|
3
3
|
/**
|
|
4
4
|
* Gemini API provider implementation
|
|
5
5
|
*/
|
|
@@ -30,11 +30,13 @@ export declare class GeminiChatServiceProvider implements ChatServiceProvider<Ge
|
|
|
30
30
|
* @returns Vision support status (true)
|
|
31
31
|
*/
|
|
32
32
|
supportsVision(): boolean;
|
|
33
|
+
getVisionSupportLevel(): VisionSupportLevel;
|
|
33
34
|
/**
|
|
34
35
|
* Check if a specific model supports vision capabilities
|
|
35
36
|
* @param model The model name to check
|
|
36
37
|
* @returns True if the model supports vision, false otherwise
|
|
37
38
|
*/
|
|
38
39
|
supportsVisionForModel(model: string): boolean;
|
|
40
|
+
getVisionSupportLevelForModel(model: string): VisionSupportLevel;
|
|
39
41
|
}
|
|
40
42
|
//# sourceMappingURL=GeminiChatServiceProvider.d.ts.map
|