needware-cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.editorconfig +21 -0
- package/AGENT_COMMAND_SUMMARY.md +364 -0
- package/CHANGELOG.md +138 -0
- package/FEATURE_INTERACTIVE_MODE.md +303 -0
- package/INTERACTIVE_EXAMPLE.md +305 -0
- package/LICENSE +22 -0
- package/PROJECT_SUMMARY.md +435 -0
- package/QUICK_START.md +216 -0
- package/README.md +310 -0
- package/SETUP.md +315 -0
- package/bin/cli.js +49 -0
- package/config/default.json +20 -0
- package/dist/commands/agent.d.ts +38 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +444 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/config.d.ts +48 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +197 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/example.d.ts +32 -0
- package/dist/commands/example.d.ts.map +1 -0
- package/dist/commands/example.js +154 -0
- package/dist/commands/example.js.map +1 -0
- package/dist/commands/index.d.ts +8 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +15 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +25 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +158 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/core/cli.d.ts +37 -0
- package/dist/core/cli.d.ts.map +1 -0
- package/dist/core/cli.js +160 -0
- package/dist/core/cli.js.map +1 -0
- package/dist/core/command.d.ts +41 -0
- package/dist/core/command.d.ts.map +1 -0
- package/dist/core/command.js +87 -0
- package/dist/core/command.js.map +1 -0
- package/dist/core/logger.d.ts +30 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +163 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +125 -0
- package/dist/index.js.map +1 -0
- package/dist/sdk/base-sdk.d.ts +61 -0
- package/dist/sdk/base-sdk.d.ts.map +1 -0
- package/dist/sdk/base-sdk.js +71 -0
- package/dist/sdk/base-sdk.js.map +1 -0
- package/dist/sdk/example-sdk.d.ts +40 -0
- package/dist/sdk/example-sdk.d.ts.map +1 -0
- package/dist/sdk/example-sdk.js +168 -0
- package/dist/sdk/example-sdk.js.map +1 -0
- package/dist/sdk/index.d.ts +59 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +169 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/types/command.d.ts +34 -0
- package/dist/types/command.d.ts.map +1 -0
- package/dist/types/command.js +13 -0
- package/dist/types/command.js.map +1 -0
- package/dist/types/config.d.ts +30 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/error.d.ts +24 -0
- package/dist/types/error.d.ts.map +1 -0
- package/dist/types/error.js +33 -0
- package/dist/types/error.js.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +23 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/sdk.d.ts +21 -0
- package/dist/types/sdk.d.ts.map +1 -0
- package/dist/types/sdk.js +6 -0
- package/dist/types/sdk.js.map +1 -0
- package/dist/utils/config.d.ts +59 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +237 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/file.d.ts +66 -0
- package/dist/utils/file.d.ts.map +1 -0
- package/dist/utils/file.js +162 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/validator.d.ts +66 -0
- package/dist/utils/validator.d.ts.map +1 -0
- package/dist/utils/validator.js +120 -0
- package/dist/utils/validator.js.map +1 -0
- package/package.json +61 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Needware CLI 主入口
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
17
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
18
|
+
};
|
|
19
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
20
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.FileUtils = exports.Validator = exports.Command = exports.SDKManager = exports.ConfigManager = exports.Logger = exports.CLI = void 0;
|
|
24
|
+
const dotenv_1 = require("dotenv");
|
|
25
|
+
const cli_1 = require("./core/cli");
|
|
26
|
+
Object.defineProperty(exports, "CLI", { enumerable: true, get: function () { return cli_1.CLI; } });
|
|
27
|
+
const logger_1 = require("./core/logger");
|
|
28
|
+
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
|
|
29
|
+
const config_1 = require("./utils/config");
|
|
30
|
+
Object.defineProperty(exports, "ConfigManager", { enumerable: true, get: function () { return config_1.ConfigManager; } });
|
|
31
|
+
const sdk_1 = require("./sdk");
|
|
32
|
+
Object.defineProperty(exports, "SDKManager", { enumerable: true, get: function () { return sdk_1.SDKManager; } });
|
|
33
|
+
const commands_1 = require("./commands");
|
|
34
|
+
const file_1 = require("./utils/file");
|
|
35
|
+
const package_json_1 = __importDefault(require("../package.json"));
|
|
36
|
+
// 加载环境变量
|
|
37
|
+
(0, dotenv_1.config)();
|
|
38
|
+
const VERSION = package_json_1.default.version;
|
|
39
|
+
/**
|
|
40
|
+
* 初始化 Logger
|
|
41
|
+
*/
|
|
42
|
+
function initializeLogger(configManager) {
|
|
43
|
+
const config = configManager.getConfig();
|
|
44
|
+
const logLevel = config.logging.level;
|
|
45
|
+
const logFile = file_1.FileUtils.resolvePath(config.logging.file);
|
|
46
|
+
const colorOutput = config.preferences.colorOutput;
|
|
47
|
+
const logger = new logger_1.Logger(logLevel, logFile, colorOutput);
|
|
48
|
+
return logger;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 初始化 SDK Manager
|
|
52
|
+
*/
|
|
53
|
+
function initializeSDKManager(configManager, logger) {
|
|
54
|
+
const sdkManager = new sdk_1.SDKManager(logger);
|
|
55
|
+
const config = configManager.getConfig();
|
|
56
|
+
// 注册 Example SDK
|
|
57
|
+
if (config.sdks.example) {
|
|
58
|
+
const exampleSDK = new sdk_1.ExampleSDK(config.sdks.example, logger);
|
|
59
|
+
sdkManager.registerSDK(exampleSDK);
|
|
60
|
+
}
|
|
61
|
+
return sdkManager;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 注册所有命令
|
|
65
|
+
*/
|
|
66
|
+
function registerCommands(cli, logger, configManager, sdkManager) {
|
|
67
|
+
// 初始化命令
|
|
68
|
+
const initCommand = new commands_1.InitCommand(logger, configManager);
|
|
69
|
+
cli.registerCommand(initCommand);
|
|
70
|
+
// 配置命令
|
|
71
|
+
const configCommand = new commands_1.ConfigCommand(logger, configManager);
|
|
72
|
+
cli.registerCommand(configCommand);
|
|
73
|
+
// 示例命令
|
|
74
|
+
const exampleCommand = new commands_1.ExampleCommand(logger, sdkManager);
|
|
75
|
+
cli.registerCommand(exampleCommand);
|
|
76
|
+
// Agent 命令
|
|
77
|
+
const agentCommand = new commands_1.AgentCommand(logger);
|
|
78
|
+
cli.registerCommand(agentCommand);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* 主函数
|
|
82
|
+
*/
|
|
83
|
+
async function main() {
|
|
84
|
+
try {
|
|
85
|
+
// 初始化配置管理器
|
|
86
|
+
const configManager = new config_1.ConfigManager();
|
|
87
|
+
// 初始化 Logger
|
|
88
|
+
const logger = initializeLogger(configManager);
|
|
89
|
+
// 初始化 SDK Manager
|
|
90
|
+
const sdkManager = initializeSDKManager(configManager, logger);
|
|
91
|
+
// 创建 CLI 实例
|
|
92
|
+
const cli = new cli_1.CLI(VERSION, logger);
|
|
93
|
+
// 注册所有命令
|
|
94
|
+
registerCommands(cli, logger, configManager, sdkManager);
|
|
95
|
+
// 运行 CLI
|
|
96
|
+
await cli.run();
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
console.error('Fatal error:', error);
|
|
100
|
+
process.exit(1);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
__exportStar(require("./types"), exports);
|
|
104
|
+
__exportStar(require("./commands"), exports);
|
|
105
|
+
__exportStar(require("./sdk"), exports);
|
|
106
|
+
var command_1 = require("./core/command");
|
|
107
|
+
Object.defineProperty(exports, "Command", { enumerable: true, get: function () { return command_1.Command; } });
|
|
108
|
+
var validator_1 = require("./utils/validator");
|
|
109
|
+
Object.defineProperty(exports, "Validator", { enumerable: true, get: function () { return validator_1.Validator; } });
|
|
110
|
+
var file_2 = require("./utils/file");
|
|
111
|
+
Object.defineProperty(exports, "FileUtils", { enumerable: true, get: function () { return file_2.FileUtils; } });
|
|
112
|
+
// 仅在直接运行时或通过 CLI 入口运行时执行
|
|
113
|
+
// 检查是否通过 bin/cli.js 或直接运行
|
|
114
|
+
const isDirectRun = require.main === module;
|
|
115
|
+
const isCLIEntry = process.argv[1] &&
|
|
116
|
+
(process.argv[1].endsWith('/bin/cli.js') ||
|
|
117
|
+
process.argv[1].endsWith('\\bin\\cli.js') ||
|
|
118
|
+
process.argv[1].includes('needware-cli'));
|
|
119
|
+
if (isDirectRun || isCLIEntry) {
|
|
120
|
+
main().catch((error) => {
|
|
121
|
+
console.error('Unhandled error:', error);
|
|
122
|
+
process.exit(1);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK 基类
|
|
3
|
+
*/
|
|
4
|
+
import { SDKConfig, SDKHealthStatus, SDKMetadata } from '../types/sdk';
|
|
5
|
+
import { Logger } from '../core/logger';
|
|
6
|
+
export declare abstract class BaseSDK {
|
|
7
|
+
abstract readonly metadata: SDKMetadata;
|
|
8
|
+
protected config: SDKConfig;
|
|
9
|
+
protected logger: Logger;
|
|
10
|
+
protected initialized: boolean;
|
|
11
|
+
constructor(config: SDKConfig, logger: Logger);
|
|
12
|
+
/**
|
|
13
|
+
* 初始化 SDK
|
|
14
|
+
*/
|
|
15
|
+
abstract initialize(): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* 检查 SDK 健康状态
|
|
18
|
+
*/
|
|
19
|
+
abstract isHealthy(): Promise<SDKHealthStatus>;
|
|
20
|
+
/**
|
|
21
|
+
* 清理资源
|
|
22
|
+
*/
|
|
23
|
+
abstract dispose(): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* 获取 SDK 名称
|
|
26
|
+
*/
|
|
27
|
+
getName(): string;
|
|
28
|
+
/**
|
|
29
|
+
* 获取 SDK 版本
|
|
30
|
+
*/
|
|
31
|
+
getVersion(): string;
|
|
32
|
+
/**
|
|
33
|
+
* 检查是否已初始化
|
|
34
|
+
*/
|
|
35
|
+
isInitialized(): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* 更新配置
|
|
38
|
+
*/
|
|
39
|
+
updateConfig(config: Partial<SDKConfig>): void;
|
|
40
|
+
/**
|
|
41
|
+
* 获取配置
|
|
42
|
+
*/
|
|
43
|
+
getConfig(): SDKConfig;
|
|
44
|
+
/**
|
|
45
|
+
* 记录调试信息
|
|
46
|
+
*/
|
|
47
|
+
protected debug(message: string, context?: any): void;
|
|
48
|
+
/**
|
|
49
|
+
* 记录信息
|
|
50
|
+
*/
|
|
51
|
+
protected info(message: string, context?: any): void;
|
|
52
|
+
/**
|
|
53
|
+
* 记录警告
|
|
54
|
+
*/
|
|
55
|
+
protected warn(message: string, context?: any): void;
|
|
56
|
+
/**
|
|
57
|
+
* 记录错误
|
|
58
|
+
*/
|
|
59
|
+
protected error(message: string, context?: any): void;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=base-sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-sdk.d.ts","sourceRoot":"","sources":["../../src/sdk/base-sdk.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,8BAAsB,OAAO;IAC3B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAExC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC;IAC5B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,WAAW,UAAS;gBAElB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;IAK7C;;OAEG;IACH,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IAE9C;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAEjC;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,IAAI;IAI9C;;OAEG;IACH,SAAS,IAAI,SAAS;IAItB;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAIrD;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAIpD;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAIpD;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;CAGtD"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SDK 基类
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BaseSDK = void 0;
|
|
7
|
+
class BaseSDK {
|
|
8
|
+
config;
|
|
9
|
+
logger;
|
|
10
|
+
initialized = false;
|
|
11
|
+
constructor(config, logger) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
this.logger = logger;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* 获取 SDK 名称
|
|
17
|
+
*/
|
|
18
|
+
getName() {
|
|
19
|
+
return this.metadata.name;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 获取 SDK 版本
|
|
23
|
+
*/
|
|
24
|
+
getVersion() {
|
|
25
|
+
return this.metadata.version;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 检查是否已初始化
|
|
29
|
+
*/
|
|
30
|
+
isInitialized() {
|
|
31
|
+
return this.initialized;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 更新配置
|
|
35
|
+
*/
|
|
36
|
+
updateConfig(config) {
|
|
37
|
+
this.config = { ...this.config, ...config };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* 获取配置
|
|
41
|
+
*/
|
|
42
|
+
getConfig() {
|
|
43
|
+
return { ...this.config };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* 记录调试信息
|
|
47
|
+
*/
|
|
48
|
+
debug(message, context) {
|
|
49
|
+
this.logger.debug(`[${this.metadata.name}] ${message}`, context);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* 记录信息
|
|
53
|
+
*/
|
|
54
|
+
info(message, context) {
|
|
55
|
+
this.logger.info(`[${this.metadata.name}] ${message}`, context);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* 记录警告
|
|
59
|
+
*/
|
|
60
|
+
warn(message, context) {
|
|
61
|
+
this.logger.warn(`[${this.metadata.name}] ${message}`, context);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 记录错误
|
|
65
|
+
*/
|
|
66
|
+
error(message, context) {
|
|
67
|
+
this.logger.error(`[${this.metadata.name}] ${message}`, context);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.BaseSDK = BaseSDK;
|
|
71
|
+
//# sourceMappingURL=base-sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-sdk.js","sourceRoot":"","sources":["../../src/sdk/base-sdk.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAKH,MAAsB,OAAO;IAGjB,MAAM,CAAY;IAClB,MAAM,CAAS;IACf,WAAW,GAAG,KAAK,CAAC;IAE9B,YAAY,MAAiB,EAAE,MAAc;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAiBD;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAA0B;QACrC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,OAAe,EAAE,OAAa;QAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACO,IAAI,CAAC,OAAe,EAAE,OAAa;QAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACO,IAAI,CAAC,OAAe,EAAE,OAAa;QAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,OAAe,EAAE,OAAa;QAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;CACF;AAzFD,0BAyFC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 示例 SDK 实现
|
|
3
|
+
*/
|
|
4
|
+
import { BaseSDK } from './base-sdk';
|
|
5
|
+
import { SDKConfig, SDKHealthStatus, SDKMetadata } from '../types/sdk';
|
|
6
|
+
import { Logger } from '../core/logger';
|
|
7
|
+
export declare class ExampleSDK extends BaseSDK {
|
|
8
|
+
readonly metadata: SDKMetadata;
|
|
9
|
+
private client?;
|
|
10
|
+
constructor(config: SDKConfig, logger: Logger);
|
|
11
|
+
/**
|
|
12
|
+
* 初始化 SDK
|
|
13
|
+
*/
|
|
14
|
+
initialize(): Promise<void>;
|
|
15
|
+
/**
|
|
16
|
+
* 设置重试机制
|
|
17
|
+
*/
|
|
18
|
+
private setupRetry;
|
|
19
|
+
/**
|
|
20
|
+
* 检查健康状态
|
|
21
|
+
*/
|
|
22
|
+
isHealthy(): Promise<SDKHealthStatus>;
|
|
23
|
+
/**
|
|
24
|
+
* 清理资源
|
|
25
|
+
*/
|
|
26
|
+
dispose(): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* 调用 API
|
|
29
|
+
*/
|
|
30
|
+
callAPI<T = any>(method: 'GET' | 'POST' | 'PUT' | 'DELETE', endpoint: string, data?: any): Promise<T>;
|
|
31
|
+
/**
|
|
32
|
+
* 示例方法:获取数据
|
|
33
|
+
*/
|
|
34
|
+
fetchData(id: string): Promise<any>;
|
|
35
|
+
/**
|
|
36
|
+
* 示例方法:创建数据
|
|
37
|
+
*/
|
|
38
|
+
createData(data: any): Promise<any>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=example-sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example-sdk.d.ts","sourceRoot":"","sources":["../../src/sdk/example-sdk.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,qBAAa,UAAW,SAAQ,OAAO;IACrC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAI5B;IAEF,OAAO,CAAC,MAAM,CAAC,CAAgB;gBAEnB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM;IAI7C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCjC;;OAEG;IACH,OAAO,CAAC,UAAU;IA6BlB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,eAAe,CAAC;IA8B3C;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B;;OAEG;IACG,OAAO,CAAC,CAAC,GAAG,GAAG,EACnB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,EACzC,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,GAAG,GACT,OAAO,CAAC,CAAC,CAAC;IAmDb;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAIzC;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;CAG1C"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 示例 SDK 实现
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ExampleSDK = void 0;
|
|
10
|
+
const axios_1 = __importDefault(require("axios"));
|
|
11
|
+
const base_sdk_1 = require("./base-sdk");
|
|
12
|
+
const error_1 = require("../types/error");
|
|
13
|
+
class ExampleSDK extends base_sdk_1.BaseSDK {
|
|
14
|
+
metadata = {
|
|
15
|
+
name: 'example',
|
|
16
|
+
version: '1.0.0',
|
|
17
|
+
description: 'Example SDK for demonstration purposes',
|
|
18
|
+
};
|
|
19
|
+
client;
|
|
20
|
+
constructor(config, logger) {
|
|
21
|
+
super(config, logger);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* 初始化 SDK
|
|
25
|
+
*/
|
|
26
|
+
async initialize() {
|
|
27
|
+
try {
|
|
28
|
+
this.info('Initializing SDK...');
|
|
29
|
+
// 验证必需的配置
|
|
30
|
+
if (!this.config.apiKey) {
|
|
31
|
+
throw new error_1.CLIError('API Key is required', error_1.ErrorType.CONFIG, ['Set API Key: needware-cli config set sdks.example.apiKey YOUR_KEY'], { sdk: this.metadata.name });
|
|
32
|
+
}
|
|
33
|
+
// 创建 HTTP 客户端
|
|
34
|
+
this.client = axios_1.default.create({
|
|
35
|
+
baseURL: this.config.endpoint,
|
|
36
|
+
timeout: this.config.timeout || 30000,
|
|
37
|
+
headers: {
|
|
38
|
+
Authorization: `Bearer ${this.config.apiKey}`,
|
|
39
|
+
'Content-Type': 'application/json',
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
// 配置重试
|
|
43
|
+
if (this.config.retries) {
|
|
44
|
+
this.setupRetry();
|
|
45
|
+
}
|
|
46
|
+
this.initialized = true;
|
|
47
|
+
this.info('SDK initialized successfully');
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
this.error('Failed to initialize SDK', { error });
|
|
51
|
+
throw error;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* 设置重试机制
|
|
56
|
+
*/
|
|
57
|
+
setupRetry() {
|
|
58
|
+
if (!this.client)
|
|
59
|
+
return;
|
|
60
|
+
const retries = this.config.retries || 3;
|
|
61
|
+
this.client.interceptors.response.use((response) => response, async (error) => {
|
|
62
|
+
const config = error.config;
|
|
63
|
+
if (!config || !config.retryCount) {
|
|
64
|
+
config.retryCount = 0;
|
|
65
|
+
}
|
|
66
|
+
if (config.retryCount >= retries) {
|
|
67
|
+
return Promise.reject(error);
|
|
68
|
+
}
|
|
69
|
+
config.retryCount += 1;
|
|
70
|
+
this.warn(`Retrying request (${config.retryCount}/${retries})...`);
|
|
71
|
+
// 延迟重试
|
|
72
|
+
await new Promise((resolve) => setTimeout(resolve, 1000 * config.retryCount));
|
|
73
|
+
return this.client(config);
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 检查健康状态
|
|
78
|
+
*/
|
|
79
|
+
async isHealthy() {
|
|
80
|
+
try {
|
|
81
|
+
if (!this.initialized || !this.client) {
|
|
82
|
+
return {
|
|
83
|
+
healthy: false,
|
|
84
|
+
message: 'SDK not initialized',
|
|
85
|
+
timestamp: new Date(),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// 发送健康检查请求
|
|
89
|
+
const response = await this.client.get('/health', {
|
|
90
|
+
timeout: 5000,
|
|
91
|
+
});
|
|
92
|
+
return {
|
|
93
|
+
healthy: response.status === 200,
|
|
94
|
+
message: 'SDK is healthy',
|
|
95
|
+
timestamp: new Date(),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
this.warn('Health check failed', { error });
|
|
100
|
+
return {
|
|
101
|
+
healthy: false,
|
|
102
|
+
message: error instanceof Error ? error.message : 'Health check failed',
|
|
103
|
+
timestamp: new Date(),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* 清理资源
|
|
109
|
+
*/
|
|
110
|
+
async dispose() {
|
|
111
|
+
this.info('Disposing SDK...');
|
|
112
|
+
this.client = undefined;
|
|
113
|
+
this.initialized = false;
|
|
114
|
+
this.info('SDK disposed successfully');
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* 调用 API
|
|
118
|
+
*/
|
|
119
|
+
async callAPI(method, endpoint, data) {
|
|
120
|
+
if (!this.initialized || !this.client) {
|
|
121
|
+
throw new error_1.CLIError('SDK not initialized', error_1.ErrorType.SDK, ['Initialize the SDK first'], {
|
|
122
|
+
sdk: this.metadata.name,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
this.debug(`Calling API: ${method} ${endpoint}`, { data });
|
|
127
|
+
const response = await this.client.request({
|
|
128
|
+
method,
|
|
129
|
+
url: endpoint,
|
|
130
|
+
data: method !== 'GET' ? data : undefined,
|
|
131
|
+
params: method === 'GET' ? data : undefined,
|
|
132
|
+
});
|
|
133
|
+
this.debug('API call successful', { status: response.status });
|
|
134
|
+
return response.data;
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
this.error('API call failed', { error, endpoint, method });
|
|
138
|
+
if (axios_1.default.isAxiosError(error)) {
|
|
139
|
+
if (error.response?.status === 401) {
|
|
140
|
+
throw new error_1.CLIError('Authentication failed', error_1.ErrorType.AUTH, [
|
|
141
|
+
'Check your API key',
|
|
142
|
+
'Update API key: needware-cli config set sdks.example.apiKey YOUR_KEY',
|
|
143
|
+
], { sdk: this.metadata.name, status: error.response.status });
|
|
144
|
+
}
|
|
145
|
+
throw new error_1.CLIError(`API request failed: ${error.message}`, error_1.ErrorType.NETWORK, ['Check your network connection', 'Check the API endpoint'], {
|
|
146
|
+
sdk: this.metadata.name,
|
|
147
|
+
status: error.response?.status,
|
|
148
|
+
statusText: error.response?.statusText,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
throw error;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* 示例方法:获取数据
|
|
156
|
+
*/
|
|
157
|
+
async fetchData(id) {
|
|
158
|
+
return this.callAPI('GET', `/data/${id}`);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* 示例方法:创建数据
|
|
162
|
+
*/
|
|
163
|
+
async createData(data) {
|
|
164
|
+
return this.callAPI('POST', '/data', data);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
exports.ExampleSDK = ExampleSDK;
|
|
168
|
+
//# sourceMappingURL=example-sdk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example-sdk.js","sourceRoot":"","sources":["../../src/sdk/example-sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK 管理器
|
|
3
|
+
*/
|
|
4
|
+
import { BaseSDK } from './base-sdk';
|
|
5
|
+
import { Logger } from '../core/logger';
|
|
6
|
+
export declare class SDKManager {
|
|
7
|
+
private sdks;
|
|
8
|
+
private logger;
|
|
9
|
+
constructor(logger: Logger);
|
|
10
|
+
/**
|
|
11
|
+
* 注册 SDK
|
|
12
|
+
*/
|
|
13
|
+
registerSDK(sdk: BaseSDK): void;
|
|
14
|
+
/**
|
|
15
|
+
* 获取 SDK
|
|
16
|
+
*/
|
|
17
|
+
getSDK<T extends BaseSDK = BaseSDK>(name: string): T;
|
|
18
|
+
/**
|
|
19
|
+
* 检查 SDK 是否已注册
|
|
20
|
+
*/
|
|
21
|
+
hasSDK(name: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* 获取所有已注册的 SDK 名称
|
|
24
|
+
*/
|
|
25
|
+
getRegisteredSDKs(): string[];
|
|
26
|
+
/**
|
|
27
|
+
* 初始化所有 SDK
|
|
28
|
+
*/
|
|
29
|
+
initializeAll(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* 初始化指定的 SDK
|
|
32
|
+
*/
|
|
33
|
+
initialize(name: string): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* 清理所有 SDK
|
|
36
|
+
*/
|
|
37
|
+
disposeAll(): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* 清理指定的 SDK
|
|
40
|
+
*/
|
|
41
|
+
dispose(name: string): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* 检查所有 SDK 的健康状态
|
|
44
|
+
*/
|
|
45
|
+
checkHealth(): Promise<{
|
|
46
|
+
[key: string]: any;
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* 移除 SDK
|
|
50
|
+
*/
|
|
51
|
+
removeSDK(name: string): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* 清空所有 SDK
|
|
54
|
+
*/
|
|
55
|
+
clear(): Promise<void>;
|
|
56
|
+
}
|
|
57
|
+
export { BaseSDK } from './base-sdk';
|
|
58
|
+
export { ExampleSDK } from './example-sdk';
|
|
59
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,qBAAa,UAAU;IACrB,OAAO,CAAC,IAAI,CAAuB;IACnC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAK1B;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAW/B;;OAEG;IACH,MAAM,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAepD;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA+BpC;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY7C;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBjC;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1C;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IA0BpD;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B;AAED,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|