ai-project-manage-cli 2.0.26 → 3.0.1
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 +498 -20
- package/package.json +27 -25
- package/template/apm.config.json +5 -0
- package/template/deploy/README.md +3 -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
package/dist/core/cursor-cmd.js
DELETED
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CursorCmd = void 0;
|
|
4
|
-
const node_child_process_1 = require("node:child_process");
|
|
5
|
-
const std_event_handler_1 = require("./std-event-handler");
|
|
6
|
-
const utils_1 = require("./utils");
|
|
7
|
-
const api_1 = require("../api");
|
|
8
|
-
class CursorCmd {
|
|
9
|
-
workdir;
|
|
10
|
-
prompt;
|
|
11
|
-
model;
|
|
12
|
-
chatId;
|
|
13
|
-
name;
|
|
14
|
-
logId;
|
|
15
|
-
api;
|
|
16
|
-
debug;
|
|
17
|
-
constructor(payload) {
|
|
18
|
-
this.workdir = payload.workdir;
|
|
19
|
-
const cleaned = (0, utils_1.cleanPrompt)(payload.prompt);
|
|
20
|
-
this.name = cleaned.headToken;
|
|
21
|
-
this.prompt = cleaned.fullText;
|
|
22
|
-
this.model = payload.model;
|
|
23
|
-
this.logId = payload.logId;
|
|
24
|
-
this.chatId = payload.chatId;
|
|
25
|
-
this.debug = Boolean(payload.debug);
|
|
26
|
-
this.api = (0, api_1.createApmClient)();
|
|
27
|
-
this.debugLog("执行 cursor 命令", payload);
|
|
28
|
-
}
|
|
29
|
-
async execute() {
|
|
30
|
-
if (!this.chatId) {
|
|
31
|
-
this.chatId = await this.createChat();
|
|
32
|
-
}
|
|
33
|
-
if (!this.chatId) {
|
|
34
|
-
console.warn("会话创建失败,降级为临时会话执行(不保留上下文)");
|
|
35
|
-
}
|
|
36
|
-
const argv = this.buildArgs();
|
|
37
|
-
return this.runPrompt(argv);
|
|
38
|
-
}
|
|
39
|
-
// 处理参数
|
|
40
|
-
buildArgs() {
|
|
41
|
-
const args = [];
|
|
42
|
-
if (this.model) {
|
|
43
|
-
args.push("--model", this.model);
|
|
44
|
-
}
|
|
45
|
-
if (this.workdir) {
|
|
46
|
-
args.push("--workspace", this.workdir);
|
|
47
|
-
}
|
|
48
|
-
if (this.chatId) {
|
|
49
|
-
args.push("--resume", this.chatId);
|
|
50
|
-
}
|
|
51
|
-
return [
|
|
52
|
-
"-f",
|
|
53
|
-
"-p",
|
|
54
|
-
...args,
|
|
55
|
-
"--trust",
|
|
56
|
-
"--output-format",
|
|
57
|
-
"stream-json",
|
|
58
|
-
"--stream-partial-output",
|
|
59
|
-
this.prompt,
|
|
60
|
-
];
|
|
61
|
-
}
|
|
62
|
-
// 执行提示词
|
|
63
|
-
async runPrompt(args) {
|
|
64
|
-
await this.beforeAction();
|
|
65
|
-
const child = this.execCommand("agent", args);
|
|
66
|
-
const stdoutEventHandler = new std_event_handler_1.StdoutEventHandler((ev) => {
|
|
67
|
-
this.debugLog("Stdout", ev);
|
|
68
|
-
});
|
|
69
|
-
const stderrEventHandler = new std_event_handler_1.StderrEventHandler((ev) => {
|
|
70
|
-
this.debugLog("Stderr", ev);
|
|
71
|
-
});
|
|
72
|
-
const childProcessEventHandler = new std_event_handler_1.ChildProcessEventHandler(this.name, (ev) => {
|
|
73
|
-
this.debugLog("ChildProcess", ev);
|
|
74
|
-
});
|
|
75
|
-
child.stdout?.on("data", stdoutEventHandler.onData);
|
|
76
|
-
child.stdout?.on("end", stdoutEventHandler.onEnd);
|
|
77
|
-
child.stderr?.on("data", stderrEventHandler.onData);
|
|
78
|
-
child.stderr?.on("end", stderrEventHandler.onEnd);
|
|
79
|
-
child.on("close", (code, signal) => {
|
|
80
|
-
this.afterAction();
|
|
81
|
-
childProcessEventHandler.onClose(code, signal);
|
|
82
|
-
});
|
|
83
|
-
child.on("error", childProcessEventHandler.onError);
|
|
84
|
-
}
|
|
85
|
-
// 创建会话
|
|
86
|
-
async createChat() {
|
|
87
|
-
const result = await this.execCommandCapture("agent", ["create-chat"]);
|
|
88
|
-
// 130 通常表示命令被中断,做一次快速重试以降低偶发失败影响。
|
|
89
|
-
const finalResult = result.code === 130
|
|
90
|
-
? await this.execCommandCapture("agent", ["create-chat"])
|
|
91
|
-
: result;
|
|
92
|
-
if (finalResult.code !== 0) {
|
|
93
|
-
const stderr = finalResult.stderr.trim();
|
|
94
|
-
console.error(`创建会话失败: ${stderr || `exit code ${finalResult.code}`}`);
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
const output = finalResult.stdout.trim();
|
|
98
|
-
if (!output) {
|
|
99
|
-
console.error("创建会话失败: 未获取到 chatId");
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
// 兼容命令输出中包含其他日志,取最后一个非空行作为 chatId。
|
|
103
|
-
const lines = output
|
|
104
|
-
.split(/\r?\n/)
|
|
105
|
-
.map((s) => s.trim())
|
|
106
|
-
.filter(Boolean);
|
|
107
|
-
const chatId = lines.at(-1) ?? "";
|
|
108
|
-
if (!chatId) {
|
|
109
|
-
console.error("创建会话失败: chatId 为空");
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
return chatId;
|
|
113
|
-
}
|
|
114
|
-
execCommand(command, args) {
|
|
115
|
-
const isWin = process.platform === "win32";
|
|
116
|
-
if (isWin) {
|
|
117
|
-
return (0, node_child_process_1.spawn)("cmd.exe", ["/d", "/s", "/c", command, ...args], {
|
|
118
|
-
cwd: this.workdir,
|
|
119
|
-
windowsVerbatimArguments: false,
|
|
120
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
return (0, node_child_process_1.spawn)(command, args, {
|
|
124
|
-
cwd: this.workdir,
|
|
125
|
-
shell: false,
|
|
126
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
execCommandCapture(command, args) {
|
|
130
|
-
return new Promise((resolve) => {
|
|
131
|
-
const child = this.execCommand(command, args);
|
|
132
|
-
let stdout = "";
|
|
133
|
-
let stderr = "";
|
|
134
|
-
child.stdout?.on("data", (chunk) => {
|
|
135
|
-
stdout += String(chunk);
|
|
136
|
-
});
|
|
137
|
-
child.stderr?.on("data", (chunk) => {
|
|
138
|
-
stderr += String(chunk);
|
|
139
|
-
});
|
|
140
|
-
child.on("error", (err) => {
|
|
141
|
-
resolve({ code: 1, stdout, stderr: err.message || stderr });
|
|
142
|
-
});
|
|
143
|
-
child.on("close", (code) => {
|
|
144
|
-
resolve({ code: code ?? 1, stdout, stderr });
|
|
145
|
-
});
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
debugLog(message, payload) {
|
|
149
|
-
if (!this.debug) {
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
if (typeof payload === "undefined") {
|
|
153
|
-
console.log(`[debug] ${message}`);
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
console.log(`[debug] ${message}`, payload);
|
|
157
|
-
}
|
|
158
|
-
async report(payload) {
|
|
159
|
-
await this.api.cli.resourceDevelopLogPayloadReport({
|
|
160
|
-
developLogId: this.logId,
|
|
161
|
-
chatId: this.chatId || "",
|
|
162
|
-
skill: this.name,
|
|
163
|
-
payload,
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
// 在运行命令之前
|
|
167
|
-
async beforeAction() {
|
|
168
|
-
const statusMap = {
|
|
169
|
-
"/apm-prd-review": "REVIEWING",
|
|
170
|
-
"/apm-prd-sync": "POLISHING",
|
|
171
|
-
"/apm-prd-testcase": "GENERATING_TEST_CASE",
|
|
172
|
-
"/apm-auto-dev": "DEVELOPING",
|
|
173
|
-
"/apm-fixbug": "FIXING_DEFECT",
|
|
174
|
-
};
|
|
175
|
-
const status = statusMap[this.name];
|
|
176
|
-
if (!status) {
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
await this.api.cli.logDeveloperStatusSet({
|
|
180
|
-
developLogId: this.logId,
|
|
181
|
-
status,
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
// 在运行命令之后
|
|
185
|
-
async afterAction() {
|
|
186
|
-
await this.api.cli.logDeveloperStatusSet({
|
|
187
|
-
developLogId: this.logId,
|
|
188
|
-
status: "IDLE",
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
exports.CursorCmd = CursorCmd;
|
|
193
|
-
//# sourceMappingURL=cursor-cmd.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cursor-cmd.js","sourceRoot":"","sources":["../../src/core/cursor-cmd.ts"],"names":[],"mappings":"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"}
|
package/dist/core/minio.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
export type MinioClientOptions = {
|
|
2
|
-
endPoint: string;
|
|
3
|
-
port: number;
|
|
4
|
-
useSSL: boolean;
|
|
5
|
-
accessKey: string;
|
|
6
|
-
secretKey: string;
|
|
7
|
-
};
|
|
8
|
-
export type ArtifactFile = {
|
|
9
|
-
absPath: string;
|
|
10
|
-
relativePath: string;
|
|
11
|
-
size: number;
|
|
12
|
-
};
|
|
13
|
-
export declare const MIME_BY_EXT: Record<string, string>;
|
|
14
|
-
export declare const DEFAULT_MAX_FILE_SIZE_MB = 100;
|
|
15
|
-
export declare function sanitizeRelativePath(raw: string): string;
|
|
16
|
-
export declare function toArtifactObjectKey(input: {
|
|
17
|
-
branchName: string;
|
|
18
|
-
relativePath: string;
|
|
19
|
-
/** 项目前缀,来自 apm.config.json 顶层 `name`;缺省则与旧行为一致(无前缀) */
|
|
20
|
-
namePrefix?: string;
|
|
21
|
-
}): string;
|
|
22
|
-
export declare function isDirectoryPath(absPath: string): Promise<boolean>;
|
|
23
|
-
export declare function readArtifactFile(absPath: string): Promise<Buffer>;
|
|
24
|
-
export declare function collectFiles(rootDir: string): Promise<ArtifactFile[]>;
|
|
25
|
-
export declare function detectMimeType(filePath: string): string;
|
|
26
|
-
export declare function toMB(bytes: number): string;
|
|
27
|
-
export declare class MinioClient {
|
|
28
|
-
private readonly client;
|
|
29
|
-
constructor(options: MinioClientOptions);
|
|
30
|
-
ensureBucket(bucket: string): Promise<void>;
|
|
31
|
-
deleteObjectsByPrefix(bucket: string, prefix: string): Promise<void>;
|
|
32
|
-
putObject(bucket: string, objectKey: string, data: Buffer, meta?: {
|
|
33
|
-
"Content-Type"?: string;
|
|
34
|
-
}): Promise<void>;
|
|
35
|
-
setBucketPublicRead(bucket: string): Promise<void>;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=minio.d.ts.map
|
package/dist/core/minio.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"minio.d.ts","sourceRoot":"","sources":["../../src/core/minio.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAkB9C,CAAC;AAEF,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAE5C,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUxD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,CAST;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOvE;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEvE;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAK3E;AAqBD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1C;AAwBD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,EAAE,kBAAkB;IAUjC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3C,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BpE,SAAS,CACb,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GACjC,OAAO,CAAC,IAAI,CAAC;IAIV,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzD"}
|
package/dist/core/minio.js
DELETED
|
@@ -1,159 +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.MinioClient = exports.DEFAULT_MAX_FILE_SIZE_MB = exports.MIME_BY_EXT = void 0;
|
|
7
|
-
exports.sanitizeRelativePath = sanitizeRelativePath;
|
|
8
|
-
exports.toArtifactObjectKey = toArtifactObjectKey;
|
|
9
|
-
exports.isDirectoryPath = isDirectoryPath;
|
|
10
|
-
exports.readArtifactFile = readArtifactFile;
|
|
11
|
-
exports.collectFiles = collectFiles;
|
|
12
|
-
exports.detectMimeType = detectMimeType;
|
|
13
|
-
exports.toMB = toMB;
|
|
14
|
-
const promises_1 = require("node:fs/promises");
|
|
15
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
16
|
-
const minio_1 = require("minio");
|
|
17
|
-
exports.MIME_BY_EXT = {
|
|
18
|
-
".html": "text/html; charset=utf-8",
|
|
19
|
-
".js": "application/javascript; charset=utf-8",
|
|
20
|
-
".mjs": "application/javascript; charset=utf-8",
|
|
21
|
-
".css": "text/css; charset=utf-8",
|
|
22
|
-
".json": "application/json; charset=utf-8",
|
|
23
|
-
".map": "application/json; charset=utf-8",
|
|
24
|
-
".txt": "text/plain; charset=utf-8",
|
|
25
|
-
".svg": "image/svg+xml",
|
|
26
|
-
".png": "image/png",
|
|
27
|
-
".jpg": "image/jpeg",
|
|
28
|
-
".jpeg": "image/jpeg",
|
|
29
|
-
".webp": "image/webp",
|
|
30
|
-
".gif": "image/gif",
|
|
31
|
-
".ico": "image/x-icon",
|
|
32
|
-
".woff": "font/woff",
|
|
33
|
-
".woff2": "font/woff2",
|
|
34
|
-
".ttf": "font/ttf",
|
|
35
|
-
};
|
|
36
|
-
exports.DEFAULT_MAX_FILE_SIZE_MB = 100;
|
|
37
|
-
function sanitizeRelativePath(raw) {
|
|
38
|
-
const normalized = raw.replace(/\\/g, "/").replace(/^\/+/, "").trim();
|
|
39
|
-
if (!normalized) {
|
|
40
|
-
throw new Error("relativePath 不能为空");
|
|
41
|
-
}
|
|
42
|
-
const segs = normalized.split("/");
|
|
43
|
-
if (segs.some((s) => s === "" || s === "." || s === "..")) {
|
|
44
|
-
throw new Error("relativePath 非法");
|
|
45
|
-
}
|
|
46
|
-
return segs.join("/");
|
|
47
|
-
}
|
|
48
|
-
function toArtifactObjectKey(input) {
|
|
49
|
-
const base = `${input.branchName}/dist/${input.relativePath}`
|
|
50
|
-
.replace(/\/+/g, "/")
|
|
51
|
-
.replace(/^\//, "");
|
|
52
|
-
const prefix = (input.namePrefix ?? "").trim().replace(/^\/+|\/+$/g, "");
|
|
53
|
-
if (!prefix) {
|
|
54
|
-
return base;
|
|
55
|
-
}
|
|
56
|
-
return `${prefix}/${base}`.replace(/\/+/g, "/");
|
|
57
|
-
}
|
|
58
|
-
async function isDirectoryPath(absPath) {
|
|
59
|
-
try {
|
|
60
|
-
const st = await (0, promises_1.stat)(absPath);
|
|
61
|
-
return st.isDirectory();
|
|
62
|
-
}
|
|
63
|
-
catch {
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
async function readArtifactFile(absPath) {
|
|
68
|
-
return (0, promises_1.readFile)(absPath);
|
|
69
|
-
}
|
|
70
|
-
async function collectFiles(rootDir) {
|
|
71
|
-
const out = [];
|
|
72
|
-
await walk(rootDir, rootDir, out);
|
|
73
|
-
out.sort((a, b) => a.relativePath.localeCompare(b.relativePath));
|
|
74
|
-
return out;
|
|
75
|
-
}
|
|
76
|
-
async function walk(rootDir, currentDir, out) {
|
|
77
|
-
const entries = await (0, promises_1.readdir)(currentDir, { withFileTypes: true });
|
|
78
|
-
for (const ent of entries) {
|
|
79
|
-
const absPath = node_path_1.default.join(currentDir, ent.name);
|
|
80
|
-
if (ent.isDirectory()) {
|
|
81
|
-
await walk(rootDir, absPath, out);
|
|
82
|
-
continue;
|
|
83
|
-
}
|
|
84
|
-
if (!ent.isFile())
|
|
85
|
-
continue;
|
|
86
|
-
const st = await (0, promises_1.stat)(absPath);
|
|
87
|
-
const rel = node_path_1.default.relative(rootDir, absPath).split(node_path_1.default.sep).join("/");
|
|
88
|
-
out.push({ absPath, relativePath: rel, size: st.size });
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
function detectMimeType(filePath) {
|
|
92
|
-
const ext = node_path_1.default.extname(filePath).toLowerCase();
|
|
93
|
-
return exports.MIME_BY_EXT[ext] || "application/octet-stream";
|
|
94
|
-
}
|
|
95
|
-
function toMB(bytes) {
|
|
96
|
-
return (bytes / 1024 / 1024).toFixed(2);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* minio 默认 listObjectsV2 每页最多 1000 条,单页 XML 在 fast-xml-parser 中会触发
|
|
100
|
-
* Entity expansion limit exceeded。用 listObjectsV2Query 缩小每页条数并分页列举。
|
|
101
|
-
*/
|
|
102
|
-
const LIST_OBJECTS_PAGE_MAX_KEYS = 500;
|
|
103
|
-
/** 匿名可读桶内所有对象(仅 s3:GetObject),用于路径直链 */
|
|
104
|
-
function buildPublicReadPolicy(bucket) {
|
|
105
|
-
const policy = {
|
|
106
|
-
Version: "2012-10-17",
|
|
107
|
-
Statement: [
|
|
108
|
-
{
|
|
109
|
-
Effect: "Allow",
|
|
110
|
-
Principal: { AWS: ["*"] },
|
|
111
|
-
Action: ["s3:GetObject"],
|
|
112
|
-
Resource: [`arn:aws:s3:::${bucket}/*`],
|
|
113
|
-
},
|
|
114
|
-
],
|
|
115
|
-
};
|
|
116
|
-
return JSON.stringify(policy);
|
|
117
|
-
}
|
|
118
|
-
class MinioClient {
|
|
119
|
-
client;
|
|
120
|
-
constructor(options) {
|
|
121
|
-
this.client = new minio_1.Client({
|
|
122
|
-
endPoint: options.endPoint,
|
|
123
|
-
port: options.port,
|
|
124
|
-
useSSL: options.useSSL,
|
|
125
|
-
accessKey: options.accessKey,
|
|
126
|
-
secretKey: options.secretKey,
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
async ensureBucket(bucket) {
|
|
130
|
-
const exists = await this.client.bucketExists(bucket);
|
|
131
|
-
if (!exists) {
|
|
132
|
-
await this.client.makeBucket(bucket);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
async deleteObjectsByPrefix(bucket, prefix) {
|
|
136
|
-
let continuationToken = "";
|
|
137
|
-
const removeBatchSize = 1000;
|
|
138
|
-
for (;;) {
|
|
139
|
-
const result = await this.client.listObjectsV2Query(bucket, prefix, continuationToken, "", LIST_OBJECTS_PAGE_MAX_KEYS, "");
|
|
140
|
-
const keys = result.objects
|
|
141
|
-
.map((obj) => ("name" in obj && obj.name ? obj.name.trim() : ""))
|
|
142
|
-
.filter((name) => name.length > 0);
|
|
143
|
-
for (let i = 0; i < keys.length; i += removeBatchSize) {
|
|
144
|
-
await this.client.removeObjects(bucket, keys.slice(i, i + removeBatchSize));
|
|
145
|
-
}
|
|
146
|
-
if (!result.isTruncated)
|
|
147
|
-
break;
|
|
148
|
-
continuationToken = result.nextContinuationToken ?? "";
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
async putObject(bucket, objectKey, data, meta) {
|
|
152
|
-
await this.client.putObject(bucket, objectKey, data, data.length, meta);
|
|
153
|
-
}
|
|
154
|
-
async setBucketPublicRead(bucket) {
|
|
155
|
-
await this.client.setBucketPolicy(bucket, buildPublicReadPolicy(bucket));
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
exports.MinioClient = MinioClient;
|
|
159
|
-
//# sourceMappingURL=minio.js.map
|
package/dist/core/minio.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"minio.js","sourceRoot":"","sources":["../../src/core/minio.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 解析 `.apm/workitems/<id>/testcase.md`
|
|
3
|
-
* 格式由 prd-testcase 技能产出,见 `templates/skills/prd-testcase/reference.md`:
|
|
4
|
-
* - 文首 `# 测试用例`,正文仅 `### 优先级:标题(TC-xxx)` 平铺
|
|
5
|
-
* - 每块内固定顺序:可选「测试类型 / 数据依赖」→「操作步骤」→「预期结果」
|
|
6
|
-
* - 文末可追加 `## 覆盖校验`(技能强制),导入时应忽略
|
|
7
|
-
*/
|
|
8
|
-
export type ParsedTestCaseItem = {
|
|
9
|
-
title: string;
|
|
10
|
-
steps: string;
|
|
11
|
-
expectedResult?: string;
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* 将 testcase.md 正文解析为可提交给后端的 items。
|
|
15
|
-
*/
|
|
16
|
-
export declare function parseTestcaseMarkdown(md: string): ParsedTestCaseItem[];
|
|
17
|
-
//# sourceMappingURL=parse-testcase-md.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-testcase-md.d.ts","sourceRoot":"","sources":["../../src/core/parse-testcase-md.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAwCF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,EAAE,CA0CtE"}
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* 解析 `.apm/workitems/<id>/testcase.md`
|
|
4
|
-
* 格式由 prd-testcase 技能产出,见 `templates/skills/prd-testcase/reference.md`:
|
|
5
|
-
* - 文首 `# 测试用例`,正文仅 `### 优先级:标题(TC-xxx)` 平铺
|
|
6
|
-
* - 每块内固定顺序:可选「测试类型 / 数据依赖」→「操作步骤」→「预期结果」
|
|
7
|
-
* - 文末可追加 `## 覆盖校验`(技能强制),导入时应忽略
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.parseTestcaseMarkdown = parseTestcaseMarkdown;
|
|
11
|
-
function normalizeNewlines(md) {
|
|
12
|
-
return md.replace(/\r\n/g, "\n");
|
|
13
|
-
}
|
|
14
|
-
/** 技能在文末追加的覆盖矩阵小节,其中含 `###`,若不截断会误解析为用例 */
|
|
15
|
-
function stripCoverageTail(md) {
|
|
16
|
-
const m = md.match(/\n##\s+覆盖校验\b/);
|
|
17
|
-
if (!m || m.index === undefined) {
|
|
18
|
-
return md;
|
|
19
|
-
}
|
|
20
|
-
return md.slice(0, m.index).trim();
|
|
21
|
-
}
|
|
22
|
-
/** 仅识别「用例行」:`### P0: xxx(TC-001)`,避免误把覆盖矩阵里的 `###` 当用例 */
|
|
23
|
-
function isTestCaseHeadingLine(line) {
|
|
24
|
-
const t = line.replace(/^###\s+/, "").trim();
|
|
25
|
-
return /\(TC-\d+\)\s*$/.test(t);
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* 技能约定:块内必有 `- 操作步骤:`,`- 预期结果:` 紧随其后;二者正文均为缩进编号列表。
|
|
29
|
-
* 用固定分隔符切分即可,无需通用 Markdown 解析。
|
|
30
|
-
*/
|
|
31
|
-
function parseCaseBlockBody(body) {
|
|
32
|
-
const stepsM = body.match(/- 操作步骤[::]\s*\n([\s\S]*?)(?=\n- 预期结果[::])/);
|
|
33
|
-
const expectM = body.match(/- 预期结果[::]\s*\n([\s\S]*)/);
|
|
34
|
-
const steps = stepsM?.[1]?.trim() ?? "";
|
|
35
|
-
const expected = expectM?.[1]?.trim();
|
|
36
|
-
return {
|
|
37
|
-
steps,
|
|
38
|
-
expected: expected || undefined,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* 将 testcase.md 正文解析为可提交给后端的 items。
|
|
43
|
-
*/
|
|
44
|
-
function parseTestcaseMarkdown(md) {
|
|
45
|
-
const text = normalizeNewlines(md).trim();
|
|
46
|
-
if (!text) {
|
|
47
|
-
throw new Error("testcase.md 内容为空");
|
|
48
|
-
}
|
|
49
|
-
const withoutTail = stripCoverageTail(text);
|
|
50
|
-
const chunks = withoutTail.split(/\n(?=### )/);
|
|
51
|
-
const items = [];
|
|
52
|
-
for (const chunk of chunks) {
|
|
53
|
-
const block = chunk.trim();
|
|
54
|
-
if (!block.startsWith("###")) {
|
|
55
|
-
continue;
|
|
56
|
-
}
|
|
57
|
-
const lines = block.split("\n");
|
|
58
|
-
const head = lines[0];
|
|
59
|
-
if (!isTestCaseHeadingLine(head)) {
|
|
60
|
-
continue;
|
|
61
|
-
}
|
|
62
|
-
const title = head.replace(/^###\s+/, "").trim();
|
|
63
|
-
const body = lines.slice(1).join("\n");
|
|
64
|
-
const { steps, expected } = parseCaseBlockBody(body);
|
|
65
|
-
if (!steps) {
|
|
66
|
-
throw new Error(`用例「${title}」缺少「操作步骤」段落`);
|
|
67
|
-
}
|
|
68
|
-
items.push({
|
|
69
|
-
title,
|
|
70
|
-
steps,
|
|
71
|
-
expectedResult: expected,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
if (items.length === 0) {
|
|
75
|
-
throw new Error("未解析到任何用例:请确认正文为「### 优先级:标题(TC-xxx)」且含「操作步骤」");
|
|
76
|
-
}
|
|
77
|
-
return items;
|
|
78
|
-
}
|
|
79
|
-
//# sourceMappingURL=parse-testcase-md.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parse-testcase-md.js","sourceRoot":"","sources":["../../src/core/parse-testcase-md.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AAiDH,sDA0CC;AAnFD,SAAS,iBAAiB,CAAC,EAAU;IACnC,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC;AAED,2CAA2C;AAC3C,SAAS,iBAAiB,CAAC,EAAU;IACnC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,0DAA0D;AAC1D,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,2CAA2C,CAC5C,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAEtC,OAAO;QACL,KAAK;QACL,QAAQ,EAAE,QAAQ,IAAI,SAAS;KAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,EAAU;IAC9C,MAAM,IAAI,GAAG,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAyB,EAAE,CAAC;IAEvC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;QAC5C,CAAC;QAED,KAAK,CAAC,IAAI,CAAC;YACT,KAAK;YACL,KAAK;YACL,cAAc,EAAE,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
export declare class StdoutEventHandler {
|
|
2
|
-
private onChunk;
|
|
3
|
-
cacheText: string;
|
|
4
|
-
constructor(onChunk: (chunk: any) => void);
|
|
5
|
-
onData: (chunk: Buffer) => void;
|
|
6
|
-
onEnd: () => void;
|
|
7
|
-
private log;
|
|
8
|
-
}
|
|
9
|
-
export declare class StderrEventHandler {
|
|
10
|
-
private onChunk;
|
|
11
|
-
private stderrDecoder;
|
|
12
|
-
constructor(onChunk: (chunk: any) => void);
|
|
13
|
-
onData: (chunk: Buffer) => void;
|
|
14
|
-
onEnd: () => void;
|
|
15
|
-
private log;
|
|
16
|
-
}
|
|
17
|
-
export declare class ChildProcessEventHandler {
|
|
18
|
-
private command;
|
|
19
|
-
private onChunk;
|
|
20
|
-
private errorMessage;
|
|
21
|
-
constructor(command: string, onChunk: (chunk: any) => void);
|
|
22
|
-
onClose: (code: number, signal: string) => void;
|
|
23
|
-
onError: (err: Error) => void;
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=std-event-handler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"std-event-handler.d.ts","sourceRoot":"","sources":["../../src/core/std-event-handler.ts"],"names":[],"mappings":"AAGA,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,OAAO;IAF3B,SAAS,EAAE,MAAM,CAAM;gBAEH,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI;IAEjD,MAAM,UAAW,MAAM,UAerB;IAEF,KAAK,aAOH;IAEF,OAAO,CAAC,GAAG;CAGZ;AAED,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,OAAO;IAF3B,OAAO,CAAC,aAAa,CAAgB;gBAEjB,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI;IAKjD,MAAM,UAAW,MAAM,UAMrB;IAEF,KAAK,aAKH;IAEF,OAAO,CAAC,GAAG;CAGZ;AAED,qBAAa,wBAAwB;IAEvB,OAAO,CAAC,OAAO;IAAU,OAAO,CAAC,OAAO;IADpD,OAAO,CAAC,YAAY,CAAc;gBACd,OAAO,EAAE,MAAM,EAAU,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI;IAE1E,OAAO,SAAU,MAAM,UAAU,MAAM,UAMrC;IAEF,OAAO,QAAS,KAAK,UAOnB;CACH"}
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ChildProcessEventHandler = exports.StderrEventHandler = exports.StdoutEventHandler = void 0;
|
|
4
|
-
const node_string_decoder_1 = require("node:string_decoder");
|
|
5
|
-
const utils_1 = require("./utils");
|
|
6
|
-
class StdoutEventHandler {
|
|
7
|
-
onChunk;
|
|
8
|
-
cacheText = "";
|
|
9
|
-
constructor(onChunk) {
|
|
10
|
-
this.onChunk = onChunk;
|
|
11
|
-
}
|
|
12
|
-
onData = (chunk) => {
|
|
13
|
-
const text = String(chunk);
|
|
14
|
-
// 输出到控制台
|
|
15
|
-
this.log(text);
|
|
16
|
-
this.cacheText += text;
|
|
17
|
-
let idx;
|
|
18
|
-
while ((idx = this.cacheText.indexOf("\n")) !== -1) {
|
|
19
|
-
const line = this.cacheText.slice(0, idx);
|
|
20
|
-
this.cacheText = this.cacheText.slice(idx + 1);
|
|
21
|
-
const ev = (0, utils_1.parseNdjsonLine)(line);
|
|
22
|
-
if (ev !== null) {
|
|
23
|
-
this.onChunk(ev);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
onEnd = () => {
|
|
28
|
-
const rest = this.cacheText;
|
|
29
|
-
this.cacheText = "";
|
|
30
|
-
const ev = (0, utils_1.parseNdjsonLine)(rest);
|
|
31
|
-
if (ev !== null) {
|
|
32
|
-
this.onChunk(ev);
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
log(text) {
|
|
36
|
-
process.stdout.write(text);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
exports.StdoutEventHandler = StdoutEventHandler;
|
|
40
|
-
class StderrEventHandler {
|
|
41
|
-
onChunk;
|
|
42
|
-
stderrDecoder;
|
|
43
|
-
constructor(onChunk) {
|
|
44
|
-
this.onChunk = onChunk;
|
|
45
|
-
const stderrDecoder = new node_string_decoder_1.StringDecoder("utf8");
|
|
46
|
-
this.stderrDecoder = stderrDecoder;
|
|
47
|
-
}
|
|
48
|
-
onData = (chunk) => {
|
|
49
|
-
const text = this.stderrDecoder.write(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
50
|
-
this.log(text);
|
|
51
|
-
this.onChunk(text);
|
|
52
|
-
};
|
|
53
|
-
onEnd = () => {
|
|
54
|
-
const tail = this.stderrDecoder.end();
|
|
55
|
-
if (!tail)
|
|
56
|
-
return;
|
|
57
|
-
this.log(tail);
|
|
58
|
-
this.onChunk(tail);
|
|
59
|
-
};
|
|
60
|
-
log(text) {
|
|
61
|
-
process.stderr.write(text);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
exports.StderrEventHandler = StderrEventHandler;
|
|
65
|
-
class ChildProcessEventHandler {
|
|
66
|
-
command;
|
|
67
|
-
onChunk;
|
|
68
|
-
errorMessage = "";
|
|
69
|
-
constructor(command, onChunk) {
|
|
70
|
-
this.command = command;
|
|
71
|
-
this.onChunk = onChunk;
|
|
72
|
-
}
|
|
73
|
-
onClose = (code, signal) => {
|
|
74
|
-
if (this.errorMessage) {
|
|
75
|
-
console.error(`[${this.command}]执行出错: ${this.errorMessage}`);
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
console.log(`[${this.command}]执行结束, ${code} ${signal}`);
|
|
79
|
-
};
|
|
80
|
-
onError = (err) => {
|
|
81
|
-
this.errorMessage = err.message;
|
|
82
|
-
this.onChunk({
|
|
83
|
-
type: "error",
|
|
84
|
-
message: err.message,
|
|
85
|
-
at: new Date().toISOString(),
|
|
86
|
-
});
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
exports.ChildProcessEventHandler = ChildProcessEventHandler;
|
|
90
|
-
//# sourceMappingURL=std-event-handler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"std-event-handler.js","sourceRoot":"","sources":["../../src/core/std-event-handler.ts"],"names":[],"mappings":"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"}
|