@lobehub/market-sdk 0.0.8 → 0.0.10
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.d.mts +349 -50
- package/dist/index.mjs +432 -83
- package/dist/index.mjs.map +1 -1
- package/package.json +6 -3
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
|
|
3
|
+
interface PluginQueryParams {
|
|
4
|
+
page?: number;
|
|
5
|
+
pageSize?: number;
|
|
6
|
+
category?: string;
|
|
7
|
+
tags?: string;
|
|
8
|
+
q?: string;
|
|
9
|
+
sort?: 'installCount' | 'createdAt' | 'updatedAt' | 'ratingAverage';
|
|
10
|
+
order?: 'asc' | 'desc';
|
|
11
|
+
locale?: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* 更新插件信息参数
|
|
16
|
+
*/
|
|
17
|
+
interface PluginUpdateParams {
|
|
18
|
+
identifier?: string;
|
|
19
|
+
visibility?: 'public' | 'private' | 'unlisted';
|
|
20
|
+
status?: 'published' | 'draft' | 'review' | 'rejected';
|
|
21
|
+
isFeatured?: boolean;
|
|
22
|
+
tags?: string[];
|
|
23
|
+
meta?: Record<string, any>;
|
|
24
|
+
}
|
|
25
|
+
|
|
3
26
|
declare const PluginTypeEnum: z.ZodEnum<["lobe", "openai", "mcp"]>;
|
|
4
27
|
type PluginType = z.infer<typeof PluginTypeEnum>;
|
|
5
28
|
declare const ConnectionTypeEnum: z.ZodEnum<["http", "stdio"]>;
|
|
@@ -148,61 +171,346 @@ interface MarketSDKOptions {
|
|
|
148
171
|
defaultLocale?: string;
|
|
149
172
|
apiKey?: string;
|
|
150
173
|
}
|
|
174
|
+
interface Plugin {
|
|
175
|
+
id: number;
|
|
176
|
+
identifier: string;
|
|
177
|
+
name: string;
|
|
178
|
+
description: string;
|
|
179
|
+
ownerId: number;
|
|
180
|
+
type: string;
|
|
181
|
+
visibility: 'public' | 'private' | 'unlisted';
|
|
182
|
+
status: 'published' | 'draft' | 'review' | 'rejected';
|
|
183
|
+
isFeatured: boolean;
|
|
184
|
+
category: string;
|
|
185
|
+
tags: string[];
|
|
186
|
+
icon: string | null;
|
|
187
|
+
author: string | null;
|
|
188
|
+
homepage: string | null;
|
|
189
|
+
manifestVersion: string;
|
|
190
|
+
createdAt: string;
|
|
191
|
+
updatedAt: string;
|
|
192
|
+
meta: Record<string, any> | null;
|
|
193
|
+
installCount: number;
|
|
194
|
+
ratingAverage: number | null;
|
|
195
|
+
ratingCount: number;
|
|
196
|
+
reviewCount: number;
|
|
197
|
+
}
|
|
198
|
+
interface PluginVersion {
|
|
199
|
+
id: number;
|
|
200
|
+
pluginId: number;
|
|
201
|
+
version: string;
|
|
202
|
+
isLatest: boolean;
|
|
203
|
+
manifestUrl: string | null;
|
|
204
|
+
toolsCount: number;
|
|
205
|
+
promptsCount: number;
|
|
206
|
+
resourcesCount: number;
|
|
207
|
+
isValidated: boolean;
|
|
208
|
+
createdAt: string;
|
|
209
|
+
updatedAt: string;
|
|
210
|
+
manifest: PluginManifest;
|
|
211
|
+
meta: Record<string, any> | null;
|
|
212
|
+
}
|
|
213
|
+
interface AdminPluginParams {
|
|
214
|
+
status?: 'published' | 'draft' | 'review' | 'rejected';
|
|
215
|
+
visibility?: 'public' | 'private' | 'unlisted';
|
|
216
|
+
featured?: boolean;
|
|
217
|
+
ownerId?: number;
|
|
218
|
+
limit?: number;
|
|
219
|
+
offset?: number;
|
|
220
|
+
orderBy?: 'createdAt' | 'updatedAt' | 'installCount' | 'ratingAverage';
|
|
221
|
+
order?: 'asc' | 'desc';
|
|
222
|
+
}
|
|
223
|
+
interface PluginVersionCreateParams {
|
|
224
|
+
version: string;
|
|
225
|
+
manifest: PluginManifest;
|
|
226
|
+
manifestUrl?: string;
|
|
227
|
+
isLatest?: boolean;
|
|
228
|
+
isValidated?: boolean;
|
|
229
|
+
meta?: Record<string, any>;
|
|
230
|
+
}
|
|
231
|
+
interface PluginVersionUpdateParams {
|
|
232
|
+
manifestUrl?: string;
|
|
233
|
+
isValidated?: boolean;
|
|
234
|
+
meta?: Record<string, any>;
|
|
235
|
+
}
|
|
151
236
|
|
|
152
237
|
/**
|
|
153
|
-
*
|
|
238
|
+
* 基础 SDK 类
|
|
239
|
+
* 提供共享的请求逻辑和认证功能
|
|
240
|
+
*/
|
|
241
|
+
declare class BaseSDK {
|
|
242
|
+
protected baseUrl: string;
|
|
243
|
+
protected defaultLocale: string;
|
|
244
|
+
protected headers: Record<string, string>;
|
|
245
|
+
/**
|
|
246
|
+
* 创建基础 SDK 实例
|
|
247
|
+
* @param options SDK 配置选项
|
|
248
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
249
|
+
*/
|
|
250
|
+
constructor(options?: MarketSDKOptions, sharedHeaders?: Record<string, string>);
|
|
251
|
+
/**
|
|
252
|
+
* 发送请求并处理响应
|
|
253
|
+
* @param url 请求 URL
|
|
254
|
+
* @param options fetch 选项
|
|
255
|
+
* @returns 响应数据
|
|
256
|
+
*/
|
|
257
|
+
protected request<T>(url: string, options?: RequestInit): Promise<T>;
|
|
258
|
+
/**
|
|
259
|
+
* 构建查询字符串
|
|
260
|
+
* @param params 查询参数
|
|
261
|
+
* @returns 查询字符串
|
|
262
|
+
*/
|
|
263
|
+
protected buildQueryString(params: Record<string, any>): string;
|
|
264
|
+
/**
|
|
265
|
+
* 设置认证令牌
|
|
266
|
+
* @param token 认证令牌
|
|
267
|
+
*/
|
|
268
|
+
setAuthToken(token: string): void;
|
|
269
|
+
/**
|
|
270
|
+
* 清除认证令牌
|
|
271
|
+
*/
|
|
272
|
+
clearAuthToken(): void;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* 管理员服务
|
|
277
|
+
* 处理管理员相关功能
|
|
154
278
|
*/
|
|
155
|
-
declare class
|
|
156
|
-
|
|
157
|
-
|
|
279
|
+
declare class AdminService extends BaseSDK {
|
|
280
|
+
/**
|
|
281
|
+
* 创建管理员服务实例
|
|
282
|
+
* @param options SDK 配置选项
|
|
283
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
284
|
+
*/
|
|
285
|
+
constructor(options?: MarketSDKOptions, sharedHeaders?: Record<string, string>);
|
|
286
|
+
/**
|
|
287
|
+
* 导入插件清单(需要管理员权限)
|
|
288
|
+
* @param manifests 插件清单数组
|
|
289
|
+
* @param ownerId 所有者 ID
|
|
290
|
+
* @returns 导入结果
|
|
291
|
+
*/
|
|
292
|
+
importManifests(manifests: PluginManifest[], ownerId?: number): Promise<{
|
|
293
|
+
success: number;
|
|
294
|
+
failed: number;
|
|
295
|
+
}>;
|
|
296
|
+
/**
|
|
297
|
+
* 获取插件列表
|
|
298
|
+
* @param params 查询参数
|
|
299
|
+
* @returns 插件列表响应
|
|
300
|
+
*/
|
|
301
|
+
getPlugins(params?: AdminPluginParams): Promise<{
|
|
302
|
+
data: Plugin[];
|
|
303
|
+
}>;
|
|
304
|
+
/**
|
|
305
|
+
* 获取单个插件(含所有版本)
|
|
306
|
+
* @param id 插件 ID
|
|
307
|
+
* @returns 插件(含版本)
|
|
308
|
+
*/
|
|
309
|
+
getPlugin(id: number): Promise<{
|
|
310
|
+
data: Plugin & {
|
|
311
|
+
versions: PluginVersion[];
|
|
312
|
+
};
|
|
313
|
+
}>;
|
|
314
|
+
/**
|
|
315
|
+
* 更新插件信息
|
|
316
|
+
* @param id 插件 ID
|
|
317
|
+
* @param data 插件更新数据
|
|
318
|
+
* @returns 更新后的插件
|
|
319
|
+
*/
|
|
320
|
+
updatePlugin(id: number, data: PluginUpdateParams): Promise<{
|
|
321
|
+
data: Plugin;
|
|
322
|
+
}>;
|
|
323
|
+
/**
|
|
324
|
+
* 更新插件状态
|
|
325
|
+
* @param id 插件 ID
|
|
326
|
+
* @param status 新状态
|
|
327
|
+
* @returns 成功响应
|
|
328
|
+
*/
|
|
329
|
+
updatePluginStatus(id: number, status: 'published' | 'draft' | 'review' | 'rejected'): Promise<{
|
|
330
|
+
success: boolean;
|
|
331
|
+
message: string;
|
|
332
|
+
}>;
|
|
333
|
+
/**
|
|
334
|
+
* 删除插件
|
|
335
|
+
* @param id 插件 ID
|
|
336
|
+
* @returns 成功响应
|
|
337
|
+
*/
|
|
338
|
+
deletePlugin(id: number): Promise<{
|
|
339
|
+
success: boolean;
|
|
340
|
+
message: string;
|
|
341
|
+
}>;
|
|
342
|
+
/**
|
|
343
|
+
* 获取插件版本列表
|
|
344
|
+
* @param pluginId 插件 ID
|
|
345
|
+
* @returns 插件版本列表
|
|
346
|
+
*/
|
|
347
|
+
getPluginVersions(pluginId: number): Promise<{
|
|
348
|
+
data: PluginVersion[];
|
|
349
|
+
}>;
|
|
350
|
+
/**
|
|
351
|
+
* 获取单个插件版本
|
|
352
|
+
* @param pluginId 插件 ID
|
|
353
|
+
* @param versionId 版本 ID
|
|
354
|
+
* @returns 插件版本
|
|
355
|
+
*/
|
|
356
|
+
getPluginVersion(pluginId: number, versionId: number): Promise<{
|
|
357
|
+
data: PluginVersion;
|
|
358
|
+
}>;
|
|
359
|
+
/**
|
|
360
|
+
* 创建插件版本
|
|
361
|
+
* @param pluginId 插件 ID
|
|
362
|
+
* @param data 版本创建数据
|
|
363
|
+
* @returns 创建的版本
|
|
364
|
+
*/
|
|
365
|
+
createPluginVersion(pluginId: number, data: PluginVersionCreateParams): Promise<{
|
|
366
|
+
data: PluginVersion;
|
|
367
|
+
}>;
|
|
368
|
+
/**
|
|
369
|
+
* 更新插件版本
|
|
370
|
+
* @param pluginId 插件 ID
|
|
371
|
+
* @param versionId 版本 ID
|
|
372
|
+
* @param data 版本更新数据
|
|
373
|
+
* @returns 更新后的版本
|
|
374
|
+
*/
|
|
375
|
+
updatePluginVersion(pluginId: number, versionId: number, data: PluginVersionUpdateParams): Promise<{
|
|
376
|
+
data: PluginVersion;
|
|
377
|
+
}>;
|
|
378
|
+
/**
|
|
379
|
+
* 删除插件版本
|
|
380
|
+
* @param pluginId 插件 ID
|
|
381
|
+
* @param versionId 版本 ID
|
|
382
|
+
* @returns 成功响应
|
|
383
|
+
*/
|
|
384
|
+
deletePluginVersion(pluginId: number, versionId: number): Promise<{
|
|
385
|
+
success: boolean;
|
|
386
|
+
message: string;
|
|
387
|
+
}>;
|
|
388
|
+
/**
|
|
389
|
+
* 设置插件版本为最新版本
|
|
390
|
+
* @param pluginId 插件 ID
|
|
391
|
+
* @param versionId 版本 ID
|
|
392
|
+
* @returns 成功响应
|
|
393
|
+
*/
|
|
394
|
+
setPluginVersionAsLatest(pluginId: number, versionId: number): Promise<{
|
|
395
|
+
success: boolean;
|
|
396
|
+
message: string;
|
|
397
|
+
}>;
|
|
398
|
+
/**
|
|
399
|
+
* 获取所有系统依赖项
|
|
400
|
+
* @returns 系统依赖项列表
|
|
401
|
+
*/
|
|
402
|
+
getSystemDependencies(): Promise<{
|
|
403
|
+
data: SystemDependency[];
|
|
404
|
+
}>;
|
|
405
|
+
/**
|
|
406
|
+
* 获取特定系统依赖项
|
|
407
|
+
* @param id 依赖项 ID
|
|
408
|
+
* @returns 系统依赖项
|
|
409
|
+
*/
|
|
410
|
+
getSystemDependency(id: number): Promise<{
|
|
411
|
+
data: SystemDependency;
|
|
412
|
+
}>;
|
|
413
|
+
/**
|
|
414
|
+
* 创建系统依赖项
|
|
415
|
+
* @param data 依赖项创建数据
|
|
416
|
+
* @returns 创建的依赖项
|
|
417
|
+
*/
|
|
418
|
+
createSystemDependency(data: Omit<SystemDependency, 'id'>): Promise<{
|
|
419
|
+
data: SystemDependency;
|
|
420
|
+
}>;
|
|
421
|
+
/**
|
|
422
|
+
* 更新系统依赖项
|
|
423
|
+
* @param id 依赖项 ID
|
|
424
|
+
* @param data 依赖项更新数据
|
|
425
|
+
* @returns 更新后的依赖项
|
|
426
|
+
*/
|
|
427
|
+
updateSystemDependency(id: number, data: Partial<SystemDependency>): Promise<{
|
|
428
|
+
data: SystemDependency;
|
|
429
|
+
}>;
|
|
430
|
+
/**
|
|
431
|
+
* 删除系统依赖项
|
|
432
|
+
* @param id 依赖项 ID
|
|
433
|
+
* @returns 成功响应
|
|
434
|
+
*/
|
|
435
|
+
deleteSystemDependency(id: number): Promise<{
|
|
436
|
+
success: boolean;
|
|
437
|
+
message: string;
|
|
438
|
+
}>;
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/**
|
|
442
|
+
* 插件服务
|
|
443
|
+
* 处理插件相关功能
|
|
444
|
+
*/
|
|
445
|
+
declare class PluginsService extends BaseSDK {
|
|
446
|
+
/**
|
|
447
|
+
* 创建插件服务实例
|
|
448
|
+
* @param options SDK 配置选项
|
|
449
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
450
|
+
*/
|
|
451
|
+
constructor(options?: MarketSDKOptions, sharedHeaders?: Record<string, string>);
|
|
452
|
+
/**
|
|
453
|
+
* 获取插件列表
|
|
454
|
+
* @param params 查询参数
|
|
455
|
+
* @returns 插件列表响应
|
|
456
|
+
*/
|
|
457
|
+
getPluginList(params?: PluginQueryParams): Promise<PluginListResponse>;
|
|
458
|
+
/**
|
|
459
|
+
* 获取插件清单
|
|
460
|
+
* @param identifier 插件标识符
|
|
461
|
+
* @param locale 语言
|
|
462
|
+
* @param version 版本
|
|
463
|
+
* @returns 插件清单
|
|
464
|
+
*/
|
|
465
|
+
getPluginManifest(identifier: string, locale?: string, version?: string): Promise<PluginManifest>;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* 发现服务
|
|
470
|
+
* 处理服务发现功能
|
|
471
|
+
*/
|
|
472
|
+
declare class DiscoveryService extends BaseSDK {
|
|
158
473
|
private discoveryDoc?;
|
|
159
|
-
private headers;
|
|
160
474
|
/**
|
|
161
|
-
*
|
|
162
|
-
* @param options SDK
|
|
475
|
+
* 创建发现服务实例
|
|
476
|
+
* @param options SDK 配置选项
|
|
477
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
163
478
|
*/
|
|
164
|
-
constructor(options?: MarketSDKOptions);
|
|
479
|
+
constructor(options?: MarketSDKOptions, sharedHeaders?: Record<string, string>);
|
|
165
480
|
/**
|
|
166
|
-
*
|
|
167
|
-
* @
|
|
168
|
-
* @param options fetch options
|
|
169
|
-
* @returns Response data
|
|
481
|
+
* 获取市场服务发现文档
|
|
482
|
+
* @returns 服务发现文档
|
|
170
483
|
*/
|
|
171
|
-
|
|
484
|
+
getDiscoveryDocument(): Promise<DiscoveryDocument>;
|
|
485
|
+
}
|
|
486
|
+
|
|
487
|
+
/**
|
|
488
|
+
* LobeHub Market SDK Client
|
|
489
|
+
* 采用组合模式组合各个领域服务
|
|
490
|
+
*/
|
|
491
|
+
declare class MarketSDK extends BaseSDK {
|
|
172
492
|
/**
|
|
173
|
-
*
|
|
174
|
-
* @param params Query parameters
|
|
175
|
-
* @returns Query string
|
|
493
|
+
* 插件服务
|
|
176
494
|
*/
|
|
177
|
-
|
|
495
|
+
readonly plugins: PluginsService;
|
|
496
|
+
/**
|
|
497
|
+
* 管理员服务
|
|
498
|
+
*/
|
|
499
|
+
readonly admin: AdminService;
|
|
500
|
+
/**
|
|
501
|
+
* 发现服务
|
|
502
|
+
*/
|
|
503
|
+
private readonly discovery;
|
|
504
|
+
/**
|
|
505
|
+
* Create MarketSDK instance
|
|
506
|
+
* @param options SDK configuration options
|
|
507
|
+
*/
|
|
508
|
+
constructor(options?: MarketSDKOptions);
|
|
178
509
|
/**
|
|
179
510
|
* Get market service discovery document
|
|
180
511
|
* @returns Service discovery document
|
|
181
512
|
*/
|
|
182
513
|
getDiscoveryDocument(): Promise<DiscoveryDocument>;
|
|
183
|
-
/**
|
|
184
|
-
* Get plugin list
|
|
185
|
-
* @param params Query parameters
|
|
186
|
-
* @returns Plugin list response
|
|
187
|
-
*/
|
|
188
|
-
getPluginList(params?: {
|
|
189
|
-
page?: number;
|
|
190
|
-
pageSize?: number;
|
|
191
|
-
category?: string;
|
|
192
|
-
tags?: string;
|
|
193
|
-
q?: string;
|
|
194
|
-
sort?: 'installCount' | 'createdAt' | 'updatedAt' | 'ratingAverage';
|
|
195
|
-
order?: 'asc' | 'desc';
|
|
196
|
-
locale?: string;
|
|
197
|
-
}): Promise<PluginListResponse>;
|
|
198
|
-
/**
|
|
199
|
-
* Get plugin manifest
|
|
200
|
-
* @param identifier Plugin identifier
|
|
201
|
-
* @param locale Language
|
|
202
|
-
* @param version Version
|
|
203
|
-
* @returns Plugin manifest
|
|
204
|
-
*/
|
|
205
|
-
getPluginManifest(identifier: string, locale?: string, version?: string): Promise<PluginManifest>;
|
|
206
514
|
/**
|
|
207
515
|
* Import plugin manifests (requires admin privileges)
|
|
208
516
|
* @param manifests Plugin manifest array
|
|
@@ -213,15 +521,6 @@ declare class MarketSDK {
|
|
|
213
521
|
success: number;
|
|
214
522
|
failed: number;
|
|
215
523
|
}>;
|
|
216
|
-
/**
|
|
217
|
-
* Set authentication token
|
|
218
|
-
* @param token Authentication token
|
|
219
|
-
*/
|
|
220
|
-
setAuthToken(token: string): void;
|
|
221
|
-
/**
|
|
222
|
-
* Clear authentication token
|
|
223
|
-
*/
|
|
224
|
-
clearAuthToken(): void;
|
|
225
524
|
}
|
|
226
525
|
|
|
227
|
-
export { type ConnectionConfig, type ConnectionType, ConnectionTypeEnum, type DeploymentOption, type DiscoveryDocument, type InstallationDetails, type InstallationMethod, InstallationMethodEnum, MarketSDK, type MarketSDKOptions, type PluginCompatibility, type PluginItem, type PluginListResponse, type PluginManifest, type PluginPrompt, type PluginResource, type PluginTool, type PluginType, PluginTypeEnum, type PromptArgument, type SystemDependency };
|
|
526
|
+
export { type AdminPluginParams, AdminService, type ConnectionConfig, type ConnectionType, ConnectionTypeEnum, type DeploymentOption, type DiscoveryDocument, DiscoveryService, type InstallationDetails, type InstallationMethod, InstallationMethodEnum, MarketSDK, type MarketSDKOptions, type Plugin, type PluginCompatibility, type PluginItem, type PluginListResponse, type PluginManifest, type PluginPrompt, type PluginQueryParams, type PluginResource, type PluginTool, type PluginType, PluginTypeEnum, type PluginUpdateParams, type PluginVersion, type PluginVersionCreateParams, type PluginVersionUpdateParams, PluginsService, type PromptArgument, type SystemDependency };
|
package/dist/index.mjs
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
// src/types.ts
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
var PluginTypeEnum = z.enum(["lobe", "openai", "mcp"]);
|
|
4
|
-
var ConnectionTypeEnum = z.enum(["http", "stdio"]);
|
|
5
|
-
var InstallationMethodEnum = z.enum([
|
|
6
|
-
"npm",
|
|
7
|
-
"docker",
|
|
8
|
-
"git",
|
|
9
|
-
"binaryUrl",
|
|
10
|
-
"manual",
|
|
11
|
-
"none"
|
|
12
|
-
]);
|
|
13
|
-
|
|
14
1
|
// src/market-sdk.ts
|
|
2
|
+
import debug5 from "debug";
|
|
3
|
+
|
|
4
|
+
// src/core/BaseSDK.ts
|
|
15
5
|
import debug from "debug";
|
|
16
|
-
var log = debug("lobe-market-sdk");
|
|
17
|
-
var
|
|
6
|
+
var log = debug("lobe-market-sdk:core");
|
|
7
|
+
var BaseSDK = class {
|
|
18
8
|
/**
|
|
19
|
-
*
|
|
20
|
-
* @param options SDK
|
|
9
|
+
* 创建基础 SDK 实例
|
|
10
|
+
* @param options SDK 配置选项
|
|
11
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
21
12
|
*/
|
|
22
|
-
constructor(options = {}) {
|
|
13
|
+
constructor(options = {}, sharedHeaders) {
|
|
23
14
|
this.baseUrl = options.baseUrl || "https://market.lobehub.com/api";
|
|
24
|
-
this.defaultLocale = options.defaultLocale || "
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
15
|
+
this.defaultLocale = options.defaultLocale || "en-US";
|
|
16
|
+
if (sharedHeaders) {
|
|
17
|
+
this.headers = sharedHeaders;
|
|
18
|
+
log("Using shared headers object");
|
|
19
|
+
} else {
|
|
20
|
+
this.headers = {
|
|
21
|
+
"Content-Type": "application/json",
|
|
22
|
+
...options.apiKey ? { Authorization: `Bearer ${options.apiKey}` } : {}
|
|
23
|
+
};
|
|
24
|
+
log("Created new headers object");
|
|
25
|
+
}
|
|
26
|
+
log("BaseSDK instance created: %O", {
|
|
27
|
+
baseUrl: this.baseUrl,
|
|
28
|
+
defaultLocale: this.defaultLocale
|
|
29
|
+
});
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
|
-
*
|
|
33
|
-
* @param url
|
|
34
|
-
* @param options fetch
|
|
35
|
-
* @returns
|
|
32
|
+
* 发送请求并处理响应
|
|
33
|
+
* @param url 请求 URL
|
|
34
|
+
* @param options fetch 选项
|
|
35
|
+
* @returns 响应数据
|
|
36
36
|
*/
|
|
37
37
|
async request(url, options = {}) {
|
|
38
38
|
log("Sending request: %s", `${this.baseUrl}${url}`);
|
|
@@ -52,102 +52,451 @@ var MarketSDK = class {
|
|
|
52
52
|
return response.json();
|
|
53
53
|
}
|
|
54
54
|
/**
|
|
55
|
-
*
|
|
56
|
-
* @param params
|
|
57
|
-
* @returns
|
|
55
|
+
* 构建查询字符串
|
|
56
|
+
* @param params 查询参数
|
|
57
|
+
* @returns 查询字符串
|
|
58
58
|
*/
|
|
59
59
|
buildQueryString(params) {
|
|
60
60
|
const query = Object.entries(params).filter(([_, value]) => value !== void 0 && value !== null).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`).join("&");
|
|
61
61
|
return query ? `?${query}` : "";
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
|
-
*
|
|
65
|
-
* @
|
|
64
|
+
* 设置认证令牌
|
|
65
|
+
* @param token 认证令牌
|
|
66
66
|
*/
|
|
67
|
-
|
|
68
|
-
log("
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
67
|
+
setAuthToken(token) {
|
|
68
|
+
log("Setting authentication token");
|
|
69
|
+
this.headers.Authorization = `Bearer ${token}`;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 清除认证令牌
|
|
73
|
+
*/
|
|
74
|
+
clearAuthToken() {
|
|
75
|
+
log("Clearing authentication token");
|
|
76
|
+
delete this.headers.Authorization;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// src/services/AdminService.ts
|
|
81
|
+
import debug2 from "debug";
|
|
82
|
+
var log2 = debug2("lobe-market-sdk:admin");
|
|
83
|
+
var AdminService = class extends BaseSDK {
|
|
84
|
+
/**
|
|
85
|
+
* 创建管理员服务实例
|
|
86
|
+
* @param options SDK 配置选项
|
|
87
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
88
|
+
*/
|
|
89
|
+
constructor(options = {}, sharedHeaders) {
|
|
90
|
+
super(options, sharedHeaders);
|
|
91
|
+
log2("AdminService instance created");
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* 导入插件清单(需要管理员权限)
|
|
95
|
+
* @param manifests 插件清单数组
|
|
96
|
+
* @param ownerId 所有者 ID
|
|
97
|
+
* @returns 导入结果
|
|
98
|
+
*/
|
|
99
|
+
async importManifests(manifests, ownerId) {
|
|
100
|
+
log2(`\u5F00\u59CB\u6279\u91CF\u5BFC\u5165 ${manifests.length} \u4E2A\u6E05\u5355`);
|
|
101
|
+
if (ownerId) {
|
|
102
|
+
log2(`\u4F7F\u7528\u6307\u5B9A\u7684\u6240\u6709\u8005 ID: ${ownerId}`);
|
|
72
103
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
104
|
+
const response = await this.request(
|
|
105
|
+
"/admin/plugins/import",
|
|
106
|
+
{
|
|
107
|
+
method: "POST",
|
|
108
|
+
body: JSON.stringify({
|
|
109
|
+
manifests,
|
|
110
|
+
ownerId
|
|
111
|
+
})
|
|
112
|
+
}
|
|
113
|
+
);
|
|
114
|
+
log2(`\u6279\u91CF\u5BFC\u5165\u5B8C\u6210: ${response.data.success} \u4E2A\u6210\u529F, ${response.data.failed} \u4E2A\u5931\u8D25`);
|
|
115
|
+
return response.data;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* 获取插件列表
|
|
119
|
+
* @param params 查询参数
|
|
120
|
+
* @returns 插件列表响应
|
|
121
|
+
*/
|
|
122
|
+
async getPlugins(params = {}) {
|
|
123
|
+
log2("Getting plugins with params: %O", params);
|
|
124
|
+
const queryString = this.buildQueryString(params);
|
|
125
|
+
const url = `/admin/plugins${queryString ? `?${queryString}` : ""}`;
|
|
126
|
+
const result = await this.request(url);
|
|
127
|
+
log2("Retrieved %d plugins", result.data.length);
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* 获取单个插件(含所有版本)
|
|
132
|
+
* @param id 插件 ID
|
|
133
|
+
* @returns 插件(含版本)
|
|
134
|
+
*/
|
|
135
|
+
async getPlugin(id) {
|
|
136
|
+
log2("\u83B7\u53D6\u63D2\u4EF6\u8BE6\u60C5\uFF08\u7BA1\u7406\u5458\uFF09: %d", id);
|
|
137
|
+
const result = await this.request(
|
|
138
|
+
`/admin/plugins/${id}`
|
|
139
|
+
);
|
|
140
|
+
log2("\u5DF2\u83B7\u53D6\u63D2\u4EF6\uFF08\u5171 %d \u4E2A\u7248\u672C\uFF09", result.data.versions.length);
|
|
141
|
+
return result;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* 更新插件信息
|
|
145
|
+
* @param id 插件 ID
|
|
146
|
+
* @param data 插件更新数据
|
|
147
|
+
* @returns 更新后的插件
|
|
148
|
+
*/
|
|
149
|
+
async updatePlugin(id, data) {
|
|
150
|
+
log2("\u66F4\u65B0\u63D2\u4EF6: %d\uFF0C\u6570\u636E: %O", id, data);
|
|
151
|
+
const result = await this.request(`/admin/plugins/${id}`, {
|
|
152
|
+
method: "PUT",
|
|
153
|
+
body: JSON.stringify(data)
|
|
154
|
+
});
|
|
155
|
+
log2("\u63D2\u4EF6\u66F4\u65B0\u6210\u529F");
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* 更新插件状态
|
|
160
|
+
* @param id 插件 ID
|
|
161
|
+
* @param status 新状态
|
|
162
|
+
* @returns 成功响应
|
|
163
|
+
*/
|
|
164
|
+
async updatePluginStatus(id, status) {
|
|
165
|
+
log2("\u66F4\u65B0\u63D2\u4EF6\u72B6\u6001: %d \u4E3A %s", id, status);
|
|
166
|
+
const result = await this.request(
|
|
167
|
+
`/admin/plugins/${id}/status`,
|
|
168
|
+
{
|
|
169
|
+
method: "PATCH",
|
|
170
|
+
body: JSON.stringify({ status })
|
|
171
|
+
}
|
|
172
|
+
);
|
|
173
|
+
log2("\u63D2\u4EF6\u72B6\u6001\u66F4\u65B0\u6210\u529F");
|
|
174
|
+
return result;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* 删除插件
|
|
178
|
+
* @param id 插件 ID
|
|
179
|
+
* @returns 成功响应
|
|
180
|
+
*/
|
|
181
|
+
async deletePlugin(id) {
|
|
182
|
+
log2("\u5220\u9664\u63D2\u4EF6: %d", id);
|
|
183
|
+
const result = await this.request(
|
|
184
|
+
`/admin/plugins/${id}`,
|
|
185
|
+
{ method: "DELETE" }
|
|
186
|
+
);
|
|
187
|
+
log2("\u63D2\u4EF6\u5220\u9664\u6210\u529F");
|
|
188
|
+
return result;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* 获取插件版本列表
|
|
192
|
+
* @param pluginId 插件 ID
|
|
193
|
+
* @returns 插件版本列表
|
|
194
|
+
*/
|
|
195
|
+
async getPluginVersions(pluginId) {
|
|
196
|
+
log2("Getting plugin versions: pluginId=%d", pluginId);
|
|
197
|
+
const result = await this.request(
|
|
198
|
+
`/admin/plugins/${pluginId}/versions`
|
|
199
|
+
);
|
|
200
|
+
log2("Retrieved %d versions", result.data.length);
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* 获取单个插件版本
|
|
205
|
+
* @param pluginId 插件 ID
|
|
206
|
+
* @param versionId 版本 ID
|
|
207
|
+
* @returns 插件版本
|
|
208
|
+
*/
|
|
209
|
+
async getPluginVersion(pluginId, versionId) {
|
|
210
|
+
log2("Getting version details: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
211
|
+
const result = await this.request(
|
|
212
|
+
`/admin/plugins/${pluginId}/versions/${versionId}`
|
|
213
|
+
);
|
|
214
|
+
log2("Version details retrieved");
|
|
215
|
+
return result;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* 创建插件版本
|
|
219
|
+
* @param pluginId 插件 ID
|
|
220
|
+
* @param data 版本创建数据
|
|
221
|
+
* @returns 创建的版本
|
|
222
|
+
*/
|
|
223
|
+
async createPluginVersion(pluginId, data) {
|
|
224
|
+
log2("Creating new version: pluginId=%d", pluginId);
|
|
225
|
+
const result = await this.request(
|
|
226
|
+
`/admin/plugins/${pluginId}/versions`,
|
|
227
|
+
{
|
|
228
|
+
method: "POST",
|
|
229
|
+
body: JSON.stringify(data)
|
|
230
|
+
}
|
|
231
|
+
);
|
|
232
|
+
log2("Plugin version created successfully");
|
|
233
|
+
return result;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* 更新插件版本
|
|
237
|
+
* @param pluginId 插件 ID
|
|
238
|
+
* @param versionId 版本 ID
|
|
239
|
+
* @param data 版本更新数据
|
|
240
|
+
* @returns 更新后的版本
|
|
241
|
+
*/
|
|
242
|
+
async updatePluginVersion(pluginId, versionId, data) {
|
|
243
|
+
log2("Updating version: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
244
|
+
const result = await this.request(
|
|
245
|
+
`/admin/plugins/${pluginId}/versions/${versionId}`,
|
|
246
|
+
{
|
|
247
|
+
method: "PUT",
|
|
248
|
+
body: JSON.stringify(data)
|
|
249
|
+
}
|
|
250
|
+
);
|
|
251
|
+
log2("\u63D2\u4EF6\u7248\u672C\u66F4\u65B0\u6210\u529F");
|
|
252
|
+
return result;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* 删除插件版本
|
|
256
|
+
* @param pluginId 插件 ID
|
|
257
|
+
* @param versionId 版本 ID
|
|
258
|
+
* @returns 成功响应
|
|
259
|
+
*/
|
|
260
|
+
async deletePluginVersion(pluginId, versionId) {
|
|
261
|
+
log2("\u5220\u9664\u7248\u672C: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
262
|
+
const result = await this.request(
|
|
263
|
+
`/admin/plugins/${pluginId}/versions/${versionId}`,
|
|
264
|
+
{ method: "DELETE" }
|
|
265
|
+
);
|
|
266
|
+
log2("\u63D2\u4EF6\u7248\u672C\u5220\u9664\u6210\u529F");
|
|
267
|
+
return result;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* 设置插件版本为最新版本
|
|
271
|
+
* @param pluginId 插件 ID
|
|
272
|
+
* @param versionId 版本 ID
|
|
273
|
+
* @returns 成功响应
|
|
274
|
+
*/
|
|
275
|
+
async setPluginVersionAsLatest(pluginId, versionId) {
|
|
276
|
+
log2("Setting version as latest: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
277
|
+
const result = await this.request(
|
|
278
|
+
`/admin/plugins/${pluginId}/versions/${versionId}/latest`,
|
|
279
|
+
{ method: "POST" }
|
|
280
|
+
);
|
|
281
|
+
log2("Version set as latest");
|
|
282
|
+
return result;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* 获取所有系统依赖项
|
|
286
|
+
* @returns 系统依赖项列表
|
|
287
|
+
*/
|
|
288
|
+
async getSystemDependencies() {
|
|
289
|
+
log2("Getting all system dependencies");
|
|
290
|
+
const result = await this.request(`/admin/plugins/dependencies`);
|
|
291
|
+
log2("Retrieved %d system dependencies", result.data.length);
|
|
292
|
+
return result;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* 获取特定系统依赖项
|
|
296
|
+
* @param id 依赖项 ID
|
|
297
|
+
* @returns 系统依赖项
|
|
298
|
+
*/
|
|
299
|
+
async getSystemDependency(id) {
|
|
300
|
+
log2("Getting system dependency details: %d", id);
|
|
301
|
+
const result = await this.request(
|
|
302
|
+
`/admin/plugins/dependencies/${id}`
|
|
303
|
+
);
|
|
304
|
+
log2("System dependency details retrieved");
|
|
305
|
+
return result;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* 创建系统依赖项
|
|
309
|
+
* @param data 依赖项创建数据
|
|
310
|
+
* @returns 创建的依赖项
|
|
311
|
+
*/
|
|
312
|
+
async createSystemDependency(data) {
|
|
313
|
+
log2("Creating system dependency: %O", data);
|
|
314
|
+
const result = await this.request(`/admin/plugins/dependencies`, {
|
|
315
|
+
method: "POST",
|
|
316
|
+
body: JSON.stringify(data)
|
|
317
|
+
});
|
|
318
|
+
log2("System dependency created successfully");
|
|
319
|
+
return result;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* 更新系统依赖项
|
|
323
|
+
* @param id 依赖项 ID
|
|
324
|
+
* @param data 依赖项更新数据
|
|
325
|
+
* @returns 更新后的依赖项
|
|
326
|
+
*/
|
|
327
|
+
async updateSystemDependency(id, data) {
|
|
328
|
+
log2("Updating system dependency: %d, data: %O", id, data);
|
|
329
|
+
const result = await this.request(
|
|
330
|
+
`/admin/plugins/dependencies/${id}`,
|
|
331
|
+
{
|
|
332
|
+
method: "PUT",
|
|
333
|
+
body: JSON.stringify(data)
|
|
334
|
+
}
|
|
335
|
+
);
|
|
336
|
+
log2("System dependency updated successfully");
|
|
337
|
+
return result;
|
|
76
338
|
}
|
|
77
339
|
/**
|
|
78
|
-
*
|
|
79
|
-
* @param
|
|
80
|
-
* @returns
|
|
340
|
+
* 删除系统依赖项
|
|
341
|
+
* @param id 依赖项 ID
|
|
342
|
+
* @returns 成功响应
|
|
343
|
+
*/
|
|
344
|
+
async deleteSystemDependency(id) {
|
|
345
|
+
log2("\u5220\u9664\u7CFB\u7EDF\u4F9D\u8D56\u9879: %d", id);
|
|
346
|
+
const result = await this.request(
|
|
347
|
+
`/admin/plugins/dependencies/${id}`,
|
|
348
|
+
{ method: "DELETE" }
|
|
349
|
+
);
|
|
350
|
+
log2("\u7CFB\u7EDF\u4F9D\u8D56\u9879\u5220\u9664\u6210\u529F");
|
|
351
|
+
return result;
|
|
352
|
+
}
|
|
353
|
+
};
|
|
354
|
+
|
|
355
|
+
// src/services/PluginsService.ts
|
|
356
|
+
import debug3 from "debug";
|
|
357
|
+
var log3 = debug3("lobe-market-sdk:plugins");
|
|
358
|
+
var PluginsService = class extends BaseSDK {
|
|
359
|
+
/**
|
|
360
|
+
* 创建插件服务实例
|
|
361
|
+
* @param options SDK 配置选项
|
|
362
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
363
|
+
*/
|
|
364
|
+
constructor(options = {}, sharedHeaders) {
|
|
365
|
+
super(options, sharedHeaders);
|
|
366
|
+
log3("PluginsService instance created");
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* 获取插件列表
|
|
370
|
+
* @param params 查询参数
|
|
371
|
+
* @returns 插件列表响应
|
|
81
372
|
*/
|
|
82
373
|
async getPluginList(params = {}) {
|
|
83
374
|
const locale = params.locale || this.defaultLocale;
|
|
84
375
|
const queryParams = { ...params, locale };
|
|
85
376
|
const queryString = this.buildQueryString(queryParams);
|
|
86
|
-
|
|
377
|
+
log3("Getting plugin list: %O", queryParams);
|
|
87
378
|
const result = await this.request(`/v1/plugins${queryString}`);
|
|
88
|
-
|
|
379
|
+
log3("Retrieved %d plugins", result.items.length);
|
|
89
380
|
return result;
|
|
90
381
|
}
|
|
91
382
|
/**
|
|
92
|
-
*
|
|
93
|
-
* @param identifier
|
|
94
|
-
* @param locale
|
|
95
|
-
* @param version
|
|
96
|
-
* @returns
|
|
383
|
+
* 获取插件清单
|
|
384
|
+
* @param identifier 插件标识符
|
|
385
|
+
* @param locale 语言
|
|
386
|
+
* @param version 版本
|
|
387
|
+
* @returns 插件清单
|
|
97
388
|
*/
|
|
98
389
|
async getPluginManifest(identifier, locale, version) {
|
|
99
|
-
|
|
390
|
+
log3("Getting plugin manifest: %O", { identifier, version, locale });
|
|
100
391
|
const localeParam = locale || this.defaultLocale;
|
|
101
392
|
const params = { locale: localeParam };
|
|
102
393
|
if (version) {
|
|
103
394
|
params.version = version;
|
|
104
395
|
}
|
|
105
396
|
const queryString = this.buildQueryString(params);
|
|
106
|
-
const manifest = await this.request(
|
|
107
|
-
|
|
397
|
+
const manifest = await this.request(
|
|
398
|
+
`/v1/plugins/${identifier}/manifest${queryString}`
|
|
399
|
+
);
|
|
400
|
+
log3("Plugin manifest successfully retrieved: %s", identifier);
|
|
108
401
|
return manifest;
|
|
109
402
|
}
|
|
403
|
+
};
|
|
404
|
+
|
|
405
|
+
// src/services/DiscoveryService.ts
|
|
406
|
+
import debug4 from "debug";
|
|
407
|
+
var log4 = debug4("lobe-market-sdk:discovery");
|
|
408
|
+
var DiscoveryService = class extends BaseSDK {
|
|
110
409
|
/**
|
|
111
|
-
*
|
|
112
|
-
* @param
|
|
113
|
-
* @param
|
|
114
|
-
* @returns Import result
|
|
410
|
+
* 创建发现服务实例
|
|
411
|
+
* @param options SDK 配置选项
|
|
412
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
115
413
|
*/
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
414
|
+
constructor(options = {}, sharedHeaders) {
|
|
415
|
+
super(options, sharedHeaders);
|
|
416
|
+
log4("DiscoveryService instance created");
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* 获取市场服务发现文档
|
|
420
|
+
* @returns 服务发现文档
|
|
421
|
+
*/
|
|
422
|
+
async getDiscoveryDocument() {
|
|
423
|
+
log4("Fetching discovery document");
|
|
424
|
+
if (this.discoveryDoc) {
|
|
425
|
+
log4("Returning cached discovery document");
|
|
426
|
+
return this.discoveryDoc;
|
|
120
427
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
manifests,
|
|
125
|
-
ownerId
|
|
126
|
-
})
|
|
127
|
-
});
|
|
128
|
-
log(`Batch import completed: ${response.data.success} successful, ${response.data.failed} failed`);
|
|
129
|
-
return response.data;
|
|
428
|
+
this.discoveryDoc = await this.request("/market/.well-known/discovery");
|
|
429
|
+
log4("Discovery document successfully fetched");
|
|
430
|
+
return this.discoveryDoc;
|
|
130
431
|
}
|
|
432
|
+
};
|
|
433
|
+
|
|
434
|
+
// src/market-sdk.ts
|
|
435
|
+
var log5 = debug5("lobe-market-sdk");
|
|
436
|
+
var MarketSDK = class extends BaseSDK {
|
|
131
437
|
/**
|
|
132
|
-
*
|
|
133
|
-
* @param
|
|
438
|
+
* Create MarketSDK instance
|
|
439
|
+
* @param options SDK configuration options
|
|
134
440
|
*/
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
441
|
+
constructor(options = {}) {
|
|
442
|
+
super(options);
|
|
443
|
+
log5("MarketSDK instance created");
|
|
444
|
+
this.plugins = new PluginsService(options, this.headers);
|
|
445
|
+
this.admin = new AdminService(options, this.headers);
|
|
446
|
+
this.discovery = new DiscoveryService(options, this.headers);
|
|
138
447
|
}
|
|
139
448
|
/**
|
|
140
|
-
*
|
|
449
|
+
* Get market service discovery document
|
|
450
|
+
* @returns Service discovery document
|
|
141
451
|
*/
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
452
|
+
async getDiscoveryDocument() {
|
|
453
|
+
return this.discovery.getDiscoveryDocument();
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* Import plugin manifests (requires admin privileges)
|
|
457
|
+
* @param manifests Plugin manifest array
|
|
458
|
+
* @param ownerId Owner ID
|
|
459
|
+
* @returns Import result
|
|
460
|
+
*/
|
|
461
|
+
async importManifests(manifests, ownerId) {
|
|
462
|
+
return this.admin.importManifests(manifests, ownerId);
|
|
145
463
|
}
|
|
146
464
|
};
|
|
465
|
+
|
|
466
|
+
// src/types/index.ts
|
|
467
|
+
import { z as z2 } from "zod";
|
|
468
|
+
|
|
469
|
+
// src/types/plugins.ts
|
|
470
|
+
import { z } from "zod";
|
|
471
|
+
var PluginTypeEnum = z.enum(["lobe", "openai", "mcp"]);
|
|
472
|
+
var ConnectionTypeEnum = z.enum(["http", "stdio"]);
|
|
473
|
+
var InstallationMethodEnum = z.enum([
|
|
474
|
+
"npm",
|
|
475
|
+
"docker",
|
|
476
|
+
"git",
|
|
477
|
+
"binaryUrl",
|
|
478
|
+
"manual",
|
|
479
|
+
"none"
|
|
480
|
+
]);
|
|
481
|
+
|
|
482
|
+
// src/types/index.ts
|
|
483
|
+
var PluginTypeEnum2 = z2.enum(["lobe", "openai", "mcp"]);
|
|
484
|
+
var ConnectionTypeEnum2 = z2.enum(["http", "stdio"]);
|
|
485
|
+
var InstallationMethodEnum2 = z2.enum([
|
|
486
|
+
"npm",
|
|
487
|
+
"docker",
|
|
488
|
+
"git",
|
|
489
|
+
"binaryUrl",
|
|
490
|
+
"manual",
|
|
491
|
+
"none"
|
|
492
|
+
]);
|
|
147
493
|
export {
|
|
148
|
-
|
|
149
|
-
|
|
494
|
+
AdminService,
|
|
495
|
+
ConnectionTypeEnum2 as ConnectionTypeEnum,
|
|
496
|
+
DiscoveryService,
|
|
497
|
+
InstallationMethodEnum2 as InstallationMethodEnum,
|
|
150
498
|
MarketSDK,
|
|
151
|
-
PluginTypeEnum
|
|
499
|
+
PluginTypeEnum2 as PluginTypeEnum,
|
|
500
|
+
PluginsService
|
|
152
501
|
};
|
|
153
502
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types.ts","../src/market-sdk.ts"],"sourcesContent":["import { z } from 'zod';\n\n// 插件类型\nexport const PluginTypeEnum = z.enum(['lobe', 'openai', 'mcp']);\nexport type PluginType = z.infer<typeof PluginTypeEnum>;\n\n// 连接类型\nexport const ConnectionTypeEnum = z.enum(['http', 'stdio']);\nexport type ConnectionType = z.infer<typeof ConnectionTypeEnum>;\n\n// 安装方法\nexport const InstallationMethodEnum = z.enum([\n 'npm',\n 'docker',\n 'git',\n 'binaryUrl',\n 'manual',\n 'none',\n]);\nexport type InstallationMethod = z.infer<typeof InstallationMethodEnum>;\n\n// 系统依赖项\nexport interface SystemDependency {\n name: string;\n type?: string;\n requiredVersion?: string;\n checkCommand?: string;\n installInstructions?: Record<string, string>;\n versionParsingRequired?: boolean;\n notes?: string;\n}\n\n// 连接配置\nexport interface ConnectionConfig {\n type: string;\n command?: string;\n args?: string[];\n url?: string;\n}\n\nexport interface InstallationDetails {\n packageName?: string;\n repositoryUrlToClone?: string;\n setupSteps?: string[];\n}\n// 部署选项\nexport interface DeploymentOption {\n installationMethod: string;\n installationDetails?: InstallationDetails;\n connection: ConnectionConfig;\n isRecommended?: boolean;\n notes?: string;\n systemDependencies?: SystemDependency[];\n}\n\n// 兼容性信息\nexport interface PluginCompatibility {\n platforms?: string[];\n minAppVersion?: string;\n maxAppVersion?: string;\n}\n\n// 插件项\nexport interface PluginItem {\n identifier: string;\n version: string;\n isLatest: boolean;\n name: string;\n createdAt: string;\n type: PluginType;\n manifestUrl?: string;\n manifestVersion: string;\n icon?: string;\n author?: string;\n homepage?: string;\n category?: string;\n connectionType?: ConnectionType;\n compatibility?: PluginCompatibility;\n capabilities: {\n tools: boolean;\n prompts: boolean;\n resources: boolean;\n };\n description: string;\n tags?: string[];\n authRequirement?: string;\n isInstallable?: boolean;\n toolsCount?: number;\n promptsCount?: number;\n resourcesCount?: number;\n isValidated?: boolean;\n installCount?: number;\n ratingAverage?: number;\n ratingCount?: number;\n commentCount?: number;\n}\n\n// 插件列表响应\nexport interface PluginListResponse {\n items: PluginItem[];\n totalCount: number;\n currentPage: number;\n pageSize: number;\n totalPages: number;\n categories: string[];\n tags: string[];\n}\n\n// 工具项定义\nexport interface PluginTool {\n name: string;\n description?: string;\n parameters?: Record<string, any>;\n}\n\n// 资源项定义\nexport interface PluginResource {\n uri: string;\n name?: string;\n mimeType?: string;\n}\n\n// 提示词参数定义\nexport interface PromptArgument {\n name: string;\n required?: boolean;\n description?: string;\n type?: string;\n}\n\n// 提示词项定义\nexport interface PluginPrompt {\n name: string;\n description: string;\n arguments?: PromptArgument[];\n}\n\n// 插件清单\nexport interface PluginManifest {\n id: string;\n name: string;\n version: string;\n description: string;\n category?: string;\n tags?: string[];\n author?: {\n name: string;\n url?: string;\n };\n homepage?: string;\n icon?: string;\n capabilities?: {\n tools?: boolean;\n prompts?: boolean;\n resources?: boolean;\n };\n deploymentOptions?: DeploymentOption[];\n compatibility?: PluginCompatibility;\n // 工具定义\n tools?: PluginTool[];\n // 资源定义\n resources?: PluginResource[];\n // 提示词定义\n prompts?: PluginPrompt[];\n // 验证信息\n isValidated?: boolean;\n validatedAt?: string;\n}\n\n// 市场服务发现文档\nexport interface DiscoveryDocument {\n issuer: string;\n market_index_schema_version: number;\n resource_types_supported: string[];\n resource_endpoints: Record<string, string>;\n manifest_endpoint_template: string | Record<string, string>;\n support_locales: string[];\n response_types_supported: string[];\n authentication?: {\n schemes_supported: Array<'none' | 'apiKey' | 'oauth2'>;\n };\n api_documentation_url?: string;\n policy_url?: string;\n terms_of_service_url?: string;\n}\n\n// SDK 配置选项\nexport interface MarketSDKOptions {\n baseUrl?: string;\n defaultLocale?: string;\n apiKey?: string;\n}\n","import {\n DiscoveryDocument,\n MarketSDKOptions,\n PluginItem,\n PluginListResponse,\n PluginManifest,\n} from './types';\nimport debug from 'debug';\n\n// Create debug instance\nconst log = debug('lobe-market-sdk');\n\n/**\n * LobeHub Market SDK Client\n */\nexport class MarketSDK {\n private baseUrl: string;\n private defaultLocale: string;\n private discoveryDoc?: DiscoveryDocument;\n private headers: Record<string, string>;\n\n /**\n * Create MarketSDK instance\n * @param options SDK configuration options\n */\n constructor(options: MarketSDKOptions = {}) {\n this.baseUrl = options.baseUrl || 'https://market.lobehub.com/api';\n this.defaultLocale = options.defaultLocale || 'zh-CN';\n this.headers = {\n 'Content-Type': 'application/json',\n ...(options.apiKey ? { Authorization: `Bearer ${options.apiKey}` } : {}),\n };\n log('MarketSDK instance created: %O', { baseUrl: this.baseUrl, defaultLocale: this.defaultLocale });\n }\n\n /**\n * Send request and handle response\n * @param url Request URL\n * @param options fetch options\n * @returns Response data\n */\n private async request<T>(url: string, options: RequestInit = {}): Promise<T> {\n log('Sending request: %s', `${this.baseUrl}${url}`);\n \n const response = await fetch(`${this.baseUrl}${url}`, {\n ...options,\n headers: {\n ...this.headers,\n ...options.headers,\n },\n });\n\n if (!response.ok) {\n const errorMsg = `Request failed: ${response.status} ${response.statusText}`;\n log('Request error: %s', errorMsg);\n throw new Error(errorMsg);\n }\n\n log('Request successful: %s', url);\n return response.json() as Promise<T>;\n }\n\n /**\n * Build query string\n * @param params Query parameters\n * @returns Query string\n */\n private buildQueryString(params: Record<string, any>): string {\n const query = Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)\n .join('&');\n \n return query ? `?${query}` : '';\n }\n\n /**\n * Get market service discovery document\n * @returns Service discovery document\n */\n async getDiscoveryDocument(): Promise<DiscoveryDocument> {\n log('Getting service discovery document');\n if (this.discoveryDoc) {\n log('Returning cached discovery document');\n return this.discoveryDoc;\n }\n\n this.discoveryDoc = await this.request<DiscoveryDocument>('/market/.well-known/discovery');\n log('Successfully retrieved service discovery document');\n return this.discoveryDoc;\n }\n\n /**\n * Get plugin list\n * @param params Query parameters\n * @returns Plugin list response\n */\n async getPluginList(params: {\n page?: number;\n pageSize?: number;\n category?: string;\n tags?: string;\n q?: string;\n sort?: 'installCount' | 'createdAt' | 'updatedAt' | 'ratingAverage';\n order?: 'asc' | 'desc';\n locale?: string;\n } = {}): Promise<PluginListResponse> {\n const locale = params.locale || this.defaultLocale;\n const queryParams = { ...params, locale };\n const queryString = this.buildQueryString(queryParams);\n\n log('Getting plugin list: %O', queryParams);\n\n const result = await this.request<PluginListResponse>(`/v1/plugins${queryString}`);\n log('Retrieved %d plugins', result.items.length);\n return result;\n }\n\n /**\n * Get plugin manifest\n * @param identifier Plugin identifier\n * @param locale Language\n * @param version Version\n * @returns Plugin manifest\n */\n async getPluginManifest(\n identifier: string,\n locale?: string,\n version?: string,\n ): Promise<PluginManifest> {\n log('Getting plugin manifest: %O', { identifier, version, locale });\n const localeParam = locale || this.defaultLocale;\n const params: Record<string, string> = { locale: localeParam };\n if (version) {\n params.version = version;\n }\n const queryString = this.buildQueryString(params);\n\n const manifest = await this.request<PluginManifest>(`/v1/plugins/${identifier}/manifest${queryString}`);\n log('Successfully retrieved plugin manifest: %s', identifier);\n return manifest;\n }\n\n /**\n * Import plugin manifests (requires admin privileges)\n * @param manifests Plugin manifest array\n * @param ownerId Owner ID\n * @returns Import result\n */\n async importManifests(manifests: PluginManifest[], ownerId?: number): Promise<{ success: number; failed: number }> {\n log(`Starting batch import of ${manifests.length} manifests`);\n if (ownerId) {\n log(`Using specified owner ID: ${ownerId}`);\n }\n\n const response = await this.request<{ data: { success: number; failed: number } }>('/v1/admin/plugins/import', {\n method: 'POST',\n body: JSON.stringify({\n manifests,\n ownerId,\n }),\n });\n\n log(`Batch import completed: ${response.data.success} successful, ${response.data.failed} failed`);\n return response.data;\n }\n\n /**\n * Set authentication token\n * @param token Authentication token\n */\n setAuthToken(token: string): void {\n log('Setting authentication token');\n this.headers.Authorization = `Bearer ${token}`;\n }\n\n /**\n * Clear authentication token\n */\n clearAuthToken(): void {\n log('Clearing authentication token');\n delete this.headers.Authorization;\n }\n} "],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/market-sdk.ts","../src/core/BaseSDK.ts","../src/services/AdminService.ts","../src/services/PluginsService.ts","../src/services/DiscoveryService.ts","../src/types/index.ts","../src/types/plugins.ts"],"sourcesContent":["import debug from 'debug';\n\nimport { BaseSDK } from './core/BaseSDK';\nimport { AdminService, DiscoveryService, PluginsService } from './services';\nimport {\n AdminPluginParams,\n DiscoveryDocument,\n MarketSDKOptions,\n Plugin,\n PluginListResponse,\n PluginManifest,\n PluginVersion,\n PluginVersionCreateParams,\n PluginVersionUpdateParams,\n} from './types';\n\n// Create debug instance\nconst log = debug('lobe-market-sdk');\n\n/**\n * LobeHub Market SDK Client\n * 采用组合模式组合各个领域服务\n */\nexport class MarketSDK extends BaseSDK {\n /**\n * 插件服务\n */\n readonly plugins: PluginsService;\n\n /**\n * 管理员服务\n */\n readonly admin: AdminService;\n\n /**\n * 发现服务\n */\n private readonly discovery: DiscoveryService;\n\n /**\n * Create MarketSDK instance\n * @param options SDK configuration options\n */\n constructor(options: MarketSDKOptions = {}) {\n super(options);\n log('MarketSDK instance created');\n\n // Initialize domain services with shared headers\n this.plugins = new PluginsService(options, this.headers);\n this.admin = new AdminService(options, this.headers);\n this.discovery = new DiscoveryService(options, this.headers);\n }\n\n /**\n * Get market service discovery document\n * @returns Service discovery document\n */\n async getDiscoveryDocument(): Promise<DiscoveryDocument> {\n return this.discovery.getDiscoveryDocument();\n }\n\n /**\n * Import plugin manifests (requires admin privileges)\n * @param manifests Plugin manifest array\n * @param ownerId Owner ID\n * @returns Import result\n */\n async importManifests(\n manifests: PluginManifest[],\n ownerId?: number,\n ): Promise<{ success: number; failed: number }> {\n return this.admin.importManifests(manifests, ownerId);\n }\n}\n","import debug from 'debug';\n\nimport { MarketSDKOptions } from '../types';\n\n// Create debug instance\nconst log = debug('lobe-market-sdk:core');\n\n/**\n * 基础 SDK 类\n * 提供共享的请求逻辑和认证功能\n */\nexport class BaseSDK {\n protected baseUrl: string;\n protected defaultLocale: string;\n protected headers: Record<string, string>;\n\n /**\n * 创建基础 SDK 实例\n * @param options SDK 配置选项\n * @param sharedHeaders 共享的 headers 对象(可选)\n */\n constructor(options: MarketSDKOptions = {}, sharedHeaders?: Record<string, string>) {\n this.baseUrl = options.baseUrl || 'https://market.lobehub.com/api';\n this.defaultLocale = options.defaultLocale || 'en-US';\n\n // 使用共享的 headers 或创建新的\n if (sharedHeaders) {\n this.headers = sharedHeaders;\n log('Using shared headers object');\n } else {\n this.headers = {\n 'Content-Type': 'application/json',\n ...(options.apiKey ? { Authorization: `Bearer ${options.apiKey}` } : {}),\n };\n log('Created new headers object');\n }\n\n log('BaseSDK instance created: %O', {\n baseUrl: this.baseUrl,\n defaultLocale: this.defaultLocale,\n });\n }\n\n /**\n * 发送请求并处理响应\n * @param url 请求 URL\n * @param options fetch 选项\n * @returns 响应数据\n */\n protected async request<T>(url: string, options: RequestInit = {}): Promise<T> {\n log('Sending request: %s', `${this.baseUrl}${url}`);\n\n const response = await fetch(`${this.baseUrl}${url}`, {\n ...options,\n headers: {\n ...this.headers,\n ...options.headers,\n },\n });\n\n if (!response.ok) {\n const errorMsg = `Request failed: ${response.status} ${response.statusText}`;\n log('Request error: %s', errorMsg);\n throw new Error(errorMsg);\n }\n\n log('Request successful: %s', url);\n return response.json() as Promise<T>;\n }\n\n /**\n * 构建查询字符串\n * @param params 查询参数\n * @returns 查询字符串\n */\n protected buildQueryString(params: Record<string, any>): string {\n const query = Object.entries(params)\n .filter(([_, value]) => value !== undefined && value !== null)\n .map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)\n .join('&');\n\n return query ? `?${query}` : '';\n }\n\n /**\n * 设置认证令牌\n * @param token 认证令牌\n */\n setAuthToken(token: string): void {\n log('Setting authentication token');\n this.headers.Authorization = `Bearer ${token}`;\n }\n\n /**\n * 清除认证令牌\n */\n clearAuthToken(): void {\n log('Clearing authentication token');\n delete this.headers.Authorization;\n }\n}\n","import debug from 'debug';\n\nimport { BaseSDK } from '../core/BaseSDK';\nimport {\n AdminPluginParams,\n MarketSDKOptions,\n Plugin,\n PluginManifest,\n PluginUpdateParams,\n PluginVersion,\n PluginVersionCreateParams,\n PluginVersionUpdateParams,\n SystemDependency,\n} from '../types';\n\n// Create debug instance\nconst log = debug('lobe-market-sdk:admin');\n\n/**\n * 管理员服务\n * 处理管理员相关功能\n */\nexport class AdminService extends BaseSDK {\n /**\n * 创建管理员服务实例\n * @param options SDK 配置选项\n * @param sharedHeaders 共享的 headers 对象(可选)\n */\n constructor(options: MarketSDKOptions = {}, sharedHeaders?: Record<string, string>) {\n super(options, sharedHeaders);\n log('AdminService instance created');\n }\n\n /**\n * 导入插件清单(需要管理员权限)\n * @param manifests 插件清单数组\n * @param ownerId 所有者 ID\n * @returns 导入结果\n */\n async importManifests(\n manifests: PluginManifest[],\n ownerId?: number,\n ): Promise<{ success: number; failed: number }> {\n log(`开始批量导入 ${manifests.length} 个清单`);\n if (ownerId) {\n log(`使用指定的所有者 ID: ${ownerId}`);\n }\n\n const response = await this.request<{ data: { success: number; failed: number } }>(\n '/admin/plugins/import',\n {\n method: 'POST',\n body: JSON.stringify({\n manifests,\n ownerId,\n }),\n },\n );\n\n log(`批量导入完成: ${response.data.success} 个成功, ${response.data.failed} 个失败`);\n return response.data;\n }\n\n /**\n * 获取插件列表\n * @param params 查询参数\n * @returns 插件列表响应\n */\n async getPlugins(params: AdminPluginParams = {}): Promise<{ data: Plugin[] }> {\n log('Getting plugins with params: %O', params);\n\n const queryString = this.buildQueryString(params);\n const url = `/admin/plugins${queryString ? `?${queryString}` : ''}`;\n\n const result = await this.request<{ data: Plugin[] }>(url);\n log('Retrieved %d plugins', result.data.length);\n return result;\n }\n\n /**\n * 获取单个插件(含所有版本)\n * @param id 插件 ID\n * @returns 插件(含版本)\n */\n async getPlugin(id: number): Promise<{ data: Plugin & { versions: PluginVersion[] } }> {\n log('获取插件详情(管理员): %d', id);\n\n const result = await this.request<{ data: Plugin & { versions: PluginVersion[] } }>(\n `/admin/plugins/${id}`,\n );\n log('已获取插件(共 %d 个版本)', result.data.versions.length);\n return result;\n }\n\n /**\n * 更新插件信息\n * @param id 插件 ID\n * @param data 插件更新数据\n * @returns 更新后的插件\n */\n async updatePlugin(id: number, data: PluginUpdateParams): Promise<{ data: Plugin }> {\n log('更新插件: %d,数据: %O', id, data);\n\n const result = await this.request<{ data: Plugin }>(`/admin/plugins/${id}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n log('插件更新成功');\n return result;\n }\n\n /**\n * 更新插件状态\n * @param id 插件 ID\n * @param status 新状态\n * @returns 成功响应\n */\n async updatePluginStatus(\n id: number,\n status: 'published' | 'draft' | 'review' | 'rejected',\n ): Promise<{ success: boolean; message: string }> {\n log('更新插件状态: %d 为 %s', id, status);\n\n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${id}/status`,\n {\n method: 'PATCH',\n body: JSON.stringify({ status }),\n },\n );\n log('插件状态更新成功');\n return result;\n }\n\n /**\n * 删除插件\n * @param id 插件 ID\n * @returns 成功响应\n */\n async deletePlugin(id: number): Promise<{ success: boolean; message: string }> {\n log('删除插件: %d', id);\n\n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${id}`,\n { method: 'DELETE' },\n );\n log('插件删除成功');\n return result;\n }\n\n /**\n * 获取插件版本列表\n * @param pluginId 插件 ID\n * @returns 插件版本列表\n */\n async getPluginVersions(pluginId: number): Promise<{ data: PluginVersion[] }> {\n log('Getting plugin versions: pluginId=%d', pluginId);\n\n const result = await this.request<{ data: PluginVersion[] }>(\n `/admin/plugins/${pluginId}/versions`,\n );\n\n log('Retrieved %d versions', result.data.length);\n return result;\n }\n\n /**\n * 获取单个插件版本\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @returns 插件版本\n */\n async getPluginVersion(pluginId: number, versionId: number): Promise<{ data: PluginVersion }> {\n log('Getting version details: pluginId=%d, versionId=%d', pluginId, versionId);\n\n const result = await this.request<{ data: PluginVersion }>(\n `/admin/plugins/${pluginId}/versions/${versionId}`,\n );\n log('Version details retrieved');\n return result;\n }\n\n /**\n * 创建插件版本\n * @param pluginId 插件 ID\n * @param data 版本创建数据\n * @returns 创建的版本\n */\n async createPluginVersion(\n pluginId: number,\n data: PluginVersionCreateParams,\n ): Promise<{ data: PluginVersion }> {\n log('Creating new version: pluginId=%d', pluginId);\n\n const result = await this.request<{ data: PluginVersion }>(\n `/admin/plugins/${pluginId}/versions`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n },\n );\n log('Plugin version created successfully');\n return result;\n }\n\n /**\n * 更新插件版本\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @param data 版本更新数据\n * @returns 更新后的版本\n */\n async updatePluginVersion(\n pluginId: number,\n versionId: number,\n data: PluginVersionUpdateParams,\n ): Promise<{ data: PluginVersion }> {\n log('Updating version: pluginId=%d, versionId=%d', pluginId, versionId);\n\n const result = await this.request<{ data: PluginVersion }>(\n `/admin/plugins/${pluginId}/versions/${versionId}`,\n {\n method: 'PUT',\n body: JSON.stringify(data),\n },\n );\n log('插件版本更新成功');\n return result;\n }\n\n /**\n * 删除插件版本\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @returns 成功响应\n */\n async deletePluginVersion(\n pluginId: number,\n versionId: number,\n ): Promise<{ success: boolean; message: string }> {\n log('删除版本: pluginId=%d, versionId=%d', pluginId, versionId);\n\n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${pluginId}/versions/${versionId}`,\n { method: 'DELETE' },\n );\n log('插件版本删除成功');\n return result;\n }\n\n /**\n * 设置插件版本为最新版本\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @returns 成功响应\n */\n async setPluginVersionAsLatest(\n pluginId: number,\n versionId: number,\n ): Promise<{ success: boolean; message: string }> {\n log('Setting version as latest: pluginId=%d, versionId=%d', pluginId, versionId);\n\n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${pluginId}/versions/${versionId}/latest`,\n { method: 'POST' },\n );\n log('Version set as latest');\n return result;\n }\n\n /**\n * 获取所有系统依赖项\n * @returns 系统依赖项列表\n */\n async getSystemDependencies(): Promise<{ data: SystemDependency[] }> {\n log('Getting all system dependencies');\n\n const result = await this.request<{ data: SystemDependency[] }>(`/admin/plugins/dependencies`);\n log('Retrieved %d system dependencies', result.data.length);\n return result;\n }\n\n /**\n * 获取特定系统依赖项\n * @param id 依赖项 ID\n * @returns 系统依赖项\n */\n async getSystemDependency(id: number): Promise<{ data: SystemDependency }> {\n log('Getting system dependency details: %d', id);\n\n const result = await this.request<{ data: SystemDependency }>(\n `/admin/plugins/dependencies/${id}`,\n );\n log('System dependency details retrieved');\n return result;\n }\n\n /**\n * 创建系统依赖项\n * @param data 依赖项创建数据\n * @returns 创建的依赖项\n */\n async createSystemDependency(\n data: Omit<SystemDependency, 'id'>,\n ): Promise<{ data: SystemDependency }> {\n log('Creating system dependency: %O', data);\n\n const result = await this.request<{ data: SystemDependency }>(`/admin/plugins/dependencies`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n log('System dependency created successfully');\n return result;\n }\n\n /**\n * 更新系统依赖项\n * @param id 依赖项 ID\n * @param data 依赖项更新数据\n * @returns 更新后的依赖项\n */\n async updateSystemDependency(\n id: number,\n data: Partial<SystemDependency>,\n ): Promise<{ data: SystemDependency }> {\n log('Updating system dependency: %d, data: %O', id, data);\n\n const result = await this.request<{ data: SystemDependency }>(\n `/admin/plugins/dependencies/${id}`,\n {\n method: 'PUT',\n body: JSON.stringify(data),\n },\n );\n log('System dependency updated successfully');\n return result;\n }\n\n /**\n * 删除系统依赖项\n * @param id 依赖项 ID\n * @returns 成功响应\n */\n async deleteSystemDependency(id: number): Promise<{ success: boolean; message: string }> {\n log('删除系统依赖项: %d', id);\n\n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/dependencies/${id}`,\n { method: 'DELETE' },\n );\n log('系统依赖项删除成功');\n return result;\n }\n}\n","import debug from 'debug';\n\nimport { BaseSDK } from '../core/BaseSDK';\nimport { MarketSDKOptions, PluginListResponse, PluginManifest, PluginQueryParams } from '../types';\n\n// Create debug instance\nconst log = debug('lobe-market-sdk:plugins');\n\n/**\n * 插件服务\n * 处理插件相关功能\n */\nexport class PluginsService extends BaseSDK {\n /**\n * 创建插件服务实例\n * @param options SDK 配置选项\n * @param sharedHeaders 共享的 headers 对象(可选)\n */\n constructor(options: MarketSDKOptions = {}, sharedHeaders?: Record<string, string>) {\n super(options, sharedHeaders);\n log('PluginsService instance created');\n }\n\n /**\n * 获取插件列表\n * @param params 查询参数\n * @returns 插件列表响应\n */\n async getPluginList(params: PluginQueryParams = {}): Promise<PluginListResponse> {\n const locale = params.locale || this.defaultLocale;\n const queryParams = { ...params, locale };\n const queryString = this.buildQueryString(queryParams);\n\n log('Getting plugin list: %O', queryParams);\n\n const result = await this.request<PluginListResponse>(`/v1/plugins${queryString}`);\n log('Retrieved %d plugins', result.items.length);\n return result;\n }\n\n /**\n * 获取插件清单\n * @param identifier 插件标识符\n * @param locale 语言\n * @param version 版本\n * @returns 插件清单\n */\n async getPluginManifest(\n identifier: string,\n locale?: string,\n version?: string,\n ): Promise<PluginManifest> {\n log('Getting plugin manifest: %O', { identifier, version, locale });\n const localeParam = locale || this.defaultLocale;\n const params: Record<string, string> = { locale: localeParam };\n if (version) {\n params.version = version;\n }\n const queryString = this.buildQueryString(params);\n\n const manifest = await this.request<PluginManifest>(\n `/v1/plugins/${identifier}/manifest${queryString}`,\n );\n log('Plugin manifest successfully retrieved: %s', identifier);\n return manifest;\n }\n}\n","import debug from 'debug';\n\nimport { BaseSDK } from '../core/BaseSDK';\nimport { DiscoveryDocument, MarketSDKOptions } from '../types';\n\n// Create debug instance\nconst log = debug('lobe-market-sdk:discovery');\n\n/**\n * 发现服务\n * 处理服务发现功能\n */\nexport class DiscoveryService extends BaseSDK {\n private discoveryDoc?: DiscoveryDocument;\n\n /**\n * 创建发现服务实例\n * @param options SDK 配置选项\n * @param sharedHeaders 共享的 headers 对象(可选)\n */\n constructor(options: MarketSDKOptions = {}, sharedHeaders?: Record<string, string>) {\n super(options, sharedHeaders);\n log('DiscoveryService instance created');\n }\n\n /**\n * 获取市场服务发现文档\n * @returns 服务发现文档\n */\n async getDiscoveryDocument(): Promise<DiscoveryDocument> {\n log('Fetching discovery document');\n if (this.discoveryDoc) {\n log('Returning cached discovery document');\n return this.discoveryDoc;\n }\n\n this.discoveryDoc = await this.request<DiscoveryDocument>('/market/.well-known/discovery');\n log('Discovery document successfully fetched');\n return this.discoveryDoc;\n }\n}\n","import { z } from 'zod';\n\n// 插件类型\nexport const PluginTypeEnum = z.enum(['lobe', 'openai', 'mcp']);\nexport type PluginType = z.infer<typeof PluginTypeEnum>;\n\n// 连接类型\nexport const ConnectionTypeEnum = z.enum(['http', 'stdio']);\nexport type ConnectionType = z.infer<typeof ConnectionTypeEnum>;\n\n// 安装方法\nexport const InstallationMethodEnum = z.enum([\n 'npm',\n 'docker',\n 'git',\n 'binaryUrl',\n 'manual',\n 'none',\n]);\nexport type InstallationMethod = z.infer<typeof InstallationMethodEnum>;\n\n// 系统依赖项\nexport interface SystemDependency {\n name: string;\n type?: string;\n requiredVersion?: string;\n checkCommand?: string;\n installInstructions?: Record<string, string>;\n versionParsingRequired?: boolean;\n notes?: string;\n}\n\n// 连接配置\nexport interface ConnectionConfig {\n type: string;\n command?: string;\n args?: string[];\n url?: string;\n}\n\nexport interface InstallationDetails {\n packageName?: string;\n repositoryUrlToClone?: string;\n setupSteps?: string[];\n}\n// 部署选项\nexport interface DeploymentOption {\n installationMethod: string;\n installationDetails?: InstallationDetails;\n connection: ConnectionConfig;\n isRecommended?: boolean;\n notes?: string;\n systemDependencies?: SystemDependency[];\n}\n\n// 兼容性信息\nexport interface PluginCompatibility {\n platforms?: string[];\n minAppVersion?: string;\n maxAppVersion?: string;\n}\n\n// 插件项\nexport interface PluginItem {\n identifier: string;\n version: string;\n isLatest: boolean;\n name: string;\n createdAt: string;\n type: PluginType;\n manifestUrl?: string;\n manifestVersion: string;\n icon?: string;\n author?: string;\n homepage?: string;\n category?: string;\n connectionType?: ConnectionType;\n compatibility?: PluginCompatibility;\n capabilities: {\n tools: boolean;\n prompts: boolean;\n resources: boolean;\n };\n description: string;\n tags?: string[];\n authRequirement?: string;\n isInstallable?: boolean;\n toolsCount?: number;\n promptsCount?: number;\n resourcesCount?: number;\n isValidated?: boolean;\n installCount?: number;\n ratingAverage?: number;\n ratingCount?: number;\n commentCount?: number;\n}\n\n// 插件列表响应\nexport interface PluginListResponse {\n items: PluginItem[];\n totalCount: number;\n currentPage: number;\n pageSize: number;\n totalPages: number;\n categories: string[];\n tags: string[];\n}\n\n// 工具项定义\nexport interface PluginTool {\n name: string;\n description?: string;\n parameters?: Record<string, any>;\n}\n\n// 资源项定义\nexport interface PluginResource {\n uri: string;\n name?: string;\n mimeType?: string;\n}\n\n// 提示词参数定义\nexport interface PromptArgument {\n name: string;\n required?: boolean;\n description?: string;\n type?: string;\n}\n\n// 提示词项定义\nexport interface PluginPrompt {\n name: string;\n description: string;\n arguments?: PromptArgument[];\n}\n\n// 插件清单\nexport interface PluginManifest {\n id: string;\n name: string;\n version: string;\n description: string;\n category?: string;\n tags?: string[];\n author?: {\n name: string;\n url?: string;\n };\n homepage?: string;\n icon?: string;\n capabilities?: {\n tools?: boolean;\n prompts?: boolean;\n resources?: boolean;\n };\n deploymentOptions?: DeploymentOption[];\n compatibility?: PluginCompatibility;\n // 工具定义\n tools?: PluginTool[];\n // 资源定义\n resources?: PluginResource[];\n // 提示词定义\n prompts?: PluginPrompt[];\n // 验证信息\n isValidated?: boolean;\n validatedAt?: string;\n}\n\n// 市场服务发现文档\nexport interface DiscoveryDocument {\n issuer: string;\n market_index_schema_version: number;\n resource_types_supported: string[];\n resource_endpoints: Record<string, string>;\n manifest_endpoint_template: string | Record<string, string>;\n support_locales: string[];\n response_types_supported: string[];\n authentication?: {\n schemes_supported: Array<'none' | 'apiKey' | 'oauth2'>;\n };\n api_documentation_url?: string;\n policy_url?: string;\n terms_of_service_url?: string;\n}\n\n// SDK 配置选项\nexport interface MarketSDKOptions {\n baseUrl?: string;\n defaultLocale?: string;\n apiKey?: string;\n}\n\n// 管理员 API 相关类型\n\n// 插件数据库模型\nexport interface Plugin {\n id: number;\n identifier: string;\n name: string;\n description: string;\n ownerId: number;\n type: string;\n visibility: 'public' | 'private' | 'unlisted';\n status: 'published' | 'draft' | 'review' | 'rejected';\n isFeatured: boolean;\n category: string;\n tags: string[];\n icon: string | null;\n author: string | null;\n homepage: string | null;\n manifestVersion: string;\n createdAt: string;\n updatedAt: string;\n meta: Record<string, any> | null;\n installCount: number;\n ratingAverage: number | null;\n ratingCount: number;\n reviewCount: number;\n}\n\n// 插件版本数据库模型\nexport interface PluginVersion {\n id: number;\n pluginId: number;\n version: string;\n isLatest: boolean;\n manifestUrl: string | null;\n toolsCount: number;\n promptsCount: number;\n resourcesCount: number;\n isValidated: boolean;\n createdAt: string;\n updatedAt: string;\n manifest: PluginManifest;\n meta: Record<string, any> | null;\n}\n\n// 管理员获取插件列表参数\nexport interface AdminPluginParams {\n status?: 'published' | 'draft' | 'review' | 'rejected';\n visibility?: 'public' | 'private' | 'unlisted';\n featured?: boolean;\n ownerId?: number;\n limit?: number;\n offset?: number;\n orderBy?: 'createdAt' | 'updatedAt' | 'installCount' | 'ratingAverage';\n order?: 'asc' | 'desc';\n}\n\n// 创建插件版本参数\nexport interface PluginVersionCreateParams {\n version: string;\n manifest: PluginManifest;\n manifestUrl?: string;\n isLatest?: boolean;\n isValidated?: boolean;\n meta?: Record<string, any>;\n}\n\n// 更新插件版本参数\nexport interface PluginVersionUpdateParams {\n manifestUrl?: string;\n isValidated?: boolean;\n meta?: Record<string, any>;\n}\n\n// 导出所有类型\nexport * from './common';\nexport * from './plugins';\nexport * from './admin';\n","import { z } from 'zod';\n\n// 插件类型\nexport const PluginTypeEnum = z.enum(['lobe', 'openai', 'mcp']);\nexport type PluginType = z.infer<typeof PluginTypeEnum>;\n\n// 连接类型\nexport const ConnectionTypeEnum = z.enum(['http', 'stdio']);\nexport type ConnectionType = z.infer<typeof ConnectionTypeEnum>;\n\n// 安装方法\nexport const InstallationMethodEnum = z.enum([\n 'npm',\n 'docker',\n 'git',\n 'binaryUrl',\n 'manual',\n 'none',\n]);\nexport type InstallationMethod = z.infer<typeof InstallationMethodEnum>;\n\n// 系统依赖项\nexport interface SystemDependency {\n name: string;\n type?: string;\n requiredVersion?: string;\n checkCommand?: string;\n installInstructions?: Record<string, string>;\n versionParsingRequired?: boolean;\n notes?: string;\n}\n\n// 连接配置\nexport interface ConnectionConfig {\n type: string;\n command?: string;\n args?: string[];\n url?: string;\n}\n\nexport interface InstallationDetails {\n packageName?: string;\n repositoryUrlToClone?: string;\n setupSteps?: string[];\n}\n\n// 部署选项\nexport interface DeploymentOption {\n installationMethod: string;\n installationDetails?: InstallationDetails;\n connection: ConnectionConfig;\n isRecommended?: boolean;\n notes?: string;\n systemDependencies?: SystemDependency[];\n}\n\n// 兼容性信息\nexport interface PluginCompatibility {\n platforms?: string[];\n minAppVersion?: string;\n maxAppVersion?: string;\n}\n\n// 插件项\nexport interface PluginItem {\n identifier: string;\n version: string;\n isLatest: boolean;\n name: string;\n createdAt: string;\n type: PluginType;\n manifestUrl?: string;\n manifestVersion: string;\n icon?: string;\n author?: string;\n homepage?: string;\n category?: string;\n connectionType?: ConnectionType;\n compatibility?: PluginCompatibility;\n capabilities: {\n tools: boolean;\n prompts: boolean;\n resources: boolean;\n };\n description: string;\n tags?: string[];\n authRequirement?: string;\n isInstallable?: boolean;\n toolsCount?: number;\n promptsCount?: number;\n resourcesCount?: number;\n isValidated?: boolean;\n installCount?: number;\n ratingAverage?: number;\n ratingCount?: number;\n commentCount?: number;\n}\n\n// 插件列表响应\nexport interface PluginListResponse {\n items: PluginItem[];\n totalCount: number;\n currentPage: number;\n pageSize: number;\n totalPages: number;\n categories: string[];\n tags: string[];\n}\n\n// 工具项定义\nexport interface PluginTool {\n name: string;\n description?: string;\n parameters?: Record<string, any>;\n}\n\n// 资源项定义\nexport interface PluginResource {\n uri: string;\n name?: string;\n mimeType?: string;\n}\n\n// 提示词参数定义\nexport interface PromptArgument {\n name: string;\n required?: boolean;\n description?: string;\n type?: string;\n}\n\n// 提示词项定义\nexport interface PluginPrompt {\n name: string;\n description: string;\n arguments?: PromptArgument[];\n}\n\n// 插件清单\nexport interface PluginManifest {\n id: string;\n name: string;\n version: string;\n description: string;\n category?: string;\n tags?: string[];\n author?: {\n name: string;\n url?: string;\n };\n homepage?: string;\n icon?: string;\n capabilities?: {\n tools?: boolean;\n prompts?: boolean;\n resources?: boolean;\n };\n deploymentOptions?: DeploymentOption[];\n compatibility?: PluginCompatibility;\n // 工具定义\n tools?: PluginTool[];\n // 资源定义\n resources?: PluginResource[];\n // 提示词定义\n prompts?: PluginPrompt[];\n // 验证信息\n isValidated?: boolean;\n validatedAt?: string;\n}\n\n// 插件查询参数\nexport interface PluginQueryParams {\n page?: number;\n pageSize?: number;\n category?: string;\n tags?: string;\n q?: string;\n sort?: 'installCount' | 'createdAt' | 'updatedAt' | 'ratingAverage';\n order?: 'asc' | 'desc';\n locale?: string;\n} "],"mappings":"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","names":["debug","debug","log","debug","debug","log","debug","debug","log","debug","log","debug","z","PluginTypeEnum","z","ConnectionTypeEnum","InstallationMethodEnum"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobehub/market-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.10",
|
|
4
4
|
"description": "LobeHub Market JavaScript SDK",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lobehub",
|
|
@@ -28,10 +28,13 @@
|
|
|
28
28
|
"build": "tsup",
|
|
29
29
|
"dev": "tsup --watch",
|
|
30
30
|
"prepublishOnly": "npm run build",
|
|
31
|
-
"release": "npm publish"
|
|
31
|
+
"release": "npm publish",
|
|
32
|
+
"test:admin": "node examples/admin-test.js",
|
|
33
|
+
"test:domain": "node examples/domain-usage.js"
|
|
32
34
|
},
|
|
33
35
|
"dependencies": {
|
|
34
|
-
"debug": "^4.4.1"
|
|
36
|
+
"debug": "^4.4.1",
|
|
37
|
+
"dotenv": "^16.4.5"
|
|
35
38
|
},
|
|
36
39
|
"devDependencies": {
|
|
37
40
|
"@types/debug": "^4.1.12",
|