@aituber-onair/chat 0.48.0 → 0.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.ja.md +106 -14
  2. package/README.md +113 -14
  3. package/dist/cjs/constants/claude.d.ts +15 -0
  4. package/dist/cjs/constants/claude.d.ts.map +1 -1
  5. package/dist/cjs/constants/claude.js +61 -1
  6. package/dist/cjs/constants/claude.js.map +1 -1
  7. package/dist/cjs/constants/kimi.d.ts +5 -1
  8. package/dist/cjs/constants/kimi.d.ts.map +1 -1
  9. package/dist/cjs/constants/kimi.js +8 -1
  10. package/dist/cjs/constants/kimi.js.map +1 -1
  11. package/dist/cjs/constants/openrouter.d.ts +12 -0
  12. package/dist/cjs/constants/openrouter.d.ts.map +1 -1
  13. package/dist/cjs/constants/openrouter.js +24 -1
  14. package/dist/cjs/constants/openrouter.js.map +1 -1
  15. package/dist/cjs/index.d.ts +1 -1
  16. package/dist/cjs/index.d.ts.map +1 -1
  17. package/dist/cjs/index.js.map +1 -1
  18. package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -1
  19. package/dist/cjs/services/ChatServiceFactory.js +9 -1
  20. package/dist/cjs/services/ChatServiceFactory.js.map +1 -1
  21. package/dist/cjs/services/providers/ChatServiceProvider.d.ts +15 -3
  22. package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -1
  23. package/dist/cjs/services/providers/claude/ClaudeChatService.d.ts +3 -1
  24. package/dist/cjs/services/providers/claude/ClaudeChatService.d.ts.map +1 -1
  25. package/dist/cjs/services/providers/claude/ClaudeChatService.js +51 -4
  26. package/dist/cjs/services/providers/claude/ClaudeChatService.js.map +1 -1
  27. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  28. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js +13 -2
  29. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  30. package/dist/cjs/services/providers/claude/claudeMessageConverter.d.ts.map +1 -1
  31. package/dist/cjs/services/providers/claude/claudeMessageConverter.js +7 -1
  32. package/dist/cjs/services/providers/claude/claudeMessageConverter.js.map +1 -1
  33. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatService.d.ts +7 -2
  34. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatService.d.ts.map +1 -1
  35. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatService.js +83 -30
  36. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatService.js.map +1 -1
  37. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatServiceProvider.d.ts.map +1 -1
  38. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatServiceProvider.js +1 -0
  39. package/dist/cjs/services/providers/geminiNano/GeminiNanoChatServiceProvider.js.map +1 -1
  40. package/dist/cjs/services/providers/kimi/KimiChatService.d.ts.map +1 -1
  41. package/dist/cjs/services/providers/kimi/KimiChatService.js +3 -5
  42. package/dist/cjs/services/providers/kimi/KimiChatService.js.map +1 -1
  43. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -1
  44. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js +1 -1
  45. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js.map +1 -1
  46. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
  47. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js +34 -15
  48. package/dist/cjs/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
  49. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  50. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js +13 -0
  51. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  52. package/dist/cjs/types/chat.d.ts +2 -0
  53. package/dist/cjs/types/chat.d.ts.map +1 -1
  54. package/dist/cjs/types/toolChat.d.ts +2 -3
  55. package/dist/cjs/types/toolChat.d.ts.map +1 -1
  56. package/dist/cjs/utils/openaiCompatibleSse.d.ts +1 -0
  57. package/dist/cjs/utils/openaiCompatibleSse.d.ts.map +1 -1
  58. package/dist/cjs/utils/openaiCompatibleSse.js +22 -0
  59. package/dist/cjs/utils/openaiCompatibleSse.js.map +1 -1
  60. package/dist/esm/constants/claude.d.ts +15 -0
  61. package/dist/esm/constants/claude.d.ts.map +1 -1
  62. package/dist/esm/constants/claude.js +56 -0
  63. package/dist/esm/constants/claude.js.map +1 -1
  64. package/dist/esm/constants/kimi.d.ts +5 -1
  65. package/dist/esm/constants/kimi.d.ts.map +1 -1
  66. package/dist/esm/constants/kimi.js +7 -1
  67. package/dist/esm/constants/kimi.js.map +1 -1
  68. package/dist/esm/constants/openrouter.d.ts +12 -0
  69. package/dist/esm/constants/openrouter.d.ts.map +1 -1
  70. package/dist/esm/constants/openrouter.js +22 -0
  71. package/dist/esm/constants/openrouter.js.map +1 -1
  72. package/dist/esm/index.d.ts +1 -1
  73. package/dist/esm/index.d.ts.map +1 -1
  74. package/dist/esm/index.js.map +1 -1
  75. package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -1
  76. package/dist/esm/services/ChatServiceFactory.js +9 -1
  77. package/dist/esm/services/ChatServiceFactory.js.map +1 -1
  78. package/dist/esm/services/providers/ChatServiceProvider.d.ts +15 -3
  79. package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -1
  80. package/dist/esm/services/providers/claude/ClaudeChatService.d.ts +3 -1
  81. package/dist/esm/services/providers/claude/ClaudeChatService.d.ts.map +1 -1
  82. package/dist/esm/services/providers/claude/ClaudeChatService.js +52 -5
  83. package/dist/esm/services/providers/claude/ClaudeChatService.js.map +1 -1
  84. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  85. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js +14 -3
  86. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  87. package/dist/esm/services/providers/claude/claudeMessageConverter.d.ts.map +1 -1
  88. package/dist/esm/services/providers/claude/claudeMessageConverter.js +7 -1
  89. package/dist/esm/services/providers/claude/claudeMessageConverter.js.map +1 -1
  90. package/dist/esm/services/providers/geminiNano/GeminiNanoChatService.d.ts +7 -2
  91. package/dist/esm/services/providers/geminiNano/GeminiNanoChatService.d.ts.map +1 -1
  92. package/dist/esm/services/providers/geminiNano/GeminiNanoChatService.js +84 -31
  93. package/dist/esm/services/providers/geminiNano/GeminiNanoChatService.js.map +1 -1
  94. package/dist/esm/services/providers/geminiNano/GeminiNanoChatServiceProvider.d.ts.map +1 -1
  95. package/dist/esm/services/providers/geminiNano/GeminiNanoChatServiceProvider.js +1 -0
  96. package/dist/esm/services/providers/geminiNano/GeminiNanoChatServiceProvider.js.map +1 -1
  97. package/dist/esm/services/providers/kimi/KimiChatService.d.ts.map +1 -1
  98. package/dist/esm/services/providers/kimi/KimiChatService.js +4 -6
  99. package/dist/esm/services/providers/kimi/KimiChatService.js.map +1 -1
  100. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -1
  101. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js +2 -2
  102. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js.map +1 -1
  103. package/dist/esm/services/providers/openrouter/OpenRouterChatService.d.ts.map +1 -1
  104. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js +35 -16
  105. package/dist/esm/services/providers/openrouter/OpenRouterChatService.js.map +1 -1
  106. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  107. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js +14 -1
  108. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  109. package/dist/esm/types/chat.d.ts +2 -0
  110. package/dist/esm/types/chat.d.ts.map +1 -1
  111. package/dist/esm/types/toolChat.d.ts +2 -3
  112. package/dist/esm/types/toolChat.d.ts.map +1 -1
  113. package/dist/esm/utils/openaiCompatibleSse.d.ts +1 -0
  114. package/dist/esm/utils/openaiCompatibleSse.d.ts.map +1 -1
  115. package/dist/esm/utils/openaiCompatibleSse.js +22 -0
  116. package/dist/esm/utils/openaiCompatibleSse.js.map +1 -1
  117. package/dist/umd/aituber-onair-chat.js +300 -50
  118. package/dist/umd/aituber-onair-chat.min.js +9 -11
  119. package/package.json +1 -1
package/README.ja.md CHANGED
@@ -571,10 +571,27 @@ CI/ローカルで再現性を高める場合は
571
571
  ```typescript
572
572
  const claudeService = ChatServiceFactory.createChatService('claude', {
573
573
  apiKey: process.env.ANTHROPIC_API_KEY,
574
- model: 'claude-sonnet-5'
574
+ model: 'claude-opus-5',
575
+ reasoning_effort: 'low'
575
576
  });
576
577
  ```
577
578
 
579
+ `claude-opus-5` は高性能用途向けの明示的な選択肢として利用でき、パッケージの
580
+ 既定値にはしていません。Claude Opus 5 は adaptive thinking が既定で有効です。
581
+ 対応するClaudeモデルでは `reasoning_effort` を指定でき、Anthropic APIの
582
+ `output_config.effort` に変換されます。省略時のClaude API既定値は `high` です。
583
+
584
+ - Claude Opus 5、Sonnet 5、Opus 4.8、Opus 4.7:
585
+ `low`、`medium`、`high`、`xhigh`、`max`
586
+ - Claude Opus 4.6、Sonnet 4.6:
587
+ `low`、`medium`、`high`、`max`
588
+ - Claude Opus 4.5: `low`、`medium`、`high`
589
+
590
+ effortを下げるとレイテンシーとトークン効率を優先できますが、表示される回答の
591
+ 短さは保証されません。短い回答が必要な場合は、回答長の指示も併用してください。
592
+ 複数ターンのツール呼び出しでは provider 固有の thinking / tool-use ブロックを
593
+ 保持するため、返された `completion.assistant_message` を会話履歴へ追加してください。
594
+
578
595
  #### Google Gemini
579
596
 
580
597
  ```typescript
@@ -619,26 +636,36 @@ const openRouterService = ChatServiceFactory.createChatService('openrouter', {
619
636
  ```
620
637
 
621
638
  **OpenRouterの重要な注意事項:**
622
- - `gpt-oss-20b:free`モデルでは、技術的制限によりトークン制限が自動的に無効化されます
623
- - 応答の長さを制御するには、プロンプト内で指示してください(例:「40文字以内で返答してください」)
639
+ - `openrouter/auto` と `openrouter/auto-beta` では、ルーティング先のreasoningモデルが可視テキストの生成前に出力予算を使い切ることを避けるため、`responseLength` 由来のトークン制限を自動的に無効化します。明示的に指定した `maxTokens` はそのまま使用します。
640
+ - `gpt-oss-20b:free` と `z-ai/glm-5.2` では、すべてのトークン制限を引き続き無効化します。これらのモデルと動的Routerでは、応答の長さをプロンプトで指示してください(例:「40文字以内で回答してください」)。
624
641
  - 無料階層にはレート制限があります(20リクエスト/分)
625
642
  - 無料モデル判定はモデルID末尾の `:free` で行います(動的取得した `:free` も同様にレート制限対象)
643
+ - `openrouter/auto-beta` はタスクを判定するBetaルーターです。リクエストごとにモデルを選択し、そのモデルの料金が適用されます。選択結果はレスポンスの `model` またはOpenRouter Activityで確認できます。
626
644
  - `openrouter/fusion` は複数モデルのパネルとジャッジモデルを実行します。単一モデルの固定単価ではなく、内部で使われた各モデル呼び出しと web search/fetch 利用分の合算で課金されます。
627
- - `z-ai/glm-5.2` は OpenRouter reasoning を `none` にし、reasoning token が出力上限を使い切って可視テキストが空になることを避けるため、トークン制限も自動的に無効化します。
645
+ - `z-ai/glm-5.2` は OpenRouter reasoning も `none` にします。
646
+ - コーディング特化モデルはデフォルトではなく明示的な選択肢です。`kwaipilot/kat-coder-air-v2.5` と `kwaipilot/kat-coder-pro-v2.5` はテキスト専用です。
647
+ - `moonshotai/kimi-k3` の可用性は上流キャパシティに依存し、混雑時はOpenRouterから429レスポンスが返る場合があります。
648
+ - `x-ai/grok-4.5` には現在のEU制限を含む地域別の可用性制限があります。`~x-ai/grok-latest` がGrok 4.5へ解決される場合も同じ制限を受けます。
628
649
  - サポート対象モデル(キュレーション済み):
629
- - `openrouter/auto`
650
+ - `openrouter/auto`, `openrouter/auto-beta`
630
651
  - `openrouter/fusion`
631
652
  - `openai/gpt-oss-20b:free`
632
- - `~openai/gpt-latest`, `~openai/gpt-mini-latest`, `openai/gpt-5.5-pro`, `openai/gpt-5.5`
653
+ - `~openai/gpt-latest`, `~openai/gpt-mini-latest`
654
+ - `openai/gpt-5.6-sol`, `openai/gpt-5.6-terra`, `openai/gpt-5.6-luna`
655
+ - `openai/gpt-5.5-pro`, `openai/gpt-5.5`
633
656
  - `openai/gpt-5.1-chat`, `openai/gpt-5.1-codex`, `openai/gpt-5-mini`, `openai/gpt-5-nano`
634
657
  - `openai/gpt-4o`, `openai/gpt-4.1-mini`, `openai/gpt-4.1-nano`
635
658
  - `~anthropic/claude-sonnet-latest`, `~anthropic/claude-haiku-latest`
659
+ - `anthropic/claude-opus-5`
636
660
  - `anthropic/claude-opus-4`, `anthropic/claude-sonnet-4`
637
661
  - `anthropic/claude-3.7-sonnet`, `anthropic/claude-3.5-sonnet`, `anthropic/claude-haiku-4.5`
638
662
  - `~google/gemini-pro-latest`, `~google/gemini-flash-latest`
663
+ - `google/gemini-3.6-flash`, `google/gemini-3.5-flash-lite`
639
664
  - `google/gemini-2.5-pro`, `google/gemini-2.5-flash`, `google/gemini-2.5-flash-lite-preview-09-2025`
640
665
  - `z-ai/glm-5.2`, `z-ai/glm-4.7-flash`, `z-ai/glm-4.5-air`, `z-ai/glm-4.5-air:free`
641
- - `~moonshotai/kimi-latest`, `moonshotai/kimi-k2.7-code`, `moonshotai/kimi-k2.5`
666
+ - `~x-ai/grok-latest`, `x-ai/grok-4.5`
667
+ - `~moonshotai/kimi-latest`, `moonshotai/kimi-k3`, `moonshotai/kimi-k2.7-code`, `moonshotai/kimi-k2.5`
668
+ - `kwaipilot/kat-coder-air-v2.5`, `kwaipilot/kat-coder-pro-v2.5`
642
669
 
643
670
  **OpenRouter freeモデルの動的リフレッシュ**
644
671
 
@@ -711,7 +738,7 @@ const kimiService = ChatServiceFactory.createChatService('kimi', {
711
738
  // Optional: エンドポイント/ベースURLの上書き
712
739
  // endpoint: 'https://api.moonshot.ai/v1/chat/completions',
713
740
  // baseUrl: 'https://api.moonshot.ai/v1',
714
- reasoning_effort: 'max'
741
+ reasoning_effort: 'low'
715
742
  });
716
743
  ```
717
744
 
@@ -719,7 +746,7 @@ const kimiService = ChatServiceFactory.createChatService('kimi', {
719
746
  - KimiはOpenAI互換のChat Completionsを利用します。
720
747
  - 対応モデル: `kimi-k3`, `kimi-k2.7-code`, `kimi-k2.7-code-highspeed`, `kimi-k2.6`, `kimi-k2.5`
721
748
  - チャット用途向けのデフォルトモデルは引き続き `kimi-k2.6` です。
722
- - Kimi K3は高Reasoning用途向けの明示的な選択肢です。現在は `reasoning_effort: 'max'` のみ対応し、K2系の `thinking` オプションは利用できません。
749
+ - Kimi K3は明示的に選択するReasoningモデルです。`reasoning_effort: 'low' | 'high' | 'max'` に対応し、デフォルトは `max` です。Reasoning自体は無効化できず、K2系の `thinking` オプションも利用できません。`none`、`minimal`、`medium` は非対応です。
723
750
  - Kimi K3の出力上限には `max_completion_tokens` を使用します。
724
751
  - Kimi K3の複数ターン・ツール呼び出しでは、`reasoning_content` と `tool_calls` を保持するため、返された `completion.assistant_message` を会話履歴へ追加してください。
725
752
  - Kimi K2.7 Code 系モデルはコーディング寄りで、thinking mode が必須のため、ツール使用時も `thinking` を有効のままにします。
@@ -804,7 +831,7 @@ const sakanaService = ChatServiceFactory.createChatService('sakana', {
804
831
  - 対応モデル: `fugu`(デフォルト), `fugu-ultra`, `fugu-ultra-20260615`
805
832
  - Sakanaは新しいChat Completions連携では`max_completion_tokens`を推奨していますが、legacyな`max_tokens`も受け付けます。このproviderでは既存OpenAI互換providerの挙動に合わせて`max_tokens`を使います。
806
833
  - Sakanaは最高性能にはResponses APIを推奨していますが、このproviderはpackageのOpenAI互換chat経路に合わせてChat Completionsを利用します。
807
- - ブラウザから直接呼ぶ場合、Sakana側がoriginに対してCORSを許可していないと失敗します。ブラウザ単体ではなく、Node.js、backend/serverless proxy、または`examples/sakana-basic`を利用してください。
834
+ - ブラウザから直接呼ぶ場合、Sakana側がoriginに対してCORSを許可していないと失敗します。ブラウザ単体ではなく、Node.js、backend/serverless proxy、または`examples/node-basic/sakana-example.js`を利用してください。
808
835
 
809
836
  #### PLaMo
810
837
 
@@ -827,12 +854,33 @@ const plamoService = ChatServiceFactory.createChatService('plamo', {
827
854
 
828
855
  ```typescript
829
856
  const geminiNanoService = ChatServiceFactory.createChatService('gemini-nano', {
830
- responseLength: 'medium'
857
+ responseLength: 'short',
858
+ initialPrompts: [
859
+ {
860
+ role: 'system',
861
+ content: 'あなたは明るく自然な話し方をするキャラクターです。'
862
+ },
863
+ { role: 'user', content: '今日はどんな気分?' },
864
+ { role: 'assistant', content: '元気いっぱいで、お話しするのが楽しみだよ!' },
865
+ { role: 'user', content: '準備できた?' },
866
+ { role: 'assistant', content: 'うん、いつでも始められるよ!' }
867
+ ]
831
868
  });
832
869
  ```
833
870
 
834
871
  注意:
835
872
  - APIキー不要 — ChromeのLanguageModel API(Prompt API)を使用します。
873
+ - システム指示、設定した会話例、直近の会話履歴は、roleを維持した
874
+ `initialPrompts`として渡されます。
875
+ - 設定した`initialPrompts`にsystemメッセージがある場合は、必ず先頭へ
876
+ 正規化されます。会話例はオンデバイスモデルのコンテキストを消費するため、
877
+ 短い例を使用してください。
878
+ - Gemini Nanoでは、トークン数の目安に加えて、`veryShort`は最大1文、
879
+ `short`は最大2文、`medium`は最大3文、`long`は最大5文、
880
+ `veryLong`は最大10文となるよう具体的に指示します。`deep`は約5000
881
+ トークンの目安だけを残し、文数は制限しません。ただし、出力長は厳密保証
882
+ ではありません。
883
+ - 構造化された履歴として、直近20件までのuser/assistantメッセージを渡します。
836
884
  - **Chrome 138以降**で、以下のフラグを有効にする必要があります:
837
885
  - `chrome://flags/#optimization-guide-on-device-model` → Enabled
838
886
  - `chrome://flags/#prompt-api-for-gemini-nano` → Enabled
@@ -841,6 +889,50 @@ const geminiNanoService = ChatServiceFactory.createChatService('gemini-nano', {
841
889
  - ビジョン(画像入力)は非対応です。
842
890
  - 初回のモデルダウンロードにはユーザー操作が必要で、数分かかる場合があります。
843
891
 
892
+ ##### Tips: 会話例で応答長の安定性を高める
893
+
894
+ `responseLength`を設定すると、Gemini Nano向けの文数、書式、トークン数の
895
+ 目安が自動的に指示へ追加されます。さらに、短いuser/assistantの会話例を
896
+ 2〜3組ほど`initialPrompts`で渡すと、指示をより強く補強できます。
897
+
898
+ ```typescript
899
+ import {
900
+ ChatServiceFactory,
901
+ type GeminiNanoInitialPrompt
902
+ } from '@aituber-onair/chat';
903
+
904
+ const veryShortExamples: GeminiNanoInitialPrompt[] = [
905
+ { role: 'user', content: '今日はどんな気分?' },
906
+ { role: 'assistant', content: 'みんなと話せて元気いっぱいだよ!' },
907
+ { role: 'user', content: '好きな食べ物は?' },
908
+ { role: 'assistant', content: '特にサーモンのお寿司が好き!' }
909
+ ];
910
+
911
+ const service = ChatServiceFactory.createChatService('gemini-nano', {
912
+ responseLength: 'veryShort',
913
+ initialPrompts: veryShortExamples
914
+ });
915
+ ```
916
+
917
+ 会話例は任意です。`initialPrompts`を省略しても、パッケージ側の応答長指示は
918
+ 適用されます。会話例を加えることで、期待する文章量、口調、リアクション、
919
+ 会話のテンポをオンデバイスモデルへ具体的に伝えられます。
920
+
921
+ - assistantの例文は選択したプリセットに合わせてください。`veryShort`なら
922
+ 1文、`short`なら最大2文にします。
923
+ - 例文は対象キャラクターの口調で記述してください。汎用的な固定例文は
924
+ キャラクター性を変える可能性があるため、パッケージからは自動追加しません。
925
+ - 明確に長い回答が必要な`medium`以上へ1文の例を流用すると、短い回答へ
926
+ 偏る可能性があります。
927
+ - 例文はシステムプロンプトや会話履歴と同じコンテキストを消費するため、
928
+ 少数かつ短く保ってください。
929
+ - `responseLength`または`initialPrompts`を変更した場合は、チャットサービスを
930
+ 作り直してください。React Basic Exampleではこれを自動的に行い、短い例文は
931
+ `veryShort`と`short`だけに適用しています。
932
+ - これは応答長の安定性を高める制御であり、厳密な出力上限ではありません。
933
+ ChromeのLanguageModel APIにはmax output tokens相当の設定がないため、
934
+ 指定した文数を超える場合があります。
935
+
844
936
  ### ビジョンチャット
845
937
 
846
938
  組み込み provider のうち、対応モデル一覧を持つものは vision 対応を
@@ -1150,11 +1242,11 @@ vision、JSON mode、reasoning 設定を使うべきかを provider 固有ロジ
1150
1242
  - **OpenAI**: GPT-5.6(Sol/Terra/Luna)、GPT-5.5、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のモデルをサポート
1151
1243
  - **OpenAI-Compatible**: OpenAI互換 endpoint 経由で任意のローカル/セルフホスト model ID を利用できます。vision 対応可否は endpoint ごとに差があるため、原則 `unknown` 扱いです
1152
1244
  - **Gemini**: Gemini 3.6 Flash、Gemini 3.5 Flash、Gemini 3.5 Flash-Lite、Gemini 3.1 Flash-Lite、Gemini 3.1 Pro Preview、Gemini 3 Flash Preview、Gemini 2.5 Pro、Gemini 2.5 Flash、Gemini 2.5 Flash Lite、Gemma 4 31B IT、Gemma 4 26B A4B IT などの推奨モデルをサポート。チャット用途向けに Gemini 3 Flash は minimal thinking、Gemini 3 Pro は low thinking を既定値にします。Gemini 3.1 Flash-Lite Preview、Gemini 3 Pro Preview、Gemini 2.5 Flash Lite Preview などの lifecycle 上 deprecated なモデルは明示指定用に export を残しています
1153
- - **Claude**: Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Haiku 4.5 に加え、まだ利用可能だが非推奨の Claude 4 Opus, Claude 4 Sonnet, Claude 3 Haiku をサポート
1154
- - **OpenRouter**: OpenRouterのキュレーション済みモデル一覧(OpenAI/Claude/Gemini/Z.ai/Kimi)をサポート。モデルIDはOpenRouter節を参照してください
1245
+ - **Claude**: Claude Opus 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Haiku 4.5 に加え、まだ利用可能だが非推奨の Claude 4 Opus, Claude 4 Sonnet, Claude 3 Haiku をサポート。調整可能な `reasoning_effort` は対応モデルに限り `output_config.effort` として送信します
1246
+ - **OpenRouter**: OpenRouterのキュレーション済みモデル一覧(OpenAI/Claude/Gemini/Z.ai/xAI/Kimi/Kwaipilot)をサポート。モデルIDはOpenRouter節を参照してください
1155
1247
  - **Z.ai**: GLM-5.2/GLM-5.1/GLM-5/GLM-5-Turbo(テキスト)、GLM-4.7/4.6(テキスト)、GLM-5V-Turbo/GLM-4.6V系(ビジョン)をサポート
1156
1248
  - **xAI**: Grok 4.5 をチャット用途向けに `reasoning_effort: 'low'` デフォルトでサポート。加えて Grok 4.3、Grok 4.20 の Reasoning/Non-Reasoning、Grok 4-1 Fast の Reasoning/Non-Reasoning をサポートし、全モデルでビジョン対応
1157
- - **Kimi**: Kimi K3(`kimi-k3`、max reasoningのみ)、Kimi K2.7 Code(`kimi-k2.7-code`)、Kimi K2.7 Code HighSpeed(`kimi-k2.7-code-highspeed`)、Kimi K2.6(`kimi-k2.6`、デフォルト)、Kimi K2.5(`kimi-k2.5`、いずれもビジョン対応)をサポート
1249
+ - **Kimi**: Kimi K3(`kimi-k3`、`low` / `high` / `max` reasoning、デフォルトは `max`)、Kimi K2.7 Code(`kimi-k2.7-code`)、Kimi K2.7 Code HighSpeed(`kimi-k2.7-code-highspeed`)、Kimi K2.6(`kimi-k2.6`、デフォルト)、Kimi K2.5(`kimi-k2.5`、いずれもビジョン対応)をサポート
1158
1250
  - **DeepSeek**: DeepSeek V4 Flash(`deepseek-v4-flash`)と DeepSeek V4 Pro(`deepseek-v4-pro`)をOpenAI互換Chat Completions経由でサポート。legacy alias の`deepseek-chat`と`deepseek-reasoner`はDeepSeek側で非推奨です
1159
1251
  - **Mistral**: Ministral 3系(`ministral-3b-2512`, `ministral-8b-2512`, `ministral-14b-2512`)と現行generalist modelをサポートし、streamingとvisionにも対応。adjustable `reasoning_effort`は対応モデルにだけ送信します
1160
1252
  - **Sakana AI**: Fugu(`fugu`)と Fugu Ultra(`fugu-ultra`, `fugu-ultra-20260615`)をOpenAI互換Chat Completions経由でサポート
package/README.md CHANGED
@@ -585,10 +585,29 @@ For CI/local deterministic runs, pair it with `examples/mock-openai-server`.
585
585
  ```typescript
586
586
  const claudeService = ChatServiceFactory.createChatService('claude', {
587
587
  apiKey: process.env.ANTHROPIC_API_KEY,
588
- model: 'claude-sonnet-5'
588
+ model: 'claude-opus-5',
589
+ reasoning_effort: 'low'
589
590
  });
590
591
  ```
591
592
 
593
+ `claude-opus-5` is available as an explicit high-capability option and is not
594
+ the package default. Claude Opus 5 has adaptive thinking enabled by default.
595
+ Supported Claude models accept `reasoning_effort`, which maps to Anthropic's
596
+ `output_config.effort`. The Claude API defaults to `high` when it is omitted:
597
+
598
+ - Claude Opus 5, Sonnet 5, Opus 4.8, and Opus 4.7:
599
+ `low`, `medium`, `high`, `xhigh`, or `max`.
600
+ - Claude Opus 4.6 and Sonnet 4.6:
601
+ `low`, `medium`, `high`, or `max`.
602
+ - Claude Opus 4.5: `low`, `medium`, or `high`.
603
+
604
+ Lower effort prioritizes latency and token efficiency, but does not guarantee
605
+ a shorter visible response. Use response-length prompting as well when concise
606
+ output is required.
607
+ For multi-turn tool calls, append the returned
608
+ `completion.assistant_message` to history so its provider-native thinking and
609
+ tool-use blocks are preserved.
610
+
592
611
  #### Google Gemini
593
612
 
594
613
  ```typescript
@@ -635,26 +654,36 @@ const openRouterService = ChatServiceFactory.createChatService('openrouter', {
635
654
  ```
636
655
 
637
656
  **Important Notes for OpenRouter:**
638
- - Token limits are automatically disabled for the `gpt-oss-20b:free` model due to technical limitations
639
- - To control response length, include instructions in your prompt (e.g., "Please respond in 40 characters or less")
657
+ - Automatic token limits from `responseLength` are disabled for `openrouter/auto` and `openrouter/auto-beta` because a routed reasoning model can spend the entire output budget before emitting visible content. An explicitly supplied `maxTokens` is still honored.
658
+ - All token limits remain disabled for `gpt-oss-20b:free` and `z-ai/glm-5.2`. For these models and the dynamic routers, control response length with prompt instructions (e.g., "Please respond in 40 characters or less").
640
659
  - Free tier has rate limits (20 requests/minute)
641
660
  - Free tier detection is based on the model ID suffix `:free` (dynamic `:free` IDs are also rate-limited)
661
+ - `openrouter/auto-beta` is a Beta task-aware router. It chooses a model for each request and charges that routed model's rate; inspect the response `model` field or OpenRouter Activity to see the selection.
642
662
  - `openrouter/fusion` runs a multi-model panel plus a judge model; OpenRouter bills the sum of the underlying model calls and any enabled web search/fetch usage, not a single fixed model rate.
643
- - For `z-ai/glm-5.2`, OpenRouter reasoning defaults to `none` and token limits are automatically disabled because reasoning tokens can otherwise exhaust the output budget before visible content is emitted.
663
+ - For `z-ai/glm-5.2`, OpenRouter reasoning also defaults to `none`.
664
+ - Specialized coding models are explicit options rather than defaults. This includes `kwaipilot/kat-coder-air-v2.5` and `kwaipilot/kat-coder-pro-v2.5`, which are text-only.
665
+ - `moonshotai/kimi-k3` availability depends on upstream capacity; OpenRouter may return 429 responses when capacity is constrained.
666
+ - `x-ai/grok-4.5` has region-specific availability, including a current EU limitation. `~x-ai/grok-latest` inherits those limits when it resolves to Grok 4.5.
644
667
  - Supported models (curated list):
645
- - `openrouter/auto`
668
+ - `openrouter/auto`, `openrouter/auto-beta`
646
669
  - `openrouter/fusion`
647
670
  - `openai/gpt-oss-20b:free`
648
- - `~openai/gpt-latest`, `~openai/gpt-mini-latest`, `openai/gpt-5.5-pro`, `openai/gpt-5.5`
671
+ - `~openai/gpt-latest`, `~openai/gpt-mini-latest`
672
+ - `openai/gpt-5.6-sol`, `openai/gpt-5.6-terra`, `openai/gpt-5.6-luna`
673
+ - `openai/gpt-5.5-pro`, `openai/gpt-5.5`
649
674
  - `openai/gpt-5.1-chat`, `openai/gpt-5.1-codex`, `openai/gpt-5-mini`, `openai/gpt-5-nano`
650
675
  - `openai/gpt-4o`, `openai/gpt-4.1-mini`, `openai/gpt-4.1-nano`
651
676
  - `~anthropic/claude-sonnet-latest`, `~anthropic/claude-haiku-latest`
677
+ - `anthropic/claude-opus-5`
652
678
  - `anthropic/claude-opus-4`, `anthropic/claude-sonnet-4`
653
679
  - `anthropic/claude-3.7-sonnet`, `anthropic/claude-3.5-sonnet`, `anthropic/claude-haiku-4.5`
654
680
  - `~google/gemini-pro-latest`, `~google/gemini-flash-latest`
681
+ - `google/gemini-3.6-flash`, `google/gemini-3.5-flash-lite`
655
682
  - `google/gemini-2.5-pro`, `google/gemini-2.5-flash`, `google/gemini-2.5-flash-lite-preview-09-2025`
656
683
  - `z-ai/glm-5.2`, `z-ai/glm-4.7-flash`, `z-ai/glm-4.5-air`, `z-ai/glm-4.5-air:free`
657
- - `~moonshotai/kimi-latest`, `moonshotai/kimi-k2.7-code`, `moonshotai/kimi-k2.5`
684
+ - `~x-ai/grok-latest`, `x-ai/grok-4.5`
685
+ - `~moonshotai/kimi-latest`, `moonshotai/kimi-k3`, `moonshotai/kimi-k2.7-code`, `moonshotai/kimi-k2.5`
686
+ - `kwaipilot/kat-coder-air-v2.5`, `kwaipilot/kat-coder-pro-v2.5`
658
687
 
659
688
  **Dynamic OpenRouter free model refresh**
660
689
 
@@ -726,7 +755,7 @@ const kimiService = ChatServiceFactory.createChatService('kimi', {
726
755
  // Optional: override endpoint or baseUrl
727
756
  // endpoint: 'https://api.moonshot.ai/v1/chat/completions',
728
757
  // baseUrl: 'https://api.moonshot.ai/v1',
729
- reasoning_effort: 'max'
758
+ reasoning_effort: 'low'
730
759
  });
731
760
  ```
732
761
 
@@ -734,7 +763,7 @@ Notes:
734
763
  - Kimi uses OpenAI-compatible Chat Completions.
735
764
  - Supported models: `kimi-k3`, `kimi-k2.7-code`, `kimi-k2.7-code-highspeed`, `kimi-k2.6`, `kimi-k2.5`
736
765
  - `kimi-k2.6` remains the default model for chat-oriented usage.
737
- - Kimi K3 is an explicit high-reasoning option. It currently supports only `reasoning_effort: 'max'` and does not accept the K2.x `thinking` option.
766
+ - Kimi K3 is an explicit reasoning model. It accepts `reasoning_effort: 'low' | 'high' | 'max'`, defaults to `max`, always reasons, and does not accept the K2.x `thinking` option. `none`, `minimal`, and `medium` are not supported.
738
767
  - Kimi K3 uses `max_completion_tokens` for configured response limits.
739
768
  - For Kimi K3 multi-turn and tool-call flows, append the returned `completion.assistant_message` to history so `reasoning_content` and `tool_calls` are preserved.
740
769
  - Kimi K2.7 Code models are coding-oriented and require thinking mode, so they keep `thinking` enabled even when tools are used.
@@ -819,7 +848,7 @@ Notes:
819
848
  - Supported models: `fugu` (default), `fugu-ultra`, and `fugu-ultra-20260615`.
820
849
  - Sakana recommends `max_completion_tokens` for new Chat Completions integrations, but also accepts legacy `max_tokens`. This provider keeps `max_tokens` to match existing OpenAI-compatible provider behavior.
821
850
  - Sakana recommends the Responses API for best performance, but this provider uses Chat Completions because it matches the package's OpenAI-compatible chat path.
822
- - Direct browser usage may fail with CORS unless Sakana enables CORS for your origin. Use Node.js, a backend/serverless proxy, or `examples/sakana-basic` instead of calling Sakana directly from browser-only apps.
851
+ - Direct browser usage may fail with CORS unless Sakana enables CORS for your origin. Use Node.js, a backend/serverless proxy, or `examples/node-basic/sakana-example.js` instead of calling Sakana directly from browser-only apps.
823
852
 
824
853
  #### PLaMo
825
854
 
@@ -844,12 +873,34 @@ Notes:
844
873
 
845
874
  ```typescript
846
875
  const geminiNanoService = ChatServiceFactory.createChatService('gemini-nano', {
847
- responseLength: 'medium'
876
+ responseLength: 'short',
877
+ initialPrompts: [
878
+ {
879
+ role: 'system',
880
+ content: 'You are a cheerful character who speaks naturally.'
881
+ },
882
+ { role: 'user', content: 'How are you feeling today?' },
883
+ { role: 'assistant', content: 'I feel great and ready to chat!' },
884
+ { role: 'user', content: 'Are you ready?' },
885
+ { role: 'assistant', content: 'Yes, we can start anytime!' }
886
+ ]
848
887
  });
849
888
  ```
850
889
 
851
890
  Notes:
852
891
  - No API key required — uses Chrome's built-in LanguageModel API (Prompt API).
892
+ - System instructions, configured examples, and the most recent conversation
893
+ history are passed through `initialPrompts` with their roles preserved.
894
+ - If configured `initialPrompts` contain a system message, it is normalized to
895
+ the first entry. Keep few-shot examples short because they consume the
896
+ on-device model's context window.
897
+ - Gemini Nano uses concrete sentence-count guidance in addition to the soft
898
+ token budget: `veryShort` up to 1 sentence, `short` up to 2, `medium` up to
899
+ 3, `long` up to 5, and `veryLong` up to 10. `deep` keeps its approximately
900
+ 5000-token guidance without a sentence-count limit. Output length is still
901
+ best effort.
902
+ - Up to the most recent 20 user/assistant messages are included as structured
903
+ history.
853
904
  - Requires **Chrome 138+** with the following flags enabled:
854
905
  - `chrome://flags/#optimization-guide-on-device-model` → Enabled
855
906
  - `chrome://flags/#prompt-api-for-gemini-nano` → Enabled
@@ -858,6 +909,54 @@ Notes:
858
909
  - Vision is not supported.
859
910
  - The initial model download requires a user action and may take a few minutes.
860
911
 
912
+ ##### Tip: improve response-length consistency with examples
913
+
914
+ Setting `responseLength` automatically adds Gemini Nano-specific sentence-count,
915
+ formatting, and soft token-budget instructions. You can reinforce those
916
+ instructions by also passing two or three short user/assistant examples through
917
+ `initialPrompts`:
918
+
919
+ ```typescript
920
+ import {
921
+ ChatServiceFactory,
922
+ type GeminiNanoInitialPrompt
923
+ } from '@aituber-onair/chat';
924
+
925
+ const veryShortExamples: GeminiNanoInitialPrompt[] = [
926
+ { role: 'user', content: 'How are you feeling today?' },
927
+ { role: 'assistant', content: 'I feel great and ready to chat!' },
928
+ { role: 'user', content: 'What food do you like?' },
929
+ { role: 'assistant', content: 'Salmon sushi is my favorite!' }
930
+ ];
931
+
932
+ const service = ChatServiceFactory.createChatService('gemini-nano', {
933
+ responseLength: 'veryShort',
934
+ initialPrompts: veryShortExamples
935
+ });
936
+ ```
937
+
938
+ The examples are optional; the package applies the length instruction even
939
+ when `initialPrompts` is omitted. Examples help the on-device model learn the
940
+ desired response size, speaking style, reaction level, and tempo more
941
+ consistently.
942
+
943
+ - Match every assistant example to the selected preset. For `veryShort`, use
944
+ one sentence; for `short`, use no more than two.
945
+ - Write examples in the target character's voice. Hardcoded generic examples
946
+ are not added by the package because they could change the character's
947
+ personality.
948
+ - Do not reuse one-sentence examples for `medium` or longer responses when you
949
+ want visibly longer answers; those examples can bias the model toward short
950
+ output.
951
+ - Keep the set small because examples share the on-device context window with
952
+ the system prompt and conversation history.
953
+ - Recreate the chat service when `responseLength` or `initialPrompts` changes.
954
+ The React basic example does this automatically and applies its short
955
+ examples only to `veryShort` and `short`.
956
+ - These controls improve consistency but do not provide a strict output limit.
957
+ Chrome's LanguageModel API currently has no max-output-token option, so
958
+ Gemini Nano may occasionally exceed the requested sentence count.
959
+
861
960
  ### Vision Chat
862
961
 
863
962
  For built-in providers with curated model lists, the library pre-validates
@@ -1168,11 +1267,11 @@ Currently, the following AI providers are built-in:
1168
1267
  - **OpenAI**: Supports models like GPT-5.6 (Sol/Terra/Luna), GPT-5.5, 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
1169
1268
  - **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.
1170
1269
  - **Gemini**: Supports recommended models like Gemini 3.6 Flash, Gemini 3.5 Flash, Gemini 3.5 Flash-Lite, Gemini 3.1 Flash-Lite, Gemini 3.1 Pro Preview, Gemini 3 Flash Preview, Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.5 Flash Lite, Gemma 4 31B IT, and Gemma 4 26B A4B IT. Gemini 3 Flash models default to minimal thinking for chat-style responses, while Gemini 3 Pro models default to low. Deprecated lifecycle models such as Gemini 3.1 Flash-Lite Preview, Gemini 3 Pro Preview, and Gemini 2.5 Flash Lite Preview remain exported for explicit use.
1171
- - **Claude**: Supports current Claude API model IDs including Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Haiku 4.5, plus deprecated-but-still-available Claude 4 Opus, Claude 4 Sonnet, and Claude 3 Haiku
1172
- - **OpenRouter**: Supports a curated OpenRouter model list (OpenAI/Claude/Gemini/Z.ai/Kimi). See the OpenRouter section for model IDs.
1270
+ - **Claude**: Supports current Claude API model IDs including Claude Opus 5, Claude Sonnet 5, Claude Opus 4.8, Claude Opus 4.7, Claude Opus 4.6, Claude Opus 4.5, Claude Sonnet 4.6, Claude Sonnet 4.5, Claude Haiku 4.5, plus deprecated-but-still-available Claude 4 Opus, Claude 4 Sonnet, and Claude 3 Haiku. Adjustable `reasoning_effort` is sent as `output_config.effort` only for models that support it
1271
+ - **OpenRouter**: Supports a curated OpenRouter model list (OpenAI/Claude/Gemini/Z.ai/xAI/Kimi/Kwaipilot). See the OpenRouter section for model IDs.
1173
1272
  - **Z.ai**: Supports GLM-5.2/GLM-5.1/GLM-5/GLM-5-Turbo (text), GLM-4.7/4.6 (text), and GLM-5V-Turbo/GLM-4.6V family (vision)
1174
1273
  - **xAI**: Supports Grok 4.5 with `reasoning_effort: 'low'` by default for chat-style responses, plus Grok 4.3, Grok 4.20 Reasoning/Non-Reasoning, and Grok 4-1 Fast Reasoning/Non-Reasoning, all with vision support.
1175
- - **Kimi**: Supports Kimi K3 (`kimi-k3`, max reasoning only), Kimi K2.7 Code (`kimi-k2.7-code`), Kimi K2.7 Code HighSpeed (`kimi-k2.7-code-highspeed`), Kimi K2.6 (`kimi-k2.6`, default), and Kimi K2.5 (`kimi-k2.5`) with vision support
1274
+ - **Kimi**: Supports Kimi K3 (`kimi-k3`, `low` / `high` / `max` reasoning with `max` as the default), Kimi K2.7 Code (`kimi-k2.7-code`), Kimi K2.7 Code HighSpeed (`kimi-k2.7-code-highspeed`), Kimi K2.6 (`kimi-k2.6`, default), and Kimi K2.5 (`kimi-k2.5`) with vision support
1176
1275
  - **DeepSeek**: Supports DeepSeek V4 Flash (`deepseek-v4-flash`) and DeepSeek V4 Pro (`deepseek-v4-pro`) via OpenAI-compatible Chat Completions. Legacy aliases `deepseek-chat` and `deepseek-reasoner` are deprecated by DeepSeek.
1177
1276
  - **Mistral**: Supports the Ministral 3 family (`ministral-3b-2512`, `ministral-8b-2512`, `ministral-14b-2512`) and current Mistral generalist models, with streaming and vision support. Adjustable `reasoning_effort` is only sent for supported models.
1178
1277
  - **Sakana AI**: Supports Fugu (`fugu`) and Fugu Ultra (`fugu-ultra`, `fugu-ultra-20260615`) via OpenAI-compatible Chat Completions.
@@ -13,5 +13,20 @@ export declare const MODEL_CLAUDE_4_6_OPUS = "claude-opus-4-6";
13
13
  export declare const MODEL_CLAUDE_4_7_OPUS = "claude-opus-4-7";
14
14
  export declare const MODEL_CLAUDE_4_8_OPUS = "claude-opus-4-8";
15
15
  export declare const MODEL_CLAUDE_5_SONNET = "claude-sonnet-5";
16
+ export declare const MODEL_CLAUDE_5_OPUS = "claude-opus-5";
17
+ export type ClaudeReasoningEffort = 'low' | 'medium' | 'high' | 'xhigh' | 'max';
16
18
  export declare const CLAUDE_VISION_SUPPORTED_MODELS: string[];
19
+ /**
20
+ * Return the effort values supported by a Claude model.
21
+ */
22
+ export declare function getClaudeSupportedReasoningEfforts(model: string): readonly ClaudeReasoningEffort[];
23
+ export declare function isClaudeReasoningEffortModel(model: string): boolean;
24
+ /**
25
+ * Claude API defaults to high effort when output_config.effort is omitted.
26
+ */
27
+ export declare function getDefaultClaudeReasoningEffort(model: string): ClaudeReasoningEffort | undefined;
28
+ /**
29
+ * Normalize UI state when switching between Claude models.
30
+ */
31
+ export declare function normalizeClaudeReasoningEffort(model: string, effort?: ClaudeReasoningEffort): ClaudeReasoningEffort | undefined;
17
32
  //# sourceMappingURL=claude.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,0CAA0C,CAAC;AAG3E,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAC3D,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AAEvD,eAAO,MAAM,8BAA8B,UAY1C,CAAC"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,0CAA0C,CAAC;AAG3E,eAAO,MAAM,oBAAoB,4BAA4B,CAAC;AAC9D,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAC5D,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,sBAAsB,8BAA8B,CAAC;AAClE,eAAO,MAAM,qBAAqB,6BAA6B,CAAC;AAChE,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAC3D,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAEnD,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAgChF,eAAO,MAAM,8BAA8B,UAa1C,CAAC;AAEF;;GAEG;AACH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,MAAM,GACZ,SAAS,qBAAqB,EAAE,CAElC;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,MAAM,GACZ,qBAAqB,GAAG,SAAS,CAEnC;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,qBAAqB,GAC7B,qBAAqB,GAAG,SAAS,CAenC"}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CLAUDE_VISION_SUPPORTED_MODELS = exports.MODEL_CLAUDE_5_SONNET = exports.MODEL_CLAUDE_4_8_OPUS = exports.MODEL_CLAUDE_4_7_OPUS = exports.MODEL_CLAUDE_4_6_OPUS = exports.MODEL_CLAUDE_4_6_SONNET = exports.MODEL_CLAUDE_4_5_OPUS = exports.MODEL_CLAUDE_4_5_HAIKU = exports.MODEL_CLAUDE_4_5_SONNET = exports.MODEL_CLAUDE_4_OPUS = exports.MODEL_CLAUDE_4_SONNET = exports.MODEL_CLAUDE_3_7_SONNET = exports.MODEL_CLAUDE_3_5_SONNET = exports.MODEL_CLAUDE_3_5_HAIKU = exports.MODEL_CLAUDE_3_HAIKU = exports.ENDPOINT_CLAUDE_API = void 0;
3
+ exports.CLAUDE_VISION_SUPPORTED_MODELS = exports.MODEL_CLAUDE_5_OPUS = exports.MODEL_CLAUDE_5_SONNET = exports.MODEL_CLAUDE_4_8_OPUS = exports.MODEL_CLAUDE_4_7_OPUS = exports.MODEL_CLAUDE_4_6_OPUS = exports.MODEL_CLAUDE_4_6_SONNET = exports.MODEL_CLAUDE_4_5_OPUS = exports.MODEL_CLAUDE_4_5_HAIKU = exports.MODEL_CLAUDE_4_5_SONNET = exports.MODEL_CLAUDE_4_OPUS = exports.MODEL_CLAUDE_4_SONNET = exports.MODEL_CLAUDE_3_7_SONNET = exports.MODEL_CLAUDE_3_5_SONNET = exports.MODEL_CLAUDE_3_5_HAIKU = exports.MODEL_CLAUDE_3_HAIKU = exports.ENDPOINT_CLAUDE_API = void 0;
4
+ exports.getClaudeSupportedReasoningEfforts = getClaudeSupportedReasoningEfforts;
5
+ exports.isClaudeReasoningEffortModel = isClaudeReasoningEffortModel;
6
+ exports.getDefaultClaudeReasoningEffort = getDefaultClaudeReasoningEffort;
7
+ exports.normalizeClaudeReasoningEffort = normalizeClaudeReasoningEffort;
4
8
  exports.ENDPOINT_CLAUDE_API = 'https://api.anthropic.com/v1/messages';
5
9
  // claude model
6
10
  exports.MODEL_CLAUDE_3_HAIKU = 'claude-3-haiku-20240307';
@@ -17,6 +21,30 @@ exports.MODEL_CLAUDE_4_6_OPUS = 'claude-opus-4-6';
17
21
  exports.MODEL_CLAUDE_4_7_OPUS = 'claude-opus-4-7';
18
22
  exports.MODEL_CLAUDE_4_8_OPUS = 'claude-opus-4-8';
19
23
  exports.MODEL_CLAUDE_5_SONNET = 'claude-sonnet-5';
24
+ exports.MODEL_CLAUDE_5_OPUS = 'claude-opus-5';
25
+ const CLAUDE_STANDARD_REASONING_EFFORTS = [
26
+ 'low',
27
+ 'medium',
28
+ 'high',
29
+ ];
30
+ const CLAUDE_MAX_REASONING_EFFORTS = [
31
+ ...CLAUDE_STANDARD_REASONING_EFFORTS,
32
+ 'max',
33
+ ];
34
+ const CLAUDE_XHIGH_REASONING_EFFORTS = [
35
+ ...CLAUDE_STANDARD_REASONING_EFFORTS,
36
+ 'xhigh',
37
+ 'max',
38
+ ];
39
+ const CLAUDE_REASONING_EFFORTS_BY_MODEL = {
40
+ [exports.MODEL_CLAUDE_4_5_OPUS]: CLAUDE_STANDARD_REASONING_EFFORTS,
41
+ [exports.MODEL_CLAUDE_4_6_SONNET]: CLAUDE_MAX_REASONING_EFFORTS,
42
+ [exports.MODEL_CLAUDE_4_6_OPUS]: CLAUDE_MAX_REASONING_EFFORTS,
43
+ [exports.MODEL_CLAUDE_4_7_OPUS]: CLAUDE_XHIGH_REASONING_EFFORTS,
44
+ [exports.MODEL_CLAUDE_4_8_OPUS]: CLAUDE_XHIGH_REASONING_EFFORTS,
45
+ [exports.MODEL_CLAUDE_5_SONNET]: CLAUDE_XHIGH_REASONING_EFFORTS,
46
+ [exports.MODEL_CLAUDE_5_OPUS]: CLAUDE_XHIGH_REASONING_EFFORTS,
47
+ };
20
48
  exports.CLAUDE_VISION_SUPPORTED_MODELS = [
21
49
  exports.MODEL_CLAUDE_3_HAIKU,
22
50
  exports.MODEL_CLAUDE_4_SONNET,
@@ -29,5 +57,37 @@ exports.CLAUDE_VISION_SUPPORTED_MODELS = [
29
57
  exports.MODEL_CLAUDE_4_7_OPUS,
30
58
  exports.MODEL_CLAUDE_4_8_OPUS,
31
59
  exports.MODEL_CLAUDE_5_SONNET,
60
+ exports.MODEL_CLAUDE_5_OPUS,
32
61
  ];
62
+ /**
63
+ * Return the effort values supported by a Claude model.
64
+ */
65
+ function getClaudeSupportedReasoningEfforts(model) {
66
+ return CLAUDE_REASONING_EFFORTS_BY_MODEL[model] ?? [];
67
+ }
68
+ function isClaudeReasoningEffortModel(model) {
69
+ return getClaudeSupportedReasoningEfforts(model).length > 0;
70
+ }
71
+ /**
72
+ * Claude API defaults to high effort when output_config.effort is omitted.
73
+ */
74
+ function getDefaultClaudeReasoningEffort(model) {
75
+ return isClaudeReasoningEffortModel(model) ? 'high' : undefined;
76
+ }
77
+ /**
78
+ * Normalize UI state when switching between Claude models.
79
+ */
80
+ function normalizeClaudeReasoningEffort(model, effort) {
81
+ const supported = getClaudeSupportedReasoningEfforts(model);
82
+ if (supported.length === 0) {
83
+ return undefined;
84
+ }
85
+ if (!effort) {
86
+ return getDefaultClaudeReasoningEffort(model);
87
+ }
88
+ if (supported.includes(effort)) {
89
+ return effort;
90
+ }
91
+ return 'high';
92
+ }
33
93
  //# sourceMappingURL=claude.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,uCAAuC,CAAC;AAE3E,eAAe;AACF,QAAA,oBAAoB,GAAG,yBAAyB,CAAC;AACjD,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AACrD,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,qBAAqB,GAAG,0BAA0B,CAAC;AACnD,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAC/C,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AACrD,QAAA,qBAAqB,GAAG,0BAA0B,CAAC;AACnD,QAAA,uBAAuB,GAAG,mBAAmB,CAAC;AAC9C,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAE1C,QAAA,8BAA8B,GAAG;IAC5C,4BAAoB;IACpB,6BAAqB;IACrB,2BAAmB;IACnB,+BAAuB;IACvB,8BAAsB;IACtB,6BAAqB;IACrB,+BAAuB;IACvB,6BAAqB;IACrB,6BAAqB;IACrB,6BAAqB;IACrB,6BAAqB;CACtB,CAAC"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/constants/claude.ts"],"names":[],"mappings":";;;AAqEA,gFAIC;AAED,oEAEC;AAKD,0EAIC;AAKD,wEAkBC;AA7GY,QAAA,mBAAmB,GAAG,uCAAuC,CAAC;AAE3E,eAAe;AACF,QAAA,oBAAoB,GAAG,yBAAyB,CAAC;AACjD,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AACrD,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,qBAAqB,GAAG,0BAA0B,CAAC;AACnD,QAAA,mBAAmB,GAAG,wBAAwB,CAAC;AAC/C,QAAA,uBAAuB,GAAG,4BAA4B,CAAC;AACvD,QAAA,sBAAsB,GAAG,2BAA2B,CAAC;AACrD,QAAA,qBAAqB,GAAG,0BAA0B,CAAC;AACnD,QAAA,uBAAuB,GAAG,mBAAmB,CAAC;AAC9C,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAC1C,QAAA,mBAAmB,GAAG,eAAe,CAAC;AAInD,MAAM,iCAAiC,GAAqC;IAC1E,KAAK;IACL,QAAQ;IACR,MAAM;CACP,CAAC;AAEF,MAAM,4BAA4B,GAAqC;IACrE,GAAG,iCAAiC;IACpC,KAAK;CACN,CAAC;AAEF,MAAM,8BAA8B,GAAqC;IACvE,GAAG,iCAAiC;IACpC,OAAO;IACP,KAAK;CACN,CAAC;AAEF,MAAM,iCAAiC,GAGnC;IACF,CAAC,6BAAqB,CAAC,EAAE,iCAAiC;IAC1D,CAAC,+BAAuB,CAAC,EAAE,4BAA4B;IACvD,CAAC,6BAAqB,CAAC,EAAE,4BAA4B;IACrD,CAAC,6BAAqB,CAAC,EAAE,8BAA8B;IACvD,CAAC,6BAAqB,CAAC,EAAE,8BAA8B;IACvD,CAAC,6BAAqB,CAAC,EAAE,8BAA8B;IACvD,CAAC,2BAAmB,CAAC,EAAE,8BAA8B;CACtD,CAAC;AAEW,QAAA,8BAA8B,GAAG;IAC5C,4BAAoB;IACpB,6BAAqB;IACrB,2BAAmB;IACnB,+BAAuB;IACvB,8BAAsB;IACtB,6BAAqB;IACrB,+BAAuB;IACvB,6BAAqB;IACrB,6BAAqB;IACrB,6BAAqB;IACrB,6BAAqB;IACrB,2BAAmB;CACpB,CAAC;AAEF;;GAEG;AACH,SAAgB,kCAAkC,CAChD,KAAa;IAEb,OAAO,iCAAiC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACxD,CAAC;AAED,SAAgB,4BAA4B,CAAC,KAAa;IACxD,OAAO,kCAAkC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,SAAgB,+BAA+B,CAC7C,KAAa;IAEb,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED;;GAEG;AACH,SAAgB,8BAA8B,CAC5C,KAAa,EACb,MAA8B;IAE9B,MAAM,SAAS,GAAG,kCAAkC,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,+BAA+B,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -4,7 +4,7 @@ export declare const MODEL_KIMI_K2_7_CODE = "kimi-k2.7-code";
4
4
  export declare const MODEL_KIMI_K2_7_CODE_HIGHSPEED = "kimi-k2.7-code-highspeed";
5
5
  export declare const MODEL_KIMI_K2_6 = "kimi-k2.6";
6
6
  export declare const MODEL_KIMI_K2_5 = "kimi-k2.5";
7
- export type KimiReasoningEffort = 'max';
7
+ export type KimiReasoningEffort = 'low' | 'high' | 'max';
8
8
  export declare const KIMI_VISION_SUPPORTED_MODELS: string[];
9
9
  export declare const KIMI_THINKING_REQUIRED_MODELS: string[];
10
10
  /**
@@ -19,6 +19,10 @@ export declare function isKimiThinkingRequiredModel(model: string): boolean;
19
19
  * Get officially supported reasoning effort values for a Kimi model.
20
20
  */
21
21
  export declare function getKimiSupportedReasoningEfforts(model: string): readonly KimiReasoningEffort[];
22
+ /**
23
+ * Get the official default reasoning effort for a Kimi model.
24
+ */
25
+ export declare function getDefaultKimiReasoningEffort(model: string): KimiReasoningEffort | undefined;
22
26
  /**
23
27
  * Check if a model uses reasoning_effort instead of the K2.x thinking field.
24
28
  */
@@ -1 +1 @@
1
- {"version":3,"file":"kimi.d.ts","sourceRoot":"","sources":["../../../src/constants/kimi.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,gDACA,CAAC;AAGhD,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,8BAA8B,6BAA6B,CAAC;AACzE,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,eAAe,cAAc,CAAC;AAE3C,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAUxC,eAAO,MAAM,4BAA4B,UAMxC,CAAC;AAGF,eAAO,MAAM,6BAA6B,UAGzC,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAElE;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,MAAM,GACZ,SAAS,mBAAmB,EAAE,CAEhC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjE"}
1
+ {"version":3,"file":"kimi.d.ts","sourceRoot":"","sources":["../../../src/constants/kimi.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kCAAkC,gDACA,CAAC;AAGhD,eAAO,MAAM,aAAa,YAAY,CAAC;AACvC,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,8BAA8B,6BAA6B,CAAC;AACzE,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,eAAe,cAAc,CAAC;AAE3C,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAUzD,eAAO,MAAM,4BAA4B,UAMxC,CAAC;AAGF,eAAO,MAAM,6BAA6B,UAGzC,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAElE;AAED;;GAEG;AACH,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,MAAM,GACZ,SAAS,mBAAmB,EAAE,CAEhC;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,MAAM,GACZ,mBAAmB,GAAG,SAAS,CAEjC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEjE"}
@@ -4,6 +4,7 @@ exports.KIMI_THINKING_REQUIRED_MODELS = exports.KIMI_VISION_SUPPORTED_MODELS = e
4
4
  exports.isKimiVisionModel = isKimiVisionModel;
5
5
  exports.isKimiThinkingRequiredModel = isKimiThinkingRequiredModel;
6
6
  exports.getKimiSupportedReasoningEfforts = getKimiSupportedReasoningEfforts;
7
+ exports.getDefaultKimiReasoningEffort = getDefaultKimiReasoningEffort;
7
8
  exports.isKimiReasoningEffortModel = isKimiReasoningEffortModel;
8
9
  exports.ENDPOINT_KIMI_CHAT_COMPLETIONS_API = 'https://api.moonshot.ai/v1/chat/completions';
9
10
  // Kimi models
@@ -13,7 +14,7 @@ exports.MODEL_KIMI_K2_7_CODE_HIGHSPEED = 'kimi-k2.7-code-highspeed';
13
14
  exports.MODEL_KIMI_K2_6 = 'kimi-k2.6';
14
15
  exports.MODEL_KIMI_K2_5 = 'kimi-k2.5';
15
16
  const KIMI_REASONING_EFFORTS_BY_MODEL = {
16
- [exports.MODEL_KIMI_K3]: ['max'],
17
+ [exports.MODEL_KIMI_K3]: ['low', 'high', 'max'],
17
18
  };
18
19
  // Vision support for models
19
20
  exports.KIMI_VISION_SUPPORTED_MODELS = [
@@ -46,6 +47,12 @@ function isKimiThinkingRequiredModel(model) {
46
47
  function getKimiSupportedReasoningEfforts(model) {
47
48
  return KIMI_REASONING_EFFORTS_BY_MODEL[model] ?? [];
48
49
  }
50
+ /**
51
+ * Get the official default reasoning effort for a Kimi model.
52
+ */
53
+ function getDefaultKimiReasoningEffort(model) {
54
+ return model === exports.MODEL_KIMI_K3 ? 'max' : undefined;
55
+ }
49
56
  /**
50
57
  * Check if a model uses reasoning_effort instead of the K2.x thinking field.
51
58
  */
@@ -1 +1 @@
1
- {"version":3,"file":"kimi.js","sourceRoot":"","sources":["../../../src/constants/kimi.ts"],"names":[],"mappings":";;;AAqCA,8CAEC;AAKD,kEAEC;AAKD,4EAIC;AAKD,gEAEC;AA9DY,QAAA,kCAAkC,GAC7C,6CAA6C,CAAC;AAEhD,cAAc;AACD,QAAA,aAAa,GAAG,SAAS,CAAC;AAC1B,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AACxC,QAAA,8BAA8B,GAAG,0BAA0B,CAAC;AAC5D,QAAA,eAAe,GAAG,WAAW,CAAC;AAC9B,QAAA,eAAe,GAAG,WAAW,CAAC;AAI3C,MAAM,+BAA+B,GAGjC;IACF,CAAC,qBAAa,CAAC,EAAE,CAAC,KAAK,CAAC;CACzB,CAAC;AAEF,4BAA4B;AACf,QAAA,4BAA4B,GAAG;IAC1C,qBAAa;IACb,4BAAoB;IACpB,sCAA8B;IAC9B,uBAAe;IACf,uBAAe;CAChB,CAAC;AAEF,8CAA8C;AACjC,QAAA,6BAA6B,GAAG;IAC3C,4BAAoB;IACpB,sCAA8B;CAC/B,CAAC;AAEF;;GAEG;AACH,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,OAAO,oCAA4B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAgB,2BAA2B,CAAC,KAAa;IACvD,OAAO,qCAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,SAAgB,gCAAgC,CAC9C,KAAa;IAEb,OAAO,+BAA+B,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAgB,0BAA0B,CAAC,KAAa;IACtD,OAAO,gCAAgC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"kimi.js","sourceRoot":"","sources":["../../../src/constants/kimi.ts"],"names":[],"mappings":";;;AAqCA,8CAEC;AAKD,kEAEC;AAKD,4EAIC;AAKD,sEAIC;AAKD,gEAEC;AAvEY,QAAA,kCAAkC,GAC7C,6CAA6C,CAAC;AAEhD,cAAc;AACD,QAAA,aAAa,GAAG,SAAS,CAAC;AAC1B,QAAA,oBAAoB,GAAG,gBAAgB,CAAC;AACxC,QAAA,8BAA8B,GAAG,0BAA0B,CAAC;AAC5D,QAAA,eAAe,GAAG,WAAW,CAAC;AAC9B,QAAA,eAAe,GAAG,WAAW,CAAC;AAI3C,MAAM,+BAA+B,GAGjC;IACF,CAAC,qBAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;CACxC,CAAC;AAEF,4BAA4B;AACf,QAAA,4BAA4B,GAAG;IAC1C,qBAAa;IACb,4BAAoB;IACpB,sCAA8B;IAC9B,uBAAe;IACf,uBAAe;CAChB,CAAC;AAEF,8CAA8C;AACjC,QAAA,6BAA6B,GAAG;IAC3C,4BAAoB;IACpB,sCAA8B;CAC/B,CAAC;AAEF;;GAEG;AACH,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,OAAO,oCAA4B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAgB,2BAA2B,CAAC,KAAa;IACvD,OAAO,qCAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,SAAgB,gCAAgC,CAC9C,KAAa;IAEb,OAAO,+BAA+B,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,SAAgB,6BAA6B,CAC3C,KAAa;IAEb,OAAO,KAAK,KAAK,qBAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,SAAgB,0BAA0B,CAAC,KAAa;IACtD,OAAO,gCAAgC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5D,CAAC"}