ai-pack-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/CHANGELOG.md +93 -0
- package/README.md +52 -0
- package/bin/ai-pack-cli.js +10 -0
- package/bin/backend.js +4 -0
- package/bin/frontend.js +4 -0
- package/bin/run-role.js +18 -0
- package/bin/silent-update.js +10 -0
- package/bin/testing.js +4 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +138 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/default.d.ts +2 -0
- package/dist/commands/default.d.ts.map +1 -0
- package/dist/commands/default.js +94 -0
- package/dist/commands/default.js.map +1 -0
- package/dist/commands/silent-update.d.ts +8 -0
- package/dist/commands/silent-update.d.ts.map +1 -0
- package/dist/commands/silent-update.js +124 -0
- package/dist/commands/silent-update.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/ides.d.ts +3 -0
- package/dist/prompts/ides.d.ts.map +1 -0
- package/dist/prompts/ides.js +30 -0
- package/dist/prompts/ides.js.map +1 -0
- package/dist/prompts/role.d.ts +3 -0
- package/dist/prompts/role.d.ts.map +1 -0
- package/dist/prompts/role.js +30 -0
- package/dist/prompts/role.js.map +1 -0
- package/package.json +56 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
本文件遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
|
|
4
|
+
|
|
5
|
+
## [1.0.0](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.22...v1.0.0) (2026-06-04)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
|
|
10
|
+
* **release:** 0.1.22 ([d59bcdf](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/commit/d59bcdf9a04e923eacabdaad3d81b733ae19196f))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Added
|
|
14
|
+
|
|
15
|
+
* **ligang:** 添加静默更新功能并切换发布源至 npm 官方仓库 ([09c38a7](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/commit/09c38a72d64a68160d1057e93699ca0f8e68d5c2))
|
|
16
|
+
* **ligang:** 新增 silent-update 子命令及按月分目录日志记录 ([883a3d7](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/commit/883a3d7f1b7cae1432d1bef890365fcb7473dd49))
|
|
17
|
+
|
|
18
|
+
### [0.1.22](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.21...v0.1.22) (2026-06-04)
|
|
19
|
+
|
|
20
|
+
### [0.1.21](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.20...v0.1.21) (2026-06-04)
|
|
21
|
+
|
|
22
|
+
### [0.1.20](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.17...v0.1.20) (2026-06-03)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
|
|
27
|
+
* **ligang:** 重构安装流程由 CLI 在 Node 进程内直接执行,不再依赖 install.sh ([29496f1](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/commit/29496f1e902df7a2e50b4191cfe204b4d212939b))
|
|
28
|
+
|
|
29
|
+
### [0.1.19](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.17...v0.1.19) (2026-06-03)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
|
|
34
|
+
* **ligang:** 重构安装流程由 CLI 在 Node 进程内直接执行,不再依赖 install.sh ([29496f1](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/commit/29496f1e902df7a2e50b4191cfe204b4d212939b))
|
|
35
|
+
|
|
36
|
+
### [0.1.18](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.17...v0.1.18) (2026-06-03)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
### Added
|
|
40
|
+
|
|
41
|
+
* **ligang:** 重构安装流程由 CLI 在 Node 进程内直接执行,不再依赖 install.sh ([29496f1](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/commit/29496f1e902df7a2e50b4191cfe204b4d212939b))
|
|
42
|
+
|
|
43
|
+
### [0.1.17](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.16...v0.1.17) (2026-06-03)
|
|
44
|
+
|
|
45
|
+
### [0.1.16](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.15...v0.1.16) (2026-06-03)
|
|
46
|
+
|
|
47
|
+
### [0.1.15](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.14...v0.1.15) (2026-06-03)
|
|
48
|
+
|
|
49
|
+
### [0.1.14](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.13...v0.1.14) (2026-06-02)
|
|
50
|
+
|
|
51
|
+
### [0.1.13](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.12...v0.1.13) (2026-06-02)
|
|
52
|
+
|
|
53
|
+
### [0.1.12](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.11...v0.1.12) (2026-06-02)
|
|
54
|
+
|
|
55
|
+
### [0.1.11](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.10...v0.1.11) (2026-06-02)
|
|
56
|
+
|
|
57
|
+
### [0.1.10](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.9...v0.1.10) (2026-06-02)
|
|
58
|
+
|
|
59
|
+
### [0.1.9](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.8...v0.1.9) (2026-06-02)
|
|
60
|
+
|
|
61
|
+
### [0.1.8](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.7...v0.1.8) (2026-06-02)
|
|
62
|
+
|
|
63
|
+
### [0.1.7](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.6...v0.1.7) (2026-06-02)
|
|
64
|
+
|
|
65
|
+
### [0.1.6](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.5...v0.1.6) (2026-06-02)
|
|
66
|
+
|
|
67
|
+
### [0.1.5](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.4...v0.1.5) (2026-06-02)
|
|
68
|
+
|
|
69
|
+
### [0.1.4](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.3...v0.1.4) (2026-06-02)
|
|
70
|
+
|
|
71
|
+
### [0.1.3](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.2...v0.1.3) (2026-06-02)
|
|
72
|
+
|
|
73
|
+
### [0.1.2](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/compare/v0.1.1...v0.1.2) (2026-06-01)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
### Added
|
|
77
|
+
|
|
78
|
+
* **ligang:** 重构 CLI 架构以支持 Node 10+ 并统一安装流程 ([a53e1ba](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/commit/a53e1ba5a7c88a43048eb5741fa1a457bf796eb2))
|
|
79
|
+
|
|
80
|
+
### 0.1.1 (2026-06-01)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
### Fixed
|
|
84
|
+
|
|
85
|
+
* **ligang:** 初始化项目结构与核心功能 ([97dd600](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/commit/97dd600489df6732925ed29910b6052811346769))
|
|
86
|
+
|
|
87
|
+
## [0.1.0] - 2026-05-29
|
|
88
|
+
|
|
89
|
+
### Added
|
|
90
|
+
|
|
91
|
+
- monorepo 结构(`shared` / `core` / `cli`)
|
|
92
|
+
- `npx ai-pack-cli` 默认安装与 `init` 交互式安装
|
|
93
|
+
- 克隆 ai-pack 仓库并调用 `install.sh` / `install.ps1`
|
package/README.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# ai-pack-cli
|
|
2
|
+
|
|
3
|
+
通过 `npx` 把 AI Pack 安装到当前项目目录。
|
|
4
|
+
|
|
5
|
+
## 使用逻辑
|
|
6
|
+
|
|
7
|
+
- 默认执行:读取 `~/.config/ai-pack/ai-pack.json` 中的 `role`
|
|
8
|
+
- 如果没有有效 `role`:交互选择角色并写回配置文件
|
|
9
|
+
- 然后选择要安装的 IDE 目录
|
|
10
|
+
- 安装完成后按角色和所选 IDE 写入对应配置
|
|
11
|
+
|
|
12
|
+
## 安装命令
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npx ai-pack-cli
|
|
16
|
+
npx ai-pack-cli backend
|
|
17
|
+
npx ai-pack-cli frontend
|
|
18
|
+
npx ai-pack-cli testing
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
也可以使用参数形式:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
npx ai-pack-cli -r backend
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## npx 版本说明
|
|
28
|
+
|
|
29
|
+
- `npx -y` 需要 `npm >= 5.5.0`
|
|
30
|
+
- 低于 `5.5.0` 时,`npx -y` 会直接报错
|
|
31
|
+
- 为了兼容低版本 npm,文档示例默认不带 `-y`
|
|
32
|
+
|
|
33
|
+
## 环境要求
|
|
34
|
+
|
|
35
|
+
- Node.js `>= 10`
|
|
36
|
+
- Python `>= 3.8`
|
|
37
|
+
- Git 已安装并在 `PATH` 中
|
|
38
|
+
|
|
39
|
+
## 更新日志
|
|
40
|
+
|
|
41
|
+
<!-- CHANGELOG:START -->
|
|
42
|
+
|
|
43
|
+
### [1.0.0]
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
* **release:** 0.1.22 ([d59bcdf](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/commit/d59bcdf9a04e923eacabdaad3d81b733ae19196f))
|
|
47
|
+
|
|
48
|
+
### Added
|
|
49
|
+
* **ligang:** 添加静默更新功能并切换发布源至 npm 官方仓库 ([09c38a7](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/commit/09c38a72d64a68160d1057e93699ca0f8e68d5c2))
|
|
50
|
+
* **ligang:** 新增 silent-update 子命令及按月分目录日志记录 ([883a3d7](http://10.96.105.158/gitlab/ZhiHuiNongShang/XinFaDi/base-framework/project-initializer/ai-pack-cli/commit/883a3d7f1b7cae1432d1bef890365fcb7473dd49))
|
|
51
|
+
|
|
52
|
+
<!-- CHANGELOG:END -->
|
package/bin/backend.js
ADDED
package/bin/frontend.js
ADDED
package/bin/run-role.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
const chalk = require("chalk");
|
|
5
|
+
const { runDefaultInstall } = require("../dist/commands/default.js");
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 供 backend / frontend / testing 等角色 bin 入口复用。
|
|
9
|
+
* 旧版 npx(Node 10)会把 `npx ai-pack-cli backend` 解析为执行包内 backend 命令。
|
|
10
|
+
*/
|
|
11
|
+
function runRole(role) {
|
|
12
|
+
runDefaultInstall(role).catch((err) => {
|
|
13
|
+
console.error(chalk.red(err.message || String(err)));
|
|
14
|
+
process.exit(1);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
module.exports = { runRole };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
const chalk = require("chalk");
|
|
5
|
+
const { runSilentUpdate } = require("../dist/commands/silent-update.js");
|
|
6
|
+
|
|
7
|
+
runSilentUpdate().catch((err) => {
|
|
8
|
+
console.error(chalk.red(err.message || String(err)));
|
|
9
|
+
process.exit(1);
|
|
10
|
+
});
|
package/bin/testing.js
ADDED
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ParsedArgs {
|
|
2
|
+
roleArg?: string;
|
|
3
|
+
showVersion: boolean;
|
|
4
|
+
showHelp: boolean;
|
|
5
|
+
command?: "install" | "silent-update";
|
|
6
|
+
}
|
|
7
|
+
export declare function parseCliArgs(argv: string[]): ParsedArgs;
|
|
8
|
+
export declare function getHelpText(): string;
|
|
9
|
+
export declare function getCliBannerText(): string;
|
|
10
|
+
export declare function buildLocalAgentConfigSummary(targetDir: string): string;
|
|
11
|
+
export declare function runCli(argv?: string[]): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=cli.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,GAAG,eAAe,CAAC;CACvC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAmDvD;AAED,wBAAgB,WAAW,IAAI,MAAM,CAmBpC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAQD,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAuBtE;AAED,wBAAsB,MAAM,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBzE"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.parseCliArgs = parseCliArgs;
|
|
7
|
+
exports.getHelpText = getHelpText;
|
|
8
|
+
exports.getCliBannerText = getCliBannerText;
|
|
9
|
+
exports.buildLocalAgentConfigSummary = buildLocalAgentConfigSummary;
|
|
10
|
+
exports.runCli = runCli;
|
|
11
|
+
const fs_1 = require("fs");
|
|
12
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
const shared_1 = require("@ai-pack-cli/shared");
|
|
15
|
+
const default_1 = require("./commands/default");
|
|
16
|
+
const silent_update_1 = require("./commands/silent-update");
|
|
17
|
+
function readVersion() {
|
|
18
|
+
var _a;
|
|
19
|
+
try {
|
|
20
|
+
const pkgPath = (0, path_1.join)(__dirname, "..", "package.json");
|
|
21
|
+
const pkg = JSON.parse((0, fs_1.readFileSync)(pkgPath, "utf-8"));
|
|
22
|
+
return (_a = pkg.version) !== null && _a !== void 0 ? _a : "0.0.0";
|
|
23
|
+
}
|
|
24
|
+
catch (_b) {
|
|
25
|
+
return "0.0.0";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function parseCliArgs(argv) {
|
|
29
|
+
const args = argv.slice(2);
|
|
30
|
+
let roleFromOption;
|
|
31
|
+
let roleFromArg;
|
|
32
|
+
let showVersion = false;
|
|
33
|
+
let showHelp = false;
|
|
34
|
+
let command = "install";
|
|
35
|
+
for (let i = 0; i < args.length; i += 1) {
|
|
36
|
+
const current = args[i];
|
|
37
|
+
if (current === "-v" || current === "--version") {
|
|
38
|
+
showVersion = true;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (current === "-h" || current === "--help") {
|
|
42
|
+
showHelp = true;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (current === "silent-update") {
|
|
46
|
+
command = "silent-update";
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (current === "-r" || current === "--role") {
|
|
50
|
+
const next = args[i + 1];
|
|
51
|
+
if (next && !next.startsWith("-")) {
|
|
52
|
+
roleFromOption = next;
|
|
53
|
+
i += 1;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
throw new Error("Missing value for --role. Expected backend | frontend | testing.");
|
|
57
|
+
}
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (!current.startsWith("-") && !roleFromArg) {
|
|
61
|
+
roleFromArg = current;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
throw new Error(`Unsupported argument: ${current}`);
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
command,
|
|
68
|
+
roleArg: roleFromOption !== null && roleFromOption !== void 0 ? roleFromOption : roleFromArg,
|
|
69
|
+
showVersion,
|
|
70
|
+
showHelp,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function getHelpText() {
|
|
74
|
+
return [
|
|
75
|
+
chalk_1.default.bold.cyan("ai-pack-cli"),
|
|
76
|
+
"",
|
|
77
|
+
chalk_1.default.gray("Install AI Pack into the current project directory."),
|
|
78
|
+
"",
|
|
79
|
+
chalk_1.default.yellow("Usage:"),
|
|
80
|
+
" ai-pack-cli [role] [options]",
|
|
81
|
+
" ai-pack-cli silent-update",
|
|
82
|
+
"",
|
|
83
|
+
chalk_1.default.yellow("Arguments:"),
|
|
84
|
+
" role backend | frontend | testing",
|
|
85
|
+
"",
|
|
86
|
+
chalk_1.default.yellow("Options:"),
|
|
87
|
+
" -r, --role <role> Set install role",
|
|
88
|
+
" -v, --version Show version",
|
|
89
|
+
" -h, --help Show help",
|
|
90
|
+
"",
|
|
91
|
+
].join("\n");
|
|
92
|
+
}
|
|
93
|
+
function getCliBannerText() {
|
|
94
|
+
return "AI Pack CLI";
|
|
95
|
+
}
|
|
96
|
+
function renderCliBannerText() {
|
|
97
|
+
const accent = chalk_1.default.hex("#38bdf8");
|
|
98
|
+
const glow = chalk_1.default.hex("#f59e0b");
|
|
99
|
+
return `${accent("╭──────")} ${chalk_1.default.bold.white(getCliBannerText())} ${glow("✦")} ${accent("──────╮")}\n`;
|
|
100
|
+
}
|
|
101
|
+
function buildLocalAgentConfigSummary(targetDir) {
|
|
102
|
+
const lines = ["本地 AI Pack 配置概览"];
|
|
103
|
+
const envRole = (0, shared_1.parseRole)(process.env.AI_PACK_ROLE);
|
|
104
|
+
const installedRole = (0, shared_1.readInstalledRole)(targetDir);
|
|
105
|
+
const snapshots = (0, shared_1.readAgentConfigSnapshots)(targetDir);
|
|
106
|
+
lines.push(` 环境变量角色: ${envRole !== null && envRole !== void 0 ? envRole : "未设置"}`);
|
|
107
|
+
lines.push(` 已安装角色: ${installedRole !== null && installedRole !== void 0 ? installedRole : "未检测到"}`);
|
|
108
|
+
lines.push(" 已存在 IDE 目录:");
|
|
109
|
+
for (const snapshot of snapshots) {
|
|
110
|
+
if (!snapshot.exists) {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const roleText = snapshot.role ? `,角色: ${snapshot.role}` : "";
|
|
114
|
+
lines.push(` ${snapshot.configDir}${roleText}`);
|
|
115
|
+
}
|
|
116
|
+
if (lines[lines.length - 1] === " 已存在 IDE 目录:") {
|
|
117
|
+
lines.push(" 未检测到");
|
|
118
|
+
}
|
|
119
|
+
return lines.join("\n");
|
|
120
|
+
}
|
|
121
|
+
async function runCli(argv = process.argv) {
|
|
122
|
+
const parsed = parseCliArgs(argv);
|
|
123
|
+
if (parsed.showVersion) {
|
|
124
|
+
console.log(chalk_1.default.green(readVersion()));
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (parsed.showHelp) {
|
|
128
|
+
console.log(getHelpText());
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (parsed.command === "silent-update") {
|
|
132
|
+
await (0, silent_update_1.runSilentUpdate)();
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
console.log(renderCliBannerText());
|
|
136
|
+
await (0, default_1.runDefaultInstall)(parsed.roleArg);
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/commands/default.ts"],"names":[],"mappings":"AA6FA,wBAAsB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBvE"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runDefaultInstall = runDefaultInstall;
|
|
7
|
+
const core_1 = require("@ai-pack-cli/core");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const shared_1 = require("@ai-pack-cli/shared");
|
|
10
|
+
const ides_1 = require("../prompts/ides");
|
|
11
|
+
const role_1 = require("../prompts/role");
|
|
12
|
+
async function promptAndPersistRole(defaultRole) {
|
|
13
|
+
const role = await (0, role_1.promptRoleSelect)(defaultRole);
|
|
14
|
+
(0, shared_1.writeRoleToUserConfig)(role);
|
|
15
|
+
return role;
|
|
16
|
+
}
|
|
17
|
+
function syncRuntimeRole(role) {
|
|
18
|
+
process.env.AI_PACK_ROLE = role;
|
|
19
|
+
}
|
|
20
|
+
async function resolveInstallIdeTypes(targetDir) {
|
|
21
|
+
if (!(0, shared_1.isInteractive)()) {
|
|
22
|
+
throw new Error("安装需要选择 IDE 目录,请在交互终端中运行。");
|
|
23
|
+
}
|
|
24
|
+
const snapshots = (0, shared_1.readAgentConfigSnapshots)(targetDir);
|
|
25
|
+
const preselected = new Set();
|
|
26
|
+
for (const item of snapshots) {
|
|
27
|
+
if (!item.exists) {
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const matched = shared_1.INSTALLABLE_IDE_TYPES.find((ide) => ide.dir === item.configDir);
|
|
31
|
+
if (matched) {
|
|
32
|
+
preselected.add(matched.value);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const selected = await (0, ides_1.promptInstallIdeSelect)([...preselected]);
|
|
36
|
+
process.env.AI_PACK_INSTALL_IDES = selected.join(",");
|
|
37
|
+
return selected;
|
|
38
|
+
}
|
|
39
|
+
async function resolveInstallRole(targetDir, roleArg) {
|
|
40
|
+
var _a;
|
|
41
|
+
const defaults = (0, shared_1.getDefaultConfig)();
|
|
42
|
+
const commandRoleRaw = roleArg === null || roleArg === void 0 ? void 0 : roleArg.trim();
|
|
43
|
+
const commandRole = (0, shared_1.parseRole)(commandRoleRaw);
|
|
44
|
+
const envRole = (0, shared_1.parseRole)(process.env.AI_PACK_ROLE);
|
|
45
|
+
const existingRole = (0, shared_1.readInstalledRole)(targetDir);
|
|
46
|
+
const userConfigRole = (0, shared_1.readRoleFromUserConfig)();
|
|
47
|
+
const fallbackRole = (_a = userConfigRole !== null && userConfigRole !== void 0 ? userConfigRole : existingRole) !== null && _a !== void 0 ? _a : defaults.role;
|
|
48
|
+
if (commandRole) {
|
|
49
|
+
syncRuntimeRole(commandRole);
|
|
50
|
+
(0, shared_1.writeRoleToUserConfig)(commandRole);
|
|
51
|
+
return commandRole;
|
|
52
|
+
}
|
|
53
|
+
if (commandRoleRaw) {
|
|
54
|
+
if (envRole) {
|
|
55
|
+
syncRuntimeRole(envRole);
|
|
56
|
+
(0, shared_1.writeRoleToUserConfig)(envRole);
|
|
57
|
+
return envRole;
|
|
58
|
+
}
|
|
59
|
+
if ((0, shared_1.isInteractive)()) {
|
|
60
|
+
return promptAndPersistRole(fallbackRole);
|
|
61
|
+
}
|
|
62
|
+
throw new Error(`无效角色: ${roleArg},可选值: backend | frontend | testing`);
|
|
63
|
+
}
|
|
64
|
+
if (envRole) {
|
|
65
|
+
syncRuntimeRole(envRole);
|
|
66
|
+
(0, shared_1.writeRoleToUserConfig)(envRole);
|
|
67
|
+
return envRole;
|
|
68
|
+
}
|
|
69
|
+
if ((0, shared_1.isInteractive)()) {
|
|
70
|
+
return promptAndPersistRole(fallbackRole);
|
|
71
|
+
}
|
|
72
|
+
console.log(chalk_1.default.yellow(`非交互环境:使用默认安装配置(role=${fallbackRole}, branch=${defaults.branch})`));
|
|
73
|
+
return fallbackRole;
|
|
74
|
+
}
|
|
75
|
+
async function runDefaultInstall(roleArg) {
|
|
76
|
+
const defaults = (0, shared_1.getDefaultConfig)();
|
|
77
|
+
const targetDir = (0, shared_1.resolveTargetDir)();
|
|
78
|
+
const role = await resolveInstallRole(targetDir, roleArg);
|
|
79
|
+
const installIdeTypes = await resolveInstallIdeTypes(targetDir);
|
|
80
|
+
const ideTypeForManifest = installIdeTypes.includes(defaults.ideType)
|
|
81
|
+
? defaults.ideType
|
|
82
|
+
: installIdeTypes[0];
|
|
83
|
+
await (0, core_1.installAiPack)({
|
|
84
|
+
targetDir,
|
|
85
|
+
role,
|
|
86
|
+
branch: defaults.branch,
|
|
87
|
+
gitUrl: defaults.gitUrl,
|
|
88
|
+
ideType: ideTypeForManifest,
|
|
89
|
+
installIdeTypes,
|
|
90
|
+
silent: !(0, shared_1.isInteractive)(),
|
|
91
|
+
trigger: "manual",
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=default.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/commands/default.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"silent-update.d.ts","sourceRoot":"","sources":["../../src/commands/silent-update.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA4HrE"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runSilentUpdate = runSilentUpdate;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const core_1 = require("@ai-pack-cli/core");
|
|
9
|
+
const shared_1 = require("@ai-pack-cli/shared");
|
|
10
|
+
async function runSilentUpdate() {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
const projects = (0, shared_1.getAllProjects)();
|
|
13
|
+
const results = [];
|
|
14
|
+
const startedAt = new Date().toISOString();
|
|
15
|
+
const startTime = Date.now();
|
|
16
|
+
(0, shared_1.writeSilentUpdateStatus)({
|
|
17
|
+
status: "running",
|
|
18
|
+
totalProjects: projects.length,
|
|
19
|
+
successProjects: 0,
|
|
20
|
+
failedProjects: 0,
|
|
21
|
+
lastRunStartedAt: startedAt,
|
|
22
|
+
});
|
|
23
|
+
if (projects.length === 0) {
|
|
24
|
+
(0, shared_1.writeSilentUpdateStatus)({
|
|
25
|
+
status: "success",
|
|
26
|
+
totalProjects: 0,
|
|
27
|
+
successProjects: 0,
|
|
28
|
+
failedProjects: 0,
|
|
29
|
+
lastRunFinishedAt: new Date().toISOString(),
|
|
30
|
+
});
|
|
31
|
+
(0, shared_1.logSilentUpdate)({
|
|
32
|
+
timestamp: startedAt,
|
|
33
|
+
level: "info",
|
|
34
|
+
message: "未找到已登记的项目,跳过静默更新",
|
|
35
|
+
type: "silent-update",
|
|
36
|
+
result: { total: 0, success: 0, failed: 0 },
|
|
37
|
+
});
|
|
38
|
+
console.log(chalk_1.default.yellow("没有找到已登记的项目"));
|
|
39
|
+
return results;
|
|
40
|
+
}
|
|
41
|
+
const defaults = (0, shared_1.getDefaultConfig)();
|
|
42
|
+
console.log(chalk_1.default.cyan(`找到 ${projects.length} 个项目,开始静默更新`));
|
|
43
|
+
for (const project of projects) {
|
|
44
|
+
const projectPath = project.path;
|
|
45
|
+
const projectStartTime = Date.now();
|
|
46
|
+
const role = (_a = (0, shared_1.readInstalledRole)(projectPath)) !== null && _a !== void 0 ? _a : project.role;
|
|
47
|
+
const detectedIdes = (0, shared_1.readInstalledIdeTypes)(projectPath);
|
|
48
|
+
const installIdeTypes = detectedIdes.length > 0 ? detectedIdes : project.installedIdes;
|
|
49
|
+
(0, shared_1.recordProjectInstallState)({
|
|
50
|
+
targetDir: projectPath,
|
|
51
|
+
role,
|
|
52
|
+
installedIdes: installIdeTypes,
|
|
53
|
+
trigger: "silent-update",
|
|
54
|
+
status: "running",
|
|
55
|
+
});
|
|
56
|
+
try {
|
|
57
|
+
await (0, core_1.installAiPack)({
|
|
58
|
+
targetDir: projectPath,
|
|
59
|
+
role,
|
|
60
|
+
branch: defaults.branch,
|
|
61
|
+
gitUrl: defaults.gitUrl,
|
|
62
|
+
ideType: (_b = installIdeTypes[0]) !== null && _b !== void 0 ? _b : defaults.ideType,
|
|
63
|
+
installIdeTypes,
|
|
64
|
+
silent: true,
|
|
65
|
+
trigger: "silent-update",
|
|
66
|
+
});
|
|
67
|
+
const duration = Date.now() - projectStartTime;
|
|
68
|
+
results.push({ projectPath, success: true, duration });
|
|
69
|
+
console.log(chalk_1.default.green(`更新成功: ${projectPath}`));
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
73
|
+
const duration = Date.now() - projectStartTime;
|
|
74
|
+
results.push({ projectPath, success: false, error: message, duration });
|
|
75
|
+
(0, shared_1.recordProjectInstallState)({
|
|
76
|
+
targetDir: projectPath,
|
|
77
|
+
role,
|
|
78
|
+
installedIdes: installIdeTypes,
|
|
79
|
+
trigger: "silent-update",
|
|
80
|
+
status: "failed",
|
|
81
|
+
error: message,
|
|
82
|
+
durationMs: duration,
|
|
83
|
+
});
|
|
84
|
+
console.error(chalk_1.default.red(`更新失败: ${projectPath}`));
|
|
85
|
+
console.error(chalk_1.default.red(`错误信息: ${message}`));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
const successCount = results.filter((item) => item.success).length;
|
|
89
|
+
const failedCount = results.length - successCount;
|
|
90
|
+
const completedAt = new Date().toISOString();
|
|
91
|
+
const totalDuration = Date.now() - startTime;
|
|
92
|
+
const finalStatus = failedCount === 0 ? "success"
|
|
93
|
+
: successCount === 0 ? "failed"
|
|
94
|
+
: "partial";
|
|
95
|
+
(0, shared_1.writeSilentUpdateStatus)({
|
|
96
|
+
status: finalStatus,
|
|
97
|
+
totalProjects: projects.length,
|
|
98
|
+
successProjects: successCount,
|
|
99
|
+
failedProjects: failedCount,
|
|
100
|
+
lastRunFinishedAt: completedAt,
|
|
101
|
+
});
|
|
102
|
+
(0, shared_1.logSilentUpdate)({
|
|
103
|
+
timestamp: completedAt,
|
|
104
|
+
level: finalStatus === "success" ? "success"
|
|
105
|
+
: finalStatus === "partial" ? "warn"
|
|
106
|
+
: "error",
|
|
107
|
+
message: `静默更新完成: 成功 ${successCount} 个,失败 ${failedCount} 个`,
|
|
108
|
+
type: "silent-update",
|
|
109
|
+
result: {
|
|
110
|
+
total: projects.length,
|
|
111
|
+
success: successCount,
|
|
112
|
+
failed: failedCount,
|
|
113
|
+
},
|
|
114
|
+
projects: results.map((item) => ({
|
|
115
|
+
path: item.projectPath,
|
|
116
|
+
status: item.success ? "success" : "error",
|
|
117
|
+
error: item.error,
|
|
118
|
+
duration: item.duration,
|
|
119
|
+
})),
|
|
120
|
+
});
|
|
121
|
+
console.log(chalk_1.default.cyan(`静默更新完成: 成功 ${successCount} 个,失败 ${failedCount} 个,耗时 ${totalDuration}ms`));
|
|
122
|
+
return results;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=silent-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"silent-update.js","sourceRoot":"","sources":["../../src/commands/silent-update.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
7
|
+
const cli_1 = require("./cli");
|
|
8
|
+
(0, cli_1.runCli)().catch((err) => {
|
|
9
|
+
console.error(chalk_1.default.red(err.message || String(err)));
|
|
10
|
+
process.exit(1);
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,+BAA+B;AAE/B,IAAA,YAAM,GAAE,CAAC,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE;IAC5B,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ides.d.ts","sourceRoot":"","sources":["../../src/prompts/ides.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAErF,wBAAsB,sBAAsB,CAAC,WAAW,GAAE,kBAAkB,EAAO,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAuBlH"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.promptInstallIdeSelect = promptInstallIdeSelect;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const shared_1 = require("@ai-pack-cli/shared");
|
|
9
|
+
async function promptInstallIdeSelect(preselected = []) {
|
|
10
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
11
|
+
throw new Error("当前终端不支持交互式 IDE 选择。");
|
|
12
|
+
}
|
|
13
|
+
const defaults = new Set(preselected);
|
|
14
|
+
const answers = await inquirer_1.default.prompt([
|
|
15
|
+
{
|
|
16
|
+
type: "checkbox",
|
|
17
|
+
name: "ideTypes",
|
|
18
|
+
message: "选择要安装的 IDE 目录(可多选,至少 1 个)",
|
|
19
|
+
choices: shared_1.INSTALLABLE_IDE_TYPES.map((item) => ({
|
|
20
|
+
name: `${item.label} [${item.dir}]`,
|
|
21
|
+
value: item.value,
|
|
22
|
+
checked: defaults.has(item.value),
|
|
23
|
+
})),
|
|
24
|
+
pageSize: shared_1.INSTALLABLE_IDE_TYPES.length,
|
|
25
|
+
validate: (value) => value.length > 0 ? true : "至少选择 1 个 IDE 目录后再确认。",
|
|
26
|
+
},
|
|
27
|
+
]);
|
|
28
|
+
return answers.ideTypes;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=ides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ides.js","sourceRoot":"","sources":["../../src/prompts/ides.ts"],"names":[],"mappings":";;;;;AAGA,wDAuBC;AA1BD,wDAAgC;AAChC,gDAAqF;AAE9E,KAAK,UAAU,sBAAsB,CAAC,cAAoC,EAAE;IACjF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAqC;QACxE;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,2BAA2B;YACpC,OAAO,EAAE,8BAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC5C,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,GAAG,GAAG;gBACnC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;aAClC,CAAC,CAAC;YACH,QAAQ,EAAE,8BAAqB,CAAC,MAAM;YACtC,QAAQ,EAAE,CAAC,KAA2B,EAAE,EAAE,CACxC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB;SACnD;KACF,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,QAAQ,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/prompts/role.ts"],"names":[],"mappings":"AACA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAuBnF"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.promptRoleSelect = promptRoleSelect;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const shared_1 = require("@ai-pack-cli/shared");
|
|
9
|
+
async function promptRoleSelect(defaultRole) {
|
|
10
|
+
const defaultIndex = shared_1.ROLES.findIndex((item) => item.value === defaultRole);
|
|
11
|
+
const resolvedDefaultIndex = defaultIndex >= 0 ? defaultIndex : 0;
|
|
12
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
13
|
+
return shared_1.ROLES[resolvedDefaultIndex].value;
|
|
14
|
+
}
|
|
15
|
+
const answers = await inquirer_1.default.prompt([
|
|
16
|
+
{
|
|
17
|
+
type: "list",
|
|
18
|
+
name: "role",
|
|
19
|
+
message: "选择角色",
|
|
20
|
+
default: shared_1.ROLES[resolvedDefaultIndex].value,
|
|
21
|
+
choices: shared_1.ROLES.map((role) => ({
|
|
22
|
+
name: role.label,
|
|
23
|
+
value: role.value,
|
|
24
|
+
})),
|
|
25
|
+
pageSize: shared_1.ROLES.length,
|
|
26
|
+
},
|
|
27
|
+
]);
|
|
28
|
+
return answers.role;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=role.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role.js","sourceRoot":"","sources":["../../src/prompts/role.ts"],"names":[],"mappings":";;;;;AAGA,4CAuBC;AA1BD,wDAAgC;AAChC,gDAA6D;AAEtD,KAAK,UAAU,gBAAgB,CAAC,WAAuB;IAC5D,MAAM,YAAY,GAAG,cAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;IAC3E,MAAM,oBAAoB,GAAG,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAElE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO,cAAK,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC;IAC3C,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAAuB;QAC1D;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,cAAK,CAAC,oBAAoB,CAAC,CAAC,KAAK;YAC1C,OAAO,EAAE,cAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC5B,IAAI,EAAE,IAAI,CAAC,KAAK;gBAChB,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAC;YACH,QAAQ,EAAE,cAAK,CAAC,MAAM;SACvB;KACF,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "ai-pack-cli",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "CLI for installing AI Pack into projects",
|
|
5
|
+
"main": "dist/cli.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"ai-pack-cli": "./bin/ai-pack-cli.js",
|
|
8
|
+
"backend": "./bin/backend.js",
|
|
9
|
+
"frontend": "./bin/frontend.js",
|
|
10
|
+
"testing": "./bin/testing.js",
|
|
11
|
+
"ai-pack-silent-update": "./bin/silent-update.js"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [
|
|
14
|
+
"ai-pack",
|
|
15
|
+
"cli",
|
|
16
|
+
"cursor",
|
|
17
|
+
"scaffold",
|
|
18
|
+
"installer"
|
|
19
|
+
],
|
|
20
|
+
"author": "",
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"engines": {
|
|
23
|
+
"node": ">=10"
|
|
24
|
+
},
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"registry": "https://registry.npmjs.org/",
|
|
27
|
+
"access": "public"
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"bin",
|
|
31
|
+
"dist",
|
|
32
|
+
"README.md",
|
|
33
|
+
"CHANGELOG.md"
|
|
34
|
+
],
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"chalk": "4.1.2",
|
|
37
|
+
"inquirer": "7.3.3",
|
|
38
|
+
"@ai-pack-cli/core": "1.0.0",
|
|
39
|
+
"@ai-pack-cli/shared": "1.0.0"
|
|
40
|
+
},
|
|
41
|
+
"devDependencies": {
|
|
42
|
+
"@types/inquirer": "7.3.3",
|
|
43
|
+
"@types/node": "^22.13.10",
|
|
44
|
+
"standard-version": "^9.5.0",
|
|
45
|
+
"typescript": "^5.8.2"
|
|
46
|
+
},
|
|
47
|
+
"scripts": {
|
|
48
|
+
"build": "tsc -b tsconfig.json --force",
|
|
49
|
+
"dev": "tsc -p tsconfig.json --watch",
|
|
50
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
51
|
+
"release": "standard-version",
|
|
52
|
+
"release:patch": "standard-version --release-as patch",
|
|
53
|
+
"release:minor": "standard-version --release-as minor",
|
|
54
|
+
"release:major": "standard-version --release-as major"
|
|
55
|
+
}
|
|
56
|
+
}
|