needware-cli 1.5.13 → 1.5.17

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 (70) hide show
  1. package/README.md +49 -1
  2. package/dist/commands/agent.d.ts +12 -0
  3. package/dist/commands/agent.d.ts.map +1 -1
  4. package/dist/commands/agent.js +133 -7
  5. package/dist/commands/agent.js.map +1 -1
  6. package/dist/commands/index.d.ts +1 -1
  7. package/dist/commands/index.d.ts.map +1 -1
  8. package/dist/commands/index.js +1 -1
  9. package/dist/commands/index.js.map +1 -1
  10. package/dist/commands/skill.d.ts +34 -0
  11. package/dist/commands/skill.d.ts.map +1 -0
  12. package/dist/commands/skill.js +307 -0
  13. package/dist/commands/skill.js.map +1 -0
  14. package/dist/commands/system-prompt.d.ts.map +1 -1
  15. package/dist/commands/system-prompt.js +287 -43
  16. package/dist/commands/system-prompt.js.map +1 -1
  17. package/dist/core/cli.d.ts.map +1 -1
  18. package/dist/core/cli.js +8 -1
  19. package/dist/core/cli.js.map +1 -1
  20. package/dist/index.js +4 -4
  21. package/dist/index.js.map +1 -1
  22. package/dist/sdk/firecrawl-sdk.d.ts +85 -0
  23. package/dist/sdk/firecrawl-sdk.d.ts.map +1 -0
  24. package/dist/sdk/firecrawl-sdk.js +207 -0
  25. package/dist/sdk/firecrawl-sdk.js.map +1 -0
  26. package/dist/tools/ai-gateway-enable-tool.d.ts +12 -0
  27. package/dist/tools/ai-gateway-enable-tool.d.ts.map +1 -0
  28. package/dist/tools/ai-gateway-enable-tool.js +33 -0
  29. package/dist/tools/ai-gateway-enable-tool.js.map +1 -0
  30. package/dist/tools/base-tool.d.ts +76 -0
  31. package/dist/tools/base-tool.d.ts.map +1 -0
  32. package/dist/tools/base-tool.js +119 -0
  33. package/dist/tools/base-tool.js.map +1 -0
  34. package/dist/tools/example-tool.d.ts +16 -0
  35. package/dist/tools/example-tool.d.ts.map +1 -0
  36. package/dist/tools/example-tool.js +67 -0
  37. package/dist/tools/example-tool.js.map +1 -0
  38. package/dist/tools/index.d.ts +9 -0
  39. package/dist/tools/index.d.ts.map +1 -0
  40. package/dist/tools/index.js +9 -0
  41. package/dist/tools/index.js.map +1 -0
  42. package/dist/tools/supabase-deploy-functions-tool.d.ts +18 -0
  43. package/dist/tools/supabase-deploy-functions-tool.d.ts.map +1 -0
  44. package/dist/tools/supabase-deploy-functions-tool.js +127 -0
  45. package/dist/tools/supabase-deploy-functions-tool.js.map +1 -0
  46. package/dist/tools/supabase-enable-tool.d.ts +12 -0
  47. package/dist/tools/supabase-enable-tool.d.ts.map +1 -0
  48. package/dist/tools/supabase-enable-tool.js +89 -0
  49. package/dist/tools/supabase-enable-tool.js.map +1 -0
  50. package/dist/tools/tool-registry.d.ts +51 -0
  51. package/dist/tools/tool-registry.d.ts.map +1 -0
  52. package/dist/tools/tool-registry.js +81 -0
  53. package/dist/tools/tool-registry.js.map +1 -0
  54. package/dist/tools/user-registration-tool.d.ts +17 -0
  55. package/dist/tools/user-registration-tool.d.ts.map +1 -0
  56. package/dist/tools/user-registration-tool.js +63 -0
  57. package/dist/tools/user-registration-tool.js.map +1 -0
  58. package/dist/types/index.d.ts +1 -0
  59. package/dist/types/index.d.ts.map +1 -1
  60. package/dist/types/index.js +1 -0
  61. package/dist/types/index.js.map +1 -1
  62. package/dist/types/tool.d.ts +60 -0
  63. package/dist/types/tool.d.ts.map +1 -0
  64. package/dist/types/tool.js +5 -0
  65. package/dist/types/tool.js.map +1 -0
  66. package/examples/gateway-config-usage.sh +71 -0
  67. package/examples/tool-usage-example.sh +44 -0
  68. package/package.json +2 -2
  69. package/CHANGELOG_DB_CONFIG.md +0 -142
  70. package/IMPLEMENTATION_SUMMARY.md +0 -303
@@ -0,0 +1,307 @@
1
+ /**
2
+ * Skill 命令 - 管理和添加技能到 .claude/skills
3
+ */
4
+ import chalk from 'chalk';
5
+ import ora from 'ora';
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ import { Command } from '../core/command.js';
9
+ import { fileURLToPath } from 'url';
10
+ import { dirname } from 'path';
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = dirname(__filename);
13
+ export class SkillCommand extends Command {
14
+ name = 'skill';
15
+ description = '管理和添加技能到 .claude/skills';
16
+ aliases = ['sk'];
17
+ constructor(logger) {
18
+ super(logger);
19
+ }
20
+ /**
21
+ * 获取 CLI 工具自带的 skills 目录路径
22
+ */
23
+ getCliSkillsDir() {
24
+ // __dirname 是 dist/commands/ (编译后)
25
+ // 需要回到项目根目录,然后进入 src/skills
26
+ const distDir = __dirname; // dist/commands
27
+ const projectRoot = path.resolve(distDir, '..', '..'); // 回到 needware-cli 根目录
28
+ return path.join(projectRoot, 'src', 'skills');
29
+ }
30
+ async execute(options) {
31
+ try {
32
+ const skillName = options.args?.[0];
33
+ // 如果没有提供技能名称,显示可用技能列表
34
+ if (!skillName) {
35
+ return this.listAvailableSkills();
36
+ }
37
+ // 如果是 "all",添加所有技能
38
+ if (skillName === 'all') {
39
+ return await this.addAllSkills(options);
40
+ }
41
+ // 添加指定的技能
42
+ return await this.addSkill(skillName, options);
43
+ }
44
+ catch (error) {
45
+ const message = error instanceof Error ? error.message : 'Skill command failed';
46
+ return this.error(message, error);
47
+ }
48
+ }
49
+ /**
50
+ * 列出所有可用的技能
51
+ */
52
+ listAvailableSkills() {
53
+ // 从 CLI 工具自带的 skills 目录读取
54
+ const skillsDir = this.getCliSkillsDir();
55
+ // 检查 skills 目录是否存在
56
+ if (!fs.existsSync(skillsDir)) {
57
+ console.log(chalk.yellow('\n⚠️ 未找到 needware-cli 的 skills 目录\n'));
58
+ console.log(chalk.gray(`路径: ${skillsDir}\n`));
59
+ return this.error('Skills 目录不存在');
60
+ }
61
+ // 读取 skills 目录
62
+ const entries = fs.readdirSync(skillsDir, { withFileTypes: true });
63
+ const skills = entries
64
+ .filter(entry => entry.isDirectory())
65
+ .filter(dir => {
66
+ // 检查目录中是否有 SKILL.md 文件
67
+ const skillFile = path.join(skillsDir, dir.name, 'SKILL.md');
68
+ return fs.existsSync(skillFile);
69
+ })
70
+ .map(dir => dir.name);
71
+ if (skills.length === 0) {
72
+ console.log(chalk.yellow('\n⚠️ 没有找到可用的技能\n'));
73
+ return this.success('No skills found');
74
+ }
75
+ console.log(chalk.blue('\n📚 可用的技能:\n'));
76
+ console.log(chalk.gray('─'.repeat(70)));
77
+ skills.forEach(skill => {
78
+ const skillFile = path.join(skillsDir, skill, 'SKILL.md');
79
+ const content = fs.readFileSync(skillFile, 'utf-8');
80
+ // 尝试从 SKILL.md 中提取描述
81
+ const descMatch = content.match(/^description:\s*(.+)$/m);
82
+ const description = descMatch ? descMatch[1] : '无描述';
83
+ console.log(chalk.cyan(` ${skill}`));
84
+ console.log(chalk.gray(` ${description}`));
85
+ console.log();
86
+ });
87
+ console.log(chalk.gray('─'.repeat(70)));
88
+ console.log(chalk.cyan('\n用法:'));
89
+ console.log(chalk.gray(' needware-cli skill <skill-name> 添加指定技能'));
90
+ console.log(chalk.gray(' needware-cli skill all 添加所有可用技能'));
91
+ console.log(chalk.gray(' needware-cli skill <skill-name> --force 强制覆盖已存在的技能\n'));
92
+ console.log(chalk.cyan('示例:'));
93
+ console.log(chalk.gray(' needware-cli skill ai-integration'));
94
+ console.log(chalk.gray(' needware-cli skill all'));
95
+ console.log(chalk.gray(' needware-cli skill all --force\n'));
96
+ return this.success('Skills listed successfully');
97
+ }
98
+ /**
99
+ * 获取所有可用的技能列表
100
+ */
101
+ getAllSkills() {
102
+ const skillsDir = this.getCliSkillsDir();
103
+ if (!fs.existsSync(skillsDir)) {
104
+ return [];
105
+ }
106
+ const entries = fs.readdirSync(skillsDir, { withFileTypes: true });
107
+ const skills = entries
108
+ .filter(entry => entry.isDirectory())
109
+ .filter(dir => {
110
+ const skillFile = path.join(skillsDir, dir.name, 'SKILL.md');
111
+ return fs.existsSync(skillFile);
112
+ })
113
+ .map(dir => dir.name);
114
+ return skills;
115
+ }
116
+ /**
117
+ * 添加所有技能到 .claude/skills
118
+ */
119
+ async addAllSkills(options) {
120
+ const spinner = ora('正在获取所有可用技能...').start();
121
+ try {
122
+ const skills = this.getAllSkills();
123
+ if (skills.length === 0) {
124
+ spinner.warn(chalk.yellow('没有找到可用的技能'));
125
+ return this.error('没有可用的技能');
126
+ }
127
+ spinner.text = `找到 ${skills.length} 个技能,开始添加...`;
128
+ const results = {
129
+ success: [],
130
+ failed: [],
131
+ skipped: []
132
+ };
133
+ for (const skillName of skills) {
134
+ spinner.text = `正在添加 ${skillName}...`;
135
+ try {
136
+ // 从 CLI 工具自带的 skills 目录读取技能
137
+ const cliSkillsDir = this.getCliSkillsDir();
138
+ const skillFilePath = path.join(cliSkillsDir, skillName, 'SKILL.md');
139
+ if (!fs.existsSync(skillFilePath)) {
140
+ results.failed.push(skillName);
141
+ continue;
142
+ }
143
+ // 读取技能文件内容
144
+ const skillContent = fs.readFileSync(skillFilePath, 'utf-8');
145
+ // 确定用户项目的 .claude/skills 路径
146
+ const userProjectRoot = process.cwd();
147
+ const claudeDir = path.join(userProjectRoot, '.claude');
148
+ const skillsPath = path.join(claudeDir, 'skills');
149
+ // 确保 .claude 目录存在
150
+ if (!fs.existsSync(claudeDir)) {
151
+ fs.mkdirSync(claudeDir, { recursive: true });
152
+ }
153
+ // 检查 skills 是文件还是目录,如果不存在则默认创建为目录
154
+ let isDirectory = false;
155
+ if (fs.existsSync(skillsPath)) {
156
+ const stats = fs.statSync(skillsPath);
157
+ isDirectory = stats.isDirectory();
158
+ }
159
+ else {
160
+ // 如果 skills 不存在,创建为目录
161
+ fs.mkdirSync(skillsPath, { recursive: true });
162
+ isDirectory = true;
163
+ }
164
+ if (isDirectory) {
165
+ // 如果是目录,创建技能子目录并复制 SKILL.md
166
+ const targetDir = path.join(skillsPath, skillName);
167
+ const targetFile = path.join(targetDir, 'SKILL.md');
168
+ if (fs.existsSync(targetFile) && !options.force) {
169
+ results.skipped.push(skillName);
170
+ continue;
171
+ }
172
+ // 创建技能目录(如果不存在)
173
+ if (!fs.existsSync(targetDir)) {
174
+ fs.mkdirSync(targetDir, { recursive: true });
175
+ }
176
+ // 写入技能文件
177
+ fs.writeFileSync(targetFile, skillContent, 'utf-8');
178
+ results.success.push(skillName);
179
+ }
180
+ else {
181
+ // 如果是文件,追加到 skills 文件
182
+ const separator = '\n\n' + '='.repeat(80) + '\n\n';
183
+ const contentToAppend = fs.existsSync(skillsPath) ? separator + skillContent : skillContent;
184
+ fs.appendFileSync(skillsPath, contentToAppend, 'utf-8');
185
+ results.success.push(skillName);
186
+ }
187
+ }
188
+ catch (error) {
189
+ results.failed.push(skillName);
190
+ }
191
+ }
192
+ spinner.succeed(chalk.green('✅ 批量添加完成'));
193
+ // 显示结果统计
194
+ console.log(chalk.blue('\n📊 添加结果:\n'));
195
+ console.log(chalk.gray('─'.repeat(70)));
196
+ if (results.success.length > 0) {
197
+ console.log(chalk.green(`\n✅ 成功添加 (${results.success.length}):`));
198
+ results.success.forEach(skill => {
199
+ console.log(chalk.gray(` • ${skill}`));
200
+ });
201
+ }
202
+ if (results.skipped.length > 0) {
203
+ console.log(chalk.yellow(`\n⚠️ 跳过已存在 (${results.skipped.length}):`));
204
+ results.skipped.forEach(skill => {
205
+ console.log(chalk.gray(` • ${skill}`));
206
+ });
207
+ console.log(chalk.gray('\n 💡 使用 --force 选项可以覆盖已存在的技能'));
208
+ }
209
+ if (results.failed.length > 0) {
210
+ console.log(chalk.red(`\n❌ 添加失败 (${results.failed.length}):`));
211
+ results.failed.forEach(skill => {
212
+ console.log(chalk.gray(` • ${skill}`));
213
+ });
214
+ }
215
+ console.log(chalk.gray('\n' + '─'.repeat(70)));
216
+ console.log(chalk.cyan('\n📄 技能已添加到:'), path.join(process.cwd(), '.claude', 'skills'));
217
+ console.log(chalk.gray('💡 提示: 你可以在 Cursor 或 Claude 中使用这些技能\n'));
218
+ return this.success(`成功添加 ${results.success.length} 个技能`);
219
+ }
220
+ catch (error) {
221
+ spinner.fail(chalk.red('批量添加失败'));
222
+ throw error;
223
+ }
224
+ }
225
+ /**
226
+ * 添加指定的技能到 .claude/skills
227
+ */
228
+ async addSkill(skillName, options) {
229
+ const spinner = ora(`正在处理 ${skillName} 技能...`).start();
230
+ try {
231
+ // 从 CLI 工具自带的 skills 目录读取技能
232
+ const cliSkillsDir = this.getCliSkillsDir();
233
+ const skillFilePath = path.join(cliSkillsDir, skillName, 'SKILL.md');
234
+ // 检查技能文件是否存在
235
+ if (!fs.existsSync(skillFilePath)) {
236
+ spinner.fail(chalk.red(`技能不存在: ${skillName}`));
237
+ console.log(chalk.yellow('\n💡 提示: 运行 "needware-cli skill" 查看可用的技能\n'));
238
+ return this.error(`技能文件不存在: ${skillFilePath}`);
239
+ }
240
+ // 读取技能文件内容
241
+ const skillContent = fs.readFileSync(skillFilePath, 'utf-8');
242
+ // 确定用户项目的 .claude/skills 路径
243
+ const userProjectRoot = process.cwd();
244
+ const claudeDir = path.join(userProjectRoot, '.claude');
245
+ const skillsPath = path.join(claudeDir, 'skills');
246
+ // 确保 .claude 目录存在
247
+ if (!fs.existsSync(claudeDir)) {
248
+ fs.mkdirSync(claudeDir, { recursive: true });
249
+ spinner.text = `创建了 .claude 目录`;
250
+ }
251
+ // 检查 skills 是文件还是目录,如果不存在则默认创建为目录
252
+ let isDirectory = false;
253
+ if (fs.existsSync(skillsPath)) {
254
+ const stats = fs.statSync(skillsPath);
255
+ isDirectory = stats.isDirectory();
256
+ }
257
+ else {
258
+ // 如果 skills 不存在,创建为目录
259
+ fs.mkdirSync(skillsPath, { recursive: true });
260
+ isDirectory = true;
261
+ spinner.text = `创建了 .claude/skills 目录`;
262
+ }
263
+ if (isDirectory) {
264
+ // 如果是目录,创建技能子目录并复制 SKILL.md
265
+ const targetDir = path.join(skillsPath, skillName);
266
+ const targetFile = path.join(targetDir, 'SKILL.md');
267
+ if (fs.existsSync(targetFile)) {
268
+ // 如果文件已存在,检查是否使用 force 选项
269
+ spinner.warn(chalk.yellow('目标技能已存在'));
270
+ if (options.force) {
271
+ fs.writeFileSync(targetFile, skillContent, 'utf-8');
272
+ spinner.succeed(chalk.green(`✅ ${skillName} 技能已更新到 .claude/skills/${skillName}/SKILL.md`));
273
+ }
274
+ else {
275
+ spinner.info(chalk.blue('使用 --force 选项可以覆盖现有技能'));
276
+ return this.success(`${skillName} 技能已存在`, { path: targetFile });
277
+ }
278
+ }
279
+ else {
280
+ // 创建技能目录(如果不存在)
281
+ if (!fs.existsSync(targetDir)) {
282
+ fs.mkdirSync(targetDir, { recursive: true });
283
+ }
284
+ // 写入技能文件
285
+ fs.writeFileSync(targetFile, skillContent, 'utf-8');
286
+ spinner.succeed(chalk.green(`✅ ${skillName} 技能已添加到 .claude/skills/${skillName}/SKILL.md`));
287
+ }
288
+ console.log(chalk.cyan('\n📄 文件路径:'), targetFile);
289
+ }
290
+ else {
291
+ // 如果是文件或不存在,追加到 skills 文件
292
+ const separator = '\n\n' + '='.repeat(80) + '\n\n';
293
+ const contentToAppend = fs.existsSync(skillsPath) ? separator + skillContent : skillContent;
294
+ fs.appendFileSync(skillsPath, contentToAppend, 'utf-8');
295
+ spinner.succeed(chalk.green(`✅ ${skillName} 技能已追加到 .claude/skills`));
296
+ console.log(chalk.cyan('\n📄 文件路径:'), skillsPath);
297
+ }
298
+ console.log(chalk.gray(`\n💡 提示: 你可以在 Cursor 或 Claude 中使用这个技能\n`));
299
+ return this.success(`${skillName} 技能已成功添加`);
300
+ }
301
+ catch (error) {
302
+ spinner.fail(chalk.red('处理失败'));
303
+ throw error;
304
+ }
305
+ }
306
+ }
307
+ //# sourceMappingURL=skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/commands/skill.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/commands/system-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU,cAAc;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAoKD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,cAAc,GACxB,MAAM,CA2JR"}
1
+ {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/commands/system-prompt.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,UAAU,cAAc;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAoKD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,cAAc,GACxB,MAAM,CA+YR"}