ai-project-manage-cli 1.0.6 → 1.0.7
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmCzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyC3D"}
|
|
@@ -5,23 +5,57 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.registerInitCommands = registerInitCommands;
|
|
7
7
|
const promises_1 = require("node:fs/promises");
|
|
8
|
-
const node_os_1 = __importDefault(require("node:os"));
|
|
9
8
|
const node_path_1 = __importDefault(require("node:path"));
|
|
10
9
|
function resolveSkillSourceDir() {
|
|
11
10
|
// dist/cli/commands/init.js -> ../../../templates/skills
|
|
12
11
|
return node_path_1.default.resolve(__dirname, "../../../templates/skills");
|
|
13
12
|
}
|
|
14
|
-
function resolveCursorSkillsDir() {
|
|
15
|
-
|
|
13
|
+
async function resolveCursorSkillsDir() {
|
|
14
|
+
// 从当前工作目录向上查找最近的 `.cursor/skills`
|
|
15
|
+
let cur = process.cwd();
|
|
16
|
+
// 最多向上 20 层,避免误跑到根分区
|
|
17
|
+
for (let i = 0; i < 20; i += 1) {
|
|
18
|
+
const skillsDir = node_path_1.default.join(cur, ".cursor", "skills");
|
|
19
|
+
try {
|
|
20
|
+
const s = await (0, promises_1.stat)(skillsDir);
|
|
21
|
+
if (s.isDirectory()) {
|
|
22
|
+
return skillsDir;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// ignore ENOENT 等错误,继续向上查找
|
|
27
|
+
}
|
|
28
|
+
const parent = node_path_1.default.dirname(cur);
|
|
29
|
+
if (!parent || parent === cur)
|
|
30
|
+
break;
|
|
31
|
+
cur = parent;
|
|
32
|
+
}
|
|
33
|
+
// 未找到项目级 .cursor/skills,提示错误并退出
|
|
34
|
+
// 使用 console.error 保持 CLI 风格,与其它子命令一致
|
|
35
|
+
// eslint-disable-next-line no-console
|
|
36
|
+
console.error("未找到当前项目的 .cursor/skills 目录:请在项目根创建 .cursor/skills 后再执行 apm init");
|
|
37
|
+
process.exit(1);
|
|
16
38
|
}
|
|
17
39
|
function registerInitCommands(program) {
|
|
18
40
|
program
|
|
19
41
|
.command("init")
|
|
20
|
-
.description("安装内置 Cursor skills
|
|
42
|
+
.description("安装内置 Cursor skills 到当前项目的 .cursor/skills(须已存在该目录)")
|
|
21
43
|
.action(async () => {
|
|
22
44
|
const srcDir = resolveSkillSourceDir();
|
|
23
|
-
const dstDir = resolveCursorSkillsDir();
|
|
45
|
+
const dstDir = await resolveCursorSkillsDir();
|
|
24
46
|
await (0, promises_1.mkdir)(dstDir, { recursive: true });
|
|
47
|
+
// 读取模板下的技能子目录名,用于在目标目录中做“删除后重装”
|
|
48
|
+
const entries = await (0, promises_1.readdir)(srcDir, { withFileTypes: true });
|
|
49
|
+
const skillDirs = entries.filter((e) => e.isDirectory()).map((e) => e.name);
|
|
50
|
+
for (const name of skillDirs) {
|
|
51
|
+
const existing = node_path_1.default.join(dstDir, name);
|
|
52
|
+
try {
|
|
53
|
+
await (0, promises_1.rm)(existing, { recursive: true, force: true });
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// ignore 删除失败(例如不存在或权限问题),继续尝试后续目录
|
|
57
|
+
}
|
|
58
|
+
}
|
|
25
59
|
await (0, promises_1.cp)(srcDir, dstDir, {
|
|
26
60
|
recursive: true,
|
|
27
61
|
force: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":";;;;;AAqCA,oDAyCC;AA9ED,+CAAgE;AAChE,0DAA6B;AAG7B,SAAS,qBAAqB;IAC5B,yDAAyD;IACzD,OAAO,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;AAC9D,CAAC;AAED,KAAK,UAAU,sBAAsB;IACnC,kCAAkC;IAClC,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,qBAAqB;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,IAAA,eAAI,EAAC,SAAS,CAAC,CAAC;YAChC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACpB,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,2BAA2B;QAC7B,CAAC;QACD,MAAM,MAAM,GAAG,mBAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QACrC,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IAED,gCAAgC;IAChC,sCAAsC;IACtC,sCAAsC;IACtC,OAAO,CAAC,KAAK,CACX,iEAAiE,CAClE,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CACV,mDAAmD,CACpD;SACA,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAC;QAE9C,MAAM,IAAA,gBAAK,EAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzC,gCAAgC;QAChC,MAAM,OAAO,GAAG,MAAM,IAAA,kBAAO,EAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAE5E,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,IAAA,aAAE,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC;YAAC,MAAM,CAAC;gBACP,mCAAmC;YACrC,CAAC;QACH,CAAC;QACD,MAAM,IAAA,aAAE,EAAC,MAAM,EAAE,MAAM,EAAE;YACvB,SAAS,EAAE,IAAI;YACf,KAAK,EAAE,IAAI;SACZ,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CACT,IAAI,CAAC,SAAS,CACZ;YACE,EAAE,EAAE,IAAI;YACR,aAAa,EAAE,MAAM;YACrB,WAAW,EAAE,MAAM;SACpB,EACD,IAAI,EACJ,CAAC,CACF,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC"}
|