ai-world-sdk 1.3.3 → 1.3.6

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/dist/index.js CHANGED
@@ -20,7 +20,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
20
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
21
  };
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
- exports.SDK_SIGNATURE = exports.VersionCompatibilityError = exports.sdkConfig = exports.getCurrentUserInfo = exports.AuthClient = exports.AgentSkillClient = exports.DatabaseRequestClient = exports.ResourceClient = exports.MinioStorageClient = exports.DownloadClient = exports.OpenAIVideoGenerationClient = exports.VideoUnderstandingClient = exports.VideoGenerationClient = exports.GeminiImageGenerationClient = exports.DoubaoImageGenerationClient = exports.ChatAnthropic = exports.ChatGoogleGenerativeAI = exports.ChatOpenAI = exports.BaseChatModel = exports.AIMessageChunk = exports.SystemMessage = exports.AIMessage = exports.HumanMessage = void 0;
23
+ exports.SDK_SIGNATURE = exports.VersionCompatibilityError = exports.sdkConfig = exports.ChromeExtensionClient = exports.SharedResourceClient = exports.DashboardClient = exports.StatsClient = exports.PluginManagementClient = exports.AdminClient = exports.getCurrentUserInfo = exports.AuthClient = exports.AgentSkillClient = exports.VersionedResourceClient = exports.ResourceClient = exports.MinioStorageClient = exports.DownloadClient = exports.OpenAIVideoGenerationClient = exports.VideoUnderstandingClient = exports.VideoGenerationClient = exports.GeminiImageGenerationClient = exports.DoubaoImageGenerationClient = exports.ChatAnthropic = exports.ChatGoogleGenerativeAI = exports.ChatOpenAI = exports.BaseChatModel = exports.AIMessageChunk = exports.SystemMessage = exports.AIMessage = exports.HumanMessage = void 0;
24
24
  exports.createChatModel = createChatModel;
25
25
  const openai_1 = require("./chat_models/openai");
26
26
  const google_1 = require("./chat_models/google");
@@ -60,12 +60,28 @@ Object.defineProperty(exports, "MinioStorageClient", { enumerable: true, get: fu
60
60
  // Export resource management client
61
61
  var resource_1 = require("./resource");
62
62
  Object.defineProperty(exports, "ResourceClient", { enumerable: true, get: function () { return resource_1.ResourceClient; } });
63
- // Export database request client
64
- var database_requests_1 = require("./database-requests");
65
- Object.defineProperty(exports, "DatabaseRequestClient", { enumerable: true, get: function () { return database_requests_1.DatabaseRequestClient; } });
63
+ // Export versioned resource client
64
+ var versioned_resource_1 = require("./versioned-resource");
65
+ Object.defineProperty(exports, "VersionedResourceClient", { enumerable: true, get: function () { return versioned_resource_1.VersionedResourceClient; } });
66
66
  // Export agent skill client
67
67
  var agent_skills_1 = require("./agent-skills");
68
68
  Object.defineProperty(exports, "AgentSkillClient", { enumerable: true, get: function () { return agent_skills_1.AgentSkillClient; } });
69
+ // Export admin client
70
+ var admin_1 = require("./admin");
71
+ Object.defineProperty(exports, "AdminClient", { enumerable: true, get: function () { return admin_1.AdminClient; } });
72
+ // Export plugin management client
73
+ var plugin_management_1 = require("./plugin-management");
74
+ Object.defineProperty(exports, "PluginManagementClient", { enumerable: true, get: function () { return plugin_management_1.PluginManagementClient; } });
75
+ // Export stats & dashboard clients
76
+ var stats_1 = require("./stats");
77
+ Object.defineProperty(exports, "StatsClient", { enumerable: true, get: function () { return stats_1.StatsClient; } });
78
+ Object.defineProperty(exports, "DashboardClient", { enumerable: true, get: function () { return stats_1.DashboardClient; } });
79
+ // Export shared resource client
80
+ var shared_resource_1 = require("./shared-resource");
81
+ Object.defineProperty(exports, "SharedResourceClient", { enumerable: true, get: function () { return shared_resource_1.SharedResourceClient; } });
82
+ // Export chrome extension client
83
+ var chrome_extension_1 = require("./chrome-extension");
84
+ Object.defineProperty(exports, "ChromeExtensionClient", { enumerable: true, get: function () { return chrome_extension_1.ChromeExtensionClient; } });
69
85
  // Export global configuration
70
86
  var config_2 = require("./config");
71
87
  Object.defineProperty(exports, "sdkConfig", { enumerable: true, get: function () { return config_2.sdkConfig; } });
package/dist/llm.js CHANGED
@@ -32,6 +32,10 @@ function createProvider(provider, endpointType, pluginId) {
32
32
  settings.baseURL = `${serverUrl}/api/llm/openrouter`;
33
33
  return (0, ai_sdk_provider_1.createOpenRouter)(settings);
34
34
  }
35
+ else if (provider === "kunpo") {
36
+ settings.baseURL = `${serverUrl}/api/llm/kunpo`;
37
+ return (0, ai_sdk_provider_1.createOpenRouter)(settings);
38
+ }
35
39
  switch (endpointType) {
36
40
  case "openai":
37
41
  return (0, openai_1.createOpenAI)(settings);
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Plugin Management Client
3
+ * 插件管理客户端:插件 CRUD、模板管理
4
+ */
5
+ export interface PluginManagementClientConfig {
6
+ baseUrl?: string;
7
+ token?: string;
8
+ headers?: Record<string, string>;
9
+ }
10
+ export interface PluginInfo {
11
+ plugin_id: string;
12
+ name: string;
13
+ description?: string;
14
+ author?: string;
15
+ version?: string;
16
+ enabled: boolean;
17
+ has_server: boolean;
18
+ created_at?: string;
19
+ updated_at?: string;
20
+ [key: string]: any;
21
+ }
22
+ export interface PluginListResponse {
23
+ items: PluginInfo[];
24
+ total: number;
25
+ page: number;
26
+ page_size: number;
27
+ }
28
+ export interface ListPluginsOptions {
29
+ page?: number;
30
+ pageSize?: number;
31
+ name?: string;
32
+ pluginId?: string;
33
+ author?: string;
34
+ pluginIds?: string;
35
+ sortBy?: string;
36
+ sortOrder?: "asc" | "desc";
37
+ enabledOnly?: boolean;
38
+ }
39
+ export interface CreatePluginData {
40
+ pluginId: string;
41
+ name?: string;
42
+ description?: string;
43
+ author?: string;
44
+ version?: string;
45
+ templateId?: string;
46
+ staticZip?: File | Blob;
47
+ serverZip?: File | Blob;
48
+ backendEntry?: string;
49
+ backendWebsocket?: boolean;
50
+ disableSdkUpdateNotice?: boolean;
51
+ }
52
+ export interface PluginStatus {
53
+ plugin_id: string;
54
+ enabled: boolean;
55
+ has_server: boolean;
56
+ server_running?: boolean;
57
+ [key: string]: any;
58
+ }
59
+ export interface PluginTemplateInfo {
60
+ id?: number;
61
+ plugin_id: string;
62
+ name: string;
63
+ description?: string;
64
+ git_url?: string;
65
+ icon?: string;
66
+ category?: string;
67
+ author?: string;
68
+ tags?: string;
69
+ [key: string]: any;
70
+ }
71
+ export interface PluginTemplateListResponse {
72
+ items: PluginTemplateInfo[];
73
+ total: number;
74
+ page: number;
75
+ page_size: number;
76
+ }
77
+ export interface ListPluginTemplatesOptions {
78
+ page?: number;
79
+ pageSize?: number;
80
+ name?: string;
81
+ category?: string;
82
+ }
83
+ export interface CreatePluginTemplateData {
84
+ pluginId: string;
85
+ name: string;
86
+ gitUrl: string;
87
+ description?: string;
88
+ icon?: string;
89
+ category?: string;
90
+ author?: string;
91
+ tags?: string;
92
+ }
93
+ export interface UpdatePluginTemplateData {
94
+ name?: string;
95
+ description?: string;
96
+ gitUrl?: string;
97
+ icon?: string;
98
+ category?: string;
99
+ author?: string;
100
+ tags?: string;
101
+ }
102
+ export declare class PluginManagementClient {
103
+ private baseUrl;
104
+ private headers;
105
+ constructor(config?: PluginManagementClientConfig);
106
+ private handleErrorResponse;
107
+ private buildUrl;
108
+ list(options?: ListPluginsOptions): Promise<PluginListResponse>;
109
+ listIds(enabledOnly?: boolean): Promise<string[]>;
110
+ get(pluginId: string): Promise<PluginInfo>;
111
+ getStatus(pluginId: string): Promise<PluginStatus>;
112
+ create(data: CreatePluginData): Promise<PluginInfo>;
113
+ delete(pluginId: string): Promise<{
114
+ message: string;
115
+ }>;
116
+ enable(pluginId: string): Promise<{
117
+ message: string;
118
+ }>;
119
+ disable(pluginId: string): Promise<{
120
+ message: string;
121
+ }>;
122
+ reload(pluginId: string): Promise<{
123
+ message: string;
124
+ }>;
125
+ restartServer(pluginId: string): Promise<{
126
+ message: string;
127
+ }>;
128
+ getServerLogs(pluginId: string, lines?: number): Promise<string>;
129
+ listTemplates(): Promise<any[]>;
130
+ getTemplate(templateId: string): Promise<any>;
131
+ generateFromTemplate(pluginId: string, templateId: string, options?: {
132
+ name?: string;
133
+ description?: string;
134
+ author?: string;
135
+ version?: string;
136
+ }): Promise<Blob>;
137
+ listRegisteredTemplates(options?: ListPluginTemplatesOptions): Promise<PluginTemplateListResponse>;
138
+ getRegisteredTemplate(templateId: number): Promise<PluginTemplateInfo>;
139
+ createRegisteredTemplate(data: CreatePluginTemplateData): Promise<PluginTemplateInfo>;
140
+ updateRegisteredTemplate(templateId: number, data: UpdatePluginTemplateData): Promise<PluginTemplateInfo>;
141
+ deleteRegisteredTemplate(templateId: number): Promise<{
142
+ message: string;
143
+ }>;
144
+ }
@@ -0,0 +1,333 @@
1
+ "use strict";
2
+ /**
3
+ * Plugin Management Client
4
+ * 插件管理客户端:插件 CRUD、模板管理
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.PluginManagementClient = void 0;
8
+ const config_1 = require("./config");
9
+ const log_1 = require("./log");
10
+ class PluginManagementClient {
11
+ constructor(config = {}) {
12
+ this.baseUrl =
13
+ config.baseUrl ||
14
+ config_1.sdkConfig.getServerUrl() ||
15
+ (typeof window !== "undefined" ? window.location.origin : "");
16
+ const globalHeaders = config_1.sdkConfig.getHeaders();
17
+ const globalToken = config.token || config_1.sdkConfig.getToken();
18
+ this.headers = {
19
+ "Content-Type": "application/json",
20
+ ...globalHeaders,
21
+ ...config.headers,
22
+ };
23
+ if (globalToken) {
24
+ this.headers["Authorization"] = `Bearer ${globalToken}`;
25
+ }
26
+ }
27
+ async handleErrorResponse(response) {
28
+ let errorMessage = `Request failed: ${response.status} ${response.statusText}`;
29
+ try {
30
+ const errorText = await response.text();
31
+ const errorJson = JSON.parse(errorText);
32
+ errorMessage = errorJson.detail || errorMessage;
33
+ }
34
+ catch { }
35
+ throw new Error(errorMessage);
36
+ }
37
+ buildUrl(path, params) {
38
+ const url = `${this.baseUrl}${path}`;
39
+ if (!params)
40
+ return url;
41
+ const sp = new URLSearchParams();
42
+ for (const [k, v] of Object.entries(params)) {
43
+ if (v !== undefined && v !== null)
44
+ sp.append(k, String(v));
45
+ }
46
+ const qs = sp.toString();
47
+ return qs ? `${url}?${qs}` : url;
48
+ }
49
+ // ==================== 插件管理 ====================
50
+ async list(options = {}) {
51
+ config_1.sdkConfig.ensureVersionCompatible();
52
+ const url = this.buildUrl("/api/plugins/", {
53
+ page: options.page,
54
+ page_size: options.pageSize,
55
+ name: options.name,
56
+ plugin_id: options.pluginId,
57
+ author: options.author,
58
+ plugin_ids: options.pluginIds,
59
+ sort_by: options.sortBy,
60
+ sort_order: options.sortOrder,
61
+ enabled_only: options.enabledOnly,
62
+ });
63
+ (0, log_1.logRequest)("GET", url, this.headers);
64
+ const response = await fetch(url, { headers: this.headers });
65
+ if (!response.ok)
66
+ await this.handleErrorResponse(response);
67
+ const result = (await response.json());
68
+ (0, log_1.logResponse)(response.status, response.statusText, response.headers, result);
69
+ return result;
70
+ }
71
+ async listIds(enabledOnly) {
72
+ config_1.sdkConfig.ensureVersionCompatible();
73
+ const url = this.buildUrl("/api/plugins/ids", {
74
+ enabled_only: enabledOnly,
75
+ });
76
+ (0, log_1.logRequest)("GET", url, this.headers);
77
+ const response = await fetch(url, { headers: this.headers });
78
+ if (!response.ok)
79
+ await this.handleErrorResponse(response);
80
+ return (await response.json());
81
+ }
82
+ async get(pluginId) {
83
+ config_1.sdkConfig.ensureVersionCompatible();
84
+ const url = `${this.baseUrl}/api/plugins/${pluginId}`;
85
+ (0, log_1.logRequest)("GET", url, this.headers);
86
+ const response = await fetch(url, { headers: this.headers });
87
+ if (!response.ok)
88
+ await this.handleErrorResponse(response);
89
+ const result = (await response.json());
90
+ (0, log_1.logResponse)(response.status, response.statusText, response.headers, result);
91
+ return result;
92
+ }
93
+ async getStatus(pluginId) {
94
+ config_1.sdkConfig.ensureVersionCompatible();
95
+ const url = `${this.baseUrl}/api/plugins/${pluginId}/status`;
96
+ (0, log_1.logRequest)("GET", url, this.headers);
97
+ const response = await fetch(url, { headers: this.headers });
98
+ if (!response.ok)
99
+ await this.handleErrorResponse(response);
100
+ return (await response.json());
101
+ }
102
+ async create(data) {
103
+ config_1.sdkConfig.ensureVersionCompatible();
104
+ const url = `${this.baseUrl}/api/plugins/create`;
105
+ const formData = new FormData();
106
+ formData.append("plugin_id", data.pluginId);
107
+ if (data.name)
108
+ formData.append("name", data.name);
109
+ if (data.description)
110
+ formData.append("description", data.description);
111
+ if (data.author)
112
+ formData.append("author", data.author);
113
+ if (data.version)
114
+ formData.append("version", data.version);
115
+ if (data.templateId)
116
+ formData.append("template_id", data.templateId);
117
+ if (data.staticZip)
118
+ formData.append("static_zip", data.staticZip);
119
+ if (data.serverZip)
120
+ formData.append("server_zip", data.serverZip);
121
+ if (data.backendEntry)
122
+ formData.append("backend_entry", data.backendEntry);
123
+ if (data.backendWebsocket !== undefined)
124
+ formData.append("backend_websocket", String(data.backendWebsocket));
125
+ if (data.disableSdkUpdateNotice !== undefined)
126
+ formData.append("disable_sdk_update_notice", String(data.disableSdkUpdateNotice));
127
+ const uploadHeaders = { ...this.headers };
128
+ delete uploadHeaders["Content-Type"];
129
+ (0, log_1.logRequest)("POST", url, uploadHeaders);
130
+ const response = await fetch(url, {
131
+ method: "POST",
132
+ headers: uploadHeaders,
133
+ body: formData,
134
+ });
135
+ if (!response.ok)
136
+ await this.handleErrorResponse(response);
137
+ return (await response.json());
138
+ }
139
+ async delete(pluginId) {
140
+ config_1.sdkConfig.ensureVersionCompatible();
141
+ const url = `${this.baseUrl}/api/plugins/${pluginId}`;
142
+ (0, log_1.logRequest)("DELETE", url, this.headers);
143
+ const response = await fetch(url, {
144
+ method: "DELETE",
145
+ headers: this.headers,
146
+ });
147
+ if (!response.ok)
148
+ await this.handleErrorResponse(response);
149
+ return (await response.json());
150
+ }
151
+ async enable(pluginId) {
152
+ config_1.sdkConfig.ensureVersionCompatible();
153
+ const url = `${this.baseUrl}/api/plugins/${pluginId}/enable`;
154
+ (0, log_1.logRequest)("POST", url, this.headers);
155
+ const response = await fetch(url, {
156
+ method: "POST",
157
+ headers: this.headers,
158
+ });
159
+ if (!response.ok)
160
+ await this.handleErrorResponse(response);
161
+ return (await response.json());
162
+ }
163
+ async disable(pluginId) {
164
+ config_1.sdkConfig.ensureVersionCompatible();
165
+ const url = `${this.baseUrl}/api/plugins/${pluginId}/disable`;
166
+ (0, log_1.logRequest)("POST", url, this.headers);
167
+ const response = await fetch(url, {
168
+ method: "POST",
169
+ headers: this.headers,
170
+ });
171
+ if (!response.ok)
172
+ await this.handleErrorResponse(response);
173
+ return (await response.json());
174
+ }
175
+ async reload(pluginId) {
176
+ config_1.sdkConfig.ensureVersionCompatible();
177
+ const url = `${this.baseUrl}/api/plugins/${pluginId}/reload`;
178
+ (0, log_1.logRequest)("POST", url, this.headers);
179
+ const response = await fetch(url, {
180
+ method: "POST",
181
+ headers: this.headers,
182
+ });
183
+ if (!response.ok)
184
+ await this.handleErrorResponse(response);
185
+ return (await response.json());
186
+ }
187
+ async restartServer(pluginId) {
188
+ config_1.sdkConfig.ensureVersionCompatible();
189
+ const url = `${this.baseUrl}/api/plugins/${pluginId}/restart-server`;
190
+ (0, log_1.logRequest)("POST", url, this.headers);
191
+ const response = await fetch(url, {
192
+ method: "POST",
193
+ headers: this.headers,
194
+ });
195
+ if (!response.ok)
196
+ await this.handleErrorResponse(response);
197
+ return (await response.json());
198
+ }
199
+ async getServerLogs(pluginId, lines) {
200
+ config_1.sdkConfig.ensureVersionCompatible();
201
+ const url = this.buildUrl(`/api/plugins/${pluginId}/server-logs`, lines !== undefined ? { lines } : undefined);
202
+ (0, log_1.logRequest)("GET", url, this.headers);
203
+ const response = await fetch(url, { headers: this.headers });
204
+ if (!response.ok)
205
+ await this.handleErrorResponse(response);
206
+ return await response.text();
207
+ }
208
+ // ==================== 模板管理 ====================
209
+ async listTemplates() {
210
+ config_1.sdkConfig.ensureVersionCompatible();
211
+ const url = `${this.baseUrl}/api/plugins/templates`;
212
+ (0, log_1.logRequest)("GET", url, this.headers);
213
+ const response = await fetch(url, { headers: this.headers });
214
+ if (!response.ok)
215
+ await this.handleErrorResponse(response);
216
+ return (await response.json());
217
+ }
218
+ async getTemplate(templateId) {
219
+ config_1.sdkConfig.ensureVersionCompatible();
220
+ const url = `${this.baseUrl}/api/plugins/templates/${templateId}`;
221
+ (0, log_1.logRequest)("GET", url, this.headers);
222
+ const response = await fetch(url, { headers: this.headers });
223
+ if (!response.ok)
224
+ await this.handleErrorResponse(response);
225
+ return await response.json();
226
+ }
227
+ async generateFromTemplate(pluginId, templateId, options) {
228
+ config_1.sdkConfig.ensureVersionCompatible();
229
+ const url = `${this.baseUrl}/api/plugins/generate-from-template`;
230
+ const formData = new FormData();
231
+ formData.append("plugin_id", pluginId);
232
+ formData.append("template_id", templateId);
233
+ if (options?.name)
234
+ formData.append("name", options.name);
235
+ if (options?.description)
236
+ formData.append("description", options.description);
237
+ if (options?.author)
238
+ formData.append("author", options.author);
239
+ if (options?.version)
240
+ formData.append("version", options.version);
241
+ const uploadHeaders = { ...this.headers };
242
+ delete uploadHeaders["Content-Type"];
243
+ (0, log_1.logRequest)("POST", url, uploadHeaders);
244
+ const response = await fetch(url, {
245
+ method: "POST",
246
+ headers: uploadHeaders,
247
+ body: formData,
248
+ });
249
+ if (!response.ok)
250
+ await this.handleErrorResponse(response);
251
+ return await response.blob();
252
+ }
253
+ // ==================== 模板注册表(管理员) ====================
254
+ async listRegisteredTemplates(options = {}) {
255
+ config_1.sdkConfig.ensureVersionCompatible();
256
+ const url = this.buildUrl("/api/plugins/template-registry", {
257
+ page: options.page,
258
+ page_size: options.pageSize,
259
+ name: options.name,
260
+ category: options.category,
261
+ });
262
+ (0, log_1.logRequest)("GET", url, this.headers);
263
+ const response = await fetch(url, { headers: this.headers });
264
+ if (!response.ok)
265
+ await this.handleErrorResponse(response);
266
+ return (await response.json());
267
+ }
268
+ async getRegisteredTemplate(templateId) {
269
+ config_1.sdkConfig.ensureVersionCompatible();
270
+ const url = `${this.baseUrl}/api/plugins/template-registry/${templateId}`;
271
+ (0, log_1.logRequest)("GET", url, this.headers);
272
+ const response = await fetch(url, { headers: this.headers });
273
+ if (!response.ok)
274
+ await this.handleErrorResponse(response);
275
+ return (await response.json());
276
+ }
277
+ async createRegisteredTemplate(data) {
278
+ config_1.sdkConfig.ensureVersionCompatible();
279
+ const url = `${this.baseUrl}/api/plugins/template-registry`;
280
+ (0, log_1.logRequest)("POST", url, this.headers);
281
+ const response = await fetch(url, {
282
+ method: "POST",
283
+ headers: this.headers,
284
+ body: JSON.stringify({
285
+ plugin_id: data.pluginId,
286
+ name: data.name,
287
+ git_url: data.gitUrl,
288
+ description: data.description,
289
+ icon: data.icon,
290
+ category: data.category,
291
+ author: data.author,
292
+ tags: data.tags,
293
+ }),
294
+ });
295
+ if (!response.ok)
296
+ await this.handleErrorResponse(response);
297
+ return (await response.json());
298
+ }
299
+ async updateRegisteredTemplate(templateId, data) {
300
+ config_1.sdkConfig.ensureVersionCompatible();
301
+ const url = `${this.baseUrl}/api/plugins/template-registry/${templateId}`;
302
+ (0, log_1.logRequest)("PUT", url, this.headers);
303
+ const response = await fetch(url, {
304
+ method: "PUT",
305
+ headers: this.headers,
306
+ body: JSON.stringify({
307
+ name: data.name,
308
+ description: data.description,
309
+ git_url: data.gitUrl,
310
+ icon: data.icon,
311
+ category: data.category,
312
+ author: data.author,
313
+ tags: data.tags,
314
+ }),
315
+ });
316
+ if (!response.ok)
317
+ await this.handleErrorResponse(response);
318
+ return (await response.json());
319
+ }
320
+ async deleteRegisteredTemplate(templateId) {
321
+ config_1.sdkConfig.ensureVersionCompatible();
322
+ const url = `${this.baseUrl}/api/plugins/template-registry/${templateId}`;
323
+ (0, log_1.logRequest)("DELETE", url, this.headers);
324
+ const response = await fetch(url, {
325
+ method: "DELETE",
326
+ headers: this.headers,
327
+ });
328
+ if (!response.ok)
329
+ await this.handleErrorResponse(response);
330
+ return (await response.json());
331
+ }
332
+ }
333
+ exports.PluginManagementClient = PluginManagementClient;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * 模型提供商
3
3
  */
4
- export type AIModelProvider = "api2img" | "aihubmix" | "doubao" | "gemini" | "shubiaobiao" | "anthropic" | "aiping" | "openrouter";
4
+ export type AIModelProvider = "api2img" | "aihubmix" | "doubao" | "gemini" | "shubiaobiao" | "anthropic" | "aiping" | "openrouter" | "kunpo";
5
5
  /**
6
6
  * 模型端点类型
7
7
  * - openai: OpenAI 兼容 API(/v1/chat/completions 等)
@@ -11,6 +11,7 @@ exports.PROVIDER_CONFIGS = {
11
11
  gemini: { provider: "gemini", modelType: "gemini" },
12
12
  anthropic: { provider: "anthropic", modelType: "anthropic" },
13
13
  openrouter: { provider: "openrouter", modelType: "openai" },
14
+ kunpo: { provider: "kunpo", modelType: "openai" },
14
15
  };
15
16
  function getProviderConfig(provider) {
16
17
  return exports.PROVIDER_CONFIGS[provider];
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Shared Resource Client
3
+ * 平台级共享资源客户端(与 ResourceClient 的插件级 ACL 资源不同)
4
+ */
5
+ export interface SharedResourceClientConfig {
6
+ baseUrl?: string;
7
+ token?: string;
8
+ headers?: Record<string, string>;
9
+ }
10
+ export interface SharedResourceInfo {
11
+ id: number;
12
+ name: string;
13
+ description?: string;
14
+ filename: string;
15
+ file_size?: number;
16
+ content_type?: string;
17
+ tags?: string[];
18
+ category?: string;
19
+ user_id: number;
20
+ user_name?: string;
21
+ download_count?: number;
22
+ created_at: string;
23
+ updated_at?: string;
24
+ }
25
+ export interface SharedResourceListResponse {
26
+ items: SharedResourceInfo[];
27
+ total: number;
28
+ page: number;
29
+ page_size: number;
30
+ }
31
+ export interface ListSharedResourceOptions {
32
+ page?: number;
33
+ pageSize?: number;
34
+ search?: string;
35
+ category?: string;
36
+ tag?: string;
37
+ }
38
+ export interface UpdateSharedResourceData {
39
+ name?: string;
40
+ description?: string;
41
+ tags?: string[];
42
+ }
43
+ export declare class SharedResourceClient {
44
+ private baseUrl;
45
+ private headers;
46
+ constructor(config?: SharedResourceClientConfig);
47
+ private handleErrorResponse;
48
+ private buildUrl;
49
+ list(options?: ListSharedResourceOptions): Promise<SharedResourceListResponse>;
50
+ get(resourceId: number): Promise<SharedResourceInfo>;
51
+ upload(file: File | Blob, options?: {
52
+ name?: string;
53
+ description?: string;
54
+ tags?: string;
55
+ }): Promise<SharedResourceInfo>;
56
+ update(resourceId: number, data: UpdateSharedResourceData): Promise<SharedResourceInfo>;
57
+ delete(resourceId: number): Promise<{
58
+ message: string;
59
+ }>;
60
+ download(resourceId: number): Promise<Blob>;
61
+ }