ai-project-manage-cli 2.0.26 → 3.0.2
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/dist/index.js +500 -20
- package/package.json +27 -25
- package/template/apm.config.json +5 -0
- package/template/deploy/README.md +3 -0
- package/template/skills/apm-review/SKILL.md +38 -0
- package/template/skills/apm-review/apm-review-reference.md +89 -0
- package/template/workitems/README.md +19 -0
- package/README.md +0 -171
- package/dist/api/cli.d.ts +0 -228
- package/dist/api/cli.d.ts.map +0 -1
- package/dist/api/cli.js +0 -3
- package/dist/api/cli.js.map +0 -1
- package/dist/api/client.d.ts +0 -5
- package/dist/api/client.d.ts.map +0 -1
- package/dist/api/client.js +0 -30
- package/dist/api/client.js.map +0 -1
- package/dist/api/http.d.ts +0 -21
- package/dist/api/http.d.ts.map +0 -1
- package/dist/api/http.js +0 -108
- package/dist/api/http.js.map +0 -1
- package/dist/api/index.d.ts +0 -6
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -13
- package/dist/api/index.js.map +0 -1
- package/dist/api/request-config.d.ts +0 -25
- package/dist/api/request-config.d.ts.map +0 -1
- package/dist/api/request-config.js +0 -73
- package/dist/api/request-config.js.map +0 -1
- package/dist/api/requirement.d.ts +0 -1
- package/dist/api/requirement.d.ts.map +0 -1
- package/dist/api/requirement.js +0 -2
- package/dist/api/requirement.js.map +0 -1
- package/dist/apm-dotenv.d.ts +0 -8
- package/dist/apm-dotenv.d.ts.map +0 -1
- package/dist/apm-dotenv.js +0 -73
- package/dist/apm-dotenv.js.map +0 -1
- package/dist/cli/agent-stream-log.d.ts +0 -41
- package/dist/cli/agent-stream-log.d.ts.map +0 -1
- package/dist/cli/agent-stream-log.js +0 -364
- package/dist/cli/agent-stream-log.js.map +0 -1
- package/dist/cli/commands/auth.d.ts +0 -3
- package/dist/cli/commands/auth.d.ts.map +0 -1
- package/dist/cli/commands/auth.js +0 -51
- package/dist/cli/commands/auth.js.map +0 -1
- package/dist/cli/commands/chat.d.ts +0 -3
- package/dist/cli/commands/chat.d.ts.map +0 -1
- package/dist/cli/commands/chat.js +0 -32
- package/dist/cli/commands/chat.js.map +0 -1
- package/dist/cli/commands/comment.d.ts +0 -3
- package/dist/cli/commands/comment.d.ts.map +0 -1
- package/dist/cli/commands/comment.js +0 -66
- package/dist/cli/commands/comment.js.map +0 -1
- package/dist/cli/commands/config.d.ts +0 -3
- package/dist/cli/commands/config.d.ts.map +0 -1
- package/dist/cli/commands/config.js +0 -39
- package/dist/cli/commands/config.js.map +0 -1
- package/dist/cli/commands/deploy-backend.d.ts +0 -7
- package/dist/cli/commands/deploy-backend.d.ts.map +0 -1
- package/dist/cli/commands/deploy-backend.js +0 -77
- package/dist/cli/commands/deploy-backend.js.map +0 -1
- package/dist/cli/commands/deploy-frontend.d.ts +0 -3
- package/dist/cli/commands/deploy-frontend.d.ts.map +0 -1
- package/dist/cli/commands/deploy-frontend.js +0 -167
- package/dist/cli/commands/deploy-frontend.js.map +0 -1
- package/dist/cli/commands/get.d.ts +0 -3
- package/dist/cli/commands/get.d.ts.map +0 -1
- package/dist/cli/commands/get.js +0 -145
- package/dist/cli/commands/get.js.map +0 -1
- package/dist/cli/commands/init.d.ts +0 -3
- package/dist/cli/commands/init.d.ts.map +0 -1
- package/dist/cli/commands/init.js +0 -179
- package/dist/cli/commands/init.js.map +0 -1
- package/dist/cli/commands/minio.d.ts +0 -3
- package/dist/cli/commands/minio.d.ts.map +0 -1
- package/dist/cli/commands/minio.js +0 -65
- package/dist/cli/commands/minio.js.map +0 -1
- package/dist/cli/commands/publish.d.ts +0 -3
- package/dist/cli/commands/publish.d.ts.map +0 -1
- package/dist/cli/commands/publish.js +0 -130
- package/dist/cli/commands/publish.js.map +0 -1
- package/dist/cli/commands/release.d.ts +0 -3
- package/dist/cli/commands/release.d.ts.map +0 -1
- package/dist/cli/commands/release.js +0 -37
- package/dist/cli/commands/release.js.map +0 -1
- package/dist/cli/commands/requirement.d.ts +0 -3
- package/dist/cli/commands/requirement.d.ts.map +0 -1
- package/dist/cli/commands/requirement.js +0 -169
- package/dist/cli/commands/requirement.js.map +0 -1
- package/dist/cli/commands/set.d.ts +0 -3
- package/dist/cli/commands/set.d.ts.map +0 -1
- package/dist/cli/commands/set.js +0 -103
- package/dist/cli/commands/set.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -3
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -42
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/cli/commands/update.d.ts +0 -3
- package/dist/cli/commands/update.d.ts.map +0 -1
- package/dist/cli/commands/update.js +0 -36
- package/dist/cli/commands/update.js.map +0 -1
- package/dist/cli/commands/ws.d.ts +0 -3
- package/dist/cli/commands/ws.d.ts.map +0 -1
- package/dist/cli/commands/ws.js +0 -25
- package/dist/cli/commands/ws.js.map +0 -1
- package/dist/cli/credentials.d.ts +0 -30
- package/dist/cli/credentials.d.ts.map +0 -1
- package/dist/cli/credentials.js +0 -52
- package/dist/cli/credentials.js.map +0 -1
- package/dist/cli/exit-api-error.d.ts +0 -2
- package/dist/cli/exit-api-error.d.ts.map +0 -1
- package/dist/cli/exit-api-error.js +0 -18
- package/dist/cli/exit-api-error.js.map +0 -1
- package/dist/cli/instruction-log-stream-sink.d.ts +0 -31
- package/dist/cli/instruction-log-stream-sink.d.ts.map +0 -1
- package/dist/cli/instruction-log-stream-sink.js +0 -59
- package/dist/cli/instruction-log-stream-sink.js.map +0 -1
- package/dist/cli/session.d.ts +0 -26
- package/dist/cli/session.d.ts.map +0 -1
- package/dist/cli/session.js +0 -41
- package/dist/cli/session.js.map +0 -1
- package/dist/cli/utils/parse.d.ts +0 -2
- package/dist/cli/utils/parse.d.ts.map +0 -1
- package/dist/cli/utils/parse.js +0 -12
- package/dist/cli/utils/parse.js.map +0 -1
- package/dist/cli/ws-run-command.d.ts +0 -13
- package/dist/cli/ws-run-command.d.ts.map +0 -1
- package/dist/cli/ws-run-command.js +0 -330
- package/dist/cli/ws-run-command.js.map +0 -1
- package/dist/cli-version.d.ts +0 -9
- package/dist/cli-version.d.ts.map +0 -1
- package/dist/cli-version.js +0 -61
- package/dist/cli-version.js.map +0 -1
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -36
- package/dist/cli.js.map +0 -1
- package/dist/config-store.d.ts +0 -38
- package/dist/config-store.d.ts.map +0 -1
- package/dist/config-store.js +0 -131
- package/dist/config-store.js.map +0 -1
- package/dist/core/apm-config.d.ts +0 -81
- package/dist/core/apm-config.d.ts.map +0 -1
- package/dist/core/apm-config.js +0 -147
- package/dist/core/apm-config.js.map +0 -1
- package/dist/core/backend-deploy/backend-deploy-workflow.d.ts +0 -20
- package/dist/core/backend-deploy/backend-deploy-workflow.d.ts.map +0 -1
- package/dist/core/backend-deploy/backend-deploy-workflow.js +0 -86
- package/dist/core/backend-deploy/backend-deploy-workflow.js.map +0 -1
- package/dist/core/backend-deploy/command-runner.d.ts +0 -11
- package/dist/core/backend-deploy/command-runner.d.ts.map +0 -1
- package/dist/core/backend-deploy/command-runner.js +0 -47
- package/dist/core/backend-deploy/command-runner.js.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/client.d.ts +0 -18
- package/dist/core/backend-deploy/dockerode-client/client.d.ts.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/client.js +0 -114
- package/dist/core/backend-deploy/dockerode-client/client.js.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/connection-options.d.ts +0 -6
- package/dist/core/backend-deploy/dockerode-client/connection-options.d.ts.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/connection-options.js +0 -62
- package/dist/core/backend-deploy/dockerode-client/connection-options.js.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/container-inspect-format.d.ts +0 -3
- package/dist/core/backend-deploy/dockerode-client/container-inspect-format.d.ts.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/container-inspect-format.js +0 -23
- package/dist/core/backend-deploy/dockerode-client/container-inspect-format.js.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/container-options.d.ts +0 -4
- package/dist/core/backend-deploy/dockerode-client/container-options.d.ts.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/container-options.js +0 -44
- package/dist/core/backend-deploy/dockerode-client/container-options.js.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/env.d.ts +0 -3
- package/dist/core/backend-deploy/dockerode-client/env.d.ts.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/env.js +0 -40
- package/dist/core/backend-deploy/dockerode-client/env.js.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/index.d.ts +0 -8
- package/dist/core/backend-deploy/dockerode-client/index.d.ts.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/index.js +0 -17
- package/dist/core/backend-deploy/dockerode-client/index.js.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/ports.d.ts +0 -9
- package/dist/core/backend-deploy/dockerode-client/ports.d.ts.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/ports.js +0 -35
- package/dist/core/backend-deploy/dockerode-client/ports.js.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/runtime.d.ts +0 -7
- package/dist/core/backend-deploy/dockerode-client/runtime.d.ts.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/runtime.js +0 -26
- package/dist/core/backend-deploy/dockerode-client/runtime.js.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/types.d.ts +0 -64
- package/dist/core/backend-deploy/dockerode-client/types.d.ts.map +0 -1
- package/dist/core/backend-deploy/dockerode-client/types.js +0 -3
- package/dist/core/backend-deploy/dockerode-client/types.js.map +0 -1
- package/dist/core/backend-deploy/image-tag.d.ts +0 -2
- package/dist/core/backend-deploy/image-tag.d.ts.map +0 -1
- package/dist/core/backend-deploy/image-tag.js +0 -15
- package/dist/core/backend-deploy/image-tag.js.map +0 -1
- package/dist/core/backend-deploy/index.d.ts +0 -3
- package/dist/core/backend-deploy/index.d.ts.map +0 -1
- package/dist/core/backend-deploy/index.js +0 -6
- package/dist/core/backend-deploy/index.js.map +0 -1
- package/dist/core/backend-deploy/local-docker-build.d.ts +0 -8
- package/dist/core/backend-deploy/local-docker-build.d.ts.map +0 -1
- package/dist/core/backend-deploy/local-docker-build.js +0 -25
- package/dist/core/backend-deploy/local-docker-build.js.map +0 -1
- package/dist/core/backend-deploy/logger.d.ts +0 -10
- package/dist/core/backend-deploy/logger.d.ts.map +0 -1
- package/dist/core/backend-deploy/logger.js +0 -22
- package/dist/core/backend-deploy/logger.js.map +0 -1
- package/dist/core/backend-deploy/registry-login-push.d.ts +0 -24
- package/dist/core/backend-deploy/registry-login-push.d.ts.map +0 -1
- package/dist/core/backend-deploy/registry-login-push.js +0 -37
- package/dist/core/backend-deploy/registry-login-push.js.map +0 -1
- package/dist/core/backend-deploy/remote-docker-client.d.ts +0 -11
- package/dist/core/backend-deploy/remote-docker-client.d.ts.map +0 -1
- package/dist/core/backend-deploy/remote-docker-client.js +0 -34
- package/dist/core/backend-deploy/remote-docker-client.js.map +0 -1
- package/dist/core/backend-deploy/remote-pull-image.d.ts +0 -9
- package/dist/core/backend-deploy/remote-pull-image.d.ts.map +0 -1
- package/dist/core/backend-deploy/remote-pull-image.js +0 -39
- package/dist/core/backend-deploy/remote-pull-image.js.map +0 -1
- package/dist/core/backend-deploy/resolve-dockerfile.d.ts +0 -7
- package/dist/core/backend-deploy/resolve-dockerfile.d.ts.map +0 -1
- package/dist/core/backend-deploy/resolve-dockerfile.js +0 -24
- package/dist/core/backend-deploy/resolve-dockerfile.js.map +0 -1
- package/dist/core/backend-deploy/run-docker-cli.d.ts +0 -9
- package/dist/core/backend-deploy/run-docker-cli.d.ts.map +0 -1
- package/dist/core/backend-deploy/run-docker-cli.js +0 -14
- package/dist/core/backend-deploy/run-docker-cli.js.map +0 -1
- package/dist/core/backend-deploy/types.d.ts +0 -23
- package/dist/core/backend-deploy/types.d.ts.map +0 -1
- package/dist/core/backend-deploy/types.js +0 -3
- package/dist/core/backend-deploy/types.js.map +0 -1
- package/dist/core/branch-name.d.ts +0 -8
- package/dist/core/branch-name.d.ts.map +0 -1
- package/dist/core/branch-name.js +0 -37
- package/dist/core/branch-name.js.map +0 -1
- package/dist/core/constants.d.ts +0 -4
- package/dist/core/constants.d.ts.map +0 -1
- package/dist/core/constants.js +0 -16
- package/dist/core/constants.js.map +0 -1
- package/dist/core/cursor-cmd.d.ts +0 -30
- package/dist/core/cursor-cmd.d.ts.map +0 -1
- package/dist/core/cursor-cmd.js +0 -193
- package/dist/core/cursor-cmd.js.map +0 -1
- package/dist/core/minio.d.ts +0 -37
- package/dist/core/minio.d.ts.map +0 -1
- package/dist/core/minio.js +0 -159
- package/dist/core/minio.js.map +0 -1
- package/dist/core/parse-testcase-md.d.ts +0 -17
- package/dist/core/parse-testcase-md.d.ts.map +0 -1
- package/dist/core/parse-testcase-md.js +0 -79
- package/dist/core/parse-testcase-md.js.map +0 -1
- package/dist/core/std-event-handler.d.ts +0 -25
- package/dist/core/std-event-handler.d.ts.map +0 -1
- package/dist/core/std-event-handler.js +0 -90
- package/dist/core/std-event-handler.js.map +0 -1
- package/dist/core/utils.d.ts +0 -19
- package/dist/core/utils.d.ts.map +0 -1
- package/dist/core/utils.js +0 -71
- package/dist/core/utils.js.map +0 -1
- package/dist/core/ws-client.d.ts +0 -29
- package/dist/core/ws-client.d.ts.map +0 -1
- package/dist/core/ws-client.js +0 -81
- package/dist/core/ws-client.js.map +0 -1
- package/dist/employee-ws-client.d.ts +0 -42
- package/dist/employee-ws-client.d.ts.map +0 -1
- package/dist/employee-ws-client.js +0 -99
- package/dist/employee-ws-client.js.map +0 -1
- package/dist/index.d.ts +0 -6
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/templates/commands/apm-auto-dev.md +0 -6
- package/templates/commands/apm-fixbug.md +0 -6
- package/templates/commands/apm-prd-review.md +0 -6
- package/templates/commands/apm-prd-sync.md +0 -6
- package/templates/skills/apm-apply-change/SKILL.md +0 -191
- package/templates/skills/apm-auto-dev/SKILL.md +0 -170
- package/templates/skills/apm-fixbug/SKILL.md +0 -97
- package/templates/skills/apm-propose/SKILL.md +0 -123
- package/templates/skills/apm-propose/design-instruction.md +0 -94
- package/templates/skills/apm-propose/propose-instruction.md +0 -81
- package/templates/skills/apm-propose/specs-instruction.md +0 -114
- package/templates/skills/apm-propose/tasks-instruction.md +0 -90
- package/templates/skills/apm-release/SKILL.md +0 -87
- package/templates/skills/code-change-summary/SKILL.md +0 -84
- package/templates/skills/code-change-summary/summary-template.md +0 -55
- package/templates/skills/code-deploy/SKILL.md +0 -39
- package/templates/skills/prd-review/SKILL.md +0 -48
- package/templates/skills/prd-review/output-template.md +0 -47
- package/templates/skills/prd-sync/SKILL.md +0 -74
- package/templates/skills/prd-sync/updated-requirement-template.md +0 -39
- package/templates/skills/prd-testcase/SKILL.md +0 -82
- package/templates/skills/prd-testcase/reference.md +0 -44
- package/templates/skills/product-capability-inventory/SKILL.md +0 -131
- package/templates/skills/product-capability-inventory/template.md +0 -80
- package/templates/skills/product-capability-inventory//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +0 -36
- package/templates/skills/product-capability-inventory//347/233/256/345/275/225/350/247/204/350/214/203.md +0 -58
|
@@ -1,77 +0,0 @@
|
|
|
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.registerDeployBackendCommands = registerDeployBackendCommands;
|
|
7
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
-
const backend_deploy_1 = require("../../core/backend-deploy");
|
|
9
|
-
const image_tag_1 = require("../../core/backend-deploy/image-tag");
|
|
10
|
-
const branch_name_1 = require("../../core/branch-name");
|
|
11
|
-
const apm_config_1 = require("../../core/apm-config");
|
|
12
|
-
const parse_1 = require("../utils/parse");
|
|
13
|
-
const node_process_1 = require("node:process");
|
|
14
|
-
const api_1 = require("../../api");
|
|
15
|
-
/**
|
|
16
|
-
* 后端镜像部署:本地 docker build → 推送阿里云私有仓库 → 远程 docker pull。
|
|
17
|
-
* 与 deploy-frontend 一致:位置参数 name 为分支名(解析末段),作镜像 tag;--env 为环境标签。
|
|
18
|
-
*/
|
|
19
|
-
function registerDeployBackendCommands(program) {
|
|
20
|
-
program
|
|
21
|
-
.command("deploy-backend")
|
|
22
|
-
.description("使用本地 Docker 构建后端镜像、推送到私有 Registry,并在远程 Docker 主机上拉取镜像(连接信息见 apm.config.json 的 backendDeploy)")
|
|
23
|
-
.argument("[name]", "名称,英文下划线分割,作为镜像 tag", "online")
|
|
24
|
-
.option("--env <env_tag>", "环境标签", "测试环境")
|
|
25
|
-
.requiredOption("--dir <path>", "构建上下文目录(相对当前工作目录或绝对路径);约定使用此目录下的 Dockerfile")
|
|
26
|
-
.option("--config <path>", "apm.config.json 路径(默认 .apm/apm.config.json,相对当前工作目录或绝对路径)")
|
|
27
|
-
.option("--requirement-id <requirement_id>", "需求 ID(部署成功后登记后端环境,与 deploy-frontend 一致)", parse_1.parsePositiveInt)
|
|
28
|
-
.option("-q, --quick <boolean>", "直接部署远程容器,不进行本地构建、推送镜像等步骤", false)
|
|
29
|
-
.action(async (name, opts) => {
|
|
30
|
-
const branchName = (0, branch_name_1.normalizeBranchName)(name);
|
|
31
|
-
if (!branchName) {
|
|
32
|
-
console.error("请传入有效的分支名(第一个位置参数 <name>)");
|
|
33
|
-
process.exit(1);
|
|
34
|
-
}
|
|
35
|
-
const cleanBranch = (0, branch_name_1.sanitizeBranchName)(branchName);
|
|
36
|
-
(0, image_tag_1.assertDeployImageTag)(cleanBranch);
|
|
37
|
-
const cfg = (0, apm_config_1.loadApmConfig)({ configPath: opts.config });
|
|
38
|
-
const fromApm = (0, apm_config_1.resolveBackendDeployFromApmConfig)(cfg);
|
|
39
|
-
const dirAbs = node_path_1.default.resolve(opts.dir || (0, node_process_1.cwd)());
|
|
40
|
-
const params = {
|
|
41
|
-
image: fromApm.name,
|
|
42
|
-
tag: cleanBranch,
|
|
43
|
-
registryHost: fromApm.registryHost,
|
|
44
|
-
registryNamespace: fromApm.registryNamespace,
|
|
45
|
-
registryUser: fromApm.registryUser,
|
|
46
|
-
registryPassword: fromApm.registryPassword,
|
|
47
|
-
remoteHost: fromApm.remoteHost,
|
|
48
|
-
remotePort: fromApm.remotePort,
|
|
49
|
-
remoteProtocol: fromApm.remoteProtocol,
|
|
50
|
-
remoteCaPath: fromApm.caPath ?? "",
|
|
51
|
-
remoteCertPath: fromApm.certPath ?? "",
|
|
52
|
-
remoteKeyPath: fromApm.keyPath ?? "",
|
|
53
|
-
envFilePath: fromApm.envFilePath,
|
|
54
|
-
containerPortsMappings: fromApm.containerPortsMappings,
|
|
55
|
-
dockerNetwork: fromApm.dockerNetwork,
|
|
56
|
-
};
|
|
57
|
-
const workflow = new backend_deploy_1.BackendDeployWorkflow(params);
|
|
58
|
-
if (opts.quick) {
|
|
59
|
-
await workflow.deployRemoteContainer(dirAbs);
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
await workflow.run(dirAbs);
|
|
63
|
-
}
|
|
64
|
-
const envTag = (0, branch_name_1.resolveEnvTag)(opts.env ?? "测试环境");
|
|
65
|
-
if (opts.requirementId) {
|
|
66
|
-
const api = (0, api_1.createApmClient)();
|
|
67
|
-
await api.cli.resourceEnvironmentCreate({
|
|
68
|
-
requirementId: opts.requirementId,
|
|
69
|
-
name: cleanBranch,
|
|
70
|
-
tag: envTag,
|
|
71
|
-
type: "BACKEND",
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
console.log("后端部署成功");
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=deploy-backend.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-backend.js","sourceRoot":"","sources":["../../../src/cli/commands/deploy-backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-frontend.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/deploy-frontend.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwEzC,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmKrE"}
|
|
@@ -1,167 +0,0 @@
|
|
|
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.registerDeployFrontendCommands = registerDeployFrontendCommands;
|
|
7
|
-
const promises_1 = require("node:fs/promises");
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const branch_name_1 = require("../../core/branch-name");
|
|
10
|
-
const apm_config_1 = require("../../core/apm-config");
|
|
11
|
-
const minio_1 = require("../../core/minio");
|
|
12
|
-
const parse_1 = require("../utils/parse");
|
|
13
|
-
const api_1 = require("../../api");
|
|
14
|
-
/**
|
|
15
|
-
* 产物协议:优先 `{root}/index.html`;否则在一级子目录中按名排序找第一个 `{root}/<dir>/index.html`,
|
|
16
|
-
* 复制到 `{root}/index.html` 后结束。
|
|
17
|
-
*/
|
|
18
|
-
async function ensureArtifactRootIndexHtml(root) {
|
|
19
|
-
const indexHtmlPath = node_path_1.default.join(root, "index.html");
|
|
20
|
-
try {
|
|
21
|
-
const st = await (0, promises_1.stat)(indexHtmlPath);
|
|
22
|
-
if (st.isFile()) {
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
/* 不存在则扫描一级子目录 */
|
|
28
|
-
}
|
|
29
|
-
let entries;
|
|
30
|
-
try {
|
|
31
|
-
entries = await (0, promises_1.readdir)(root, { withFileTypes: true });
|
|
32
|
-
}
|
|
33
|
-
catch (e) {
|
|
34
|
-
console.error(`无法读取产物目录:${root}`, e);
|
|
35
|
-
process.exit(1);
|
|
36
|
-
}
|
|
37
|
-
const dirNames = entries
|
|
38
|
-
.filter((e) => e.isDirectory())
|
|
39
|
-
.map((e) => String(e.name))
|
|
40
|
-
.sort();
|
|
41
|
-
for (const name of dirNames) {
|
|
42
|
-
const candidate = node_path_1.default.join(root, name, "index.html");
|
|
43
|
-
try {
|
|
44
|
-
const st = await (0, promises_1.stat)(candidate);
|
|
45
|
-
if (!st.isFile()) {
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
await (0, promises_1.copyFile)(candidate, indexHtmlPath);
|
|
53
|
-
console.error(`产物协议:已将 ${node_path_1.default.join(name, "index.html")} 复制为根目录 index.html`);
|
|
54
|
-
return;
|
|
55
|
-
}
|
|
56
|
-
console.error(`产物协议:需在产物根目录存在 index.html,或在其一级子目录中存在可复制的 index.html(未在 ${root} 下找到)`);
|
|
57
|
-
process.exit(1);
|
|
58
|
-
}
|
|
59
|
-
function registerDeployFrontendCommands(program) {
|
|
60
|
-
program
|
|
61
|
-
.command("deploy-frontend")
|
|
62
|
-
.description("递归上传前端产物目录到 MinIO,并在成功后为该桶设置匿名可读策略(仅读取当前目录下 `.apm/.env` 中的 MINIO_*,已有环境变量优先)")
|
|
63
|
-
.argument("[name]", "分支名,作为对象键顶层目录", "online")
|
|
64
|
-
.option("--env <env_tag>", "环境标签", "测试环境,正式环境")
|
|
65
|
-
.option("--dir <path>", "产物目录(默认 dist)")
|
|
66
|
-
.option("--config <path>", "apm.config.json 路径(默认 .apm/apm.config.json,相对当前工作目录或绝对路径)")
|
|
67
|
-
.option("--requirement-id <requirement_id>", "需求 ID(上传成功后登记前端环境)", parse_1.parsePositiveInt)
|
|
68
|
-
.option("--max-file-size-mb <mb>", `单文件大小上限,默认 ${minio_1.DEFAULT_MAX_FILE_SIZE_MB}`, (v) => Number.parseInt(String(v), 10))
|
|
69
|
-
.action(async (name, opts) => {
|
|
70
|
-
const cfg = (0, apm_config_1.loadApmConfig)({ configPath: opts.config });
|
|
71
|
-
const { frontendDeploy: settings } = cfg;
|
|
72
|
-
const nameRaw = (cfg.name ?? "").trim();
|
|
73
|
-
if (!nameRaw) {
|
|
74
|
-
console.error("请在 .apm/apm.config.json 顶层配置 name(作为 MinIO 对象键前缀)");
|
|
75
|
-
process.exit(1);
|
|
76
|
-
}
|
|
77
|
-
if (nameRaw.includes(":")) {
|
|
78
|
-
console.error("apm.config.json 的 name 不能包含 ':'");
|
|
79
|
-
process.exit(1);
|
|
80
|
-
}
|
|
81
|
-
let namePrefix;
|
|
82
|
-
try {
|
|
83
|
-
namePrefix = (0, minio_1.sanitizeRelativePath)(nameRaw.replace(/\\/g, "/"));
|
|
84
|
-
}
|
|
85
|
-
catch {
|
|
86
|
-
console.error("apm.config.json 的 name 非法(路径片段不能为 . 或 ..)");
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
const minio = new minio_1.MinioClient({
|
|
90
|
-
endPoint: settings.endpoint,
|
|
91
|
-
port: settings.port,
|
|
92
|
-
useSSL: settings.useSsl,
|
|
93
|
-
accessKey: settings.accessKey,
|
|
94
|
-
secretKey: settings.secretKey,
|
|
95
|
-
});
|
|
96
|
-
const bucket = settings.bucket;
|
|
97
|
-
const branchName = (0, branch_name_1.normalizeBranchName)(name);
|
|
98
|
-
if (!branchName) {
|
|
99
|
-
console.error("请传入有效的分支名(第一个位置参数 <name>)");
|
|
100
|
-
process.exit(1);
|
|
101
|
-
}
|
|
102
|
-
const cleanBranch = (0, branch_name_1.sanitizeBranchName)(branchName);
|
|
103
|
-
const root = node_path_1.default.resolve(process.cwd(), opts.dir || "dist");
|
|
104
|
-
if (!(await (0, minio_1.isDirectoryPath)(root))) {
|
|
105
|
-
console.error(`产物目录不存在:${root}`);
|
|
106
|
-
process.exit(1);
|
|
107
|
-
}
|
|
108
|
-
await ensureArtifactRootIndexHtml(root);
|
|
109
|
-
const maxBytes = Math.max(1, Number.isFinite(opts.maxFileSizeMb)
|
|
110
|
-
? Math.floor((opts.maxFileSizeMb ?? minio_1.DEFAULT_MAX_FILE_SIZE_MB) * 1024 * 1024)
|
|
111
|
-
: minio_1.DEFAULT_MAX_FILE_SIZE_MB * 1024 * 1024);
|
|
112
|
-
const files = await (0, minio_1.collectFiles)(root);
|
|
113
|
-
if (files.length === 0) {
|
|
114
|
-
console.error(`目录为空:${root}`);
|
|
115
|
-
process.exit(1);
|
|
116
|
-
}
|
|
117
|
-
let uploaded = 0;
|
|
118
|
-
let totalBytes = 0;
|
|
119
|
-
console.error(`开始直连 MinIO 上传,共 ${files.length} 个文件…`);
|
|
120
|
-
await minio.ensureBucket(bucket);
|
|
121
|
-
// 只清理与上传目录对应的对象前缀,避免误删同一分支下其它目录内容
|
|
122
|
-
await minio.deleteObjectsByPrefix(bucket, `${namePrefix}/${cleanBranch}/dist/`);
|
|
123
|
-
for (const f of files) {
|
|
124
|
-
if (f.size > maxBytes) {
|
|
125
|
-
console.error(`文件过大,已拒绝:${f.relativePath}(${(0, minio_1.toMB)(f.size)}MB > ${(0, minio_1.toMB)(maxBytes)}MB)`);
|
|
126
|
-
process.exit(1);
|
|
127
|
-
}
|
|
128
|
-
const buf = await (0, minio_1.readArtifactFile)(f.absPath);
|
|
129
|
-
const cleanRel = (0, minio_1.sanitizeRelativePath)(f.relativePath);
|
|
130
|
-
const objectKey = (0, minio_1.toArtifactObjectKey)({
|
|
131
|
-
namePrefix,
|
|
132
|
-
branchName: cleanBranch,
|
|
133
|
-
relativePath: cleanRel,
|
|
134
|
-
});
|
|
135
|
-
const mimeType = (0, minio_1.detectMimeType)(f.relativePath).trim().toLowerCase() ||
|
|
136
|
-
"application/octet-stream";
|
|
137
|
-
await minio.putObject(bucket, objectKey, buf, {
|
|
138
|
-
"Content-Type": mimeType,
|
|
139
|
-
});
|
|
140
|
-
uploaded += 1;
|
|
141
|
-
totalBytes += buf.length;
|
|
142
|
-
console.error(`[${uploaded}/${files.length}] ${f.relativePath} -> ${objectKey}`);
|
|
143
|
-
}
|
|
144
|
-
console.error("正在设置桶策略(匿名可读对象,便于 HTTP 直链)…");
|
|
145
|
-
await minio.setBucketPublicRead(bucket);
|
|
146
|
-
console.log(JSON.stringify({
|
|
147
|
-
ok: true,
|
|
148
|
-
namePrefix,
|
|
149
|
-
branchName: cleanBranch,
|
|
150
|
-
bucket,
|
|
151
|
-
fileCount: uploaded,
|
|
152
|
-
totalBytes,
|
|
153
|
-
bucketPublicRead: true,
|
|
154
|
-
}, null, 2));
|
|
155
|
-
const envTag = (0, branch_name_1.resolveEnvTag)(opts.env ?? "测试环境");
|
|
156
|
-
if (opts.requirementId) {
|
|
157
|
-
const api = (0, api_1.createApmClient)();
|
|
158
|
-
await api.cli.resourceEnvironmentCreate({
|
|
159
|
-
requirementId: opts.requirementId,
|
|
160
|
-
name: cleanBranch,
|
|
161
|
-
tag: envTag,
|
|
162
|
-
type: "FRONTEND",
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
//# sourceMappingURL=deploy-frontend.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-frontend.js","sourceRoot":"","sources":["../../../src/cli/commands/deploy-frontend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyCzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiI1D"}
|
package/dist/cli/commands/get.js
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
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.registerGetCommands = registerGetCommands;
|
|
7
|
-
const node_fs_1 = require("node:fs");
|
|
8
|
-
const client_1 = require("../../api/client");
|
|
9
|
-
const path_1 = __importDefault(require("path"));
|
|
10
|
-
const apm_config_1 = require("../../core/apm-config");
|
|
11
|
-
/** 与 lpm-server `DefectStatus` / 飞书插件文案一致 */
|
|
12
|
-
const DEFECT_STATUS_LABEL = {
|
|
13
|
-
OPEN: "已创建",
|
|
14
|
-
PENDING: "待处理",
|
|
15
|
-
IN_PROGRESS: "处理中",
|
|
16
|
-
PENDING_VERIFICATION: "待验证",
|
|
17
|
-
FIXED: "已解决",
|
|
18
|
-
REOPENED: "重新打开",
|
|
19
|
-
};
|
|
20
|
-
function buildDefectMarkdown(row) {
|
|
21
|
-
return `## 缺陷内容
|
|
22
|
-
${row.title}
|
|
23
|
-
|
|
24
|
-
## 原因复盘
|
|
25
|
-
`;
|
|
26
|
-
}
|
|
27
|
-
function buildStatusYaml(defects) {
|
|
28
|
-
const lines = ["# 缺陷状态", "defects:"];
|
|
29
|
-
for (const d of defects) {
|
|
30
|
-
lines.push(` "${d.id}":`);
|
|
31
|
-
lines.push(` status: ${DEFECT_STATUS_LABEL[d.status]}`);
|
|
32
|
-
}
|
|
33
|
-
return `${lines.join("\n")}\n`;
|
|
34
|
-
}
|
|
35
|
-
function parseRequirementId(value) {
|
|
36
|
-
const n = Number.parseInt(value, 10);
|
|
37
|
-
if (!Number.isFinite(n) || n < 1) {
|
|
38
|
-
throw new Error(`无效的需求 ID: ${value}`);
|
|
39
|
-
}
|
|
40
|
-
return n;
|
|
41
|
-
}
|
|
42
|
-
function registerGetCommands(program) {
|
|
43
|
-
const getCmd = program.command("get").description("从服务端拉取资源");
|
|
44
|
-
getCmd
|
|
45
|
-
.command("requirement")
|
|
46
|
-
.description("按需求 ID 获取需求文档正文")
|
|
47
|
-
.argument("<id>", "需求 ID", parseRequirementId)
|
|
48
|
-
.option("--all", "包含该需求下的所有评论")
|
|
49
|
-
.action(async (id, opts) => {
|
|
50
|
-
const api = (0, client_1.createApmClient)();
|
|
51
|
-
const res = await api.cli.resourceRequirementGet({ id });
|
|
52
|
-
if (!res.content) {
|
|
53
|
-
throw new Error("需求文档内容为空");
|
|
54
|
-
}
|
|
55
|
-
const prdPath = path_1.default.join(".apm/workitems", String(id), "prd.md");
|
|
56
|
-
(0, node_fs_1.mkdirSync)(path_1.default.dirname(prdPath), { recursive: true });
|
|
57
|
-
(0, node_fs_1.writeFileSync)(prdPath, res.content);
|
|
58
|
-
const config = (0, apm_config_1.loadApmConfig)();
|
|
59
|
-
const currentComment = res.comments.find((c) => c.employeeId === config.auth.id);
|
|
60
|
-
if (currentComment) {
|
|
61
|
-
(0, node_fs_1.writeFileSync)(path_1.default.join(".apm/workitems", String(id), "comment.md"), `======当前评论内容======
|
|
62
|
-
${currentComment.content}
|
|
63
|
-
=========当前评论回复==========
|
|
64
|
-
${currentComment.reply || ""}
|
|
65
|
-
`);
|
|
66
|
-
}
|
|
67
|
-
if (opts.all) {
|
|
68
|
-
const text = `======需求内容======
|
|
69
|
-
${res.content}
|
|
70
|
-
=========评论内容==========
|
|
71
|
-
${res.comments
|
|
72
|
-
.map((c) => `###评审人: ${c.reviewer}\n#### 评审内容\n${c.content}\n#### 人工回复\n${c.reply}`)
|
|
73
|
-
.join("\n\n")}
|
|
74
|
-
`;
|
|
75
|
-
console.log(text);
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
console.log(`需求内容如下(已保存到 ${prdPath}):`);
|
|
79
|
-
console.log("--------------------------------");
|
|
80
|
-
console.log(res.content);
|
|
81
|
-
console.log("--------------------------------");
|
|
82
|
-
});
|
|
83
|
-
getCmd
|
|
84
|
-
.command("defect")
|
|
85
|
-
.description("按需求 ID 拉取当前登录员工名下的缺陷列表,并写入 .apm/workitems/<id>/bugs/")
|
|
86
|
-
.argument("<id>", "需求 ID", parseRequirementId)
|
|
87
|
-
.action(async (requirementId) => {
|
|
88
|
-
const api = (0, client_1.createApmClient)();
|
|
89
|
-
const res = await api.cli.resourceRequirementDefectsList({
|
|
90
|
-
id: requirementId,
|
|
91
|
-
});
|
|
92
|
-
const currentDir = path_1.default.resolve(process.cwd());
|
|
93
|
-
const matched = res.list.filter((row) => {
|
|
94
|
-
const defectWorkdir = row.workdir?.trim();
|
|
95
|
-
if (!defectWorkdir) {
|
|
96
|
-
return false;
|
|
97
|
-
}
|
|
98
|
-
return defectWorkdir === currentDir;
|
|
99
|
-
});
|
|
100
|
-
const bugsDir = path_1.default.join(".apm/workitems", String(requirementId), "bugs");
|
|
101
|
-
(0, node_fs_1.rmSync)(bugsDir, { recursive: true, force: true });
|
|
102
|
-
(0, node_fs_1.mkdirSync)(bugsDir, { recursive: true });
|
|
103
|
-
for (const row of matched) {
|
|
104
|
-
const mdPath = path_1.default.join(bugsDir, `${row.id}.md`);
|
|
105
|
-
(0, node_fs_1.writeFileSync)(mdPath, buildDefectMarkdown(row), "utf8");
|
|
106
|
-
}
|
|
107
|
-
const statusPath = path_1.default.join(bugsDir, "status.yaml");
|
|
108
|
-
(0, node_fs_1.writeFileSync)(statusPath, buildStatusYaml(matched), "utf8");
|
|
109
|
-
console.log(`已写入 ${matched.length} 条缺陷到 ${bugsDir},并更新 status.yaml`);
|
|
110
|
-
});
|
|
111
|
-
getCmd
|
|
112
|
-
.command("branch-name")
|
|
113
|
-
.alias("branchName")
|
|
114
|
-
.description("按需求 ID 获取当前开发目录对应的分支名(服务端返回)")
|
|
115
|
-
.argument("<id>", "需求 ID", parseRequirementId)
|
|
116
|
-
.action(async (requirementId) => {
|
|
117
|
-
const api = (0, client_1.createApmClient)();
|
|
118
|
-
const res = await api.cli.resourceRequirementDevelopersBranchNamesList({
|
|
119
|
-
id: requirementId,
|
|
120
|
-
});
|
|
121
|
-
const currentDir = path_1.default.resolve(process.cwd());
|
|
122
|
-
const matched = res.list.filter((row) => {
|
|
123
|
-
const wd = row.workdir?.trim();
|
|
124
|
-
if (!wd) {
|
|
125
|
-
return false;
|
|
126
|
-
}
|
|
127
|
-
return wd === currentDir;
|
|
128
|
-
});
|
|
129
|
-
if (matched.length === 0) {
|
|
130
|
-
const hint = res.list.length > 0
|
|
131
|
-
? `服务端返回 ${res.list.length} 条记录,工作目录均与当前目录不一致。当前目录:${currentDir}`
|
|
132
|
-
: "服务端未返回任何开发者分支记录";
|
|
133
|
-
throw new Error(`未找到与当前开发目录匹配的分支条目。${hint}`);
|
|
134
|
-
}
|
|
135
|
-
if (matched.length > 1) {
|
|
136
|
-
throw new Error(`存在 ${matched.length} 条工作目录与当前目录一致的记录,无法唯一确定分支名`);
|
|
137
|
-
}
|
|
138
|
-
const name = matched[0].branchName?.trim();
|
|
139
|
-
if (!name) {
|
|
140
|
-
throw new Error("已匹配到当前开发目录对应的开发者记录,但分支名尚未设置(可先通过相应流程写入分支名)");
|
|
141
|
-
}
|
|
142
|
-
console.log(name);
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=get.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/cli/commands/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
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;AAwJzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2D3D"}
|
|
@@ -1,179 +0,0 @@
|
|
|
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.registerInitCommands = registerInitCommands;
|
|
7
|
-
const promises_1 = require("node:fs/promises");
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const DEPLOY_README_STUB = `# 测试环境部署说明
|
|
10
|
-
|
|
11
|
-
请在本文件中编写:前置条件、构建命令、部署命令、验证方式等。Agent / \`apm\` 将按本文档执行测试环境部署。
|
|
12
|
-
|
|
13
|
-
## 前置条件
|
|
14
|
-
|
|
15
|
-
(可选)
|
|
16
|
-
|
|
17
|
-
## 部署步骤
|
|
18
|
-
|
|
19
|
-
1.
|
|
20
|
-
|
|
21
|
-
## 验证
|
|
22
|
-
|
|
23
|
-
(可选)
|
|
24
|
-
`;
|
|
25
|
-
const PRODUCT_CAPABILITY_README_STUB = `# 产品能力清单
|
|
26
|
-
|
|
27
|
-
本目录用于维护产品能力条目(CAP)。详见 [使用说明书.md](./使用说明书.md)。
|
|
28
|
-
|
|
29
|
-
## 子系统列表
|
|
30
|
-
|
|
31
|
-
| 目录 | 说明 |
|
|
32
|
-
|------|------|
|
|
33
|
-
| (待补充) | 在各子目录下维护 \`index.md\` 与 \`CAP-*.md\` |
|
|
34
|
-
`;
|
|
35
|
-
function resolveSkillSourceDir() {
|
|
36
|
-
// dist/cli/commands/init.js -> ../../../templates/skills
|
|
37
|
-
return node_path_1.default.resolve(__dirname, "../../../templates/skills");
|
|
38
|
-
}
|
|
39
|
-
function resolveCommandsSourceDir() {
|
|
40
|
-
// dist/cli/commands/init.js -> ../../../templates/commands
|
|
41
|
-
return node_path_1.default.resolve(__dirname, "../../../templates/commands");
|
|
42
|
-
}
|
|
43
|
-
async function pathExists(p) {
|
|
44
|
-
try {
|
|
45
|
-
await (0, promises_1.stat)(p);
|
|
46
|
-
return true;
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* 从当前工作目录向上查找项目根:存在 \`.cursor\`、\`.apm\` 或 \`.git\`(含 worktree 的文件式 .git)的目录。
|
|
54
|
-
*/
|
|
55
|
-
async function resolveProjectRoot() {
|
|
56
|
-
let cur = process.cwd();
|
|
57
|
-
for (let i = 0; i < 20; i += 1) {
|
|
58
|
-
for (const name of [".cursor", ".apm", ".git"]) {
|
|
59
|
-
if (await pathExists(node_path_1.default.join(cur, name))) {
|
|
60
|
-
return cur;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
const parent = node_path_1.default.dirname(cur);
|
|
64
|
-
if (!parent || parent === cur)
|
|
65
|
-
break;
|
|
66
|
-
cur = parent;
|
|
67
|
-
}
|
|
68
|
-
// eslint-disable-next-line no-console
|
|
69
|
-
console.error("未找到项目根目录:请在包含 .cursor、.apm 或 .git 的目录下执行 apm init");
|
|
70
|
-
process.exit(1);
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* 创建标准 \`.apm\` 目录结构(与仓库内参考 \`.apm\` 一致):
|
|
74
|
-
* - workitems
|
|
75
|
-
* - deploy(前端发布说明目录,含占位 README;与 apm.config 中 frontendDeploy 配置项独立,已存在则不覆盖)
|
|
76
|
-
* - product-capability-inventory(含总览 README;从模板复制使用说明书,已存在则不覆盖)
|
|
77
|
-
*/
|
|
78
|
-
async function ensureApmStandardLayout(projectRoot, skillsTemplateDir) {
|
|
79
|
-
const apmRoot = node_path_1.default.join(projectRoot, ".apm");
|
|
80
|
-
const created = [];
|
|
81
|
-
const warnings = [];
|
|
82
|
-
await (0, promises_1.mkdir)(node_path_1.default.join(apmRoot, "workitems"), { recursive: true });
|
|
83
|
-
created.push(".apm/workitems");
|
|
84
|
-
await (0, promises_1.mkdir)(node_path_1.default.join(apmRoot, "deploy"), { recursive: true });
|
|
85
|
-
created.push(".apm/deploy");
|
|
86
|
-
await (0, promises_1.mkdir)(node_path_1.default.join(apmRoot, "product-capability-inventory"), { recursive: true });
|
|
87
|
-
created.push(".apm/product-capability-inventory");
|
|
88
|
-
await (0, promises_1.mkdir)(node_path_1.default.join(apmRoot, "skills"), { recursive: true });
|
|
89
|
-
created.push(".apm/skills");
|
|
90
|
-
const deployReadme = node_path_1.default.join(apmRoot, "deploy", "README.md");
|
|
91
|
-
if (!(await pathExists(deployReadme))) {
|
|
92
|
-
await (0, promises_1.writeFile)(deployReadme, DEPLOY_README_STUB, "utf8");
|
|
93
|
-
created.push(".apm/deploy/README.md");
|
|
94
|
-
}
|
|
95
|
-
const manualSrc = node_path_1.default.join(skillsTemplateDir, "product-capability-inventory", "使用说明书.md");
|
|
96
|
-
const manualDst = node_path_1.default.join(apmRoot, "product-capability-inventory", "使用说明书.md");
|
|
97
|
-
if (!(await pathExists(manualDst))) {
|
|
98
|
-
if (await pathExists(manualSrc)) {
|
|
99
|
-
await (0, promises_1.cp)(manualSrc, manualDst);
|
|
100
|
-
created.push(".apm/product-capability-inventory/使用说明书.md");
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
warnings.push(`模板缺失,未复制使用说明书: ${manualSrc}`);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
const capReadme = node_path_1.default.join(apmRoot, "product-capability-inventory", "README.md");
|
|
107
|
-
if (!(await pathExists(capReadme))) {
|
|
108
|
-
await (0, promises_1.writeFile)(capReadme, PRODUCT_CAPABILITY_README_STUB, "utf8");
|
|
109
|
-
created.push(".apm/product-capability-inventory/README.md");
|
|
110
|
-
}
|
|
111
|
-
return { apmRoot, created, warnings };
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* 将内置命令模板合并到 \`.cursor/commands\`:按文件名写入/覆盖,不删除用户已有其它文件。
|
|
115
|
-
*/
|
|
116
|
-
async function mergeCursorCommands(projectRoot, commandsTemplateDir) {
|
|
117
|
-
const commandsDir = node_path_1.default.join(projectRoot, ".cursor", "commands");
|
|
118
|
-
await (0, promises_1.mkdir)(commandsDir, { recursive: true });
|
|
119
|
-
const installed = [];
|
|
120
|
-
const entries = await (0, promises_1.readdir)(commandsTemplateDir, { withFileTypes: true });
|
|
121
|
-
for (const e of entries) {
|
|
122
|
-
if (!e.isFile())
|
|
123
|
-
continue;
|
|
124
|
-
const name = e.name;
|
|
125
|
-
const src = node_path_1.default.join(commandsTemplateDir, name);
|
|
126
|
-
const dst = node_path_1.default.join(commandsDir, name);
|
|
127
|
-
await (0, promises_1.cp)(src, dst, { force: true });
|
|
128
|
-
installed.push(node_path_1.default.join(".cursor/commands", name));
|
|
129
|
-
}
|
|
130
|
-
return { commandsDir, installed };
|
|
131
|
-
}
|
|
132
|
-
function registerInitCommands(program) {
|
|
133
|
-
program
|
|
134
|
-
.command("init")
|
|
135
|
-
.description("安装内置 skills 到 .apm/skills,合并内置命令到 .cursor/commands,并初始化标准 .apm 目录结构")
|
|
136
|
-
.action(async () => {
|
|
137
|
-
const projectRoot = await resolveProjectRoot();
|
|
138
|
-
const srcDir = resolveSkillSourceDir();
|
|
139
|
-
const commandsSrcDir = resolveCommandsSourceDir();
|
|
140
|
-
const apmResult = await ensureApmStandardLayout(projectRoot, srcDir);
|
|
141
|
-
const dstSkillsDir = node_path_1.default.join(projectRoot, ".apm", "skills");
|
|
142
|
-
await (0, promises_1.mkdir)(dstSkillsDir, { recursive: true });
|
|
143
|
-
// 读取模板下的技能子目录名,用于在目标目录中做“删除后重装”
|
|
144
|
-
const entries = await (0, promises_1.readdir)(srcDir, { withFileTypes: true });
|
|
145
|
-
const skillDirs = entries.filter((e) => e.isDirectory()).map((e) => e.name);
|
|
146
|
-
for (const name of skillDirs) {
|
|
147
|
-
const existing = node_path_1.default.join(dstSkillsDir, name);
|
|
148
|
-
try {
|
|
149
|
-
await (0, promises_1.rm)(existing, { recursive: true, force: true });
|
|
150
|
-
}
|
|
151
|
-
catch {
|
|
152
|
-
// ignore 删除失败(例如不存在或权限问题),继续尝试后续目录
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
await (0, promises_1.cp)(srcDir, dstSkillsDir, {
|
|
156
|
-
recursive: true,
|
|
157
|
-
force: true,
|
|
158
|
-
});
|
|
159
|
-
const commandsResult = await mergeCursorCommands(projectRoot, commandsSrcDir);
|
|
160
|
-
console.log(JSON.stringify({
|
|
161
|
-
ok: true,
|
|
162
|
-
skills: {
|
|
163
|
-
installedFrom: srcDir,
|
|
164
|
-
installedTo: dstSkillsDir,
|
|
165
|
-
},
|
|
166
|
-
commands: {
|
|
167
|
-
installedFrom: commandsSrcDir,
|
|
168
|
-
mergedTo: commandsResult.commandsDir,
|
|
169
|
-
files: commandsResult.installed,
|
|
170
|
-
},
|
|
171
|
-
apm: {
|
|
172
|
-
root: apmResult.apmRoot,
|
|
173
|
-
created: apmResult.created,
|
|
174
|
-
warnings: apmResult.warnings,
|
|
175
|
-
},
|
|
176
|
-
}, null, 2));
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
//# sourceMappingURL=init.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"minio.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/minio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqD5D"}
|