@aituber-onair/chat 0.23.0 → 0.24.1

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 (57) hide show
  1. package/README.ja.md +21 -2
  2. package/README.md +21 -2
  3. package/dist/cjs/constants/geminiNano.d.ts +6 -0
  4. package/dist/cjs/constants/geminiNano.d.ts.map +1 -0
  5. package/dist/cjs/constants/geminiNano.js +9 -0
  6. package/dist/cjs/constants/geminiNano.js.map +1 -0
  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/index.d.ts +3 -1
  12. package/dist/cjs/index.d.ts.map +1 -1
  13. package/dist/cjs/index.js +6 -1
  14. package/dist/cjs/index.js.map +1 -1
  15. package/dist/cjs/services/providers/ChatServiceProvider.d.ts +13 -0
  16. package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -1
  17. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatService.d.ts +37 -0
  18. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatService.d.ts.map +1 -0
  19. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatService.js +128 -0
  20. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatService.js.map +1 -0
  21. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatServiceProvider.d.ts +15 -0
  22. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatServiceProvider.d.ts.map +1 -0
  23. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatServiceProvider.js +35 -0
  24. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatServiceProvider.js.map +1 -0
  25. package/dist/cjs/services/providers/index.d.ts +2 -1
  26. package/dist/cjs/services/providers/index.d.ts.map +1 -1
  27. package/dist/cjs/services/providers/index.js +2 -0
  28. package/dist/cjs/services/providers/index.js.map +1 -1
  29. package/dist/esm/constants/geminiNano.d.ts +6 -0
  30. package/dist/esm/constants/geminiNano.d.ts.map +1 -0
  31. package/dist/esm/constants/geminiNano.js +6 -0
  32. package/dist/esm/constants/geminiNano.js.map +1 -0
  33. package/dist/esm/constants/index.d.ts +1 -0
  34. package/dist/esm/constants/index.d.ts.map +1 -1
  35. package/dist/esm/constants/index.js +1 -0
  36. package/dist/esm/constants/index.js.map +1 -1
  37. package/dist/esm/index.d.ts +3 -1
  38. package/dist/esm/index.d.ts.map +1 -1
  39. package/dist/esm/index.js +3 -0
  40. package/dist/esm/index.js.map +1 -1
  41. package/dist/esm/services/providers/ChatServiceProvider.d.ts +13 -0
  42. package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -1
  43. package/dist/esm/services/providers/geminiNano/GeminiNanoChatService.d.ts +37 -0
  44. package/dist/esm/services/providers/geminiNano/GeminiNanoChatService.d.ts.map +1 -0
  45. package/dist/esm/services/providers/geminiNano/GeminiNanoChatService.js +124 -0
  46. package/dist/esm/services/providers/geminiNano/GeminiNanoChatService.js.map +1 -0
  47. package/dist/esm/services/providers/geminiNano/GeminiNanoChatServiceProvider.d.ts +15 -0
  48. package/dist/esm/services/providers/geminiNano/GeminiNanoChatServiceProvider.d.ts.map +1 -0
  49. package/dist/esm/services/providers/geminiNano/GeminiNanoChatServiceProvider.js +31 -0
  50. package/dist/esm/services/providers/geminiNano/GeminiNanoChatServiceProvider.js.map +1 -0
  51. package/dist/esm/services/providers/index.d.ts +2 -1
  52. package/dist/esm/services/providers/index.d.ts.map +1 -1
  53. package/dist/esm/services/providers/index.js +2 -0
  54. package/dist/esm/services/providers/index.js.map +1 -1
  55. package/dist/umd/aituber-onair-chat.js +142 -0
  56. package/dist/umd/aituber-onair-chat.min.js +11 -6
  57. 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、ローカルLLM含むOpenAI互換プロバイダー、Claude、Gemini、OpenRouter、Z.ai、xAI、Kimi等の様々なAIチャットプロバイダーとやり取りするための統一されたインターフェースを提供します。
5
+ AITuber OnAirのチャット・LLM API統合ライブラリです。このパッケージは、OpenAI、ローカルLLM含むOpenAI互換プロバイダー、Claude、Gemini、Gemini Nano(Chromeブラウザ内蔵AI)、OpenRouter、Z.ai、xAI、Kimi等の様々なAIチャットプロバイダーとやり取りするための統一されたインターフェースを提供します。
6
6
 
7
7
  ## 機能
8
8
 
9
- - 🤖 **複数のAIプロバイダー対応**: OpenAI、ローカルLLM含むOpenAI互換プロバイダー、Claude (Anthropic)、Google Gemini、OpenRouter、Z.ai、xAI、Kimi
9
+ - 🤖 **複数のAIプロバイダー対応**: OpenAI、ローカルLLM含むOpenAI互換プロバイダー、Claude (Anthropic)、Google Gemini、Gemini Nano(Chromeブラウザ内蔵AI)、OpenRouter、Z.ai、xAI、Kimi
10
10
  - 🔄 **統一されたインターフェース**: 異なるプロバイダー間での一貫したAPI
11
11
  - 🛠️ **ツール・関数呼び出し**: AI関数呼び出しの自動反復処理をサポート
12
12
  - 💬 **ストリーミングレスポンス**: リアルタイムストリーミングチャット応答
@@ -382,6 +382,24 @@ const kimiService = ChatServiceFactory.createChatService('kimi', {
382
382
  注意:
383
383
  - 自前ホスティングではthinking制御に`chat_template_kwargs`を使用します。
384
384
 
385
+ #### Gemini Nano(Chromeブラウザ内蔵AI)
386
+
387
+ ```typescript
388
+ const geminiNanoService = ChatServiceFactory.createChatService('gemini-nano', {
389
+ responseLength: 'medium'
390
+ });
391
+ ```
392
+
393
+ 注意:
394
+ - APIキー不要 — ChromeのLanguageModel API(Prompt API)を使用します。
395
+ - **Chrome 138以降**で、以下のフラグを有効にする必要があります:
396
+ - `chrome://flags/#optimization-guide-on-device-model` → Enabled
397
+ - `chrome://flags/#prompt-api-for-gemini-nano` → Enabled
398
+ - モデルはすべてデバイス上で実行され、推論時にネットワーク通信は発生しません。
399
+ - 非ストリーミングのみ — レスポンスは完全なテキストとして一括返却されます。
400
+ - ビジョン(画像入力)は非対応です。
401
+ - 初回のモデルダウンロードにはユーザー操作が必要で、数分かかる場合があります。
402
+
385
403
  ### ビジョンチャット
386
404
 
387
405
  組み込み provider のうち、対応モデル一覧を持つものは vision 対応を
@@ -664,6 +682,7 @@ console.log(modelLevel); // 'unknown'
664
682
  - **Z.ai**: GLM-5/GLM-5-Turbo(テキスト)、GLM-4.7/4.6(テキスト)、GLM-4.6V系(ビジョン)をサポート
665
683
  - **xAI**: Grok 4.20 の Reasoning/Non-Reasoning と Grok 4-1 Fast の Reasoning/Non-Reasoning をサポートし、全モデルでビジョン対応
666
684
  - **Kimi**: Kimi K2.5(`kimi-k2.5`、ビジョン対応)をサポート
685
+ - **Gemini Nano**: Chromeブラウザ内蔵AI(LanguageModel API)。デバイス上で動作し、APIキー不要。Chrome 138以降でPrompt APIフラグの有効化が必要。非ストリーミング、ビジョン非対応
667
686
 
668
687
  ## ライセンス
669
688
 
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, OpenAI-compatible, Claude, Gemini, OpenRouter, Z.ai, xAI, 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, Gemini Nano (Chrome built-in AI), 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, xAI, and Kimi
9
+ - 🤖 **Multiple AI Provider Support**: OpenAI, OpenAI-compatible, Claude (Anthropic), Google Gemini, Gemini Nano (Chrome built-in AI), 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
@@ -378,6 +378,24 @@ const kimiService = ChatServiceFactory.createChatService('kimi', {
378
378
  Notes for self-hosted:
379
379
  - Self-hosted endpoints use `chat_template_kwargs` for thinking controls.
380
380
 
381
+ #### Gemini Nano (Chrome Built-in AI)
382
+
383
+ ```typescript
384
+ const geminiNanoService = ChatServiceFactory.createChatService('gemini-nano', {
385
+ responseLength: 'medium'
386
+ });
387
+ ```
388
+
389
+ Notes:
390
+ - No API key required — uses Chrome's built-in LanguageModel API (Prompt API).
391
+ - Requires **Chrome 138+** with the following flags enabled:
392
+ - `chrome://flags/#optimization-guide-on-device-model` → Enabled
393
+ - `chrome://flags/#prompt-api-for-gemini-nano` → Enabled
394
+ - The model runs entirely on-device; no network requests are made for inference.
395
+ - Non-streaming only — responses are returned as a single complete text.
396
+ - Vision is not supported.
397
+ - The initial model download requires a user action and may take a few minutes.
398
+
381
399
  ### Vision Chat
382
400
 
383
401
  For built-in providers with curated model lists, the library pre-validates
@@ -660,6 +678,7 @@ Currently, the following AI providers are built-in:
660
678
  - **Z.ai**: Supports GLM-5/GLM-5-Turbo (text), GLM-4.7/4.6 (text), and GLM-4.6V family (vision)
661
679
  - **xAI**: Supports Grok 4.20 Reasoning/Non-Reasoning and Grok 4-1 Fast Reasoning/Non-Reasoning, all with vision support
662
680
  - **Kimi**: Supports Kimi K2.5 (`kimi-k2.5`) with vision support
681
+ - **Gemini Nano**: Chrome built-in AI (LanguageModel API). Runs on-device with no API key required. Chrome 138+ with Prompt API flags enabled. Non-streaming, no vision support.
663
682
 
664
683
  ## License
665
684
 
@@ -0,0 +1,6 @@
1
+ export declare const MODEL_GEMINI_NANO = "gemini-nano";
2
+ /**
3
+ * Maximum number of messages to include in context history.
4
+ */
5
+ export declare const GEMINI_NANO_MAX_CONTEXT_MESSAGES = 20;
6
+ //# sourceMappingURL=geminiNano.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geminiNano.d.ts","sourceRoot":"","sources":["../../../src/constants/geminiNano.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,gCAAgC,KAAK,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GEMINI_NANO_MAX_CONTEXT_MESSAGES = exports.MODEL_GEMINI_NANO = void 0;
4
+ exports.MODEL_GEMINI_NANO = 'gemini-nano';
5
+ /**
6
+ * Maximum number of messages to include in context history.
7
+ */
8
+ exports.GEMINI_NANO_MAX_CONTEXT_MESSAGES = 20;
9
+ //# sourceMappingURL=geminiNano.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geminiNano.js","sourceRoot":"","sources":["../../../src/constants/geminiNano.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG,aAAa,CAAC;AAE/C;;GAEG;AACU,QAAA,gCAAgC,GAAG,EAAE,CAAC"}
@@ -10,4 +10,5 @@ export * from './xai';
10
10
  export * from './kimi';
11
11
  export * from './chat';
12
12
  export * from './prompts';
13
+ export * from './geminiNano';
13
14
  //# 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,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;AAC1B,cAAc,cAAc,CAAC"}
@@ -26,4 +26,5 @@ __exportStar(require("./xai"), exports);
26
26
  __exportStar(require("./kimi"), exports);
27
27
  __exportStar(require("./chat"), exports);
28
28
  __exportStar(require("./prompts"), exports);
29
+ __exportStar(require("./geminiNano"), exports);
29
30
  //# 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,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;AAC1B,+CAA6B"}
@@ -5,12 +5,14 @@
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, XAIChatServiceOptions, KimiChatServiceOptions, ChatServiceProvider, VisionSupportLevel, } from './services/providers/ChatServiceProvider';
8
+ export type { ChatServiceOptions, ChatServiceOptionsByProvider, ChatProviderName, OpenAIChatServiceOptions, OpenAICompatibleChatServiceOptions, OpenRouterChatServiceOptions, GeminiChatServiceOptions, GeminiNanoChatServiceOptions, 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';
12
12
  export { GeminiChatService } from './services/providers/gemini/GeminiChatService';
13
13
  export { GeminiChatServiceProvider } from './services/providers/gemini/GeminiChatServiceProvider';
14
+ export { GeminiNanoChatService } from './services/providers/geminiNano/GeminiNanoChatService';
15
+ export { GeminiNanoChatServiceProvider } from './services/providers/geminiNano/GeminiNanoChatServiceProvider';
14
16
  export { ClaudeChatService } from './services/providers/claude/ClaudeChatService';
15
17
  export { ClaudeChatServiceProvider } from './services/providers/claude/ClaudeChatServiceProvider';
16
18
  export { OpenRouterChatService } from './services/providers/openrouter/OpenRouterChatService';
@@ -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,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"}
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,4BAA4B,EAC5B,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,qBAAqB,EAAE,MAAM,uDAAuD,CAAC;AAC9F,OAAO,EAAE,6BAA6B,EAAE,MAAM,+DAA+D,CAAC;AAG9G,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.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;
21
+ exports.installGASFetch = exports.KimiChatServiceProvider = exports.KimiChatService = exports.XAIChatServiceProvider = exports.XAIChatService = exports.ZAIChatServiceProvider = exports.ZAIChatService = exports.OpenRouterChatServiceProvider = exports.OpenRouterChatService = exports.ClaudeChatServiceProvider = exports.ClaudeChatService = exports.GeminiNanoChatServiceProvider = exports.GeminiNanoChatService = 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");
@@ -35,6 +35,11 @@ var GeminiChatService_1 = require("./services/providers/gemini/GeminiChatService
35
35
  Object.defineProperty(exports, "GeminiChatService", { enumerable: true, get: function () { return GeminiChatService_1.GeminiChatService; } });
36
36
  var GeminiChatServiceProvider_1 = require("./services/providers/gemini/GeminiChatServiceProvider");
37
37
  Object.defineProperty(exports, "GeminiChatServiceProvider", { enumerable: true, get: function () { return GeminiChatServiceProvider_1.GeminiChatServiceProvider; } });
38
+ // Gemini Nano provider exports
39
+ var GeminiNanoChatService_1 = require("./services/providers/geminiNano/GeminiNanoChatService");
40
+ Object.defineProperty(exports, "GeminiNanoChatService", { enumerable: true, get: function () { return GeminiNanoChatService_1.GeminiNanoChatService; } });
41
+ var GeminiNanoChatServiceProvider_1 = require("./services/providers/geminiNano/GeminiNanoChatServiceProvider");
42
+ Object.defineProperty(exports, "GeminiNanoChatServiceProvider", { enumerable: true, get: function () { return GeminiNanoChatServiceProvider_1.GeminiNanoChatServiceProvider; } });
38
43
  // Claude provider exports
39
44
  var ClaudeChatService_1 = require("./services/providers/claude/ClaudeChatService");
40
45
  Object.defineProperty(exports, "ClaudeChatService", { enumerable: true, get: function () { return ClaudeChatService_1.ClaudeChatService; } });
@@ -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;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
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;AAEH,2BAA2B;AAC3B,0CAAwB;AAIxB,oEAAmE;AAA1D,wHAAA,kBAAkB,OAAA;AAoB3B,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,+BAA+B;AAC/B,+FAA8F;AAArF,8HAAA,qBAAqB,OAAA;AAC9B,+GAA8G;AAArG,8IAAA,6BAA6B,OAAA;AAEtC,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"}
@@ -70,6 +70,18 @@ export type ClaudeChatServiceOptions = DisallowKeys<BaseChatServiceOptions, 'end
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
72
  export type XAIChatServiceOptions = DisallowKeys<BaseChatServiceOptions, 'verbosity' | 'reasoning_effort' | 'gpt5Preset' | 'gpt5EndpointPreference' | 'enableReasoningSummary' | 'includeReasoning' | 'reasoningMaxTokens' | 'baseUrl' | 'thinking' | 'responseFormat'>;
73
+ export type GeminiNanoChatServiceOptions = {
74
+ /** API Key is not needed for Gemini Nano (browser built-in AI) */
75
+ apiKey?: never;
76
+ /** Model name (fixed to 'gemini-nano') */
77
+ model?: string;
78
+ /** Response length setting */
79
+ responseLength?: ChatResponseLength;
80
+ /** Expected input languages for the Prompt API (default: ['ja']) */
81
+ expectedInputLanguages?: string[];
82
+ /** Expected output languages for the Prompt API (default: ['ja']) */
83
+ expectedOutputLanguages?: string[];
84
+ };
73
85
  export type ChatServiceOptions<TExtra extends Record<string, unknown> = Record<string, unknown>> = BaseChatServiceOptions & TExtra;
74
86
  export type ChatServiceOptionsByProvider = {
75
87
  openai: OpenAIChatServiceOptions;
@@ -80,6 +92,7 @@ export type ChatServiceOptionsByProvider = {
80
92
  zai: ZAIChatServiceOptions;
81
93
  xai: XAIChatServiceOptions;
82
94
  kimi: KimiChatServiceOptions;
95
+ 'gemini-nano': GeminiNanoChatServiceOptions;
83
96
  };
84
97
  export type ChatProviderName = keyof ChatServiceOptionsByProvider;
85
98
  export type VisionSupportLevel = 'supported' | 'unsupported' | 'unknown';
@@ -1 +1 @@
1
- {"version":3,"file":"ChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/services/providers/ChatServiceProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../src/services/providers/ChatServiceProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { ChatService } from '../../ChatService';
2
+ import { Message, MessageWithVision } from '../../../types';
3
+ import { ToolChatCompletion } from '../../../types/toolChat';
4
+ import type { GeminiNanoChatServiceOptions } from '../ChatServiceProvider';
5
+ /**
6
+ * Gemini Nano implementation of ChatService.
7
+ * Uses Chrome's built-in LanguageModel API (Prompt API, Chrome 138+).
8
+ * Runs entirely in the browser — no API key or network required.
9
+ */
10
+ export declare class GeminiNanoChatService implements ChatService {
11
+ readonly provider: string;
12
+ private expectedInputLanguages;
13
+ private expectedOutputLanguages;
14
+ private _responseLength?;
15
+ constructor(options?: GeminiNanoChatServiceOptions);
16
+ getModel(): string;
17
+ getVisionModel(): string;
18
+ /**
19
+ * Process chat messages using Gemini Nano.
20
+ * Non-streaming: calls onPartialResponse once with the full response,
21
+ * then calls onCompleteResponse.
22
+ */
23
+ processChat(messages: Message[], onPartialResponse: (text: string) => void, onCompleteResponse: (text: string) => Promise<void>): Promise<void>;
24
+ processVisionChat(_messages: MessageWithVision[], _onPartialResponse: (text: string) => void, _onCompleteResponse: (text: string) => Promise<void>): Promise<void>;
25
+ chatOnce(messages: Message[], _stream?: boolean, onPartialResponse?: (text: string) => void, _maxTokens?: number): Promise<ToolChatCompletion>;
26
+ visionChatOnce(_messages: MessageWithVision[], _stream?: boolean, _onPartialResponse?: (text: string) => void, _maxTokens?: number): Promise<ToolChatCompletion>;
27
+ /**
28
+ * Core logic: extract system prompt, manage session, call prompt().
29
+ */
30
+ private generateResponse;
31
+ /**
32
+ * Create a new LanguageModel session with system prompt and context history.
33
+ * Context history (excluding the last user message) is embedded in the system prompt.
34
+ */
35
+ private createSession;
36
+ }
37
+ //# sourceMappingURL=GeminiNanoChatService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeminiNanoChatService.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/geminiNano/GeminiNanoChatService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAM7D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wBAAwB,CAAC;AA2B3E;;;;GAIG;AACH,qBAAa,qBAAsB,YAAW,WAAW;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAiB;IAE1C,OAAO,CAAC,sBAAsB,CAAW;IACzC,OAAO,CAAC,uBAAuB,CAAW;IAC1C,OAAO,CAAC,eAAe,CAAC,CAAqB;gBAEjC,OAAO,GAAE,4BAAiC;IAOtD,QAAQ,IAAI,MAAM;IAIlB,cAAc,IAAI,MAAM;IAIxB;;;;OAIG;IACG,WAAW,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EACzC,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC;IAMV,iBAAiB,CACrB,SAAS,EAAE,iBAAiB,EAAE,EAC9B,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAC1C,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACnD,OAAO,CAAC,IAAI,CAAC;IAIV,QAAQ,CACZ,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,GAAE,OAAe,EACxB,iBAAiB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EACpD,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC;IAUxB,cAAc,CAClB,SAAS,EAAE,iBAAiB,EAAE,EAC9B,OAAO,GAAE,OAAe,EACxB,kBAAkB,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAe,EACrD,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC;IAI9B;;OAEG;YACW,gBAAgB;IAqD9B;;;OAGG;YACW,aAAa;CA4B5B"}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GeminiNanoChatService = void 0;
4
+ const geminiNano_1 = require("../../../constants/geminiNano");
5
+ /**
6
+ * Get the LanguageModel API from the global scope.
7
+ * Returns undefined in non-browser environments or unsupported browsers.
8
+ */
9
+ function getLanguageModelAPI() {
10
+ if (typeof globalThis !== 'undefined' && 'LanguageModel' in globalThis) {
11
+ return globalThis.LanguageModel;
12
+ }
13
+ return undefined;
14
+ }
15
+ /**
16
+ * Gemini Nano implementation of ChatService.
17
+ * Uses Chrome's built-in LanguageModel API (Prompt API, Chrome 138+).
18
+ * Runs entirely in the browser — no API key or network required.
19
+ */
20
+ class GeminiNanoChatService {
21
+ constructor(options = {}) {
22
+ this.provider = 'gemini-nano';
23
+ this.expectedInputLanguages = options.expectedInputLanguages ?? ['ja'];
24
+ this.expectedOutputLanguages = options.expectedOutputLanguages ?? ['ja'];
25
+ this._responseLength = options.responseLength;
26
+ void this._responseLength;
27
+ }
28
+ getModel() {
29
+ return geminiNano_1.MODEL_GEMINI_NANO;
30
+ }
31
+ getVisionModel() {
32
+ return geminiNano_1.MODEL_GEMINI_NANO;
33
+ }
34
+ /**
35
+ * Process chat messages using Gemini Nano.
36
+ * Non-streaming: calls onPartialResponse once with the full response,
37
+ * then calls onCompleteResponse.
38
+ */
39
+ async processChat(messages, onPartialResponse, onCompleteResponse) {
40
+ const response = await this.generateResponse(messages);
41
+ onPartialResponse(response);
42
+ await onCompleteResponse(response);
43
+ }
44
+ async processVisionChat(_messages, _onPartialResponse, _onCompleteResponse) {
45
+ throw new Error('Gemini Nano does not support vision capabilities.');
46
+ }
47
+ async chatOnce(messages, _stream = false, onPartialResponse = () => { }, _maxTokens) {
48
+ const response = await this.generateResponse(messages);
49
+ onPartialResponse(response);
50
+ return {
51
+ blocks: [{ type: 'text', text: response }],
52
+ stop_reason: 'end',
53
+ };
54
+ }
55
+ async visionChatOnce(_messages, _stream = false, _onPartialResponse = () => { }, _maxTokens) {
56
+ throw new Error('Gemini Nano does not support vision capabilities.');
57
+ }
58
+ /**
59
+ * Core logic: extract system prompt, manage session, call prompt().
60
+ */
61
+ async generateResponse(messages) {
62
+ const api = getLanguageModelAPI();
63
+ if (!api) {
64
+ throw new Error('Gemini Nano is not available in this environment. ' +
65
+ 'Chrome 138+ with Prompt API enabled is required.');
66
+ }
67
+ const availability = await api.availability();
68
+ if (availability !== 'available' && availability !== 'downloadable') {
69
+ throw new Error('Gemini Nano Prompt API is not ready in this environment. ' +
70
+ `LanguageModel.availability() returned "${availability}". ` +
71
+ 'Expected "available" or "downloadable".');
72
+ }
73
+ // Extract system prompt
74
+ const systemMessages = messages.filter((m) => m.role === 'system');
75
+ const systemPrompt = systemMessages.map((m) => m.content).join('\n');
76
+ // Get conversation messages (exclude system)
77
+ const conversationMessages = messages
78
+ .filter((m) => m.role !== 'system')
79
+ .slice(-geminiNano_1.GEMINI_NANO_MAX_CONTEXT_MESSAGES);
80
+ // Get the last user message to send via prompt()
81
+ const lastUserMessage = [...conversationMessages]
82
+ .reverse()
83
+ .find((m) => m.role === 'user');
84
+ if (!lastUserMessage) {
85
+ throw new Error('No user message found in the provided messages.');
86
+ }
87
+ const session = await this.createSession(api, systemPrompt, conversationMessages);
88
+ try {
89
+ return await session.prompt(lastUserMessage.content);
90
+ }
91
+ finally {
92
+ try {
93
+ session.destroy();
94
+ }
95
+ catch {
96
+ // ignore
97
+ }
98
+ }
99
+ }
100
+ /**
101
+ * Create a new LanguageModel session with system prompt and context history.
102
+ * Context history (excluding the last user message) is embedded in the system prompt.
103
+ */
104
+ async createSession(api, systemPrompt, contextHistory) {
105
+ let prompt = systemPrompt;
106
+ // Embed conversation history into system prompt (exclude last user msg)
107
+ const historyMessages = contextHistory.slice(0, -1);
108
+ if (historyMessages.length > 0) {
109
+ const history = historyMessages
110
+ .map((m) => `${m.role === 'user' ? 'User' : 'Assistant'}: ${m.content}`)
111
+ .join('\n');
112
+ prompt +=
113
+ '\n\n以下はこれまでの会話履歴です。この文脈を踏まえて回答してください:\n' +
114
+ history;
115
+ }
116
+ return api.create({
117
+ systemPrompt: prompt,
118
+ expectedInputs: [
119
+ { type: 'text', languages: this.expectedInputLanguages },
120
+ ],
121
+ expectedOutputs: [
122
+ { type: 'text', languages: this.expectedOutputLanguages },
123
+ ],
124
+ });
125
+ }
126
+ }
127
+ exports.GeminiNanoChatService = GeminiNanoChatService;
128
+ //# sourceMappingURL=GeminiNanoChatService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeminiNanoChatService.js","sourceRoot":"","sources":["../../../../../src/services/providers/geminiNano/GeminiNanoChatService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { ChatService } from '../../ChatService';
2
+ import { GeminiNanoChatServiceOptions, ChatServiceProvider, VisionSupportLevel } from '../ChatServiceProvider';
3
+ /**
4
+ * Gemini Nano (Chrome built-in AI) provider implementation.
5
+ * No API key required — runs entirely in the browser.
6
+ */
7
+ export declare class GeminiNanoChatServiceProvider implements ChatServiceProvider<GeminiNanoChatServiceOptions> {
8
+ createChatService(options: GeminiNanoChatServiceOptions): ChatService;
9
+ getProviderName(): string;
10
+ getSupportedModels(): string[];
11
+ getDefaultModel(): string;
12
+ supportsVision(): boolean;
13
+ getVisionSupportLevel(): VisionSupportLevel;
14
+ }
15
+ //# sourceMappingURL=GeminiNanoChatServiceProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeminiNanoChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/geminiNano/GeminiNanoChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAGhC;;;GAGG;AACH,qBAAa,6BACX,YAAW,mBAAmB,CAAC,4BAA4B,CAAC;IAE5D,iBAAiB,CAAC,OAAO,EAAE,4BAA4B,GAAG,WAAW;IAQrE,eAAe,IAAI,MAAM;IAIzB,kBAAkB,IAAI,MAAM,EAAE;IAI9B,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,OAAO;IAIzB,qBAAqB,IAAI,kBAAkB;CAG5C"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GeminiNanoChatServiceProvider = void 0;
4
+ const GeminiNanoChatService_1 = require("./GeminiNanoChatService");
5
+ const geminiNano_1 = require("../../../constants/geminiNano");
6
+ /**
7
+ * Gemini Nano (Chrome built-in AI) provider implementation.
8
+ * No API key required — runs entirely in the browser.
9
+ */
10
+ class GeminiNanoChatServiceProvider {
11
+ createChatService(options) {
12
+ return new GeminiNanoChatService_1.GeminiNanoChatService({
13
+ expectedInputLanguages: options.expectedInputLanguages,
14
+ expectedOutputLanguages: options.expectedOutputLanguages,
15
+ responseLength: options.responseLength,
16
+ });
17
+ }
18
+ getProviderName() {
19
+ return 'gemini-nano';
20
+ }
21
+ getSupportedModels() {
22
+ return [geminiNano_1.MODEL_GEMINI_NANO];
23
+ }
24
+ getDefaultModel() {
25
+ return geminiNano_1.MODEL_GEMINI_NANO;
26
+ }
27
+ supportsVision() {
28
+ return false;
29
+ }
30
+ getVisionSupportLevel() {
31
+ return 'unsupported';
32
+ }
33
+ }
34
+ exports.GeminiNanoChatServiceProvider = GeminiNanoChatServiceProvider;
35
+ //# sourceMappingURL=GeminiNanoChatServiceProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeminiNanoChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/geminiNano/GeminiNanoChatServiceProvider.ts"],"names":[],"mappings":";;;AACA,mEAAgE;AAMhE,8DAAkE;AAElE;;;GAGG;AACH,MAAa,6BAA6B;IAGxC,iBAAiB,CAAC,OAAqC;QACrD,OAAO,IAAI,6CAAqB,CAAC;YAC/B,sBAAsB,EAAE,OAAO,CAAC,sBAAsB;YACtD,uBAAuB,EAAE,OAAO,CAAC,uBAAuB;YACxD,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,kBAAkB;QAChB,OAAO,CAAC,8BAAiB,CAAC,CAAC;IAC7B,CAAC;IAED,eAAe;QACb,OAAO,8BAAiB,CAAC;IAC3B,CAAC;IAED,cAAc;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB;QACnB,OAAO,aAAa,CAAC;IACvB,CAAC;CACF;AA9BD,sEA8BC"}
@@ -1,10 +1,11 @@
1
1
  import { ClaudeChatServiceProvider } from './claude/ClaudeChatServiceProvider';
2
2
  import { GeminiChatServiceProvider } from './gemini/GeminiChatServiceProvider';
3
+ import { GeminiNanoChatServiceProvider } from './geminiNano/GeminiNanoChatServiceProvider';
3
4
  import { KimiChatServiceProvider } from './kimi/KimiChatServiceProvider';
4
5
  import { OpenAICompatibleChatServiceProvider } from './openaiCompatible/OpenAICompatibleChatServiceProvider';
5
6
  import { OpenAIChatServiceProvider } from './openai/OpenAIChatServiceProvider';
6
7
  import { OpenRouterChatServiceProvider } from './openrouter/OpenRouterChatServiceProvider';
7
8
  import { XAIChatServiceProvider } from './xai/XAIChatServiceProvider';
8
9
  import { ZAIChatServiceProvider } from './zai/ZAIChatServiceProvider';
9
- export declare const DEFAULT_CHAT_SERVICE_PROVIDERS: (ClaudeChatServiceProvider | GeminiChatServiceProvider | KimiChatServiceProvider | OpenAICompatibleChatServiceProvider | OpenAIChatServiceProvider | OpenRouterChatServiceProvider | XAIChatServiceProvider | ZAIChatServiceProvider)[];
10
+ export declare const DEFAULT_CHAT_SERVICE_PROVIDERS: (ClaudeChatServiceProvider | GeminiChatServiceProvider | GeminiNanoChatServiceProvider | KimiChatServiceProvider | OpenAICompatibleChatServiceProvider | OpenAIChatServiceProvider | OpenRouterChatServiceProvider | XAIChatServiceProvider | ZAIChatServiceProvider)[];
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,mCAAmC,EAAE,MAAM,wDAAwD,CAAC;AAC7G,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,eAAO,MAAM,8BAA8B,yOAS1C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/services/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,mCAAmC,EAAE,MAAM,wDAAwD,CAAC;AAC7G,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,4CAA4C,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,eAAO,MAAM,8BAA8B,yQAU1C,CAAC"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEFAULT_CHAT_SERVICE_PROVIDERS = void 0;
4
4
  const ClaudeChatServiceProvider_1 = require("./claude/ClaudeChatServiceProvider");
5
5
  const GeminiChatServiceProvider_1 = require("./gemini/GeminiChatServiceProvider");
6
+ const GeminiNanoChatServiceProvider_1 = require("./geminiNano/GeminiNanoChatServiceProvider");
6
7
  const KimiChatServiceProvider_1 = require("./kimi/KimiChatServiceProvider");
7
8
  const OpenAICompatibleChatServiceProvider_1 = require("./openaiCompatible/OpenAICompatibleChatServiceProvider");
8
9
  const OpenAIChatServiceProvider_1 = require("./openai/OpenAIChatServiceProvider");
@@ -13,6 +14,7 @@ exports.DEFAULT_CHAT_SERVICE_PROVIDERS = [
13
14
  new OpenAIChatServiceProvider_1.OpenAIChatServiceProvider(),
14
15
  new OpenAICompatibleChatServiceProvider_1.OpenAICompatibleChatServiceProvider(),
15
16
  new GeminiChatServiceProvider_1.GeminiChatServiceProvider(),
17
+ new GeminiNanoChatServiceProvider_1.GeminiNanoChatServiceProvider(),
16
18
  new ClaudeChatServiceProvider_1.ClaudeChatServiceProvider(),
17
19
  new OpenRouterChatServiceProvider_1.OpenRouterChatServiceProvider(),
18
20
  new ZAIChatServiceProvider_1.ZAIChatServiceProvider(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/providers/index.ts"],"names":[],"mappings":";;;AAAA,kFAA+E;AAC/E,kFAA+E;AAC/E,4EAAyE;AACzE,gHAA6G;AAC7G,kFAA+E;AAC/E,8FAA2F;AAC3F,yEAAsE;AACtE,yEAAsE;AAEzD,QAAA,8BAA8B,GAAG;IAC5C,IAAI,qDAAyB,EAAE;IAC/B,IAAI,yEAAmC,EAAE;IACzC,IAAI,qDAAyB,EAAE;IAC/B,IAAI,qDAAyB,EAAE;IAC/B,IAAI,6DAA6B,EAAE;IACnC,IAAI,+CAAsB,EAAE;IAC5B,IAAI,+CAAsB,EAAE;IAC5B,IAAI,iDAAuB,EAAE;CAC9B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/services/providers/index.ts"],"names":[],"mappings":";;;AAAA,kFAA+E;AAC/E,kFAA+E;AAC/E,8FAA2F;AAC3F,4EAAyE;AACzE,gHAA6G;AAC7G,kFAA+E;AAC/E,8FAA2F;AAC3F,yEAAsE;AACtE,yEAAsE;AAEzD,QAAA,8BAA8B,GAAG;IAC5C,IAAI,qDAAyB,EAAE;IAC/B,IAAI,yEAAmC,EAAE;IACzC,IAAI,qDAAyB,EAAE;IAC/B,IAAI,6DAA6B,EAAE;IACnC,IAAI,qDAAyB,EAAE;IAC/B,IAAI,6DAA6B,EAAE;IACnC,IAAI,+CAAsB,EAAE;IAC5B,IAAI,+CAAsB,EAAE;IAC5B,IAAI,iDAAuB,EAAE;CAC9B,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const MODEL_GEMINI_NANO = "gemini-nano";
2
+ /**
3
+ * Maximum number of messages to include in context history.
4
+ */
5
+ export declare const GEMINI_NANO_MAX_CONTEXT_MESSAGES = 20;
6
+ //# sourceMappingURL=geminiNano.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geminiNano.d.ts","sourceRoot":"","sources":["../../../src/constants/geminiNano.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,gCAAgC,KAAK,CAAC"}
@@ -0,0 +1,6 @@
1
+ export const MODEL_GEMINI_NANO = 'gemini-nano';
2
+ /**
3
+ * Maximum number of messages to include in context history.
4
+ */
5
+ export const GEMINI_NANO_MAX_CONTEXT_MESSAGES = 20;
6
+ //# sourceMappingURL=geminiNano.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"geminiNano.js","sourceRoot":"","sources":["../../../src/constants/geminiNano.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,CAAC"}
@@ -10,4 +10,5 @@ export * from './xai';
10
10
  export * from './kimi';
11
11
  export * from './chat';
12
12
  export * from './prompts';
13
+ export * from './geminiNano';
13
14
  //# 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,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;AAC1B,cAAc,cAAc,CAAC"}
@@ -10,4 +10,5 @@ export * from './xai';
10
10
  export * from './kimi';
11
11
  export * from './chat';
12
12
  export * from './prompts';
13
+ export * from './geminiNano';
13
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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"}
1
+ {"version":3,"file":"index.js","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;AAC1B,cAAc,cAAc,CAAC"}
@@ -5,12 +5,14 @@
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, XAIChatServiceOptions, KimiChatServiceOptions, ChatServiceProvider, VisionSupportLevel, } from './services/providers/ChatServiceProvider';
8
+ export type { ChatServiceOptions, ChatServiceOptionsByProvider, ChatProviderName, OpenAIChatServiceOptions, OpenAICompatibleChatServiceOptions, OpenRouterChatServiceOptions, GeminiChatServiceOptions, GeminiNanoChatServiceOptions, 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';
12
12
  export { GeminiChatService } from './services/providers/gemini/GeminiChatService';
13
13
  export { GeminiChatServiceProvider } from './services/providers/gemini/GeminiChatServiceProvider';
14
+ export { GeminiNanoChatService } from './services/providers/geminiNano/GeminiNanoChatService';
15
+ export { GeminiNanoChatServiceProvider } from './services/providers/geminiNano/GeminiNanoChatServiceProvider';
14
16
  export { ClaudeChatService } from './services/providers/claude/ClaudeChatService';
15
17
  export { ClaudeChatServiceProvider } from './services/providers/claude/ClaudeChatServiceProvider';
16
18
  export { OpenRouterChatService } from './services/providers/openrouter/OpenRouterChatService';