@lobehub/market-sdk 0.0.10 → 0.0.12
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 +210 -120
- package/dist/index.mjs +267 -171
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
/**
|
|
4
|
+
* 市场服务发现文档
|
|
5
|
+
*/
|
|
6
|
+
interface DiscoveryDocument {
|
|
7
|
+
issuer: string;
|
|
8
|
+
market_index_schema_version: number;
|
|
9
|
+
resource_types_supported: string[];
|
|
10
|
+
resource_endpoints: Record<string, string>;
|
|
11
|
+
manifest_endpoint_template: string | Record<string, string>;
|
|
12
|
+
support_locales: string[];
|
|
13
|
+
response_types_supported: string[];
|
|
14
|
+
authentication?: {
|
|
15
|
+
schemes_supported: Array<'none' | 'apiKey' | 'oauth2'>;
|
|
16
|
+
};
|
|
17
|
+
api_documentation_url?: string;
|
|
18
|
+
policy_url?: string;
|
|
19
|
+
terms_of_service_url?: string;
|
|
12
20
|
}
|
|
13
|
-
|
|
14
21
|
/**
|
|
15
|
-
*
|
|
22
|
+
* SDK 配置选项
|
|
16
23
|
*/
|
|
17
|
-
interface
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
isFeatured?: boolean;
|
|
22
|
-
tags?: string[];
|
|
23
|
-
meta?: Record<string, any>;
|
|
24
|
+
interface MarketSDKOptions {
|
|
25
|
+
baseURL?: string;
|
|
26
|
+
defaultLocale?: string;
|
|
27
|
+
apiKey?: string;
|
|
24
28
|
}
|
|
25
29
|
|
|
26
30
|
declare const PluginTypeEnum: z.ZodEnum<["lobe", "openai", "mcp"]>;
|
|
@@ -36,7 +40,7 @@ interface SystemDependency {
|
|
|
36
40
|
checkCommand?: string;
|
|
37
41
|
installInstructions?: Record<string, string>;
|
|
38
42
|
versionParsingRequired?: boolean;
|
|
39
|
-
|
|
43
|
+
description?: string;
|
|
40
44
|
}
|
|
41
45
|
interface ConnectionConfig {
|
|
42
46
|
type: string;
|
|
@@ -54,7 +58,7 @@ interface DeploymentOption {
|
|
|
54
58
|
installationDetails?: InstallationDetails;
|
|
55
59
|
connection: ConnectionConfig;
|
|
56
60
|
isRecommended?: boolean;
|
|
57
|
-
|
|
61
|
+
description?: string;
|
|
58
62
|
systemDependencies?: SystemDependency[];
|
|
59
63
|
}
|
|
60
64
|
interface PluginCompatibility {
|
|
@@ -151,26 +155,20 @@ interface PluginManifest {
|
|
|
151
155
|
isValidated?: boolean;
|
|
152
156
|
validatedAt?: string;
|
|
153
157
|
}
|
|
154
|
-
interface
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
schemes_supported: Array<'none' | 'apiKey' | 'oauth2'>;
|
|
164
|
-
};
|
|
165
|
-
api_documentation_url?: string;
|
|
166
|
-
policy_url?: string;
|
|
167
|
-
terms_of_service_url?: string;
|
|
168
|
-
}
|
|
169
|
-
interface MarketSDKOptions {
|
|
170
|
-
baseUrl?: string;
|
|
171
|
-
defaultLocale?: string;
|
|
172
|
-
apiKey?: string;
|
|
158
|
+
interface PluginQueryParams {
|
|
159
|
+
page?: number;
|
|
160
|
+
pageSize?: number;
|
|
161
|
+
category?: string;
|
|
162
|
+
tags?: string;
|
|
163
|
+
q?: string;
|
|
164
|
+
sort?: 'installCount' | 'createdAt' | 'updatedAt' | 'ratingAverage';
|
|
165
|
+
order?: 'asc' | 'desc';
|
|
166
|
+
locale?: string;
|
|
173
167
|
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* 插件数据库模型
|
|
171
|
+
*/
|
|
174
172
|
interface Plugin {
|
|
175
173
|
id: number;
|
|
176
174
|
identifier: string;
|
|
@@ -195,6 +193,9 @@ interface Plugin {
|
|
|
195
193
|
ratingCount: number;
|
|
196
194
|
reviewCount: number;
|
|
197
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* 插件版本数据库模型
|
|
198
|
+
*/
|
|
198
199
|
interface PluginVersion {
|
|
199
200
|
id: number;
|
|
200
201
|
pluginId: number;
|
|
@@ -210,6 +211,9 @@ interface PluginVersion {
|
|
|
210
211
|
manifest: PluginManifest;
|
|
211
212
|
meta: Record<string, any> | null;
|
|
212
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* 管理员获取插件列表参数
|
|
216
|
+
*/
|
|
213
217
|
interface AdminPluginParams {
|
|
214
218
|
status?: 'published' | 'draft' | 'review' | 'rejected';
|
|
215
219
|
visibility?: 'public' | 'private' | 'unlisted';
|
|
@@ -220,6 +224,9 @@ interface AdminPluginParams {
|
|
|
220
224
|
orderBy?: 'createdAt' | 'updatedAt' | 'installCount' | 'ratingAverage';
|
|
221
225
|
order?: 'asc' | 'desc';
|
|
222
226
|
}
|
|
227
|
+
/**
|
|
228
|
+
* 创建插件版本参数
|
|
229
|
+
*/
|
|
223
230
|
interface PluginVersionCreateParams {
|
|
224
231
|
version: string;
|
|
225
232
|
manifest: PluginManifest;
|
|
@@ -228,11 +235,25 @@ interface PluginVersionCreateParams {
|
|
|
228
235
|
isValidated?: boolean;
|
|
229
236
|
meta?: Record<string, any>;
|
|
230
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* 更新插件版本参数
|
|
240
|
+
*/
|
|
231
241
|
interface PluginVersionUpdateParams {
|
|
232
242
|
manifestUrl?: string;
|
|
233
243
|
isValidated?: boolean;
|
|
234
244
|
meta?: Record<string, any>;
|
|
235
245
|
}
|
|
246
|
+
/**
|
|
247
|
+
* 更新插件信息参数
|
|
248
|
+
*/
|
|
249
|
+
interface PluginUpdateParams {
|
|
250
|
+
identifier?: string;
|
|
251
|
+
visibility?: 'public' | 'private' | 'unlisted';
|
|
252
|
+
status?: 'published' | 'draft' | 'review' | 'rejected';
|
|
253
|
+
isFeatured?: boolean;
|
|
254
|
+
tags?: string[];
|
|
255
|
+
meta?: Record<string, any>;
|
|
256
|
+
}
|
|
236
257
|
|
|
237
258
|
/**
|
|
238
259
|
* 基础 SDK 类
|
|
@@ -273,12 +294,64 @@ declare class BaseSDK {
|
|
|
273
294
|
}
|
|
274
295
|
|
|
275
296
|
/**
|
|
276
|
-
*
|
|
277
|
-
*
|
|
297
|
+
* 插件服务
|
|
298
|
+
* 处理插件相关功能
|
|
278
299
|
*/
|
|
279
|
-
declare class
|
|
300
|
+
declare class PluginsService extends BaseSDK {
|
|
280
301
|
/**
|
|
281
|
-
*
|
|
302
|
+
* 创建插件服务实例
|
|
303
|
+
* @param options SDK 配置选项
|
|
304
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
305
|
+
*/
|
|
306
|
+
constructor(options?: MarketSDKOptions, sharedHeaders?: Record<string, string>);
|
|
307
|
+
/**
|
|
308
|
+
* 获取插件列表
|
|
309
|
+
* @param params 查询参数
|
|
310
|
+
* @returns 插件列表响应
|
|
311
|
+
*/
|
|
312
|
+
getPluginList(params?: PluginQueryParams): Promise<PluginListResponse>;
|
|
313
|
+
/**
|
|
314
|
+
* 获取插件清单
|
|
315
|
+
* @param identifier 插件标识符
|
|
316
|
+
* @param locale 语言
|
|
317
|
+
* @param version 版本
|
|
318
|
+
* @returns 插件清单
|
|
319
|
+
*/
|
|
320
|
+
getPluginManifest(identifier: string, locale?: string, version?: string): Promise<PluginManifest>;
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* LobeHub Market SDK Client
|
|
325
|
+
* 采用组合模式组合各个领域服务
|
|
326
|
+
*/
|
|
327
|
+
declare class MarketSDK extends BaseSDK {
|
|
328
|
+
/**
|
|
329
|
+
* 插件服务
|
|
330
|
+
*/
|
|
331
|
+
readonly plugins: PluginsService;
|
|
332
|
+
/**
|
|
333
|
+
* 发现服务
|
|
334
|
+
*/
|
|
335
|
+
private readonly discovery;
|
|
336
|
+
/**
|
|
337
|
+
* Create MarketSDK instance
|
|
338
|
+
* @param options SDK configuration options
|
|
339
|
+
*/
|
|
340
|
+
constructor(options?: MarketSDKOptions);
|
|
341
|
+
/**
|
|
342
|
+
* Get market service discovery document
|
|
343
|
+
* @returns Service discovery document
|
|
344
|
+
*/
|
|
345
|
+
getDiscoveryDocument(): Promise<DiscoveryDocument>;
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* 插件管理服务
|
|
350
|
+
* 处理插件相关的管理功能
|
|
351
|
+
*/
|
|
352
|
+
declare class PluginAdminService extends BaseSDK {
|
|
353
|
+
/**
|
|
354
|
+
* 创建插件管理服务实例
|
|
282
355
|
* @param options SDK 配置选项
|
|
283
356
|
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
284
357
|
*/
|
|
@@ -299,12 +372,15 @@ declare class AdminService extends BaseSDK {
|
|
|
299
372
|
* @returns 插件列表响应
|
|
300
373
|
*/
|
|
301
374
|
getPlugins(params?: AdminPluginParams): Promise<{
|
|
302
|
-
data:
|
|
375
|
+
data: {
|
|
376
|
+
items: Plugin[];
|
|
377
|
+
totalCount: number;
|
|
378
|
+
};
|
|
303
379
|
}>;
|
|
304
380
|
/**
|
|
305
|
-
*
|
|
381
|
+
* 获取单个插件
|
|
306
382
|
* @param id 插件 ID
|
|
307
|
-
* @returns
|
|
383
|
+
* @returns 插件详情
|
|
308
384
|
*/
|
|
309
385
|
getPlugin(id: number): Promise<{
|
|
310
386
|
data: Plugin & {
|
|
@@ -395,6 +471,85 @@ declare class AdminService extends BaseSDK {
|
|
|
395
471
|
success: boolean;
|
|
396
472
|
message: string;
|
|
397
473
|
}>;
|
|
474
|
+
/**
|
|
475
|
+
* 更新插件可见性
|
|
476
|
+
* @param id 插件 ID
|
|
477
|
+
* @param visibility 新的可见性状态
|
|
478
|
+
* @returns 成功响应
|
|
479
|
+
*/
|
|
480
|
+
updatePluginVisibility(id: number, visibility: 'public' | 'private' | 'unlisted'): Promise<{
|
|
481
|
+
success: boolean;
|
|
482
|
+
message: string;
|
|
483
|
+
}>;
|
|
484
|
+
/**
|
|
485
|
+
* 批量更新插件状态
|
|
486
|
+
* @param ids 插件 ID 数组
|
|
487
|
+
* @param status 新的状态
|
|
488
|
+
* @returns 成功响应
|
|
489
|
+
*/
|
|
490
|
+
batchUpdatePluginStatus(ids: number[], status: 'published' | 'draft' | 'review' | 'rejected'): Promise<{
|
|
491
|
+
success: boolean;
|
|
492
|
+
message: string;
|
|
493
|
+
}>;
|
|
494
|
+
/**
|
|
495
|
+
* 批量删除插件
|
|
496
|
+
* @param ids 插件 ID 数组
|
|
497
|
+
* @returns 成功响应
|
|
498
|
+
*/
|
|
499
|
+
batchDeletePlugins(ids: number[]): Promise<{
|
|
500
|
+
success: boolean;
|
|
501
|
+
message: string;
|
|
502
|
+
}>;
|
|
503
|
+
/**
|
|
504
|
+
* 获取插件版本详情
|
|
505
|
+
* @param pluginId 插件 ID
|
|
506
|
+
* @param versionId 版本 ID
|
|
507
|
+
* @returns 版本详情
|
|
508
|
+
*/
|
|
509
|
+
getPluginVersionDetails(pluginId: number, versionId: number): Promise<{
|
|
510
|
+
data: PluginVersion & {
|
|
511
|
+
deploymentOptions: any;
|
|
512
|
+
};
|
|
513
|
+
}>;
|
|
514
|
+
/**
|
|
515
|
+
* 更新插件版本信息
|
|
516
|
+
* @param pluginId 插件 ID
|
|
517
|
+
* @param versionId 版本 ID
|
|
518
|
+
* @param data 版本更新数据
|
|
519
|
+
* @returns 更新后的版本
|
|
520
|
+
*/
|
|
521
|
+
updatePluginVersionDetails(pluginId: number, versionId: number, data: {
|
|
522
|
+
author?: string;
|
|
523
|
+
authorUrl?: string;
|
|
524
|
+
name?: string;
|
|
525
|
+
description?: string;
|
|
526
|
+
tags?: string[];
|
|
527
|
+
icon?: string;
|
|
528
|
+
category?: string;
|
|
529
|
+
capabilitiesTools?: boolean;
|
|
530
|
+
capabilitiesPrompts?: boolean;
|
|
531
|
+
capabilitiesResources?: boolean;
|
|
532
|
+
tools?: any;
|
|
533
|
+
resources?: any;
|
|
534
|
+
prompts?: any;
|
|
535
|
+
isValidated?: boolean;
|
|
536
|
+
meta?: Record<string, any>;
|
|
537
|
+
}): Promise<{
|
|
538
|
+
data: PluginVersion;
|
|
539
|
+
}>;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
/**
|
|
543
|
+
* 系统依赖管理服务
|
|
544
|
+
* 处理插件系统依赖相关的管理功能
|
|
545
|
+
*/
|
|
546
|
+
declare class SystemDependencyService extends BaseSDK {
|
|
547
|
+
/**
|
|
548
|
+
* 创建系统依赖管理服务实例
|
|
549
|
+
* @param options SDK 配置选项
|
|
550
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
551
|
+
*/
|
|
552
|
+
constructor(options?: MarketSDKOptions, sharedHeaders?: Record<string, string>);
|
|
398
553
|
/**
|
|
399
554
|
* 获取所有系统依赖项
|
|
400
555
|
* @returns 系统依赖项列表
|
|
@@ -439,88 +594,23 @@ declare class AdminService extends BaseSDK {
|
|
|
439
594
|
}
|
|
440
595
|
|
|
441
596
|
/**
|
|
442
|
-
*
|
|
443
|
-
*
|
|
597
|
+
* LobeHub 市场管理 SDK 客户端
|
|
598
|
+
* 专门用于管理市场的管理功能
|
|
444
599
|
*/
|
|
445
|
-
declare class
|
|
600
|
+
declare class MarketAdmin extends BaseSDK {
|
|
446
601
|
/**
|
|
447
|
-
*
|
|
448
|
-
* @param options SDK 配置选项
|
|
449
|
-
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
602
|
+
* 插件管理服务
|
|
450
603
|
*/
|
|
451
|
-
|
|
604
|
+
readonly plugins: PluginAdminService;
|
|
452
605
|
/**
|
|
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 插件清单
|
|
606
|
+
* 系统依赖管理服务
|
|
464
607
|
*/
|
|
465
|
-
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
/**
|
|
469
|
-
* 发现服务
|
|
470
|
-
* 处理服务发现功能
|
|
471
|
-
*/
|
|
472
|
-
declare class DiscoveryService extends BaseSDK {
|
|
473
|
-
private discoveryDoc?;
|
|
608
|
+
readonly dependencies: SystemDependencyService;
|
|
474
609
|
/**
|
|
475
|
-
*
|
|
610
|
+
* 创建 MarketAdmin 实例
|
|
476
611
|
* @param options SDK 配置选项
|
|
477
|
-
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
478
|
-
*/
|
|
479
|
-
constructor(options?: MarketSDKOptions, sharedHeaders?: Record<string, string>);
|
|
480
|
-
/**
|
|
481
|
-
* 获取市场服务发现文档
|
|
482
|
-
* @returns 服务发现文档
|
|
483
|
-
*/
|
|
484
|
-
getDiscoveryDocument(): Promise<DiscoveryDocument>;
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
/**
|
|
488
|
-
* LobeHub Market SDK Client
|
|
489
|
-
* 采用组合模式组合各个领域服务
|
|
490
|
-
*/
|
|
491
|
-
declare class MarketSDK extends BaseSDK {
|
|
492
|
-
/**
|
|
493
|
-
* 插件服务
|
|
494
|
-
*/
|
|
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
612
|
*/
|
|
508
613
|
constructor(options?: MarketSDKOptions);
|
|
509
|
-
/**
|
|
510
|
-
* Get market service discovery document
|
|
511
|
-
* @returns Service discovery document
|
|
512
|
-
*/
|
|
513
|
-
getDiscoveryDocument(): Promise<DiscoveryDocument>;
|
|
514
|
-
/**
|
|
515
|
-
* Import plugin manifests (requires admin privileges)
|
|
516
|
-
* @param manifests Plugin manifest array
|
|
517
|
-
* @param ownerId Owner ID
|
|
518
|
-
* @returns Import result
|
|
519
|
-
*/
|
|
520
|
-
importManifests(manifests: PluginManifest[], ownerId?: number): Promise<{
|
|
521
|
-
success: number;
|
|
522
|
-
failed: number;
|
|
523
|
-
}>;
|
|
524
614
|
}
|
|
525
615
|
|
|
526
|
-
export { type AdminPluginParams,
|
|
616
|
+
export { type AdminPluginParams, type ConnectionConfig, type ConnectionType, ConnectionTypeEnum, type DeploymentOption, type DiscoveryDocument, type InstallationDetails, type InstallationMethod, InstallationMethodEnum, MarketAdmin, 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, type PromptArgument, type SystemDependency };
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// src/market-sdk.ts
|
|
2
|
-
import
|
|
1
|
+
// src/market/market-sdk.ts
|
|
2
|
+
import debug4 from "debug";
|
|
3
3
|
|
|
4
4
|
// src/core/BaseSDK.ts
|
|
5
5
|
import debug from "debug";
|
|
@@ -11,15 +11,16 @@ var BaseSDK = class {
|
|
|
11
11
|
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
12
12
|
*/
|
|
13
13
|
constructor(options = {}, sharedHeaders) {
|
|
14
|
-
this.baseUrl = options.
|
|
14
|
+
this.baseUrl = options.baseURL || process.env.MARKET_BASE_URL || "https://market.lobehub.com/api";
|
|
15
15
|
this.defaultLocale = options.defaultLocale || "en-US";
|
|
16
|
+
const apiKey = options.apiKey || process.env.MARKET_API_KEY;
|
|
16
17
|
if (sharedHeaders) {
|
|
17
18
|
this.headers = sharedHeaders;
|
|
18
19
|
log("Using shared headers object");
|
|
19
20
|
} else {
|
|
20
21
|
this.headers = {
|
|
21
22
|
"Content-Type": "application/json",
|
|
22
|
-
...
|
|
23
|
+
...apiKey ? { Authorization: `Bearer ${apiKey}` } : {}
|
|
23
24
|
};
|
|
24
25
|
log("Created new headers object");
|
|
25
26
|
}
|
|
@@ -77,18 +78,122 @@ var BaseSDK = class {
|
|
|
77
78
|
}
|
|
78
79
|
};
|
|
79
80
|
|
|
80
|
-
// src/services/
|
|
81
|
+
// src/market/services/PluginsService.ts
|
|
81
82
|
import debug2 from "debug";
|
|
82
|
-
var log2 = debug2("lobe-market-sdk:
|
|
83
|
-
var
|
|
83
|
+
var log2 = debug2("lobe-market-sdk:plugins");
|
|
84
|
+
var PluginsService = class extends BaseSDK {
|
|
85
|
+
/**
|
|
86
|
+
* 创建插件服务实例
|
|
87
|
+
* @param options SDK 配置选项
|
|
88
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
89
|
+
*/
|
|
90
|
+
constructor(options = {}, sharedHeaders) {
|
|
91
|
+
super(options, sharedHeaders);
|
|
92
|
+
log2("PluginsService instance created");
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 获取插件列表
|
|
96
|
+
* @param params 查询参数
|
|
97
|
+
* @returns 插件列表响应
|
|
98
|
+
*/
|
|
99
|
+
async getPluginList(params = {}) {
|
|
100
|
+
const locale = params.locale || this.defaultLocale;
|
|
101
|
+
const queryParams = { ...params, locale };
|
|
102
|
+
const queryString = this.buildQueryString(queryParams);
|
|
103
|
+
log2("Getting plugin list: %O", queryParams);
|
|
104
|
+
const result = await this.request(`/v1/plugins${queryString}`);
|
|
105
|
+
log2("Retrieved %d plugins", result.items.length);
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* 获取插件清单
|
|
110
|
+
* @param identifier 插件标识符
|
|
111
|
+
* @param locale 语言
|
|
112
|
+
* @param version 版本
|
|
113
|
+
* @returns 插件清单
|
|
114
|
+
*/
|
|
115
|
+
async getPluginManifest(identifier, locale, version) {
|
|
116
|
+
log2("Getting plugin manifest: %O", { identifier, version, locale });
|
|
117
|
+
const localeParam = locale || this.defaultLocale;
|
|
118
|
+
const params = { locale: localeParam };
|
|
119
|
+
if (version) {
|
|
120
|
+
params.version = version;
|
|
121
|
+
}
|
|
122
|
+
const queryString = this.buildQueryString(params);
|
|
123
|
+
const manifest = await this.request(
|
|
124
|
+
`/v1/plugins/${identifier}/manifest${queryString}`
|
|
125
|
+
);
|
|
126
|
+
log2("Plugin manifest successfully retrieved: %s", identifier);
|
|
127
|
+
return manifest;
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
// src/market/services/DiscoveryService.ts
|
|
132
|
+
import debug3 from "debug";
|
|
133
|
+
var log3 = debug3("lobe-market-sdk:discovery");
|
|
134
|
+
var DiscoveryService = class extends BaseSDK {
|
|
135
|
+
/**
|
|
136
|
+
* 创建发现服务实例
|
|
137
|
+
* @param options SDK 配置选项
|
|
138
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
139
|
+
*/
|
|
140
|
+
constructor(options = {}, sharedHeaders) {
|
|
141
|
+
super(options, sharedHeaders);
|
|
142
|
+
log3("DiscoveryService instance created");
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* 获取市场服务发现文档
|
|
146
|
+
* @returns 服务发现文档
|
|
147
|
+
*/
|
|
148
|
+
async getDiscoveryDocument() {
|
|
149
|
+
log3("Fetching discovery document");
|
|
150
|
+
if (this.discoveryDoc) {
|
|
151
|
+
log3("Returning cached discovery document");
|
|
152
|
+
return this.discoveryDoc;
|
|
153
|
+
}
|
|
154
|
+
this.discoveryDoc = await this.request("/market/.well-known/discovery");
|
|
155
|
+
log3("Discovery document successfully fetched");
|
|
156
|
+
return this.discoveryDoc;
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
// src/market/market-sdk.ts
|
|
161
|
+
var log4 = debug4("lobe-market-sdk");
|
|
162
|
+
var MarketSDK = class extends BaseSDK {
|
|
163
|
+
/**
|
|
164
|
+
* Create MarketSDK instance
|
|
165
|
+
* @param options SDK configuration options
|
|
166
|
+
*/
|
|
167
|
+
constructor(options = {}) {
|
|
168
|
+
super(options);
|
|
169
|
+
log4("MarketSDK instance created");
|
|
170
|
+
this.plugins = new PluginsService(options, this.headers);
|
|
171
|
+
this.discovery = new DiscoveryService(options, this.headers);
|
|
172
|
+
}
|
|
84
173
|
/**
|
|
85
|
-
*
|
|
174
|
+
* Get market service discovery document
|
|
175
|
+
* @returns Service discovery document
|
|
176
|
+
*/
|
|
177
|
+
async getDiscoveryDocument() {
|
|
178
|
+
return this.discovery.getDiscoveryDocument();
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
// src/admin/MarketAdmin.ts
|
|
183
|
+
import debug7 from "debug";
|
|
184
|
+
|
|
185
|
+
// src/admin/services/PluginAdminService.ts
|
|
186
|
+
import debug5 from "debug";
|
|
187
|
+
var log5 = debug5("lobe-market-sdk:admin:plugin");
|
|
188
|
+
var PluginAdminService = class extends BaseSDK {
|
|
189
|
+
/**
|
|
190
|
+
* 创建插件管理服务实例
|
|
86
191
|
* @param options SDK 配置选项
|
|
87
192
|
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
88
193
|
*/
|
|
89
194
|
constructor(options = {}, sharedHeaders) {
|
|
90
195
|
super(options, sharedHeaders);
|
|
91
|
-
|
|
196
|
+
log5("PluginAdminService instance created");
|
|
92
197
|
}
|
|
93
198
|
/**
|
|
94
199
|
* 导入插件清单(需要管理员权限)
|
|
@@ -97,9 +202,9 @@ var AdminService = class extends BaseSDK {
|
|
|
97
202
|
* @returns 导入结果
|
|
98
203
|
*/
|
|
99
204
|
async importManifests(manifests, ownerId) {
|
|
100
|
-
|
|
205
|
+
log5(`Starting batch import of ${manifests.length} manifests`);
|
|
101
206
|
if (ownerId) {
|
|
102
|
-
|
|
207
|
+
log5(`Using specified owner ID: ${ownerId}`);
|
|
103
208
|
}
|
|
104
209
|
const response = await this.request(
|
|
105
210
|
"/admin/plugins/import",
|
|
@@ -111,7 +216,9 @@ var AdminService = class extends BaseSDK {
|
|
|
111
216
|
})
|
|
112
217
|
}
|
|
113
218
|
);
|
|
114
|
-
|
|
219
|
+
log5(
|
|
220
|
+
`Batch import completed: ${response.data.success} succeeded, ${response.data.failed} failed`
|
|
221
|
+
);
|
|
115
222
|
return response.data;
|
|
116
223
|
}
|
|
117
224
|
/**
|
|
@@ -120,24 +227,24 @@ var AdminService = class extends BaseSDK {
|
|
|
120
227
|
* @returns 插件列表响应
|
|
121
228
|
*/
|
|
122
229
|
async getPlugins(params = {}) {
|
|
123
|
-
|
|
230
|
+
log5("Getting plugins with params: %O", params);
|
|
124
231
|
const queryString = this.buildQueryString(params);
|
|
125
232
|
const url = `/admin/plugins${queryString ? `?${queryString}` : ""}`;
|
|
126
233
|
const result = await this.request(url);
|
|
127
|
-
|
|
234
|
+
log5("Retrieved %d plugins", result.data.items.length);
|
|
128
235
|
return result;
|
|
129
236
|
}
|
|
130
237
|
/**
|
|
131
|
-
*
|
|
238
|
+
* 获取单个插件
|
|
132
239
|
* @param id 插件 ID
|
|
133
|
-
* @returns
|
|
240
|
+
* @returns 插件详情
|
|
134
241
|
*/
|
|
135
242
|
async getPlugin(id) {
|
|
136
|
-
|
|
243
|
+
log5("Getting plugin details (admin): %d", id);
|
|
137
244
|
const result = await this.request(
|
|
138
245
|
`/admin/plugins/${id}`
|
|
139
246
|
);
|
|
140
|
-
|
|
247
|
+
log5("Retrieved plugin with %d versions", result.data.versions.length);
|
|
141
248
|
return result;
|
|
142
249
|
}
|
|
143
250
|
/**
|
|
@@ -147,12 +254,12 @@ var AdminService = class extends BaseSDK {
|
|
|
147
254
|
* @returns 更新后的插件
|
|
148
255
|
*/
|
|
149
256
|
async updatePlugin(id, data) {
|
|
150
|
-
|
|
257
|
+
log5("Updating plugin: %d, data: %O", id, data);
|
|
151
258
|
const result = await this.request(`/admin/plugins/${id}`, {
|
|
152
259
|
method: "PUT",
|
|
153
260
|
body: JSON.stringify(data)
|
|
154
261
|
});
|
|
155
|
-
|
|
262
|
+
log5("Plugin updated successfully");
|
|
156
263
|
return result;
|
|
157
264
|
}
|
|
158
265
|
/**
|
|
@@ -162,7 +269,7 @@ var AdminService = class extends BaseSDK {
|
|
|
162
269
|
* @returns 成功响应
|
|
163
270
|
*/
|
|
164
271
|
async updatePluginStatus(id, status) {
|
|
165
|
-
|
|
272
|
+
log5("Updating plugin status: %d to %s", id, status);
|
|
166
273
|
const result = await this.request(
|
|
167
274
|
`/admin/plugins/${id}/status`,
|
|
168
275
|
{
|
|
@@ -170,7 +277,7 @@ var AdminService = class extends BaseSDK {
|
|
|
170
277
|
body: JSON.stringify({ status })
|
|
171
278
|
}
|
|
172
279
|
);
|
|
173
|
-
|
|
280
|
+
log5("Plugin status updated successfully");
|
|
174
281
|
return result;
|
|
175
282
|
}
|
|
176
283
|
/**
|
|
@@ -179,12 +286,12 @@ var AdminService = class extends BaseSDK {
|
|
|
179
286
|
* @returns 成功响应
|
|
180
287
|
*/
|
|
181
288
|
async deletePlugin(id) {
|
|
182
|
-
|
|
289
|
+
log5("Deleting plugin: %d", id);
|
|
183
290
|
const result = await this.request(
|
|
184
291
|
`/admin/plugins/${id}`,
|
|
185
292
|
{ method: "DELETE" }
|
|
186
293
|
);
|
|
187
|
-
|
|
294
|
+
log5("Plugin deleted successfully");
|
|
188
295
|
return result;
|
|
189
296
|
}
|
|
190
297
|
/**
|
|
@@ -193,11 +300,11 @@ var AdminService = class extends BaseSDK {
|
|
|
193
300
|
* @returns 插件版本列表
|
|
194
301
|
*/
|
|
195
302
|
async getPluginVersions(pluginId) {
|
|
196
|
-
|
|
303
|
+
log5("Getting plugin versions: pluginId=%d", pluginId);
|
|
197
304
|
const result = await this.request(
|
|
198
305
|
`/admin/plugins/${pluginId}/versions`
|
|
199
306
|
);
|
|
200
|
-
|
|
307
|
+
log5("Retrieved %d versions", result.data.length);
|
|
201
308
|
return result;
|
|
202
309
|
}
|
|
203
310
|
/**
|
|
@@ -207,11 +314,11 @@ var AdminService = class extends BaseSDK {
|
|
|
207
314
|
* @returns 插件版本
|
|
208
315
|
*/
|
|
209
316
|
async getPluginVersion(pluginId, versionId) {
|
|
210
|
-
|
|
317
|
+
log5("Getting version details: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
211
318
|
const result = await this.request(
|
|
212
319
|
`/admin/plugins/${pluginId}/versions/${versionId}`
|
|
213
320
|
);
|
|
214
|
-
|
|
321
|
+
log5("Version details retrieved");
|
|
215
322
|
return result;
|
|
216
323
|
}
|
|
217
324
|
/**
|
|
@@ -221,7 +328,7 @@ var AdminService = class extends BaseSDK {
|
|
|
221
328
|
* @returns 创建的版本
|
|
222
329
|
*/
|
|
223
330
|
async createPluginVersion(pluginId, data) {
|
|
224
|
-
|
|
331
|
+
log5("Creating new version: pluginId=%d", pluginId);
|
|
225
332
|
const result = await this.request(
|
|
226
333
|
`/admin/plugins/${pluginId}/versions`,
|
|
227
334
|
{
|
|
@@ -229,7 +336,7 @@ var AdminService = class extends BaseSDK {
|
|
|
229
336
|
body: JSON.stringify(data)
|
|
230
337
|
}
|
|
231
338
|
);
|
|
232
|
-
|
|
339
|
+
log5("Plugin version created successfully");
|
|
233
340
|
return result;
|
|
234
341
|
}
|
|
235
342
|
/**
|
|
@@ -240,7 +347,7 @@ var AdminService = class extends BaseSDK {
|
|
|
240
347
|
* @returns 更新后的版本
|
|
241
348
|
*/
|
|
242
349
|
async updatePluginVersion(pluginId, versionId, data) {
|
|
243
|
-
|
|
350
|
+
log5("Updating version: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
244
351
|
const result = await this.request(
|
|
245
352
|
`/admin/plugins/${pluginId}/versions/${versionId}`,
|
|
246
353
|
{
|
|
@@ -248,7 +355,7 @@ var AdminService = class extends BaseSDK {
|
|
|
248
355
|
body: JSON.stringify(data)
|
|
249
356
|
}
|
|
250
357
|
);
|
|
251
|
-
|
|
358
|
+
log5("Plugin version updated successfully");
|
|
252
359
|
return result;
|
|
253
360
|
}
|
|
254
361
|
/**
|
|
@@ -258,12 +365,12 @@ var AdminService = class extends BaseSDK {
|
|
|
258
365
|
* @returns 成功响应
|
|
259
366
|
*/
|
|
260
367
|
async deletePluginVersion(pluginId, versionId) {
|
|
261
|
-
|
|
368
|
+
log5("Deleting version: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
262
369
|
const result = await this.request(
|
|
263
370
|
`/admin/plugins/${pluginId}/versions/${versionId}`,
|
|
264
371
|
{ method: "DELETE" }
|
|
265
372
|
);
|
|
266
|
-
|
|
373
|
+
log5("Plugin version deleted successfully");
|
|
267
374
|
return result;
|
|
268
375
|
}
|
|
269
376
|
/**
|
|
@@ -273,22 +380,123 @@ var AdminService = class extends BaseSDK {
|
|
|
273
380
|
* @returns 成功响应
|
|
274
381
|
*/
|
|
275
382
|
async setPluginVersionAsLatest(pluginId, versionId) {
|
|
276
|
-
|
|
383
|
+
log5("Setting version as latest: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
277
384
|
const result = await this.request(
|
|
278
385
|
`/admin/plugins/${pluginId}/versions/${versionId}/latest`,
|
|
279
386
|
{ method: "POST" }
|
|
280
387
|
);
|
|
281
|
-
|
|
388
|
+
log5("Version set as latest");
|
|
282
389
|
return result;
|
|
283
390
|
}
|
|
391
|
+
/**
|
|
392
|
+
* 更新插件可见性
|
|
393
|
+
* @param id 插件 ID
|
|
394
|
+
* @param visibility 新的可见性状态
|
|
395
|
+
* @returns 成功响应
|
|
396
|
+
*/
|
|
397
|
+
async updatePluginVisibility(id, visibility) {
|
|
398
|
+
log5("Updating plugin visibility: %d to %s", id, visibility);
|
|
399
|
+
const result = await this.request(
|
|
400
|
+
`/admin/plugins/${id}/visibility`,
|
|
401
|
+
{
|
|
402
|
+
method: "PATCH",
|
|
403
|
+
body: JSON.stringify({ visibility })
|
|
404
|
+
}
|
|
405
|
+
);
|
|
406
|
+
log5("Plugin visibility updated successfully");
|
|
407
|
+
return result;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* 批量更新插件状态
|
|
411
|
+
* @param ids 插件 ID 数组
|
|
412
|
+
* @param status 新的状态
|
|
413
|
+
* @returns 成功响应
|
|
414
|
+
*/
|
|
415
|
+
async batchUpdatePluginStatus(ids, status) {
|
|
416
|
+
log5("Batch updating plugin status: %O to %s", ids, status);
|
|
417
|
+
const result = await this.request(
|
|
418
|
+
"/admin/plugins/batch/status",
|
|
419
|
+
{
|
|
420
|
+
method: "PATCH",
|
|
421
|
+
body: JSON.stringify({ ids, status })
|
|
422
|
+
}
|
|
423
|
+
);
|
|
424
|
+
log5("Batch plugin status update completed");
|
|
425
|
+
return result;
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* 批量删除插件
|
|
429
|
+
* @param ids 插件 ID 数组
|
|
430
|
+
* @returns 成功响应
|
|
431
|
+
*/
|
|
432
|
+
async batchDeletePlugins(ids) {
|
|
433
|
+
log5("Batch deleting plugins: %O", ids);
|
|
434
|
+
const result = await this.request(
|
|
435
|
+
"/admin/plugins/batch/delete",
|
|
436
|
+
{
|
|
437
|
+
method: "DELETE",
|
|
438
|
+
body: JSON.stringify({ ids })
|
|
439
|
+
}
|
|
440
|
+
);
|
|
441
|
+
log5("Batch plugin deletion completed");
|
|
442
|
+
return result;
|
|
443
|
+
}
|
|
444
|
+
/**
|
|
445
|
+
* 获取插件版本详情
|
|
446
|
+
* @param pluginId 插件 ID
|
|
447
|
+
* @param versionId 版本 ID
|
|
448
|
+
* @returns 版本详情
|
|
449
|
+
*/
|
|
450
|
+
async getPluginVersionDetails(pluginId, versionId) {
|
|
451
|
+
log5("Getting version details: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
452
|
+
const result = await this.request(
|
|
453
|
+
`/admin/plugins/${pluginId}/versions/${versionId}`
|
|
454
|
+
);
|
|
455
|
+
log5("Version details retrieved with deployment options");
|
|
456
|
+
return result;
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* 更新插件版本信息
|
|
460
|
+
* @param pluginId 插件 ID
|
|
461
|
+
* @param versionId 版本 ID
|
|
462
|
+
* @param data 版本更新数据
|
|
463
|
+
* @returns 更新后的版本
|
|
464
|
+
*/
|
|
465
|
+
async updatePluginVersionDetails(pluginId, versionId, data) {
|
|
466
|
+
log5("Updating version details: pluginId=%d, versionId=%d", pluginId, versionId);
|
|
467
|
+
const result = await this.request(
|
|
468
|
+
`/admin/plugins/${pluginId}/versions/${versionId}`,
|
|
469
|
+
{
|
|
470
|
+
method: "PUT",
|
|
471
|
+
body: JSON.stringify(data)
|
|
472
|
+
}
|
|
473
|
+
);
|
|
474
|
+
log5("Version details updated successfully");
|
|
475
|
+
return result;
|
|
476
|
+
}
|
|
477
|
+
};
|
|
478
|
+
|
|
479
|
+
// src/admin/services/SystemDependencyService.ts
|
|
480
|
+
import debug6 from "debug";
|
|
481
|
+
var log6 = debug6("lobe-market-sdk:admin:dependency");
|
|
482
|
+
var SystemDependencyService = class extends BaseSDK {
|
|
483
|
+
/**
|
|
484
|
+
* 创建系统依赖管理服务实例
|
|
485
|
+
* @param options SDK 配置选项
|
|
486
|
+
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
487
|
+
*/
|
|
488
|
+
constructor(options = {}, sharedHeaders) {
|
|
489
|
+
super(options, sharedHeaders);
|
|
490
|
+
log6("SystemDependencyService instance created");
|
|
491
|
+
}
|
|
284
492
|
/**
|
|
285
493
|
* 获取所有系统依赖项
|
|
286
494
|
* @returns 系统依赖项列表
|
|
287
495
|
*/
|
|
288
496
|
async getSystemDependencies() {
|
|
289
|
-
|
|
497
|
+
log6("Getting all system dependencies");
|
|
290
498
|
const result = await this.request(`/admin/plugins/dependencies`);
|
|
291
|
-
|
|
499
|
+
log6("Retrieved %d system dependencies", result.data.length);
|
|
292
500
|
return result;
|
|
293
501
|
}
|
|
294
502
|
/**
|
|
@@ -297,11 +505,11 @@ var AdminService = class extends BaseSDK {
|
|
|
297
505
|
* @returns 系统依赖项
|
|
298
506
|
*/
|
|
299
507
|
async getSystemDependency(id) {
|
|
300
|
-
|
|
508
|
+
log6("Getting system dependency details: %d", id);
|
|
301
509
|
const result = await this.request(
|
|
302
510
|
`/admin/plugins/dependencies/${id}`
|
|
303
511
|
);
|
|
304
|
-
|
|
512
|
+
log6("System dependency details retrieved");
|
|
305
513
|
return result;
|
|
306
514
|
}
|
|
307
515
|
/**
|
|
@@ -310,12 +518,12 @@ var AdminService = class extends BaseSDK {
|
|
|
310
518
|
* @returns 创建的依赖项
|
|
311
519
|
*/
|
|
312
520
|
async createSystemDependency(data) {
|
|
313
|
-
|
|
521
|
+
log6("Creating system dependency: %O", data);
|
|
314
522
|
const result = await this.request(`/admin/plugins/dependencies`, {
|
|
315
523
|
method: "POST",
|
|
316
524
|
body: JSON.stringify(data)
|
|
317
525
|
});
|
|
318
|
-
|
|
526
|
+
log6("System dependency created successfully");
|
|
319
527
|
return result;
|
|
320
528
|
}
|
|
321
529
|
/**
|
|
@@ -325,7 +533,7 @@ var AdminService = class extends BaseSDK {
|
|
|
325
533
|
* @returns 更新后的依赖项
|
|
326
534
|
*/
|
|
327
535
|
async updateSystemDependency(id, data) {
|
|
328
|
-
|
|
536
|
+
log6("Updating system dependency: %d, data: %O", id, data);
|
|
329
537
|
const result = await this.request(
|
|
330
538
|
`/admin/plugins/dependencies/${id}`,
|
|
331
539
|
{
|
|
@@ -333,7 +541,7 @@ var AdminService = class extends BaseSDK {
|
|
|
333
541
|
body: JSON.stringify(data)
|
|
334
542
|
}
|
|
335
543
|
);
|
|
336
|
-
|
|
544
|
+
log6("System dependency updated successfully");
|
|
337
545
|
return result;
|
|
338
546
|
}
|
|
339
547
|
/**
|
|
@@ -342,130 +550,32 @@ var AdminService = class extends BaseSDK {
|
|
|
342
550
|
* @returns 成功响应
|
|
343
551
|
*/
|
|
344
552
|
async deleteSystemDependency(id) {
|
|
345
|
-
|
|
553
|
+
log6("Deleting system dependency: %d", id);
|
|
346
554
|
const result = await this.request(
|
|
347
555
|
`/admin/plugins/dependencies/${id}`,
|
|
348
556
|
{ method: "DELETE" }
|
|
349
557
|
);
|
|
350
|
-
|
|
558
|
+
log6("System dependency deleted successfully");
|
|
351
559
|
return result;
|
|
352
560
|
}
|
|
353
561
|
};
|
|
354
562
|
|
|
355
|
-
// src/
|
|
356
|
-
|
|
357
|
-
var
|
|
358
|
-
var PluginsService = class extends BaseSDK {
|
|
563
|
+
// src/admin/MarketAdmin.ts
|
|
564
|
+
var log7 = debug7("lobe-market-sdk:admin");
|
|
565
|
+
var MarketAdmin = class extends BaseSDK {
|
|
359
566
|
/**
|
|
360
|
-
*
|
|
567
|
+
* 创建 MarketAdmin 实例
|
|
361
568
|
* @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 插件列表响应
|
|
372
|
-
*/
|
|
373
|
-
async getPluginList(params = {}) {
|
|
374
|
-
const locale = params.locale || this.defaultLocale;
|
|
375
|
-
const queryParams = { ...params, locale };
|
|
376
|
-
const queryString = this.buildQueryString(queryParams);
|
|
377
|
-
log3("Getting plugin list: %O", queryParams);
|
|
378
|
-
const result = await this.request(`/v1/plugins${queryString}`);
|
|
379
|
-
log3("Retrieved %d plugins", result.items.length);
|
|
380
|
-
return result;
|
|
381
|
-
}
|
|
382
|
-
/**
|
|
383
|
-
* 获取插件清单
|
|
384
|
-
* @param identifier 插件标识符
|
|
385
|
-
* @param locale 语言
|
|
386
|
-
* @param version 版本
|
|
387
|
-
* @returns 插件清单
|
|
388
|
-
*/
|
|
389
|
-
async getPluginManifest(identifier, locale, version) {
|
|
390
|
-
log3("Getting plugin manifest: %O", { identifier, version, locale });
|
|
391
|
-
const localeParam = locale || this.defaultLocale;
|
|
392
|
-
const params = { locale: localeParam };
|
|
393
|
-
if (version) {
|
|
394
|
-
params.version = version;
|
|
395
|
-
}
|
|
396
|
-
const queryString = this.buildQueryString(params);
|
|
397
|
-
const manifest = await this.request(
|
|
398
|
-
`/v1/plugins/${identifier}/manifest${queryString}`
|
|
399
|
-
);
|
|
400
|
-
log3("Plugin manifest successfully retrieved: %s", identifier);
|
|
401
|
-
return manifest;
|
|
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 {
|
|
409
|
-
/**
|
|
410
|
-
* 创建发现服务实例
|
|
411
|
-
* @param options SDK 配置选项
|
|
412
|
-
* @param sharedHeaders 共享的 headers 对象(可选)
|
|
413
|
-
*/
|
|
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;
|
|
427
|
-
}
|
|
428
|
-
this.discoveryDoc = await this.request("/market/.well-known/discovery");
|
|
429
|
-
log4("Discovery document successfully fetched");
|
|
430
|
-
return this.discoveryDoc;
|
|
431
|
-
}
|
|
432
|
-
};
|
|
433
|
-
|
|
434
|
-
// src/market-sdk.ts
|
|
435
|
-
var log5 = debug5("lobe-market-sdk");
|
|
436
|
-
var MarketSDK = class extends BaseSDK {
|
|
437
|
-
/**
|
|
438
|
-
* Create MarketSDK instance
|
|
439
|
-
* @param options SDK configuration options
|
|
440
569
|
*/
|
|
441
570
|
constructor(options = {}) {
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
this.
|
|
446
|
-
this.
|
|
447
|
-
}
|
|
448
|
-
/**
|
|
449
|
-
* Get market service discovery document
|
|
450
|
-
* @returns Service discovery document
|
|
451
|
-
*/
|
|
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);
|
|
571
|
+
const apiKey = options.apiKey || process.env.MARKET_ADMIN_API_KEY;
|
|
572
|
+
super({ ...options, apiKey });
|
|
573
|
+
log7("MarketAdmin instance created");
|
|
574
|
+
this.plugins = new PluginAdminService(options, this.headers);
|
|
575
|
+
this.dependencies = new SystemDependencyService(options, this.headers);
|
|
463
576
|
}
|
|
464
577
|
};
|
|
465
578
|
|
|
466
|
-
// src/types/index.ts
|
|
467
|
-
import { z as z2 } from "zod";
|
|
468
|
-
|
|
469
579
|
// src/types/plugins.ts
|
|
470
580
|
import { z } from "zod";
|
|
471
581
|
var PluginTypeEnum = z.enum(["lobe", "openai", "mcp"]);
|
|
@@ -478,25 +588,11 @@ var InstallationMethodEnum = z.enum([
|
|
|
478
588
|
"manual",
|
|
479
589
|
"none"
|
|
480
590
|
]);
|
|
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
|
-
]);
|
|
493
591
|
export {
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
InstallationMethodEnum2 as InstallationMethodEnum,
|
|
592
|
+
ConnectionTypeEnum,
|
|
593
|
+
InstallationMethodEnum,
|
|
594
|
+
MarketAdmin,
|
|
498
595
|
MarketSDK,
|
|
499
|
-
|
|
500
|
-
PluginsService
|
|
596
|
+
PluginTypeEnum
|
|
501
597
|
};
|
|
502
598
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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"]}
|
|
1
|
+
{"version":3,"sources":["../src/market/market-sdk.ts","../src/core/BaseSDK.ts","../src/market/services/PluginsService.ts","../src/market/services/DiscoveryService.ts","../src/admin/MarketAdmin.ts","../src/admin/services/PluginAdminService.ts","../src/admin/services/SystemDependencyService.ts","../src/types/plugins.ts"],"sourcesContent":["import debug from 'debug';\n\nimport { BaseSDK } from '../core/BaseSDK';\nimport { DiscoveryService, PluginsService } from './services';\nimport { DiscoveryDocument, MarketSDKOptions } 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 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.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","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 =\n options.baseURL || process.env.MARKET_BASE_URL || 'https://market.lobehub.com/api';\n this.defaultLocale = options.defaultLocale || 'en-US';\n\n const apiKey = options.apiKey || process.env.MARKET_API_KEY;\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 ...(apiKey ? { Authorization: `Bearer ${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 { 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 debug from 'debug';\n\nimport { BaseSDK } from '../core/BaseSDK';\nimport { MarketSDKOptions } from '../types';\nimport { PluginAdminService, SystemDependencyService } from './services';\n\n// 创建 debug 实例\nconst log = debug('lobe-market-sdk:admin');\n\n/**\n * LobeHub 市场管理 SDK 客户端\n * 专门用于管理市场的管理功能\n */\nexport class MarketAdmin extends BaseSDK {\n /**\n * 插件管理服务\n */\n readonly plugins: PluginAdminService;\n\n /**\n * 系统依赖管理服务\n */\n readonly dependencies: SystemDependencyService;\n\n /**\n * 创建 MarketAdmin 实例\n * @param options SDK 配置选项\n */\n constructor(options: MarketSDKOptions = {}) {\n const apiKey = options.apiKey || process.env.MARKET_ADMIN_API_KEY;\n\n super({ ...options, apiKey });\n log('MarketAdmin instance created');\n\n // 初始化服务\n this.plugins = new PluginAdminService(options, this.headers);\n this.dependencies = new SystemDependencyService(options, this.headers);\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} from '../../types';\n\n// 创建 debug 实例\nconst log = debug('lobe-market-sdk:admin:plugin');\n\n/**\n * 插件管理服务\n * 处理插件相关的管理功能\n */\nexport class PluginAdminService 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('PluginAdminService 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(`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 } }>(\n '/admin/plugins/import',\n {\n method: 'POST',\n body: JSON.stringify({\n manifests,\n ownerId,\n }),\n },\n );\n\n log(\n `Batch import completed: ${response.data.success} succeeded, ${response.data.failed} failed`,\n );\n return response.data;\n }\n\n /**\n * 获取插件列表\n * @param params 查询参数\n * @returns 插件列表响应\n */\n async getPlugins(\n params: AdminPluginParams = {},\n ): Promise<{ data: { items: Plugin[]; totalCount: number } }> {\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: { items: Plugin[]; totalCount: number } }>(url);\n\n log('Retrieved %d plugins', result.data.items.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('Getting plugin details (admin): %d', id);\n\n const result = await this.request<{ data: Plugin & { versions: PluginVersion[] } }>(\n `/admin/plugins/${id}`,\n );\n log('Retrieved plugin with %d versions', 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('Updating plugin: %d, data: %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('Plugin updated successfully');\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('Updating plugin status: %d to %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('Plugin status updated successfully');\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('Deleting plugin: %d', id);\n\n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${id}`,\n { method: 'DELETE' },\n );\n log('Plugin deleted successfully');\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('Plugin version updated successfully');\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('Deleting version: 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('Plugin version deleted successfully');\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 * @param id 插件 ID\n * @param visibility 新的可见性状态\n * @returns 成功响应\n */\n async updatePluginVisibility(\n id: number,\n visibility: 'public' | 'private' | 'unlisted',\n ): Promise<{ success: boolean; message: string }> {\n log('Updating plugin visibility: %d to %s', id, visibility);\n\n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/${id}/visibility`,\n {\n method: 'PATCH',\n body: JSON.stringify({ visibility }),\n },\n );\n log('Plugin visibility updated successfully');\n return result;\n }\n\n /**\n * 批量更新插件状态\n * @param ids 插件 ID 数组\n * @param status 新的状态\n * @returns 成功响应\n */\n async batchUpdatePluginStatus(\n ids: number[],\n status: 'published' | 'draft' | 'review' | 'rejected',\n ): Promise<{ success: boolean; message: string }> {\n log('Batch updating plugin status: %O to %s', ids, status);\n\n const result = await this.request<{ success: boolean; message: string }>(\n '/admin/plugins/batch/status',\n {\n method: 'PATCH',\n body: JSON.stringify({ ids, status }),\n },\n );\n log('Batch plugin status update completed');\n return result;\n }\n\n /**\n * 批量删除插件\n * @param ids 插件 ID 数组\n * @returns 成功响应\n */\n async batchDeletePlugins(ids: number[]): Promise<{ success: boolean; message: string }> {\n log('Batch deleting plugins: %O', ids);\n\n const result = await this.request<{ success: boolean; message: string }>(\n '/admin/plugins/batch/delete',\n {\n method: 'DELETE',\n body: JSON.stringify({ ids }),\n },\n );\n log('Batch plugin deletion completed');\n return result;\n }\n\n /**\n * 获取插件版本详情\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @returns 版本详情\n */\n async getPluginVersionDetails(\n pluginId: number,\n versionId: number,\n ): Promise<{ data: PluginVersion & { deploymentOptions: any } }> {\n log('Getting version details: pluginId=%d, versionId=%d', pluginId, versionId);\n\n const result = await this.request<{ data: PluginVersion & { deploymentOptions: any } }>(\n `/admin/plugins/${pluginId}/versions/${versionId}`,\n );\n log('Version details retrieved with deployment options');\n return result;\n }\n\n /**\n * 更新插件版本信息\n * @param pluginId 插件 ID\n * @param versionId 版本 ID\n * @param data 版本更新数据\n * @returns 更新后的版本\n */\n async updatePluginVersionDetails(\n pluginId: number,\n versionId: number,\n data: {\n author?: string;\n authorUrl?: string;\n name?: string;\n description?: string;\n tags?: string[];\n icon?: string;\n category?: string;\n capabilitiesTools?: boolean;\n capabilitiesPrompts?: boolean;\n capabilitiesResources?: boolean;\n tools?: any;\n resources?: any;\n prompts?: any;\n isValidated?: boolean;\n meta?: Record<string, any>;\n },\n ): Promise<{ data: PluginVersion }> {\n log('Updating 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 method: 'PUT',\n body: JSON.stringify(data),\n },\n );\n log('Version details updated successfully');\n return result;\n }\n}\n","import debug from 'debug';\n\nimport { BaseSDK } from '../../core/BaseSDK';\nimport { MarketSDKOptions, SystemDependency } from '../../types';\n\n// 创建 debug 实例\nconst log = debug('lobe-market-sdk:admin:dependency');\n\n/**\n * 系统依赖管理服务\n * 处理插件系统依赖相关的管理功能\n */\nexport class SystemDependencyService 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('SystemDependencyService instance created');\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('Deleting system dependency: %d', id);\n\n const result = await this.request<{ success: boolean; message: string }>(\n `/admin/plugins/dependencies/${id}`,\n { method: 'DELETE' },\n );\n log('System dependency deleted successfully');\n return result;\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 description?: 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 description?: 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","log","debug","debug","debug","log","debug","debug","log","debug","log","debug"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobehub/market-sdk",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"description": "LobeHub Market JavaScript SDK",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lobehub",
|
|
@@ -29,6 +29,8 @@
|
|
|
29
29
|
"dev": "tsup --watch",
|
|
30
30
|
"prepublishOnly": "npm run build",
|
|
31
31
|
"release": "npm publish",
|
|
32
|
+
"test": "vitest",
|
|
33
|
+
"test:watch": "vitest watch",
|
|
32
34
|
"test:admin": "node examples/admin-test.js",
|
|
33
35
|
"test:domain": "node examples/domain-usage.js"
|
|
34
36
|
},
|
|
@@ -40,6 +42,7 @@
|
|
|
40
42
|
"@types/debug": "^4.1.12",
|
|
41
43
|
"tsup": "^8.4.0",
|
|
42
44
|
"typescript": "^5.8.3",
|
|
45
|
+
"vitest": "^3.1.3",
|
|
43
46
|
"zod": "^3.24.4"
|
|
44
47
|
},
|
|
45
48
|
"peerDependencies": {
|