@aituber-onair/chat 0.21.2 → 0.22.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 (79) hide show
  1. package/README.ja.md +45 -1
  2. package/README.md +46 -1
  3. package/dist/cjs/index.d.ts +1 -1
  4. package/dist/cjs/index.d.ts.map +1 -1
  5. package/dist/cjs/index.js.map +1 -1
  6. package/dist/cjs/services/ChatServiceFactory.d.ts +9 -1
  7. package/dist/cjs/services/ChatServiceFactory.d.ts.map +1 -1
  8. package/dist/cjs/services/ChatServiceFactory.js +25 -0
  9. package/dist/cjs/services/ChatServiceFactory.js.map +1 -1
  10. package/dist/cjs/services/providers/ChatServiceProvider.d.ts +18 -1
  11. package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -1
  12. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts +3 -1
  13. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  14. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js +7 -1
  15. package/dist/cjs/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  16. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts +3 -1
  17. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -1
  18. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js +7 -1
  19. package/dist/cjs/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -1
  20. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.d.ts +3 -1
  21. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -1
  22. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js +7 -1
  23. package/dist/cjs/services/providers/kimi/KimiChatServiceProvider.js.map +1 -1
  24. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts +3 -1
  25. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
  26. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js +7 -1
  27. package/dist/cjs/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
  28. package/dist/cjs/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.d.ts +4 -1
  29. package/dist/cjs/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.d.ts.map +1 -1
  30. package/dist/cjs/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.js +10 -1
  31. package/dist/cjs/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.js.map +1 -1
  32. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts +3 -1
  33. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  34. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js +9 -1
  35. package/dist/cjs/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  36. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts +3 -1
  37. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
  38. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js +7 -1
  39. package/dist/cjs/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
  40. package/dist/esm/index.d.ts +1 -1
  41. package/dist/esm/index.d.ts.map +1 -1
  42. package/dist/esm/index.js.map +1 -1
  43. package/dist/esm/services/ChatServiceFactory.d.ts +9 -1
  44. package/dist/esm/services/ChatServiceFactory.d.ts.map +1 -1
  45. package/dist/esm/services/ChatServiceFactory.js +25 -0
  46. package/dist/esm/services/ChatServiceFactory.js.map +1 -1
  47. package/dist/esm/services/providers/ChatServiceProvider.d.ts +18 -1
  48. package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -1
  49. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts +3 -1
  50. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.d.ts.map +1 -1
  51. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js +7 -1
  52. package/dist/esm/services/providers/claude/ClaudeChatServiceProvider.js.map +1 -1
  53. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts +3 -1
  54. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.d.ts.map +1 -1
  55. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js +7 -1
  56. package/dist/esm/services/providers/gemini/GeminiChatServiceProvider.js.map +1 -1
  57. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.d.ts +3 -1
  58. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.d.ts.map +1 -1
  59. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js +7 -1
  60. package/dist/esm/services/providers/kimi/KimiChatServiceProvider.js.map +1 -1
  61. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts +3 -1
  62. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.d.ts.map +1 -1
  63. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js +7 -1
  64. package/dist/esm/services/providers/openai/OpenAIChatServiceProvider.js.map +1 -1
  65. package/dist/esm/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.d.ts +4 -1
  66. package/dist/esm/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.d.ts.map +1 -1
  67. package/dist/esm/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.js +10 -1
  68. package/dist/esm/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.js.map +1 -1
  69. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts +3 -1
  70. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.d.ts.map +1 -1
  71. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js +9 -1
  72. package/dist/esm/services/providers/openrouter/OpenRouterChatServiceProvider.js.map +1 -1
  73. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts +3 -1
  74. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.d.ts.map +1 -1
  75. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js +7 -1
  76. package/dist/esm/services/providers/zai/ZAIChatServiceProvider.js.map +1 -1
  77. package/dist/umd/aituber-onair-chat.js +75 -7
  78. package/dist/umd/aituber-onair-chat.min.js +6 -6
  79. package/package.json +1 -1
@@ -21,7 +21,16 @@ export class OpenAICompatibleChatServiceProvider {
21
21
  return [];
22
22
  }
23
23
  supportsVision() {
24
- return false;
24
+ return this.getVisionSupportLevel() !== 'unsupported';
25
+ }
26
+ getVisionSupportLevel() {
27
+ return 'unknown';
28
+ }
29
+ supportsVisionForModel(_model) {
30
+ return true;
31
+ }
32
+ getVisionSupportLevelForModel(_model) {
33
+ return 'unknown';
25
34
  }
26
35
  getDefaultModel() {
27
36
  return 'local-model';
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAICompatibleChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,OAAO,mCAAmC;IAG9C,iBAAiB,CAAC,OAA2C;QAC3D,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,IAAI,iBAAiB,CAC1B,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAC5B,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EACpC,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,QAAQ,EAChB,EAAE,EACF,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,sBAAsB,EAC9B,IAAI,CAAC,eAAe,EAAE,EACtB,KAAK,CACN,CAAC;IACJ,CAAC;IAED,eAAe;QACb,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,cAAc;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,eAAe;QACb,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,uBAAuB,CAC7B,OAA2C;QAE3C,IAAK,OAAoC,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;QACJ,CAAC;QAED,IAAI,WAAgB,CAAC;QACrB,IAAI,CAAC;YACH,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,CAAC,QAAQ,KAAK,OAAO,IAAI,WAAW,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"OpenAICompatibleChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/openaiCompatible/OpenAICompatibleChatServiceProvider.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,OAAO,mCAAmC;IAG9C,iBAAiB,CAAC,OAA2C;QAC3D,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,IAAI,iBAAiB,CAC1B,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAC5B,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,EACpC,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,QAAQ,EAChB,EAAE,EACF,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,gBAAgB,EACxB,OAAO,CAAC,sBAAsB,EAC9B,IAAI,CAAC,eAAe,EAAE,EACtB,KAAK,CACN,CAAC;IACJ,CAAC;IAED,eAAe;QACb,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,qBAAqB,EAAE,KAAK,aAAa,CAAC;IACxD,CAAC;IAED,qBAAqB;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,sBAAsB,CAAC,MAAc;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6BAA6B,CAAC,MAAc;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,eAAe;QACb,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,uBAAuB,CAC7B,OAA2C;QAE3C,IAAK,OAAoC,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACnE,MAAM,IAAI,KAAK,CACb,yDAAyD,CAC1D,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D,CAAC;QACJ,CAAC;QAED,IAAI,WAAgB,CAAC;QACrB,IAAI,CAAC;YACH,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;QACJ,CAAC;QAED,IAAI,WAAW,CAAC,QAAQ,KAAK,OAAO,IAAI,WAAW,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CACb,gEAAgE,CACjE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import { ChatService } from '../../ChatService';
2
- import { OpenRouterChatServiceOptions, ChatServiceProvider } from '../ChatServiceProvider';
2
+ import { OpenRouterChatServiceOptions, ChatServiceProvider, VisionSupportLevel } from '../ChatServiceProvider';
3
3
  /**
4
4
  * OpenRouter API provider implementation
5
5
  * Provides access to multiple AI models through OpenRouter's unified API
@@ -32,12 +32,14 @@ export declare class OpenRouterChatServiceProvider implements ChatServiceProvide
32
32
  * @returns Vision support status (false - gpt-oss-20b does not support vision)
33
33
  */
34
34
  supportsVision(): boolean;
35
+ getVisionSupportLevel(): VisionSupportLevel;
35
36
  /**
36
37
  * Check if a specific model supports vision capabilities
37
38
  * @param model The model name to check
38
39
  * @returns True if the model supports vision, false otherwise
39
40
  */
40
41
  supportsVisionForModel(model: string): boolean;
42
+ getVisionSupportLevelForModel(model: string): VisionSupportLevel;
41
43
  /**
42
44
  * Get list of free tier models
43
45
  * @returns Array of free model names
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/openrouter/OpenRouterChatServiceProvider.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAIhC;;;GAGG;AACH,qBAAa,6BACX,YAAW,mBAAmB,CAAC,4BAA4B,CAAC;IAE5D;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,4BAA4B,GAAG,WAAW;IAmCrE;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;OAIG;IACH,kBAAkB,IAAI,MAAM,EAAE;IA+B9B;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,cAAc,IAAI,OAAO;IAMzB;;;;OAIG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI9C;;;OAGG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGpC"}
1
+ {"version":3,"file":"OpenRouterChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/openrouter/OpenRouterChatServiceProvider.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,4BAA4B,EAC5B,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAIhC;;;GAGG;AACH,qBAAa,6BACX,YAAW,mBAAmB,CAAC,4BAA4B,CAAC;IAE5D;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,4BAA4B,GAAG,WAAW;IAmCrE;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;;OAIG;IACH,kBAAkB,IAAI,MAAM,EAAE;IA+B9B;;;OAGG;IACH,eAAe,IAAI,MAAM;IAIzB;;;OAGG;IACH,cAAc,IAAI,OAAO;IAIzB,qBAAqB,IAAI,kBAAkB;IAQ3C;;;;OAIG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI9C,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB;IAIhE;;;OAGG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;;;OAIG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGpC"}
@@ -83,7 +83,12 @@ export class OpenRouterChatServiceProvider {
83
83
  * @returns Vision support status (false - gpt-oss-20b does not support vision)
84
84
  */
85
85
  supportsVision() {
86
- return this.getSupportedModels().some((model) => this.supportsVisionForModel(model));
86
+ return this.getVisionSupportLevel() !== 'unsupported';
87
+ }
88
+ getVisionSupportLevel() {
89
+ return this.getSupportedModels().some((model) => this.supportsVisionForModel(model))
90
+ ? 'supported'
91
+ : 'unsupported';
87
92
  }
88
93
  /**
89
94
  * Check if a specific model supports vision capabilities
@@ -93,6 +98,9 @@ export class OpenRouterChatServiceProvider {
93
98
  supportsVisionForModel(model) {
94
99
  return isOpenRouterVisionModel(model);
95
100
  }
101
+ getVisionSupportLevelForModel(model) {
102
+ return this.supportsVisionForModel(model) ? 'supported' : 'unsupported';
103
+ }
96
104
  /**
97
105
  * Get list of free tier models
98
106
  * @returns Array of free model names
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/openrouter/OpenRouterChatServiceProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenRouterChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/openrouter/OpenRouterChatServiceProvider.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ChatService } from '../../ChatService';
2
- import { ZAIChatServiceOptions, ChatServiceProvider } from '../ChatServiceProvider';
2
+ import { ZAIChatServiceOptions, ChatServiceProvider, VisionSupportLevel } from '../ChatServiceProvider';
3
3
  /**
4
4
  * Z.ai API provider implementation
5
5
  */
@@ -28,9 +28,11 @@ export declare class ZAIChatServiceProvider implements ChatServiceProvider<ZAICh
28
28
  * Check if this provider supports vision
29
29
  */
30
30
  supportsVision(): boolean;
31
+ getVisionSupportLevel(): VisionSupportLevel;
31
32
  /**
32
33
  * Check if a specific model supports vision capabilities
33
34
  */
34
35
  supportsVisionForModel(model: string): boolean;
36
+ getVisionSupportLevelForModel(model: string): VisionSupportLevel;
35
37
  }
36
38
  //# sourceMappingURL=ZAIChatServiceProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ZAIChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatServiceProvider.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAIhC;;GAEG;AACH,qBAAa,sBACX,YAAW,mBAAmB,CAAC,qBAAqB,CAAC;IAErD;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW;IA2B9D;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAc9B;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAG/C"}
1
+ {"version":3,"file":"ZAIChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatServiceProvider.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAIhC;;GAEG;AACH,qBAAa,sBACX,YAAW,mBAAmB,CAAC,qBAAqB,CAAC;IAErD;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,qBAAqB,GAAG,WAAW;IA2B9D;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAc9B;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAI7B;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB,qBAAqB,IAAI,kBAAkB;IAI3C;;OAEG;IACH,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI9C,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB;CAGjE"}
@@ -60,7 +60,10 @@ export class ZAIChatServiceProvider {
60
60
  * Check if this provider supports vision
61
61
  */
62
62
  supportsVision() {
63
- return true;
63
+ return this.getVisionSupportLevel() !== 'unsupported';
64
+ }
65
+ getVisionSupportLevel() {
66
+ return 'supported';
64
67
  }
65
68
  /**
66
69
  * Check if a specific model supports vision capabilities
@@ -68,5 +71,8 @@ export class ZAIChatServiceProvider {
68
71
  supportsVisionForModel(model) {
69
72
  return isZaiVisionModel(model);
70
73
  }
74
+ getVisionSupportLevelForModel(model) {
75
+ return this.supportsVisionForModel(model) ? 'supported' : 'unsupported';
76
+ }
71
77
  }
72
78
  //# sourceMappingURL=ZAIChatServiceProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ZAIChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAGjC;;OAEG;IACH,iBAAiB,CAAC,OAA8B;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,kBAAkB,CAAC;YACrC,KAAK;YACL,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;YACpC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,EAAE;YAChD,sBAAsB,EAAE,CAAC,WAAW,EAAE,EAAE,CACtC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;YAC1C,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAiC,OAAO,CAAC,KAAK,CAAC;QAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,UAAmB,EAAE,CAAC;QAEnE,OAAO,IAAI,cAAc,CACvB,OAAO,CAAC,MAAM,EACd,KAAK,EACL,WAAW,EACX,KAAK,EACL,OAAO,CAAC,QAAQ,IAAI,iCAAiC,EACrD,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,cAAc,EACtB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO;YACL,WAAW;YACX,iBAAiB;YACjB,aAAa;YACb,oBAAoB;YACpB,mBAAmB;YACnB,aAAa;YACb,cAAc;YACd,qBAAqB;YACrB,oBAAoB;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,qBAAqB;QAC3B,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,KAAa;QAClC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"ZAIChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/zai/ZAIChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAOlD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAGjC;;OAEG;IACH,iBAAiB,CAAC,OAA8B;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACtD,MAAM,WAAW,GAAG,kBAAkB,CAAC;YACrC,KAAK;YACL,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,IAAI,CAAC,eAAe,EAAE;YACpC,kBAAkB,EAAE,IAAI,CAAC,qBAAqB,EAAE;YAChD,sBAAsB,EAAE,CAAC,WAAW,EAAE,EAAE,CACtC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;YAC1C,QAAQ,EAAE,UAAU;SACrB,CAAC,CAAC;QAEH,MAAM,KAAK,GAAiC,OAAO,CAAC,KAAK,CAAC;QAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,IAAI,EAAE,UAAmB,EAAE,CAAC;QAEnE,OAAO,IAAI,cAAc,CACvB,OAAO,CAAC,MAAM,EACd,KAAK,EACL,WAAW,EACX,KAAK,EACL,OAAO,CAAC,QAAQ,IAAI,iCAAiC,EACrD,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,cAAc,EACtB,QAAQ,CACT,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO;YACL,WAAW;YACX,iBAAiB;YACjB,aAAa;YACb,oBAAoB;YACpB,mBAAmB;YACnB,aAAa;YACb,cAAc;YACd,qBAAqB;YACrB,oBAAoB;SACrB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,aAAa,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,qBAAqB;QAC3B,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,qBAAqB,EAAE,KAAK,aAAa,CAAC;IACxD,CAAC;IAED,qBAAqB;QACnB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,sBAAsB,CAAC,KAAa;QAClC,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,6BAA6B,CAAC,KAAa;QACzC,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;IAC1E,CAAC;CACF"}
@@ -1567,7 +1567,10 @@ If it's in another language, summarize in that language.
1567
1567
  * @returns Vision support status (true)
1568
1568
  */
1569
1569
  supportsVision() {
1570
- return true;
1570
+ return this.getVisionSupportLevel() !== "unsupported";
1571
+ }
1572
+ getVisionSupportLevel() {
1573
+ return "supported";
1571
1574
  }
1572
1575
  /**
1573
1576
  * Check if a specific model supports vision capabilities
@@ -1577,6 +1580,9 @@ If it's in another language, summarize in that language.
1577
1580
  supportsVisionForModel(model) {
1578
1581
  return CLAUDE_VISION_SUPPORTED_MODELS.includes(model);
1579
1582
  }
1583
+ getVisionSupportLevelForModel(model) {
1584
+ return this.supportsVisionForModel(model) ? "supported" : "unsupported";
1585
+ }
1580
1586
  };
1581
1587
 
1582
1588
  // src/utils/mcpSchemaFetcher.ts
@@ -2323,7 +2329,10 @@ If it's in another language, summarize in that language.
2323
2329
  * @returns Vision support status (true)
2324
2330
  */
2325
2331
  supportsVision() {
2326
- return true;
2332
+ return this.getVisionSupportLevel() !== "unsupported";
2333
+ }
2334
+ getVisionSupportLevel() {
2335
+ return "supported";
2327
2336
  }
2328
2337
  /**
2329
2338
  * Check if a specific model supports vision capabilities
@@ -2333,6 +2342,9 @@ If it's in another language, summarize in that language.
2333
2342
  supportsVisionForModel(model) {
2334
2343
  return GEMINI_VISION_SUPPORTED_MODELS.includes(model);
2335
2344
  }
2345
+ getVisionSupportLevelForModel(model) {
2346
+ return this.supportsVisionForModel(model) ? "supported" : "unsupported";
2347
+ }
2336
2348
  };
2337
2349
 
2338
2350
  // src/services/providers/kimi/KimiChatService.ts
@@ -2559,7 +2571,10 @@ If it's in another language, summarize in that language.
2559
2571
  * Check if this provider supports vision
2560
2572
  */
2561
2573
  supportsVision() {
2562
- return true;
2574
+ return this.getVisionSupportLevel() !== "unsupported";
2575
+ }
2576
+ getVisionSupportLevel() {
2577
+ return "supported";
2563
2578
  }
2564
2579
  /**
2565
2580
  * Check if a specific model supports vision capabilities
@@ -2567,6 +2582,9 @@ If it's in another language, summarize in that language.
2567
2582
  supportsVisionForModel(model) {
2568
2583
  return isKimiVisionModel(model);
2569
2584
  }
2585
+ getVisionSupportLevelForModel(model) {
2586
+ return this.supportsVisionForModel(model) ? "supported" : "unsupported";
2587
+ }
2570
2588
  resolveEndpoint(options) {
2571
2589
  if (options.endpoint) {
2572
2590
  return this.normalizeEndpoint(options.endpoint);
@@ -3152,7 +3170,16 @@ If it's in another language, summarize in that language.
3152
3170
  return [];
3153
3171
  }
3154
3172
  supportsVision() {
3155
- return false;
3173
+ return this.getVisionSupportLevel() !== "unsupported";
3174
+ }
3175
+ getVisionSupportLevel() {
3176
+ return "unknown";
3177
+ }
3178
+ supportsVisionForModel(_model) {
3179
+ return true;
3180
+ }
3181
+ getVisionSupportLevelForModel(_model) {
3182
+ return "unknown";
3156
3183
  }
3157
3184
  getDefaultModel() {
3158
3185
  return "local-model";
@@ -3275,7 +3302,10 @@ If it's in another language, summarize in that language.
3275
3302
  * @returns Vision support status (true)
3276
3303
  */
3277
3304
  supportsVision() {
3278
- return true;
3305
+ return this.getVisionSupportLevel() !== "unsupported";
3306
+ }
3307
+ getVisionSupportLevel() {
3308
+ return "supported";
3279
3309
  }
3280
3310
  /**
3281
3311
  * Check if a specific model supports vision capabilities
@@ -3285,6 +3315,9 @@ If it's in another language, summarize in that language.
3285
3315
  supportsVisionForModel(model) {
3286
3316
  return VISION_SUPPORTED_MODELS.includes(model);
3287
3317
  }
3318
+ getVisionSupportLevelForModel(model) {
3319
+ return this.supportsVisionForModel(model) ? "supported" : "unsupported";
3320
+ }
3288
3321
  /**
3289
3322
  * Apply GPT-5 specific optimizations to options
3290
3323
  * @param options Original chat service options
@@ -3666,9 +3699,12 @@ If it's in another language, summarize in that language.
3666
3699
  * @returns Vision support status (false - gpt-oss-20b does not support vision)
3667
3700
  */
3668
3701
  supportsVision() {
3702
+ return this.getVisionSupportLevel() !== "unsupported";
3703
+ }
3704
+ getVisionSupportLevel() {
3669
3705
  return this.getSupportedModels().some(
3670
3706
  (model) => this.supportsVisionForModel(model)
3671
- );
3707
+ ) ? "supported" : "unsupported";
3672
3708
  }
3673
3709
  /**
3674
3710
  * Check if a specific model supports vision capabilities
@@ -3678,6 +3714,9 @@ If it's in another language, summarize in that language.
3678
3714
  supportsVisionForModel(model) {
3679
3715
  return isOpenRouterVisionModel(model);
3680
3716
  }
3717
+ getVisionSupportLevelForModel(model) {
3718
+ return this.supportsVisionForModel(model) ? "supported" : "unsupported";
3719
+ }
3681
3720
  /**
3682
3721
  * Get list of free tier models
3683
3722
  * @returns Array of free model names
@@ -3917,7 +3956,10 @@ If it's in another language, summarize in that language.
3917
3956
  * Check if this provider supports vision
3918
3957
  */
3919
3958
  supportsVision() {
3920
- return true;
3959
+ return this.getVisionSupportLevel() !== "unsupported";
3960
+ }
3961
+ getVisionSupportLevel() {
3962
+ return "supported";
3921
3963
  }
3922
3964
  /**
3923
3965
  * Check if a specific model supports vision capabilities
@@ -3925,6 +3967,9 @@ If it's in another language, summarize in that language.
3925
3967
  supportsVisionForModel(model) {
3926
3968
  return isZaiVisionModel(model);
3927
3969
  }
3970
+ getVisionSupportLevelForModel(model) {
3971
+ return this.supportsVisionForModel(model) ? "supported" : "unsupported";
3972
+ }
3928
3973
  };
3929
3974
 
3930
3975
  // src/services/providers/index.ts
@@ -3977,6 +4022,29 @@ If it's in another language, summarize in that language.
3977
4022
  const provider = this.providers.get(providerName);
3978
4023
  return provider ? provider.getSupportedModels() : [];
3979
4024
  }
4025
+ /**
4026
+ * Get provider-level vision support status.
4027
+ */
4028
+ static getVisionSupportLevel(providerName) {
4029
+ const provider = this.providers.get(providerName);
4030
+ return provider ? provider.getVisionSupportLevel() : "unsupported";
4031
+ }
4032
+ /**
4033
+ * Get model-level vision support status.
4034
+ */
4035
+ static getVisionSupportLevelForModel(providerName, model) {
4036
+ const provider = this.providers.get(providerName);
4037
+ if (!provider) {
4038
+ return "unsupported";
4039
+ }
4040
+ if (provider.getVisionSupportLevelForModel) {
4041
+ return provider.getVisionSupportLevelForModel(model);
4042
+ }
4043
+ if (provider.supportsVisionForModel) {
4044
+ return provider.supportsVisionForModel(model) ? "supported" : "unsupported";
4045
+ }
4046
+ return provider.getVisionSupportLevel();
4047
+ }
3980
4048
  };
3981
4049
  /** Map of registered providers */
3982
4050
  ChatServiceFactory.providers = /* @__PURE__ */ new Map();