@aituber-onair/chat 0.40.0 → 0.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +37 -2
- package/README.md +39 -2
- package/dist/cjs/constants/index.d.ts +2 -0
- package/dist/cjs/constants/index.d.ts.map +1 -1
- package/dist/cjs/constants/index.js +2 -0
- package/dist/cjs/constants/index.js.map +1 -1
- package/dist/cjs/constants/plamo.d.ts +7 -0
- package/dist/cjs/constants/plamo.d.ts.map +1 -0
- package/dist/cjs/constants/plamo.js +12 -0
- package/dist/cjs/constants/plamo.js.map +1 -0
- package/dist/cjs/constants/sakana.d.ts +7 -0
- package/dist/cjs/constants/sakana.d.ts.map +1 -0
- package/dist/cjs/constants/sakana.js +14 -0
- package/dist/cjs/constants/sakana.js.map +1 -0
- package/dist/cjs/index.d.ts +5 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +11 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts +9 -1
- package/dist/cjs/services/providers/ChatServiceProvider.d.ts.map +1 -1
- package/dist/cjs/services/providers/index.d.ts +3 -1
- package/dist/cjs/services/providers/index.d.ts.map +1 -1
- package/dist/cjs/services/providers/index.js +4 -0
- package/dist/cjs/services/providers/index.js.map +1 -1
- package/dist/cjs/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
- package/dist/cjs/services/providers/openai/openaiRequestBuilder.js +8 -0
- package/dist/cjs/services/providers/openai/openaiRequestBuilder.js.map +1 -1
- package/dist/cjs/services/providers/plamo/PlamoChatService.d.ts +8 -0
- package/dist/cjs/services/providers/plamo/PlamoChatService.d.ts.map +1 -0
- package/dist/cjs/services/providers/plamo/PlamoChatService.js +12 -0
- package/dist/cjs/services/providers/plamo/PlamoChatService.js.map +1 -0
- package/dist/cjs/services/providers/plamo/PlamoChatServiceProvider.d.ts +16 -0
- package/dist/cjs/services/providers/plamo/PlamoChatServiceProvider.d.ts.map +1 -0
- package/dist/cjs/services/providers/plamo/PlamoChatServiceProvider.js +57 -0
- package/dist/cjs/services/providers/plamo/PlamoChatServiceProvider.js.map +1 -0
- package/dist/cjs/services/providers/sakana/SakanaChatService.d.ts +7 -0
- package/dist/cjs/services/providers/sakana/SakanaChatService.d.ts.map +1 -0
- package/dist/cjs/services/providers/sakana/SakanaChatService.js +12 -0
- package/dist/cjs/services/providers/sakana/SakanaChatService.js.map +1 -0
- package/dist/cjs/services/providers/sakana/SakanaChatServiceProvider.d.ts +16 -0
- package/dist/cjs/services/providers/sakana/SakanaChatServiceProvider.d.ts.map +1 -0
- package/dist/cjs/services/providers/sakana/SakanaChatServiceProvider.js +57 -0
- package/dist/cjs/services/providers/sakana/SakanaChatServiceProvider.js.map +1 -0
- package/dist/esm/constants/index.d.ts +2 -0
- package/dist/esm/constants/index.d.ts.map +1 -1
- package/dist/esm/constants/index.js +2 -0
- package/dist/esm/constants/index.js.map +1 -1
- package/dist/esm/constants/plamo.d.ts +7 -0
- package/dist/esm/constants/plamo.d.ts.map +1 -0
- package/dist/esm/constants/plamo.js +9 -0
- package/dist/esm/constants/plamo.js.map +1 -0
- package/dist/esm/constants/sakana.d.ts +7 -0
- package/dist/esm/constants/sakana.d.ts.map +1 -0
- package/dist/esm/constants/sakana.js +11 -0
- package/dist/esm/constants/sakana.js.map +1 -0
- package/dist/esm/index.d.ts +5 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/services/providers/ChatServiceProvider.d.ts +9 -1
- package/dist/esm/services/providers/ChatServiceProvider.d.ts.map +1 -1
- package/dist/esm/services/providers/index.d.ts +3 -1
- package/dist/esm/services/providers/index.d.ts.map +1 -1
- package/dist/esm/services/providers/index.js +4 -0
- package/dist/esm/services/providers/index.js.map +1 -1
- package/dist/esm/services/providers/openai/openaiRequestBuilder.d.ts.map +1 -1
- package/dist/esm/services/providers/openai/openaiRequestBuilder.js +8 -0
- package/dist/esm/services/providers/openai/openaiRequestBuilder.js.map +1 -1
- package/dist/esm/services/providers/plamo/PlamoChatService.d.ts +8 -0
- package/dist/esm/services/providers/plamo/PlamoChatService.d.ts.map +1 -0
- package/dist/esm/services/providers/plamo/PlamoChatService.js +8 -0
- package/dist/esm/services/providers/plamo/PlamoChatService.js.map +1 -0
- package/dist/esm/services/providers/plamo/PlamoChatServiceProvider.d.ts +16 -0
- package/dist/esm/services/providers/plamo/PlamoChatServiceProvider.d.ts.map +1 -0
- package/dist/esm/services/providers/plamo/PlamoChatServiceProvider.js +53 -0
- package/dist/esm/services/providers/plamo/PlamoChatServiceProvider.js.map +1 -0
- package/dist/esm/services/providers/sakana/SakanaChatService.d.ts +7 -0
- package/dist/esm/services/providers/sakana/SakanaChatService.d.ts.map +1 -0
- package/dist/esm/services/providers/sakana/SakanaChatService.js +8 -0
- package/dist/esm/services/providers/sakana/SakanaChatService.js.map +1 -0
- package/dist/esm/services/providers/sakana/SakanaChatServiceProvider.d.ts +16 -0
- package/dist/esm/services/providers/sakana/SakanaChatServiceProvider.d.ts.map +1 -0
- package/dist/esm/services/providers/sakana/SakanaChatServiceProvider.js +53 -0
- package/dist/esm/services/providers/sakana/SakanaChatServiceProvider.js.map +1 -0
- package/dist/umd/aituber-onair-chat.js +205 -2
- package/dist/umd/aituber-onair-chat.min.js +10 -10
- package/package.json +1 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ChatService } from '../../ChatService';
|
|
2
|
+
import { ChatServiceProvider, SakanaChatServiceOptions, VisionSupportLevel } from '../ChatServiceProvider';
|
|
3
|
+
export declare class SakanaChatServiceProvider implements ChatServiceProvider<SakanaChatServiceOptions> {
|
|
4
|
+
createChatService(options: SakanaChatServiceOptions): ChatService;
|
|
5
|
+
getProviderName(): string;
|
|
6
|
+
getSupportedModels(): string[];
|
|
7
|
+
getDefaultModel(): string;
|
|
8
|
+
supportsVision(): boolean;
|
|
9
|
+
getVisionSupportLevel(): VisionSupportLevel;
|
|
10
|
+
supportsVisionForModel(_model: string): boolean;
|
|
11
|
+
getVisionSupportLevelForModel(_model: string): VisionSupportLevel;
|
|
12
|
+
private validateRequiredOptions;
|
|
13
|
+
private resolveEndpoint;
|
|
14
|
+
private normalizeUrl;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=SakanaChatServiceProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SakanaChatServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/services/providers/sakana/SakanaChatServiceProvider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EACnB,MAAM,wBAAwB,CAAC;AAIhC,qBAAa,yBACX,YAAW,mBAAmB,CAAC,wBAAwB,CAAC;IAExD,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,WAAW;IAgBjE,eAAe,IAAI,MAAM;IAIzB,kBAAkB,IAAI,MAAM,EAAE;IAI9B,eAAe,IAAI,MAAM;IAIzB,cAAc,IAAI,OAAO;IAIzB,qBAAqB,IAAI,kBAAkB;IAI3C,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI/C,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,kBAAkB;IAIjE,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,YAAY;CAGrB"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ENDPOINT_SAKANA_CHAT_COMPLETIONS_API, MODEL_FUGU, SAKANA_SUPPORTED_MODELS, } from '../../../constants/sakana';
|
|
2
|
+
import { SakanaChatService } from './SakanaChatService';
|
|
3
|
+
export class SakanaChatServiceProvider {
|
|
4
|
+
createChatService(options) {
|
|
5
|
+
this.validateRequiredOptions(options);
|
|
6
|
+
const model = options.model || this.getDefaultModel();
|
|
7
|
+
const tools = options.tools;
|
|
8
|
+
return new SakanaChatService(options.apiKey, model, options.visionModel ?? model, tools, this.resolveEndpoint(options), options.responseLength);
|
|
9
|
+
}
|
|
10
|
+
getProviderName() {
|
|
11
|
+
return 'sakana';
|
|
12
|
+
}
|
|
13
|
+
getSupportedModels() {
|
|
14
|
+
return [...SAKANA_SUPPORTED_MODELS];
|
|
15
|
+
}
|
|
16
|
+
getDefaultModel() {
|
|
17
|
+
return MODEL_FUGU;
|
|
18
|
+
}
|
|
19
|
+
supportsVision() {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
getVisionSupportLevel() {
|
|
23
|
+
return 'unsupported';
|
|
24
|
+
}
|
|
25
|
+
supportsVisionForModel(_model) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
getVisionSupportLevelForModel(_model) {
|
|
29
|
+
return 'unsupported';
|
|
30
|
+
}
|
|
31
|
+
validateRequiredOptions(options) {
|
|
32
|
+
if (!options.apiKey?.trim()) {
|
|
33
|
+
throw new Error('sakana provider requires apiKey.');
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
resolveEndpoint(options) {
|
|
37
|
+
if (options.endpoint) {
|
|
38
|
+
return this.normalizeUrl(options.endpoint);
|
|
39
|
+
}
|
|
40
|
+
if (options.baseUrl) {
|
|
41
|
+
const baseUrl = this.normalizeUrl(options.baseUrl);
|
|
42
|
+
if (baseUrl.endsWith('/chat/completions')) {
|
|
43
|
+
return baseUrl;
|
|
44
|
+
}
|
|
45
|
+
return `${baseUrl}/chat/completions`;
|
|
46
|
+
}
|
|
47
|
+
return ENDPOINT_SAKANA_CHAT_COMPLETIONS_API;
|
|
48
|
+
}
|
|
49
|
+
normalizeUrl(value) {
|
|
50
|
+
return value.trim().replace(/\/+$/, '');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=SakanaChatServiceProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SakanaChatServiceProvider.js","sourceRoot":"","sources":["../../../../../src/services/providers/sakana/SakanaChatServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oCAAoC,EACpC,UAAU,EACV,uBAAuB,GACxB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,OAAO,yBAAyB;IAGpC,iBAAiB,CAAC,OAAiC;QACjD,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACtD,MAAM,KAAK,GAAiC,OAAO,CAAC,KAAK,CAAC;QAE1D,OAAO,IAAI,iBAAiB,CAC1B,OAAO,CAAC,MAAM,EACd,KAAK,EACL,OAAO,CAAC,WAAW,IAAI,KAAK,EAC5B,KAAK,EACL,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAC7B,OAAO,CAAC,cAAc,CACvB,CAAC;IACJ,CAAC;IAED,eAAe;QACb,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,kBAAkB;QAChB,OAAO,CAAC,GAAG,uBAAuB,CAAC,CAAC;IACtC,CAAC;IAED,eAAe;QACb,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,cAAc;QACZ,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qBAAqB;QACnB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,sBAAsB,CAAC,MAAc;QACnC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,6BAA6B,CAAC,MAAc;QAC1C,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,uBAAuB,CAAC,OAAiC;QAC/D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,OAAiC;QACvD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC1C,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,OAAO,GAAG,OAAO,mBAAmB,CAAC;QACvC,CAAC;QAED,OAAO,oCAAoC,CAAC;IAC9C,CAAC;IAEO,YAAY,CAAC,KAAa;QAChC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;CACF"}
|
|
@@ -45,6 +45,8 @@ var AITuberOnAirChat = (() => {
|
|
|
45
45
|
ENDPOINT_OPENAI_CHAT_COMPLETIONS_API: () => ENDPOINT_OPENAI_CHAT_COMPLETIONS_API,
|
|
46
46
|
ENDPOINT_OPENAI_RESPONSES_API: () => ENDPOINT_OPENAI_RESPONSES_API,
|
|
47
47
|
ENDPOINT_OPENROUTER_API: () => ENDPOINT_OPENROUTER_API,
|
|
48
|
+
ENDPOINT_PLAMO_CHAT_COMPLETIONS_API: () => ENDPOINT_PLAMO_CHAT_COMPLETIONS_API,
|
|
49
|
+
ENDPOINT_SAKANA_CHAT_COMPLETIONS_API: () => ENDPOINT_SAKANA_CHAT_COMPLETIONS_API,
|
|
48
50
|
ENDPOINT_XAI_CHAT_COMPLETIONS_API: () => ENDPOINT_XAI_CHAT_COMPLETIONS_API,
|
|
49
51
|
ENDPOINT_ZAI_CHAT_COMPLETIONS_API: () => ENDPOINT_ZAI_CHAT_COMPLETIONS_API,
|
|
50
52
|
EmotionParser: () => EmotionParser,
|
|
@@ -92,6 +94,9 @@ var AITuberOnAirChat = (() => {
|
|
|
92
94
|
MODEL_DEEPSEEK_REASONER: () => MODEL_DEEPSEEK_REASONER,
|
|
93
95
|
MODEL_DEEPSEEK_V4_FLASH: () => MODEL_DEEPSEEK_V4_FLASH,
|
|
94
96
|
MODEL_DEEPSEEK_V4_PRO: () => MODEL_DEEPSEEK_V4_PRO,
|
|
97
|
+
MODEL_FUGU: () => MODEL_FUGU,
|
|
98
|
+
MODEL_FUGU_ULTRA: () => MODEL_FUGU_ULTRA,
|
|
99
|
+
MODEL_FUGU_ULTRA_20260615: () => MODEL_FUGU_ULTRA_20260615,
|
|
95
100
|
MODEL_GEMINI_2_5_FLASH: () => MODEL_GEMINI_2_5_FLASH,
|
|
96
101
|
MODEL_GEMINI_2_5_FLASH_LITE: () => MODEL_GEMINI_2_5_FLASH_LITE,
|
|
97
102
|
MODEL_GEMINI_2_5_FLASH_LITE_PREVIEW_06_17: () => MODEL_GEMINI_2_5_FLASH_LITE_PREVIEW_06_17,
|
|
@@ -169,6 +174,8 @@ var AITuberOnAirChat = (() => {
|
|
|
169
174
|
MODEL_OPENAI_GPT_MINI_LATEST: () => MODEL_OPENAI_GPT_MINI_LATEST,
|
|
170
175
|
MODEL_OPENROUTER_AUTO: () => MODEL_OPENROUTER_AUTO,
|
|
171
176
|
MODEL_OPENROUTER_FUSION: () => MODEL_OPENROUTER_FUSION,
|
|
177
|
+
MODEL_PLAMO_2_2_PRIME: () => MODEL_PLAMO_2_2_PRIME,
|
|
178
|
+
MODEL_PLAMO_3_0_PRIME: () => MODEL_PLAMO_3_0_PRIME,
|
|
172
179
|
MODEL_ZAI_GLM_4_5_AIR: () => MODEL_ZAI_GLM_4_5_AIR,
|
|
173
180
|
MODEL_ZAI_GLM_4_5_AIR_FREE: () => MODEL_ZAI_GLM_4_5_AIR_FREE,
|
|
174
181
|
MODEL_ZAI_GLM_4_7_FLASH: () => MODEL_ZAI_GLM_4_7_FLASH,
|
|
@@ -186,6 +193,14 @@ var AITuberOnAirChat = (() => {
|
|
|
186
193
|
OpenAICompatibleChatServiceProvider: () => OpenAICompatibleChatServiceProvider,
|
|
187
194
|
OpenRouterChatService: () => OpenRouterChatService,
|
|
188
195
|
OpenRouterChatServiceProvider: () => OpenRouterChatServiceProvider,
|
|
196
|
+
PLAMO_API_BASE_URL: () => PLAMO_API_BASE_URL,
|
|
197
|
+
PLAMO_SUPPORTED_MODELS: () => PLAMO_SUPPORTED_MODELS,
|
|
198
|
+
PlamoChatService: () => PlamoChatService,
|
|
199
|
+
PlamoChatServiceProvider: () => PlamoChatServiceProvider,
|
|
200
|
+
SAKANA_API_BASE_URL: () => SAKANA_API_BASE_URL,
|
|
201
|
+
SAKANA_SUPPORTED_MODELS: () => SAKANA_SUPPORTED_MODELS,
|
|
202
|
+
SakanaChatService: () => SakanaChatService,
|
|
203
|
+
SakanaChatServiceProvider: () => SakanaChatServiceProvider,
|
|
189
204
|
StreamTextAccumulator: () => StreamTextAccumulator,
|
|
190
205
|
VISION_SUPPORTED_MODELS: () => VISION_SUPPORTED_MODELS,
|
|
191
206
|
XAIChatService: () => XAIChatService,
|
|
@@ -567,6 +582,28 @@ var AITuberOnAirChat = (() => {
|
|
|
567
582
|
return MISTRAL_VISION_SUPPORTED_MODELS.includes(model);
|
|
568
583
|
}
|
|
569
584
|
|
|
585
|
+
// src/constants/sakana.ts
|
|
586
|
+
var SAKANA_API_BASE_URL = "https://api.sakana.ai/v1";
|
|
587
|
+
var ENDPOINT_SAKANA_CHAT_COMPLETIONS_API = `${SAKANA_API_BASE_URL}/chat/completions`;
|
|
588
|
+
var MODEL_FUGU = "fugu";
|
|
589
|
+
var MODEL_FUGU_ULTRA = "fugu-ultra";
|
|
590
|
+
var MODEL_FUGU_ULTRA_20260615 = "fugu-ultra-20260615";
|
|
591
|
+
var SAKANA_SUPPORTED_MODELS = [
|
|
592
|
+
MODEL_FUGU,
|
|
593
|
+
MODEL_FUGU_ULTRA,
|
|
594
|
+
MODEL_FUGU_ULTRA_20260615
|
|
595
|
+
];
|
|
596
|
+
|
|
597
|
+
// src/constants/plamo.ts
|
|
598
|
+
var PLAMO_API_BASE_URL = "https://api.platform.preferredai.jp/v1";
|
|
599
|
+
var ENDPOINT_PLAMO_CHAT_COMPLETIONS_API = `${PLAMO_API_BASE_URL}/chat/completions`;
|
|
600
|
+
var MODEL_PLAMO_3_0_PRIME = "plamo-3.0-prime";
|
|
601
|
+
var MODEL_PLAMO_2_2_PRIME = "plamo-2.2-prime";
|
|
602
|
+
var PLAMO_SUPPORTED_MODELS = [
|
|
603
|
+
MODEL_PLAMO_3_0_PRIME,
|
|
604
|
+
MODEL_PLAMO_2_2_PRIME
|
|
605
|
+
];
|
|
606
|
+
|
|
570
607
|
// src/constants/chat.ts
|
|
571
608
|
var CHAT_RESPONSE_LENGTH = {
|
|
572
609
|
VERY_SHORT: "veryShort",
|
|
@@ -2033,7 +2070,9 @@ If it's in another language, summarize in that language.
|
|
|
2033
2070
|
var OPENAI_COMPATIBLE_CHAT_COMPLETIONS_PROVIDERS = /* @__PURE__ */ new Set([
|
|
2034
2071
|
"openai-compatible",
|
|
2035
2072
|
"deepseek",
|
|
2036
|
-
"mistral"
|
|
2073
|
+
"mistral",
|
|
2074
|
+
"sakana",
|
|
2075
|
+
"plamo"
|
|
2037
2076
|
]);
|
|
2038
2077
|
function buildOpenAIRequestBody({
|
|
2039
2078
|
provider,
|
|
@@ -2110,6 +2149,9 @@ If it's in another language, summarize in that language.
|
|
|
2110
2149
|
if (provider === "mistral" && isMistralReasoningEffortModel(model) && reasoning_effort && isMistralReasoningEffort(reasoning_effort)) {
|
|
2111
2150
|
body.reasoning_effort = reasoning_effort;
|
|
2112
2151
|
}
|
|
2152
|
+
if (provider === "plamo" && reasoning_effort) {
|
|
2153
|
+
body.reasoning_effort = reasoning_effort;
|
|
2154
|
+
}
|
|
2113
2155
|
const toolDefinitions = buildOpenAIToolsDefinition({
|
|
2114
2156
|
tools,
|
|
2115
2157
|
mcpServers,
|
|
@@ -4436,6 +4478,165 @@ If it's in another language, summarize in that language.
|
|
|
4436
4478
|
}
|
|
4437
4479
|
};
|
|
4438
4480
|
|
|
4481
|
+
// src/services/providers/plamo/PlamoChatService.ts
|
|
4482
|
+
var PlamoChatService = class extends OpenAIChatService {
|
|
4483
|
+
constructor(apiKey, model = MODEL_PLAMO_3_0_PRIME, visionModel = model, tools, endpoint = ENDPOINT_PLAMO_CHAT_COMPLETIONS_API, responseLength, reasoning_effort) {
|
|
4484
|
+
super(
|
|
4485
|
+
apiKey,
|
|
4486
|
+
model,
|
|
4487
|
+
visionModel,
|
|
4488
|
+
tools,
|
|
4489
|
+
endpoint,
|
|
4490
|
+
[],
|
|
4491
|
+
responseLength,
|
|
4492
|
+
void 0,
|
|
4493
|
+
reasoning_effort,
|
|
4494
|
+
false,
|
|
4495
|
+
"plamo",
|
|
4496
|
+
false
|
|
4497
|
+
);
|
|
4498
|
+
}
|
|
4499
|
+
};
|
|
4500
|
+
|
|
4501
|
+
// src/services/providers/plamo/PlamoChatServiceProvider.ts
|
|
4502
|
+
var PlamoChatServiceProvider = class {
|
|
4503
|
+
createChatService(options) {
|
|
4504
|
+
this.validateRequiredOptions(options);
|
|
4505
|
+
const model = options.model || this.getDefaultModel();
|
|
4506
|
+
const tools = options.tools;
|
|
4507
|
+
return new PlamoChatService(
|
|
4508
|
+
options.apiKey,
|
|
4509
|
+
model,
|
|
4510
|
+
options.visionModel ?? model,
|
|
4511
|
+
tools,
|
|
4512
|
+
this.resolveEndpoint(options),
|
|
4513
|
+
options.responseLength,
|
|
4514
|
+
options.reasoning_effort
|
|
4515
|
+
);
|
|
4516
|
+
}
|
|
4517
|
+
getProviderName() {
|
|
4518
|
+
return "plamo";
|
|
4519
|
+
}
|
|
4520
|
+
getSupportedModels() {
|
|
4521
|
+
return [...PLAMO_SUPPORTED_MODELS];
|
|
4522
|
+
}
|
|
4523
|
+
getDefaultModel() {
|
|
4524
|
+
return MODEL_PLAMO_3_0_PRIME;
|
|
4525
|
+
}
|
|
4526
|
+
supportsVision() {
|
|
4527
|
+
return false;
|
|
4528
|
+
}
|
|
4529
|
+
getVisionSupportLevel() {
|
|
4530
|
+
return "unsupported";
|
|
4531
|
+
}
|
|
4532
|
+
supportsVisionForModel(_model) {
|
|
4533
|
+
return false;
|
|
4534
|
+
}
|
|
4535
|
+
getVisionSupportLevelForModel(_model) {
|
|
4536
|
+
return "unsupported";
|
|
4537
|
+
}
|
|
4538
|
+
validateRequiredOptions(options) {
|
|
4539
|
+
if (!options.apiKey?.trim()) {
|
|
4540
|
+
throw new Error("plamo provider requires apiKey.");
|
|
4541
|
+
}
|
|
4542
|
+
}
|
|
4543
|
+
resolveEndpoint(options) {
|
|
4544
|
+
if (options.endpoint) {
|
|
4545
|
+
return this.normalizeUrl(options.endpoint);
|
|
4546
|
+
}
|
|
4547
|
+
if (options.baseUrl) {
|
|
4548
|
+
const baseUrl = this.normalizeUrl(options.baseUrl);
|
|
4549
|
+
if (baseUrl.endsWith("/chat/completions")) {
|
|
4550
|
+
return baseUrl;
|
|
4551
|
+
}
|
|
4552
|
+
return `${baseUrl}/chat/completions`;
|
|
4553
|
+
}
|
|
4554
|
+
return ENDPOINT_PLAMO_CHAT_COMPLETIONS_API;
|
|
4555
|
+
}
|
|
4556
|
+
normalizeUrl(value) {
|
|
4557
|
+
return value.trim().replace(/\/+$/, "");
|
|
4558
|
+
}
|
|
4559
|
+
};
|
|
4560
|
+
|
|
4561
|
+
// src/services/providers/sakana/SakanaChatService.ts
|
|
4562
|
+
var SakanaChatService = class extends OpenAIChatService {
|
|
4563
|
+
constructor(apiKey, model = MODEL_FUGU, visionModel = model, tools, endpoint = ENDPOINT_SAKANA_CHAT_COMPLETIONS_API, responseLength) {
|
|
4564
|
+
super(
|
|
4565
|
+
apiKey,
|
|
4566
|
+
model,
|
|
4567
|
+
visionModel,
|
|
4568
|
+
tools,
|
|
4569
|
+
endpoint,
|
|
4570
|
+
[],
|
|
4571
|
+
responseLength,
|
|
4572
|
+
void 0,
|
|
4573
|
+
void 0,
|
|
4574
|
+
false,
|
|
4575
|
+
"sakana",
|
|
4576
|
+
false
|
|
4577
|
+
);
|
|
4578
|
+
}
|
|
4579
|
+
};
|
|
4580
|
+
|
|
4581
|
+
// src/services/providers/sakana/SakanaChatServiceProvider.ts
|
|
4582
|
+
var SakanaChatServiceProvider = class {
|
|
4583
|
+
createChatService(options) {
|
|
4584
|
+
this.validateRequiredOptions(options);
|
|
4585
|
+
const model = options.model || this.getDefaultModel();
|
|
4586
|
+
const tools = options.tools;
|
|
4587
|
+
return new SakanaChatService(
|
|
4588
|
+
options.apiKey,
|
|
4589
|
+
model,
|
|
4590
|
+
options.visionModel ?? model,
|
|
4591
|
+
tools,
|
|
4592
|
+
this.resolveEndpoint(options),
|
|
4593
|
+
options.responseLength
|
|
4594
|
+
);
|
|
4595
|
+
}
|
|
4596
|
+
getProviderName() {
|
|
4597
|
+
return "sakana";
|
|
4598
|
+
}
|
|
4599
|
+
getSupportedModels() {
|
|
4600
|
+
return [...SAKANA_SUPPORTED_MODELS];
|
|
4601
|
+
}
|
|
4602
|
+
getDefaultModel() {
|
|
4603
|
+
return MODEL_FUGU;
|
|
4604
|
+
}
|
|
4605
|
+
supportsVision() {
|
|
4606
|
+
return false;
|
|
4607
|
+
}
|
|
4608
|
+
getVisionSupportLevel() {
|
|
4609
|
+
return "unsupported";
|
|
4610
|
+
}
|
|
4611
|
+
supportsVisionForModel(_model) {
|
|
4612
|
+
return false;
|
|
4613
|
+
}
|
|
4614
|
+
getVisionSupportLevelForModel(_model) {
|
|
4615
|
+
return "unsupported";
|
|
4616
|
+
}
|
|
4617
|
+
validateRequiredOptions(options) {
|
|
4618
|
+
if (!options.apiKey?.trim()) {
|
|
4619
|
+
throw new Error("sakana provider requires apiKey.");
|
|
4620
|
+
}
|
|
4621
|
+
}
|
|
4622
|
+
resolveEndpoint(options) {
|
|
4623
|
+
if (options.endpoint) {
|
|
4624
|
+
return this.normalizeUrl(options.endpoint);
|
|
4625
|
+
}
|
|
4626
|
+
if (options.baseUrl) {
|
|
4627
|
+
const baseUrl = this.normalizeUrl(options.baseUrl);
|
|
4628
|
+
if (baseUrl.endsWith("/chat/completions")) {
|
|
4629
|
+
return baseUrl;
|
|
4630
|
+
}
|
|
4631
|
+
return `${baseUrl}/chat/completions`;
|
|
4632
|
+
}
|
|
4633
|
+
return ENDPOINT_SAKANA_CHAT_COMPLETIONS_API;
|
|
4634
|
+
}
|
|
4635
|
+
normalizeUrl(value) {
|
|
4636
|
+
return value.trim().replace(/\/+$/, "");
|
|
4637
|
+
}
|
|
4638
|
+
};
|
|
4639
|
+
|
|
4439
4640
|
// src/services/providers/xai/XAIChatService.ts
|
|
4440
4641
|
var XAIChatService = class {
|
|
4441
4642
|
/**
|
|
@@ -4907,7 +5108,9 @@ If it's in another language, summarize in that language.
|
|
|
4907
5108
|
new XAIChatServiceProvider(),
|
|
4908
5109
|
new KimiChatServiceProvider(),
|
|
4909
5110
|
new DeepSeekChatServiceProvider(),
|
|
4910
|
-
new MistralChatServiceProvider()
|
|
5111
|
+
new MistralChatServiceProvider(),
|
|
5112
|
+
new SakanaChatServiceProvider(),
|
|
5113
|
+
new PlamoChatServiceProvider()
|
|
4911
5114
|
];
|
|
4912
5115
|
|
|
4913
5116
|
// src/services/ChatServiceFactory.ts
|