ai-project-manage-cli 1.0.2 → 1.0.4
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/cli/commands/ws.d.ts.map +1 -1
- package/dist/cli/commands/ws.js +54 -2
- package/dist/cli/commands/ws.js.map +1 -1
- package/dist/cli/ws-run-command.d.ts +0 -4
- package/dist/cli/ws-run-command.d.ts.map +1 -1
- package/dist/cli/ws-run-command.js +19 -42
- package/dist/cli/ws-run-command.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwHzD"}
|
package/dist/cli/commands/ws.js
CHANGED
|
@@ -1,18 +1,69 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.registerWsCommands = registerWsCommands;
|
|
37
|
+
const path = __importStar(require("node:path"));
|
|
4
38
|
const employee_ws_client_1 = require("../../employee-ws-client");
|
|
5
39
|
const config_store_1 = require("../../config-store");
|
|
6
40
|
const ws_run_command_1 = require("../ws-run-command");
|
|
41
|
+
const cliVersion = (() => {
|
|
42
|
+
try {
|
|
43
|
+
// ws.ts -> dist/cli/commands/ws.js
|
|
44
|
+
// dist/cli/commands/../../../package.json => packages/cli/package.json
|
|
45
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
46
|
+
const pkg = require(path.join(__dirname, "../../../package.json"));
|
|
47
|
+
return pkg.version ?? "unknown";
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return "unknown";
|
|
51
|
+
}
|
|
52
|
+
})();
|
|
7
53
|
function registerWsCommands(program) {
|
|
8
54
|
program
|
|
9
55
|
.command("ws")
|
|
10
56
|
.description("启动员工 WebSocket 客户端,连接后等待服务端推送(Ctrl+C 退出)。可通过 --token 直接传入")
|
|
57
|
+
.option("--version", "打印当前 CLI 版本后退出")
|
|
11
58
|
.option("-p, --port <port>", "WebSocket 端口(覆盖 apm config 中的 ws-port,优先级最高)", (v) => Number.parseInt(String(v), 10))
|
|
12
59
|
.option("--token <token>", "员工 WebSocket token(优先级最高;不再依赖配置文件的 token)")
|
|
13
60
|
.option("-u, --url <url>", "服务根地址(覆盖配置中的 base-url)")
|
|
14
61
|
.option("--employee-id <id>", "员工 id(仅用于日志显示;可选)", (v) => Number.parseInt(String(v), 10))
|
|
15
62
|
.action((opts) => {
|
|
63
|
+
if (opts.version) {
|
|
64
|
+
console.log(cliVersion);
|
|
65
|
+
process.exit(0);
|
|
66
|
+
}
|
|
16
67
|
const cfg = (0, config_store_1.readApmConfigSync)();
|
|
17
68
|
const baseUrlRaw = opts.url?.trim() || cfg.baseUrl?.trim() || "";
|
|
18
69
|
const baseUrl = baseUrlRaw ? (0, config_store_1.normalizeBaseUrl)(baseUrlRaw) : "";
|
|
@@ -33,13 +84,14 @@ function registerWsCommands(program) {
|
|
|
33
84
|
: undefined;
|
|
34
85
|
let wsPort;
|
|
35
86
|
if (opts.port !== undefined) {
|
|
36
|
-
if (!Number.isFinite(opts.port) ||
|
|
87
|
+
if (!Number.isFinite(opts.port) ||
|
|
88
|
+
opts.port < 1 ||
|
|
89
|
+
opts.port > 65535) {
|
|
37
90
|
console.error("--port 须为 1–65535 的整数");
|
|
38
91
|
process.exit(1);
|
|
39
92
|
}
|
|
40
93
|
wsPort = Math.floor(opts.port);
|
|
41
94
|
}
|
|
42
|
-
(0, ws_run_command_1.ensureAgentReady)();
|
|
43
95
|
const u = new URL(baseUrl);
|
|
44
96
|
const effectivePort = wsPort ?? (0, config_store_1.resolveEmployeeWsPortFromConfig)();
|
|
45
97
|
const wsProto = u.protocol === "https:" ? "wss:" : "ws:";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../../../src/cli/commands/ws.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ws.js","sourceRoot":"","sources":["../../../src/cli/commands/ws.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-run-command.d.ts","sourceRoot":"","sources":["../../src/cli/ws-run-command.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"ws-run-command.d.ts","sourceRoot":"","sources":["../../src/cli/ws-run-command.ts"],"names":[],"mappings":"AAKA,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2DjD;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAuC9D"}
|
|
@@ -3,43 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ensureAgentReady = ensureAgentReady;
|
|
7
6
|
exports.runCommand = runCommand;
|
|
8
7
|
exports.runCursorFromServerPayload = runCursorFromServerPayload;
|
|
9
8
|
const node_child_process_1 = require("node:child_process");
|
|
10
9
|
const node_process_1 = __importDefault(require("node:process"));
|
|
11
10
|
const LOG = "[ws-client]";
|
|
12
|
-
/**
|
|
13
|
-
* 启动 WS 前检测本机 `agent` 是否可用(`agent --version` 成功)。
|
|
14
|
-
*/
|
|
15
|
-
function ensureAgentReady() {
|
|
16
|
-
const r = (0, node_child_process_1.spawnSync)("agent", ["--version"], {
|
|
17
|
-
encoding: "utf8",
|
|
18
|
-
shell: false,
|
|
19
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
20
|
-
});
|
|
21
|
-
if (r.error) {
|
|
22
|
-
console.error(`${LOG} agent 未就绪:${r.error.message}`);
|
|
23
|
-
console.error(`${LOG} 请安装 agent 并确保其位于 PATH 中`);
|
|
24
|
-
node_process_1.default.exit(1);
|
|
25
|
-
}
|
|
26
|
-
if (r.status !== 0) {
|
|
27
|
-
const detail = [r.stderr, r.stdout]
|
|
28
|
-
.filter(Boolean)
|
|
29
|
-
.map((s) => String(s).trim())
|
|
30
|
-
.filter(Boolean)
|
|
31
|
-
.join(" ");
|
|
32
|
-
console.error(`${LOG} agent --version 失败(退出码 ${String(r.status ?? 0)})${detail ? `:${detail}` : ""}`);
|
|
33
|
-
node_process_1.default.exit(1);
|
|
34
|
-
}
|
|
35
|
-
const line = (r.stdout ?? "").toString().trim().split("\n")[0];
|
|
36
|
-
if (line) {
|
|
37
|
-
console.error(`${LOG} agent 已就绪:${line}`);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
console.error(`${LOG} agent 已就绪`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
11
|
function runCommand(payload) {
|
|
44
12
|
if (!payload || typeof payload !== "object") {
|
|
45
13
|
console.error(`${LOG} invalid command payload`);
|
|
@@ -60,11 +28,20 @@ function runCommand(payload) {
|
|
|
60
28
|
return;
|
|
61
29
|
}
|
|
62
30
|
console.error(`${LOG} 执行命令 command=${command} cwd=${cwd}`);
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
31
|
+
// Windows 下很多 CLI 实际是 .cmd/.bat(如 agent.cmd),
|
|
32
|
+
// 使用 shell:false 直接 spawn("agent") 可能出现 ENOENT。
|
|
33
|
+
const isWin = node_process_1.default.platform === "win32";
|
|
34
|
+
const child = isWin
|
|
35
|
+
? (0, node_child_process_1.spawn)("cmd.exe", ["/d", "/s", "/c", command, ...args], {
|
|
36
|
+
cwd,
|
|
37
|
+
windowsVerbatimArguments: false,
|
|
38
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
39
|
+
})
|
|
40
|
+
: (0, node_child_process_1.spawn)(command, args, {
|
|
41
|
+
cwd,
|
|
42
|
+
shell: false,
|
|
43
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
44
|
+
});
|
|
68
45
|
child.stdout.on("data", (chunk) => {
|
|
69
46
|
node_process_1.default.stdout.write(`${LOG}[stdout] ${String(chunk)}`);
|
|
70
47
|
});
|
|
@@ -96,23 +73,23 @@ function runCursorFromServerPayload(data) {
|
|
|
96
73
|
return;
|
|
97
74
|
}
|
|
98
75
|
const prompt = d.prompt.trim();
|
|
99
|
-
const
|
|
76
|
+
const workdir = d.workdir.trim();
|
|
100
77
|
const args = [];
|
|
101
78
|
if (typeof d.model === "string" && d.model.trim()) {
|
|
102
79
|
args.push("--model", d.model.trim());
|
|
103
80
|
}
|
|
104
|
-
if (typeof
|
|
105
|
-
args.push("--workspace",
|
|
81
|
+
if (typeof workdir === "string") {
|
|
82
|
+
args.push("--workspace", workdir);
|
|
106
83
|
}
|
|
107
84
|
if (typeof d.mode === "string") {
|
|
108
85
|
args.push("--mode", d.mode.trim());
|
|
109
86
|
}
|
|
110
|
-
args.push("-f", "
|
|
87
|
+
args.push("-f", "-p", "--trust", "--output-format", "text");
|
|
111
88
|
args.push(JSON.stringify(prompt));
|
|
112
89
|
runCommand({
|
|
113
90
|
command: "agent",
|
|
114
91
|
args,
|
|
115
|
-
cwd,
|
|
92
|
+
cwd: workdir,
|
|
116
93
|
});
|
|
117
94
|
}
|
|
118
95
|
//# sourceMappingURL=ws-run-command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-run-command.js","sourceRoot":"","sources":["../../src/cli/ws-run-command.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"ws-run-command.js","sourceRoot":"","sources":["../../src/cli/ws-run-command.ts"],"names":[],"mappings":"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"}
|