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.
Files changed (93) hide show
  1. package/.editorconfig +21 -0
  2. package/AGENT_COMMAND_SUMMARY.md +364 -0
  3. package/CHANGELOG.md +138 -0
  4. package/FEATURE_INTERACTIVE_MODE.md +303 -0
  5. package/INTERACTIVE_EXAMPLE.md +305 -0
  6. package/LICENSE +22 -0
  7. package/PROJECT_SUMMARY.md +435 -0
  8. package/QUICK_START.md +216 -0
  9. package/README.md +310 -0
  10. package/SETUP.md +315 -0
  11. package/bin/cli.js +49 -0
  12. package/config/default.json +20 -0
  13. package/dist/commands/agent.d.ts +38 -0
  14. package/dist/commands/agent.d.ts.map +1 -0
  15. package/dist/commands/agent.js +444 -0
  16. package/dist/commands/agent.js.map +1 -0
  17. package/dist/commands/config.d.ts +48 -0
  18. package/dist/commands/config.d.ts.map +1 -0
  19. package/dist/commands/config.js +197 -0
  20. package/dist/commands/config.js.map +1 -0
  21. package/dist/commands/example.d.ts +32 -0
  22. package/dist/commands/example.d.ts.map +1 -0
  23. package/dist/commands/example.js +154 -0
  24. package/dist/commands/example.js.map +1 -0
  25. package/dist/commands/index.d.ts +8 -0
  26. package/dist/commands/index.d.ts.map +1 -0
  27. package/dist/commands/index.js +15 -0
  28. package/dist/commands/index.js.map +1 -0
  29. package/dist/commands/init.d.ts +25 -0
  30. package/dist/commands/init.d.ts.map +1 -0
  31. package/dist/commands/init.js +158 -0
  32. package/dist/commands/init.js.map +1 -0
  33. package/dist/core/cli.d.ts +37 -0
  34. package/dist/core/cli.d.ts.map +1 -0
  35. package/dist/core/cli.js +160 -0
  36. package/dist/core/cli.js.map +1 -0
  37. package/dist/core/command.d.ts +41 -0
  38. package/dist/core/command.d.ts.map +1 -0
  39. package/dist/core/command.js +87 -0
  40. package/dist/core/command.js.map +1 -0
  41. package/dist/core/logger.d.ts +30 -0
  42. package/dist/core/logger.d.ts.map +1 -0
  43. package/dist/core/logger.js +163 -0
  44. package/dist/core/logger.js.map +1 -0
  45. package/dist/index.d.ts +15 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +125 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/sdk/base-sdk.d.ts +61 -0
  50. package/dist/sdk/base-sdk.d.ts.map +1 -0
  51. package/dist/sdk/base-sdk.js +71 -0
  52. package/dist/sdk/base-sdk.js.map +1 -0
  53. package/dist/sdk/example-sdk.d.ts +40 -0
  54. package/dist/sdk/example-sdk.d.ts.map +1 -0
  55. package/dist/sdk/example-sdk.js +168 -0
  56. package/dist/sdk/example-sdk.js.map +1 -0
  57. package/dist/sdk/index.d.ts +59 -0
  58. package/dist/sdk/index.d.ts.map +1 -0
  59. package/dist/sdk/index.js +169 -0
  60. package/dist/sdk/index.js.map +1 -0
  61. package/dist/types/command.d.ts +34 -0
  62. package/dist/types/command.d.ts.map +1 -0
  63. package/dist/types/command.js +13 -0
  64. package/dist/types/command.js.map +1 -0
  65. package/dist/types/config.d.ts +30 -0
  66. package/dist/types/config.d.ts.map +1 -0
  67. package/dist/types/config.js +6 -0
  68. package/dist/types/config.js.map +1 -0
  69. package/dist/types/error.d.ts +24 -0
  70. package/dist/types/error.d.ts.map +1 -0
  71. package/dist/types/error.js +33 -0
  72. package/dist/types/error.js.map +1 -0
  73. package/dist/types/index.d.ts +8 -0
  74. package/dist/types/index.d.ts.map +1 -0
  75. package/dist/types/index.js +23 -0
  76. package/dist/types/index.js.map +1 -0
  77. package/dist/types/sdk.d.ts +21 -0
  78. package/dist/types/sdk.d.ts.map +1 -0
  79. package/dist/types/sdk.js +6 -0
  80. package/dist/types/sdk.js.map +1 -0
  81. package/dist/utils/config.d.ts +59 -0
  82. package/dist/utils/config.d.ts.map +1 -0
  83. package/dist/utils/config.js +237 -0
  84. package/dist/utils/config.js.map +1 -0
  85. package/dist/utils/file.d.ts +66 -0
  86. package/dist/utils/file.d.ts.map +1 -0
  87. package/dist/utils/file.js +162 -0
  88. package/dist/utils/file.js.map +1 -0
  89. package/dist/utils/validator.d.ts +66 -0
  90. package/dist/utils/validator.d.ts.map +1 -0
  91. package/dist/utils/validator.js +120 -0
  92. package/dist/utils/validator.js.map +1 -0
  93. package/package.json +61 -0
@@ -0,0 +1,37 @@
1
+ /**
2
+ * CLI 主类
3
+ */
4
+ import { Command } from './command';
5
+ import { Logger } from './logger';
6
+ export declare class CLI {
7
+ private program;
8
+ private logger;
9
+ private commands;
10
+ private version;
11
+ constructor(version: string, logger?: Logger);
12
+ /**
13
+ * 设置程序基本信息
14
+ */
15
+ private setupProgram;
16
+ /**
17
+ * 注册命令
18
+ */
19
+ registerCommand(command: Command): void;
20
+ /**
21
+ * 运行 CLI
22
+ */
23
+ run(argv?: string[]): Promise<void>;
24
+ /**
25
+ * 错误处理
26
+ */
27
+ handleError(error: unknown): void;
28
+ /**
29
+ * 获取 Logger 实例
30
+ */
31
+ getLogger(): Logger;
32
+ /**
33
+ * 获取已注册的命令
34
+ */
35
+ getCommands(): Map<string, Command>;
36
+ }
37
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAY,MAAM,UAAU,CAAC;AAI5C,qBAAa,GAAG;IACd,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;IAS5C;;OAEG;IACH,OAAO,CAAC,YAAY;IAqBpB;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAyDvC;;OAEG;IACG,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASzC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAmCjC;;OAEG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;CAGpC"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ /**
3
+ * CLI 主类
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.CLI = void 0;
10
+ const commander_1 = require("commander");
11
+ const logger_1 = require("./logger");
12
+ const types_1 = require("../types");
13
+ const chalk_1 = __importDefault(require("chalk"));
14
+ class CLI {
15
+ program;
16
+ logger;
17
+ commands;
18
+ version;
19
+ constructor(version, logger) {
20
+ this.version = version;
21
+ this.logger = logger || new logger_1.Logger();
22
+ this.program = new commander_1.Command();
23
+ this.commands = new Map();
24
+ this.setupProgram();
25
+ }
26
+ /**
27
+ * 设置程序基本信息
28
+ */
29
+ setupProgram() {
30
+ this.program
31
+ .name('needware-cli')
32
+ .description('一个功能强大的 Node.js 命令行工具')
33
+ .version(this.version, '-v, --version', '显示版本信息')
34
+ .option('-V, --verbose', '详细输出模式')
35
+ .option('-q, --quiet', '静默模式')
36
+ .option('-c, --config <path>', '指定配置文件路径');
37
+ // 全局选项处理
38
+ this.program.hook('preAction', (thisCommand) => {
39
+ const opts = thisCommand.opts();
40
+ if (opts.verbose) {
41
+ this.logger.setLevel(logger_1.LogLevel.DEBUG);
42
+ }
43
+ else if (opts.quiet) {
44
+ this.logger.setLevel(logger_1.LogLevel.ERROR);
45
+ }
46
+ });
47
+ }
48
+ /**
49
+ * 注册命令
50
+ */
51
+ registerCommand(command) {
52
+ this.commands.set(command.name, command);
53
+ const commandInstance = this.program.command(command.name);
54
+ commandInstance.description(command.description);
55
+ if (command.aliases) {
56
+ commandInstance.aliases(command.aliases);
57
+ }
58
+ // 为 agent 命令添加特定选项
59
+ if (command.name === 'agent') {
60
+ commandInstance
61
+ .argument('[prompt]', 'The task prompt for the AI agent (optional in interactive mode)')
62
+ .option('-i, --interactive', 'Enable interactive multi-turn conversation mode')
63
+ .option('--working-dir <path>', 'Specify the working directory')
64
+ .option('--additional-dirs <paths>', 'Specify additional directories (comma-separated)')
65
+ .option('--api-key <key>', 'Anthropic API Key (overrides ANTHROPIC_API_KEY env var)')
66
+ .option('--base-url <url>', 'Anthropic API Base URL (overrides ANTHROPIC_BASE_URL env var)');
67
+ }
68
+ commandInstance.action(async (...args) => {
69
+ try {
70
+ const options = args[args.length - 1];
71
+ const commandArgs = args.slice(0, -1);
72
+ const globalOpts = this.program.opts();
73
+ // 合并全局选项和命令选项
74
+ const mergedOptions = {
75
+ ...globalOpts,
76
+ ...options,
77
+ args: commandArgs,
78
+ };
79
+ const result = await command.run(mergedOptions);
80
+ if (result.status === 'success') {
81
+ if (result.message) {
82
+ this.logger.success(result.message);
83
+ }
84
+ process.exit(0);
85
+ }
86
+ else {
87
+ if (result.message) {
88
+ this.logger.error(result.message);
89
+ }
90
+ process.exit(1);
91
+ }
92
+ }
93
+ catch (error) {
94
+ this.handleError(error);
95
+ process.exit(1);
96
+ }
97
+ });
98
+ }
99
+ /**
100
+ * 运行 CLI
101
+ */
102
+ async run(argv) {
103
+ try {
104
+ await this.program.parseAsync(argv || process.argv);
105
+ }
106
+ catch (error) {
107
+ this.handleError(error);
108
+ process.exit(1);
109
+ }
110
+ }
111
+ /**
112
+ * 错误处理
113
+ */
114
+ handleError(error) {
115
+ if (error instanceof types_1.CLIError) {
116
+ // 自定义 CLI 错误
117
+ console.error(chalk_1.default.red(`\n❌ Error: ${error.message}\n`));
118
+ if (error.type !== types_1.ErrorType.UNKNOWN) {
119
+ console.error(chalk_1.default.gray(`Type: ${error.type}\n`));
120
+ }
121
+ if (error.suggestions.length > 0) {
122
+ console.error(chalk_1.default.yellow('Suggestions:'));
123
+ error.suggestions.forEach((suggestion) => {
124
+ console.error(chalk_1.default.yellow(` • ${suggestion}`));
125
+ });
126
+ console.error();
127
+ }
128
+ this.logger.error(error.message, {
129
+ type: error.type,
130
+ stack: error.stack,
131
+ context: error.context,
132
+ });
133
+ }
134
+ else if (error instanceof Error) {
135
+ // 标准错误
136
+ console.error(chalk_1.default.red(`\n❌ Error: ${error.message}\n`));
137
+ this.logger.error(error.message, { stack: error.stack });
138
+ }
139
+ else {
140
+ // 未知错误
141
+ console.error(chalk_1.default.red('\n❌ An unknown error occurred\n'));
142
+ this.logger.error('Unknown error', { error });
143
+ }
144
+ console.error(chalk_1.default.gray('For more help, run: needware-cli --help\n'));
145
+ }
146
+ /**
147
+ * 获取 Logger 实例
148
+ */
149
+ getLogger() {
150
+ return this.logger;
151
+ }
152
+ /**
153
+ * 获取已注册的命令
154
+ */
155
+ getCommands() {
156
+ return this.commands;
157
+ }
158
+ }
159
+ exports.CLI = CLI;
160
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/core/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * 命令基类
3
+ */
4
+ import { CommandOptions, CommandResult } from '../types';
5
+ import { Logger } from './logger';
6
+ export declare abstract class Command {
7
+ abstract readonly name: string;
8
+ abstract readonly description: string;
9
+ readonly aliases?: string[];
10
+ protected logger: Logger;
11
+ constructor(logger: Logger);
12
+ /**
13
+ * 执行命令
14
+ */
15
+ abstract execute(options: CommandOptions): Promise<CommandResult>;
16
+ /**
17
+ * 验证命令选项
18
+ */
19
+ validate(_options: CommandOptions): boolean;
20
+ /**
21
+ * 命令执行前的钩子
22
+ */
23
+ beforeExecute(_options: CommandOptions): Promise<void>;
24
+ /**
25
+ * 命令执行后的钩子
26
+ */
27
+ afterExecute(_result: CommandResult): Promise<void>;
28
+ /**
29
+ * 运行命令(包含完整生命周期)
30
+ */
31
+ run(options: CommandOptions): Promise<CommandResult>;
32
+ /**
33
+ * 创建成功结果
34
+ */
35
+ protected success(message?: string, data?: any): CommandResult;
36
+ /**
37
+ * 创建错误结果
38
+ */
39
+ protected error(message: string, error?: Error): CommandResult;
40
+ }
41
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/core/command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAiB,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,8BAAsB,OAAO;IAC3B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAE5B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEb,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAEjE;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO;IAK3C;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzD;;OAEG;IACG,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAgC1D;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,aAAa;IAQ9D;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,aAAa;CAO/D"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ /**
3
+ * 命令基类
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Command = void 0;
7
+ const types_1 = require("../types");
8
+ class Command {
9
+ aliases;
10
+ logger;
11
+ constructor(logger) {
12
+ this.logger = logger;
13
+ }
14
+ /**
15
+ * 验证命令选项
16
+ */
17
+ validate(_options) {
18
+ // 默认实现,子类可以覆盖
19
+ return true;
20
+ }
21
+ /**
22
+ * 命令执行前的钩子
23
+ */
24
+ async beforeExecute(_options) {
25
+ // 默认实现为空,子类可以覆盖
26
+ this.logger.debug(`Executing command: ${this.name}`);
27
+ }
28
+ /**
29
+ * 命令执行后的钩子
30
+ */
31
+ async afterExecute(_result) {
32
+ // 默认实现为空,子类可以覆盖
33
+ this.logger.debug(`Command ${this.name} completed`);
34
+ }
35
+ /**
36
+ * 运行命令(包含完整生命周期)
37
+ */
38
+ async run(options) {
39
+ try {
40
+ // 验证
41
+ if (!this.validate(options)) {
42
+ return {
43
+ status: types_1.CommandStatus.ERROR,
44
+ message: 'Invalid command options',
45
+ };
46
+ }
47
+ // 执行前钩子
48
+ await this.beforeExecute(options);
49
+ // 执行命令
50
+ const result = await this.execute(options);
51
+ // 执行后钩子
52
+ await this.afterExecute(result);
53
+ return result;
54
+ }
55
+ catch (error) {
56
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
57
+ this.logger.error(`Command ${this.name} failed: ${errorMessage}`);
58
+ return {
59
+ status: types_1.CommandStatus.ERROR,
60
+ message: errorMessage,
61
+ error: error instanceof Error ? error : new Error(errorMessage),
62
+ };
63
+ }
64
+ }
65
+ /**
66
+ * 创建成功结果
67
+ */
68
+ success(message, data) {
69
+ return {
70
+ status: types_1.CommandStatus.SUCCESS,
71
+ message,
72
+ data,
73
+ };
74
+ }
75
+ /**
76
+ * 创建错误结果
77
+ */
78
+ error(message, error) {
79
+ return {
80
+ status: types_1.CommandStatus.ERROR,
81
+ message,
82
+ error,
83
+ };
84
+ }
85
+ }
86
+ exports.Command = Command;
87
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/core/command.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,oCAAwE;AAGxE,MAAsB,OAAO;IAGlB,OAAO,CAAY;IAElB,MAAM,CAAS;IAEzB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAOD;;OAEG;IACH,QAAQ,CAAC,QAAwB;QAC/B,cAAc;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,QAAwB;QAC1C,gBAAgB;QAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,OAAsB;QACvC,gBAAgB;QAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,OAAuB;QAC/B,IAAI,CAAC;YACH,KAAK;YACL,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,OAAO;oBACL,MAAM,EAAE,qBAAa,CAAC,KAAK;oBAC3B,OAAO,EAAE,yBAAyB;iBACnC,CAAC;YACJ,CAAC;YAED,QAAQ;YACR,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAElC,OAAO;YACP,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE3C,QAAQ;YACR,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAEhC,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,YAAY,YAAY,EAAE,CAAC,CAAC;YAElE,OAAO;gBACL,MAAM,EAAE,qBAAa,CAAC,KAAK;gBAC3B,OAAO,EAAE,YAAY;gBACrB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC;aAChE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACO,OAAO,CAAC,OAAgB,EAAE,IAAU;QAC5C,OAAO;YACL,MAAM,EAAE,qBAAa,CAAC,OAAO;YAC7B,OAAO;YACP,IAAI;SACL,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,OAAe,EAAE,KAAa;QAC5C,OAAO;YACL,MAAM,EAAE,qBAAa,CAAC,KAAK;YAC3B,OAAO;YACP,KAAK;SACN,CAAC;IACJ,CAAC;CACF;AAhGD,0BAgGC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 日志管理器
3
+ */
4
+ export declare enum LogLevel {
5
+ DEBUG = "debug",
6
+ INFO = "info",
7
+ WARN = "warn",
8
+ ERROR = "error",
9
+ SUCCESS = "success"
10
+ }
11
+ export declare class Logger {
12
+ private logLevel;
13
+ private logFile?;
14
+ private colorOutput;
15
+ constructor(logLevel?: LogLevel, logFile?: string, colorOutput?: boolean);
16
+ private ensureLogDirectory;
17
+ private shouldLog;
18
+ private formatMessage;
19
+ private writeToFile;
20
+ private log;
21
+ debug(message: string, context?: any): void;
22
+ info(message: string, context?: any): void;
23
+ warn(message: string, context?: any): void;
24
+ error(message: string, context?: any): void;
25
+ success(message: string, context?: any): void;
26
+ setLevel(level: LogLevel): void;
27
+ setColorOutput(enabled: boolean): void;
28
+ }
29
+ export declare const logger: Logger;
30
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AASD,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,WAAW,CAAU;gBAEjB,QAAQ,GAAE,QAAwB,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW,UAAO;IAUpF,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,GAAG;IAoBX,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAI3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAI1C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAI1C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAI3C,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAI7C,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI/B,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAGvC;AAGD,eAAO,MAAM,MAAM,QAAe,CAAC"}
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ /**
3
+ * 日志管理器
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.logger = exports.Logger = exports.LogLevel = void 0;
43
+ const chalk_1 = __importDefault(require("chalk"));
44
+ const fs = __importStar(require("fs"));
45
+ const path = __importStar(require("path"));
46
+ var LogLevel;
47
+ (function (LogLevel) {
48
+ LogLevel["DEBUG"] = "debug";
49
+ LogLevel["INFO"] = "info";
50
+ LogLevel["WARN"] = "warn";
51
+ LogLevel["ERROR"] = "error";
52
+ LogLevel["SUCCESS"] = "success";
53
+ })(LogLevel || (exports.LogLevel = LogLevel = {}));
54
+ class Logger {
55
+ logLevel;
56
+ logFile;
57
+ colorOutput;
58
+ constructor(logLevel = LogLevel.INFO, logFile, colorOutput = true) {
59
+ this.logLevel = logLevel;
60
+ this.logFile = logFile;
61
+ this.colorOutput = colorOutput;
62
+ if (this.logFile) {
63
+ this.ensureLogDirectory();
64
+ }
65
+ }
66
+ ensureLogDirectory() {
67
+ if (!this.logFile)
68
+ return;
69
+ const dir = path.dirname(this.logFile);
70
+ if (!fs.existsSync(dir)) {
71
+ fs.mkdirSync(dir, { recursive: true });
72
+ }
73
+ }
74
+ shouldLog(level) {
75
+ // SUCCESS should always be shown, like INFO
76
+ if (level === LogLevel.SUCCESS) {
77
+ return true;
78
+ }
79
+ const levels = [LogLevel.DEBUG, LogLevel.INFO, LogLevel.WARN, LogLevel.ERROR];
80
+ const currentIndex = levels.indexOf(this.logLevel);
81
+ const messageIndex = levels.indexOf(level);
82
+ return messageIndex >= currentIndex;
83
+ }
84
+ formatMessage(level, message) {
85
+ const timestamp = new Date().toISOString().replace('T', ' ').substring(0, 19);
86
+ const levelStr = `[${level.toUpperCase()}]`;
87
+ if (!this.colorOutput) {
88
+ return `${levelStr} ${timestamp} - ${message}`;
89
+ }
90
+ let coloredLevel = levelStr;
91
+ switch (level) {
92
+ case LogLevel.DEBUG:
93
+ coloredLevel = chalk_1.default.gray(levelStr);
94
+ break;
95
+ case LogLevel.INFO:
96
+ coloredLevel = chalk_1.default.blue(levelStr);
97
+ break;
98
+ case LogLevel.WARN:
99
+ coloredLevel = chalk_1.default.yellow(levelStr);
100
+ break;
101
+ case LogLevel.ERROR:
102
+ coloredLevel = chalk_1.default.red(levelStr);
103
+ break;
104
+ case LogLevel.SUCCESS:
105
+ coloredLevel = chalk_1.default.green(levelStr);
106
+ break;
107
+ }
108
+ return `${coloredLevel} ${chalk_1.default.gray(timestamp)} - ${message}`;
109
+ }
110
+ writeToFile(entry) {
111
+ if (!this.logFile)
112
+ return;
113
+ try {
114
+ const line = JSON.stringify(entry) + '\n';
115
+ fs.appendFileSync(this.logFile, line, 'utf8');
116
+ }
117
+ catch (error) {
118
+ // Silently fail to avoid recursive logging
119
+ }
120
+ }
121
+ log(level, message, context) {
122
+ if (!this.shouldLog(level))
123
+ return;
124
+ const formatted = this.formatMessage(level, message);
125
+ console.log(formatted);
126
+ if (context) {
127
+ console.log(chalk_1.default.gray(JSON.stringify(context, null, 2)));
128
+ }
129
+ // Write to file
130
+ const entry = {
131
+ timestamp: new Date().toISOString(),
132
+ level,
133
+ message,
134
+ ...(context && { context }),
135
+ };
136
+ this.writeToFile(entry);
137
+ }
138
+ debug(message, context) {
139
+ this.log(LogLevel.DEBUG, message, context);
140
+ }
141
+ info(message, context) {
142
+ this.log(LogLevel.INFO, message, context);
143
+ }
144
+ warn(message, context) {
145
+ this.log(LogLevel.WARN, message, context);
146
+ }
147
+ error(message, context) {
148
+ this.log(LogLevel.ERROR, message, context);
149
+ }
150
+ success(message, context) {
151
+ this.log(LogLevel.SUCCESS, message, context);
152
+ }
153
+ setLevel(level) {
154
+ this.logLevel = level;
155
+ }
156
+ setColorOutput(enabled) {
157
+ this.colorOutput = enabled;
158
+ }
159
+ }
160
+ exports.Logger = Logger;
161
+ // 导出单例实例
162
+ exports.logger = new Logger();
163
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Needware CLI 主入口
3
+ */
4
+ import { CLI } from './core/cli';
5
+ import { Logger } from './core/logger';
6
+ import { ConfigManager } from './utils/config';
7
+ import { SDKManager } from './sdk';
8
+ export { CLI, Logger, ConfigManager, SDKManager };
9
+ export * from './types';
10
+ export * from './commands';
11
+ export * from './sdk';
12
+ export { Command } from './core/command';
13
+ export { Validator } from './utils/validator';
14
+ export { FileUtils } from './utils/file';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,MAAM,EAAY,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAc,MAAM,OAAO,CAAC;AA6F/C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;AAClD,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,OAAO,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}