ai-project-manage-cli 2.0.25 → 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.
Files changed (291) hide show
  1. package/dist/index.js +498 -20
  2. package/package.json +27 -25
  3. package/template/apm.config.json +5 -0
  4. package/template/deploy/README.md +3 -0
  5. package/template/workitems/README.md +19 -0
  6. package/README.md +0 -171
  7. package/dist/api/cli.d.ts +0 -228
  8. package/dist/api/cli.d.ts.map +0 -1
  9. package/dist/api/cli.js +0 -3
  10. package/dist/api/cli.js.map +0 -1
  11. package/dist/api/client.d.ts +0 -5
  12. package/dist/api/client.d.ts.map +0 -1
  13. package/dist/api/client.js +0 -30
  14. package/dist/api/client.js.map +0 -1
  15. package/dist/api/http.d.ts +0 -21
  16. package/dist/api/http.d.ts.map +0 -1
  17. package/dist/api/http.js +0 -108
  18. package/dist/api/http.js.map +0 -1
  19. package/dist/api/index.d.ts +0 -6
  20. package/dist/api/index.d.ts.map +0 -1
  21. package/dist/api/index.js +0 -13
  22. package/dist/api/index.js.map +0 -1
  23. package/dist/api/request-config.d.ts +0 -25
  24. package/dist/api/request-config.d.ts.map +0 -1
  25. package/dist/api/request-config.js +0 -73
  26. package/dist/api/request-config.js.map +0 -1
  27. package/dist/api/requirement.d.ts +0 -1
  28. package/dist/api/requirement.d.ts.map +0 -1
  29. package/dist/api/requirement.js +0 -2
  30. package/dist/api/requirement.js.map +0 -1
  31. package/dist/apm-dotenv.d.ts +0 -8
  32. package/dist/apm-dotenv.d.ts.map +0 -1
  33. package/dist/apm-dotenv.js +0 -73
  34. package/dist/apm-dotenv.js.map +0 -1
  35. package/dist/cli/agent-stream-log.d.ts +0 -41
  36. package/dist/cli/agent-stream-log.d.ts.map +0 -1
  37. package/dist/cli/agent-stream-log.js +0 -364
  38. package/dist/cli/agent-stream-log.js.map +0 -1
  39. package/dist/cli/commands/auth.d.ts +0 -3
  40. package/dist/cli/commands/auth.d.ts.map +0 -1
  41. package/dist/cli/commands/auth.js +0 -51
  42. package/dist/cli/commands/auth.js.map +0 -1
  43. package/dist/cli/commands/chat.d.ts +0 -3
  44. package/dist/cli/commands/chat.d.ts.map +0 -1
  45. package/dist/cli/commands/chat.js +0 -32
  46. package/dist/cli/commands/chat.js.map +0 -1
  47. package/dist/cli/commands/comment.d.ts +0 -3
  48. package/dist/cli/commands/comment.d.ts.map +0 -1
  49. package/dist/cli/commands/comment.js +0 -66
  50. package/dist/cli/commands/comment.js.map +0 -1
  51. package/dist/cli/commands/config.d.ts +0 -3
  52. package/dist/cli/commands/config.d.ts.map +0 -1
  53. package/dist/cli/commands/config.js +0 -39
  54. package/dist/cli/commands/config.js.map +0 -1
  55. package/dist/cli/commands/deploy-backend.d.ts +0 -7
  56. package/dist/cli/commands/deploy-backend.d.ts.map +0 -1
  57. package/dist/cli/commands/deploy-backend.js +0 -77
  58. package/dist/cli/commands/deploy-backend.js.map +0 -1
  59. package/dist/cli/commands/deploy-frontend.d.ts +0 -3
  60. package/dist/cli/commands/deploy-frontend.d.ts.map +0 -1
  61. package/dist/cli/commands/deploy-frontend.js +0 -167
  62. package/dist/cli/commands/deploy-frontend.js.map +0 -1
  63. package/dist/cli/commands/get.d.ts +0 -3
  64. package/dist/cli/commands/get.d.ts.map +0 -1
  65. package/dist/cli/commands/get.js +0 -145
  66. package/dist/cli/commands/get.js.map +0 -1
  67. package/dist/cli/commands/init.d.ts +0 -3
  68. package/dist/cli/commands/init.d.ts.map +0 -1
  69. package/dist/cli/commands/init.js +0 -179
  70. package/dist/cli/commands/init.js.map +0 -1
  71. package/dist/cli/commands/minio.d.ts +0 -3
  72. package/dist/cli/commands/minio.d.ts.map +0 -1
  73. package/dist/cli/commands/minio.js +0 -65
  74. package/dist/cli/commands/minio.js.map +0 -1
  75. package/dist/cli/commands/publish.d.ts +0 -3
  76. package/dist/cli/commands/publish.d.ts.map +0 -1
  77. package/dist/cli/commands/publish.js +0 -130
  78. package/dist/cli/commands/publish.js.map +0 -1
  79. package/dist/cli/commands/release.d.ts +0 -3
  80. package/dist/cli/commands/release.d.ts.map +0 -1
  81. package/dist/cli/commands/release.js +0 -37
  82. package/dist/cli/commands/release.js.map +0 -1
  83. package/dist/cli/commands/requirement.d.ts +0 -3
  84. package/dist/cli/commands/requirement.d.ts.map +0 -1
  85. package/dist/cli/commands/requirement.js +0 -169
  86. package/dist/cli/commands/requirement.js.map +0 -1
  87. package/dist/cli/commands/set.d.ts +0 -3
  88. package/dist/cli/commands/set.d.ts.map +0 -1
  89. package/dist/cli/commands/set.js +0 -103
  90. package/dist/cli/commands/set.js.map +0 -1
  91. package/dist/cli/commands/status.d.ts +0 -3
  92. package/dist/cli/commands/status.d.ts.map +0 -1
  93. package/dist/cli/commands/status.js +0 -42
  94. package/dist/cli/commands/status.js.map +0 -1
  95. package/dist/cli/commands/update.d.ts +0 -3
  96. package/dist/cli/commands/update.d.ts.map +0 -1
  97. package/dist/cli/commands/update.js +0 -36
  98. package/dist/cli/commands/update.js.map +0 -1
  99. package/dist/cli/commands/ws.d.ts +0 -3
  100. package/dist/cli/commands/ws.d.ts.map +0 -1
  101. package/dist/cli/commands/ws.js +0 -25
  102. package/dist/cli/commands/ws.js.map +0 -1
  103. package/dist/cli/credentials.d.ts +0 -30
  104. package/dist/cli/credentials.d.ts.map +0 -1
  105. package/dist/cli/credentials.js +0 -52
  106. package/dist/cli/credentials.js.map +0 -1
  107. package/dist/cli/exit-api-error.d.ts +0 -2
  108. package/dist/cli/exit-api-error.d.ts.map +0 -1
  109. package/dist/cli/exit-api-error.js +0 -18
  110. package/dist/cli/exit-api-error.js.map +0 -1
  111. package/dist/cli/instruction-log-stream-sink.d.ts +0 -31
  112. package/dist/cli/instruction-log-stream-sink.d.ts.map +0 -1
  113. package/dist/cli/instruction-log-stream-sink.js +0 -59
  114. package/dist/cli/instruction-log-stream-sink.js.map +0 -1
  115. package/dist/cli/session.d.ts +0 -26
  116. package/dist/cli/session.d.ts.map +0 -1
  117. package/dist/cli/session.js +0 -41
  118. package/dist/cli/session.js.map +0 -1
  119. package/dist/cli/utils/parse.d.ts +0 -2
  120. package/dist/cli/utils/parse.d.ts.map +0 -1
  121. package/dist/cli/utils/parse.js +0 -12
  122. package/dist/cli/utils/parse.js.map +0 -1
  123. package/dist/cli/ws-run-command.d.ts +0 -13
  124. package/dist/cli/ws-run-command.d.ts.map +0 -1
  125. package/dist/cli/ws-run-command.js +0 -330
  126. package/dist/cli/ws-run-command.js.map +0 -1
  127. package/dist/cli-version.d.ts +0 -9
  128. package/dist/cli-version.d.ts.map +0 -1
  129. package/dist/cli-version.js +0 -61
  130. package/dist/cli-version.js.map +0 -1
  131. package/dist/cli.d.ts +0 -3
  132. package/dist/cli.d.ts.map +0 -1
  133. package/dist/cli.js +0 -36
  134. package/dist/cli.js.map +0 -1
  135. package/dist/config-store.d.ts +0 -38
  136. package/dist/config-store.d.ts.map +0 -1
  137. package/dist/config-store.js +0 -131
  138. package/dist/config-store.js.map +0 -1
  139. package/dist/core/apm-config.d.ts +0 -81
  140. package/dist/core/apm-config.d.ts.map +0 -1
  141. package/dist/core/apm-config.js +0 -147
  142. package/dist/core/apm-config.js.map +0 -1
  143. package/dist/core/backend-deploy/backend-deploy-workflow.d.ts +0 -20
  144. package/dist/core/backend-deploy/backend-deploy-workflow.d.ts.map +0 -1
  145. package/dist/core/backend-deploy/backend-deploy-workflow.js +0 -86
  146. package/dist/core/backend-deploy/backend-deploy-workflow.js.map +0 -1
  147. package/dist/core/backend-deploy/command-runner.d.ts +0 -11
  148. package/dist/core/backend-deploy/command-runner.d.ts.map +0 -1
  149. package/dist/core/backend-deploy/command-runner.js +0 -47
  150. package/dist/core/backend-deploy/command-runner.js.map +0 -1
  151. package/dist/core/backend-deploy/dockerode-client/client.d.ts +0 -18
  152. package/dist/core/backend-deploy/dockerode-client/client.d.ts.map +0 -1
  153. package/dist/core/backend-deploy/dockerode-client/client.js +0 -114
  154. package/dist/core/backend-deploy/dockerode-client/client.js.map +0 -1
  155. package/dist/core/backend-deploy/dockerode-client/connection-options.d.ts +0 -6
  156. package/dist/core/backend-deploy/dockerode-client/connection-options.d.ts.map +0 -1
  157. package/dist/core/backend-deploy/dockerode-client/connection-options.js +0 -62
  158. package/dist/core/backend-deploy/dockerode-client/connection-options.js.map +0 -1
  159. package/dist/core/backend-deploy/dockerode-client/container-inspect-format.d.ts +0 -3
  160. package/dist/core/backend-deploy/dockerode-client/container-inspect-format.d.ts.map +0 -1
  161. package/dist/core/backend-deploy/dockerode-client/container-inspect-format.js +0 -23
  162. package/dist/core/backend-deploy/dockerode-client/container-inspect-format.js.map +0 -1
  163. package/dist/core/backend-deploy/dockerode-client/container-options.d.ts +0 -4
  164. package/dist/core/backend-deploy/dockerode-client/container-options.d.ts.map +0 -1
  165. package/dist/core/backend-deploy/dockerode-client/container-options.js +0 -44
  166. package/dist/core/backend-deploy/dockerode-client/container-options.js.map +0 -1
  167. package/dist/core/backend-deploy/dockerode-client/env.d.ts +0 -3
  168. package/dist/core/backend-deploy/dockerode-client/env.d.ts.map +0 -1
  169. package/dist/core/backend-deploy/dockerode-client/env.js +0 -40
  170. package/dist/core/backend-deploy/dockerode-client/env.js.map +0 -1
  171. package/dist/core/backend-deploy/dockerode-client/index.d.ts +0 -8
  172. package/dist/core/backend-deploy/dockerode-client/index.d.ts.map +0 -1
  173. package/dist/core/backend-deploy/dockerode-client/index.js +0 -17
  174. package/dist/core/backend-deploy/dockerode-client/index.js.map +0 -1
  175. package/dist/core/backend-deploy/dockerode-client/ports.d.ts +0 -9
  176. package/dist/core/backend-deploy/dockerode-client/ports.d.ts.map +0 -1
  177. package/dist/core/backend-deploy/dockerode-client/ports.js +0 -35
  178. package/dist/core/backend-deploy/dockerode-client/ports.js.map +0 -1
  179. package/dist/core/backend-deploy/dockerode-client/runtime.d.ts +0 -7
  180. package/dist/core/backend-deploy/dockerode-client/runtime.d.ts.map +0 -1
  181. package/dist/core/backend-deploy/dockerode-client/runtime.js +0 -26
  182. package/dist/core/backend-deploy/dockerode-client/runtime.js.map +0 -1
  183. package/dist/core/backend-deploy/dockerode-client/types.d.ts +0 -64
  184. package/dist/core/backend-deploy/dockerode-client/types.d.ts.map +0 -1
  185. package/dist/core/backend-deploy/dockerode-client/types.js +0 -3
  186. package/dist/core/backend-deploy/dockerode-client/types.js.map +0 -1
  187. package/dist/core/backend-deploy/image-tag.d.ts +0 -2
  188. package/dist/core/backend-deploy/image-tag.d.ts.map +0 -1
  189. package/dist/core/backend-deploy/image-tag.js +0 -15
  190. package/dist/core/backend-deploy/image-tag.js.map +0 -1
  191. package/dist/core/backend-deploy/index.d.ts +0 -3
  192. package/dist/core/backend-deploy/index.d.ts.map +0 -1
  193. package/dist/core/backend-deploy/index.js +0 -6
  194. package/dist/core/backend-deploy/index.js.map +0 -1
  195. package/dist/core/backend-deploy/local-docker-build.d.ts +0 -8
  196. package/dist/core/backend-deploy/local-docker-build.d.ts.map +0 -1
  197. package/dist/core/backend-deploy/local-docker-build.js +0 -25
  198. package/dist/core/backend-deploy/local-docker-build.js.map +0 -1
  199. package/dist/core/backend-deploy/logger.d.ts +0 -10
  200. package/dist/core/backend-deploy/logger.d.ts.map +0 -1
  201. package/dist/core/backend-deploy/logger.js +0 -22
  202. package/dist/core/backend-deploy/logger.js.map +0 -1
  203. package/dist/core/backend-deploy/registry-login-push.d.ts +0 -24
  204. package/dist/core/backend-deploy/registry-login-push.d.ts.map +0 -1
  205. package/dist/core/backend-deploy/registry-login-push.js +0 -37
  206. package/dist/core/backend-deploy/registry-login-push.js.map +0 -1
  207. package/dist/core/backend-deploy/remote-docker-client.d.ts +0 -11
  208. package/dist/core/backend-deploy/remote-docker-client.d.ts.map +0 -1
  209. package/dist/core/backend-deploy/remote-docker-client.js +0 -34
  210. package/dist/core/backend-deploy/remote-docker-client.js.map +0 -1
  211. package/dist/core/backend-deploy/remote-pull-image.d.ts +0 -9
  212. package/dist/core/backend-deploy/remote-pull-image.d.ts.map +0 -1
  213. package/dist/core/backend-deploy/remote-pull-image.js +0 -39
  214. package/dist/core/backend-deploy/remote-pull-image.js.map +0 -1
  215. package/dist/core/backend-deploy/resolve-dockerfile.d.ts +0 -7
  216. package/dist/core/backend-deploy/resolve-dockerfile.d.ts.map +0 -1
  217. package/dist/core/backend-deploy/resolve-dockerfile.js +0 -24
  218. package/dist/core/backend-deploy/resolve-dockerfile.js.map +0 -1
  219. package/dist/core/backend-deploy/run-docker-cli.d.ts +0 -9
  220. package/dist/core/backend-deploy/run-docker-cli.d.ts.map +0 -1
  221. package/dist/core/backend-deploy/run-docker-cli.js +0 -14
  222. package/dist/core/backend-deploy/run-docker-cli.js.map +0 -1
  223. package/dist/core/backend-deploy/types.d.ts +0 -23
  224. package/dist/core/backend-deploy/types.d.ts.map +0 -1
  225. package/dist/core/backend-deploy/types.js +0 -3
  226. package/dist/core/backend-deploy/types.js.map +0 -1
  227. package/dist/core/branch-name.d.ts +0 -8
  228. package/dist/core/branch-name.d.ts.map +0 -1
  229. package/dist/core/branch-name.js +0 -37
  230. package/dist/core/branch-name.js.map +0 -1
  231. package/dist/core/constants.d.ts +0 -4
  232. package/dist/core/constants.d.ts.map +0 -1
  233. package/dist/core/constants.js +0 -16
  234. package/dist/core/constants.js.map +0 -1
  235. package/dist/core/cursor-cmd.d.ts +0 -30
  236. package/dist/core/cursor-cmd.d.ts.map +0 -1
  237. package/dist/core/cursor-cmd.js +0 -193
  238. package/dist/core/cursor-cmd.js.map +0 -1
  239. package/dist/core/minio.d.ts +0 -37
  240. package/dist/core/minio.d.ts.map +0 -1
  241. package/dist/core/minio.js +0 -159
  242. package/dist/core/minio.js.map +0 -1
  243. package/dist/core/parse-testcase-md.d.ts +0 -17
  244. package/dist/core/parse-testcase-md.d.ts.map +0 -1
  245. package/dist/core/parse-testcase-md.js +0 -79
  246. package/dist/core/parse-testcase-md.js.map +0 -1
  247. package/dist/core/std-event-handler.d.ts +0 -25
  248. package/dist/core/std-event-handler.d.ts.map +0 -1
  249. package/dist/core/std-event-handler.js +0 -90
  250. package/dist/core/std-event-handler.js.map +0 -1
  251. package/dist/core/utils.d.ts +0 -19
  252. package/dist/core/utils.d.ts.map +0 -1
  253. package/dist/core/utils.js +0 -71
  254. package/dist/core/utils.js.map +0 -1
  255. package/dist/core/ws-client.d.ts +0 -29
  256. package/dist/core/ws-client.d.ts.map +0 -1
  257. package/dist/core/ws-client.js +0 -81
  258. package/dist/core/ws-client.js.map +0 -1
  259. package/dist/employee-ws-client.d.ts +0 -42
  260. package/dist/employee-ws-client.d.ts.map +0 -1
  261. package/dist/employee-ws-client.js +0 -99
  262. package/dist/employee-ws-client.js.map +0 -1
  263. package/dist/index.d.ts +0 -6
  264. package/dist/index.d.ts.map +0 -1
  265. package/dist/index.js.map +0 -1
  266. package/templates/commands/apm-auto-dev.md +0 -6
  267. package/templates/commands/apm-fixbug.md +0 -6
  268. package/templates/commands/apm-prd-review.md +0 -6
  269. package/templates/commands/apm-prd-sync.md +0 -6
  270. package/templates/skills/apm-apply-change/SKILL.md +0 -191
  271. package/templates/skills/apm-auto-dev/SKILL.md +0 -170
  272. package/templates/skills/apm-fixbug/SKILL.md +0 -97
  273. package/templates/skills/apm-propose/SKILL.md +0 -123
  274. package/templates/skills/apm-propose/design-instruction.md +0 -94
  275. package/templates/skills/apm-propose/propose-instruction.md +0 -81
  276. package/templates/skills/apm-propose/specs-instruction.md +0 -114
  277. package/templates/skills/apm-propose/tasks-instruction.md +0 -90
  278. package/templates/skills/apm-release/SKILL.md +0 -87
  279. package/templates/skills/code-change-summary/SKILL.md +0 -84
  280. package/templates/skills/code-change-summary/summary-template.md +0 -55
  281. package/templates/skills/code-deploy/SKILL.md +0 -39
  282. package/templates/skills/prd-review/SKILL.md +0 -48
  283. package/templates/skills/prd-review/output-template.md +0 -47
  284. package/templates/skills/prd-sync/SKILL.md +0 -74
  285. package/templates/skills/prd-sync/updated-requirement-template.md +0 -39
  286. package/templates/skills/prd-testcase/SKILL.md +0 -82
  287. package/templates/skills/prd-testcase/reference.md +0 -44
  288. package/templates/skills/product-capability-inventory/SKILL.md +0 -131
  289. package/templates/skills/product-capability-inventory/template.md +0 -80
  290. package/templates/skills/product-capability-inventory//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +0 -36
  291. package/templates/skills/product-capability-inventory//347/233/256/345/275/225/350/247/204/350/214/203.md +0 -58
@@ -1,169 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerRequirementCommands = registerRequirementCommands;
4
- const promises_1 = require("node:fs/promises");
5
- const credentials_1 = require("../credentials");
6
- const exit_api_error_1 = require("../exit-api-error");
7
- function registerRequirementCommands(program) {
8
- const req = program
9
- .command("requirement")
10
- .description("需求相关子命令(测试用例、分支、缺陷等)");
11
- registerRequirementVersionCommands(req);
12
- registerRequirementTestCaseCommands(req);
13
- registerRequirementBranchCommands(req);
14
- registerRequirementDefectCommands(req);
15
- }
16
- function registerRequirementVersionCommands(req) {
17
- const reqVer = req
18
- .command("version")
19
- .description("需求内容版本(版本序号与界面 v1、v2 一致)");
20
- reqVer
21
- .command("content")
22
- .description("按需求 id 与版本序号获取该版本正文(JSON,含评论等)")
23
- .requiredOption("--requirement-id <id>", "需求 id", (v) => Number.parseInt(v, 10))
24
- .requiredOption("--version-seq <n>", "该需求下的版本序号(与界面 v1、v2 一致,非数据库 id)", (v) => Number.parseInt(v, 10))
25
- .action(async (opts) => {
26
- const api = (0, credentials_1.apiClient)();
27
- try {
28
- const list = await api.requirement.versionsList({
29
- requirementId: opts.requirementId,
30
- });
31
- const hit = list.find((v) => v.versionSeq === opts.versionSeq);
32
- if (!hit) {
33
- console.error(`未找到版本序号 ${opts.versionSeq}(该需求下共有 ${list.length} 个版本)`);
34
- process.exit(1);
35
- }
36
- console.log(JSON.stringify(hit, null, 2));
37
- }
38
- catch (e) {
39
- (0, exit_api_error_1.exitApiError)(e);
40
- }
41
- });
42
- }
43
- function registerRequirementTestCaseCommands(req) {
44
- const reqTc = req.command("test-case").description("测试用例");
45
- reqTc
46
- .command("import")
47
- .description("从 JSON 数组文件批量导入")
48
- .requiredOption("--requirement-id <id>", "需求 id", (v) => Number.parseInt(v, 10))
49
- .requiredOption("--file <path>", "UTF-8 JSON 数组,元素字段同单条创建")
50
- .action(async (opts) => {
51
- const raw = await (0, promises_1.readFile)(opts.file, "utf8");
52
- let parsed;
53
- try {
54
- parsed = JSON.parse(raw);
55
- }
56
- catch {
57
- console.error("JSON 解析失败");
58
- process.exit(1);
59
- }
60
- if (!Array.isArray(parsed) || parsed.length === 0) {
61
- console.error("文件须为非空 JSON 数组");
62
- process.exit(1);
63
- }
64
- const batch = parsed.map((item) => {
65
- if (!item || typeof item !== "object") {
66
- throw new Error("数组元素须为对象");
67
- }
68
- const o = item;
69
- return {
70
- requirementId: opts.requirementId,
71
- title: String(o.title ?? ""),
72
- steps: String(o.steps ?? ""),
73
- expectedResult: o.expectedResult !== undefined && o.expectedResult !== null
74
- ? String(o.expectedResult)
75
- : undefined,
76
- status: o.status,
77
- };
78
- });
79
- const api = (0, credentials_1.apiClient)();
80
- try {
81
- const rows = await api.requirement.testCasesCreateBatch(batch);
82
- console.log(JSON.stringify(rows, null, 2));
83
- }
84
- catch (e) {
85
- (0, exit_api_error_1.exitApiError)(e);
86
- }
87
- });
88
- }
89
- function registerRequirementBranchCommands(req) {
90
- const reqBranch = req.command("branch").description("需求分支");
91
- reqBranch
92
- .command("set-status")
93
- .description("更新分支状态:按分支记录 id,或按需求 id + 远程分支名精确匹配")
94
- .requiredOption("--status <status>", "目标状态")
95
- .option("--branch-id <id>", "分支记录 id(与 requirement-id + branch-name 二选一)", (v) => Number.parseInt(v, 10))
96
- .option("--requirement-id <id>", "需求 id", (v) => Number.parseInt(v, 10))
97
- .option("--branch-name <name>", "远程分支名(精确匹配)")
98
- .action(async (opts) => {
99
- const status = opts.status;
100
- const api = (0, credentials_1.apiClient)();
101
- const byId = opts.branchId != null &&
102
- Number.isFinite(opts.branchId) &&
103
- opts.branchId >= 1;
104
- const reqId = opts.requirementId;
105
- const name = opts.branchName?.trim() ?? "";
106
- const byReqAndName = reqId != null &&
107
- Number.isFinite(reqId) &&
108
- reqId >= 1 &&
109
- name.length > 0;
110
- if (!byId && !byReqAndName) {
111
- console.error("请使用以下之一:\n" +
112
- " apm requirement branch set-status --branch-id <id> --status <状态>\n" +
113
- " apm requirement branch set-status --requirement-id <id> --branch-name <name> --status <状态>");
114
- process.exit(1);
115
- }
116
- try {
117
- if (byId) {
118
- const row = await api.requirement.branchesUpdate({
119
- id: opts.branchId,
120
- status,
121
- });
122
- console.log(JSON.stringify(row, null, 2));
123
- return;
124
- }
125
- const list = await api.requirement.branchesList({
126
- requirementId: reqId,
127
- });
128
- const hits = list.filter((b) => b.branchName.trim() === name);
129
- if (hits.length === 0) {
130
- console.error(`未找到分支名为「${name}」的记录`);
131
- process.exit(1);
132
- }
133
- if (hits.length > 1) {
134
- console.error(`匹配到多条分支「${name}」,拒绝更新`);
135
- process.exit(1);
136
- }
137
- const row = await api.requirement.branchesUpdate({
138
- id: hits[0].id,
139
- status,
140
- });
141
- console.log(JSON.stringify(row, null, 2));
142
- }
143
- catch (e) {
144
- (0, exit_api_error_1.exitApiError)(e);
145
- }
146
- });
147
- }
148
- function registerRequirementDefectCommands(req) {
149
- const reqDefect = req.command("defect").description("缺陷");
150
- reqDefect
151
- .command("set-status")
152
- .description("更新缺陷状态")
153
- .requiredOption("--defect-id <id>", "缺陷 id", (v) => Number.parseInt(v, 10))
154
- .requiredOption("--status <status>", "目标状态")
155
- .action(async (opts) => {
156
- const api = (0, credentials_1.apiClient)();
157
- try {
158
- const row = await api.requirement.defectsUpdate({
159
- id: opts.defectId,
160
- status: opts.status,
161
- });
162
- console.log(JSON.stringify(row, null, 2));
163
- }
164
- catch (e) {
165
- (0, exit_api_error_1.exitApiError)(e);
166
- }
167
- });
168
- }
169
- //# sourceMappingURL=requirement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"requirement.js","sourceRoot":"","sources":["../../../src/cli/commands/requirement.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Command } from "commander";
2
- export declare function registerSetCommands(program: Command): void;
3
- //# sourceMappingURL=set.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/set.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiH1D"}
@@ -1,103 +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.registerSetCommands = registerSetCommands;
7
- const node_fs_1 = require("node:fs");
8
- const node_path_1 = __importDefault(require("node:path"));
9
- const parse_testcase_md_1 = require("../../core/parse-testcase-md");
10
- const api_1 = require("../../api");
11
- function parseRequirementId(value) {
12
- const n = Number.parseInt(value, 10);
13
- if (!Number.isFinite(n) || n < 1) {
14
- throw new Error(`无效的需求 ID: ${value}`);
15
- }
16
- return n;
17
- }
18
- function registerSetCommands(program) {
19
- const setCmd = program.command("set").description("向服务端提交本地资源");
20
- setCmd
21
- .command("requirement")
22
- .description("读取本地需求正文文件并同步到服务端(默认:.apm/workitems/<需求ID>/prd.md)")
23
- .argument("<id>", "需求 ID", parseRequirementId)
24
- .action(async (id) => {
25
- const filePath = node_path_1.default.join(process.cwd(), ".apm/workitems", String(id), "prd.md");
26
- if (!(0, node_fs_1.existsSync)(filePath)) {
27
- console.error(`未找到文件: ${filePath}`);
28
- process.exit(1);
29
- }
30
- const content = (0, node_fs_1.readFileSync)(filePath, "utf8");
31
- if (!content.trim()) {
32
- console.error("需求正文为空");
33
- process.exit(1);
34
- }
35
- const api = (0, api_1.createApmClient)();
36
- const res = await api.cli.resourceRequirementContentSet({ id, content });
37
- console.log(`需求正文已同步(id=${res.id}`);
38
- });
39
- setCmd
40
- .command("comment")
41
- .description("读取 .apm/workitems/<需求ID>/comment.md 并提交评审记录(写入服务端需求字段)")
42
- .argument("<id>", "需求 ID", parseRequirementId)
43
- .action(async (id) => {
44
- const commentPath = node_path_1.default.join(process.cwd(), ".apm/workitems", String(id), "comment.md");
45
- if (!(0, node_fs_1.existsSync)(commentPath)) {
46
- console.error(`未找到文件: ${commentPath}`);
47
- process.exit(1);
48
- }
49
- const content = (0, node_fs_1.readFileSync)(commentPath, "utf8");
50
- if (!content.trim()) {
51
- console.error("comment.md 内容为空");
52
- process.exit(1);
53
- }
54
- const api = (0, api_1.createApmClient)();
55
- await api.cli.resourceRequirementCommentSet({ id, content });
56
- console.log("评审记录已提交");
57
- });
58
- setCmd
59
- .command("testcase")
60
- .description("读取 .apm/workitems/<需求ID>/testcase.md,解析为用例并批量导入服务端")
61
- .argument("<id>", "需求 ID", parseRequirementId)
62
- .action(async (id) => {
63
- const filePath = node_path_1.default.join(process.cwd(), ".apm/workitems", String(id), "testcase.md");
64
- if (!(0, node_fs_1.existsSync)(filePath)) {
65
- console.error(`未找到文件: ${filePath}`);
66
- process.exit(1);
67
- }
68
- const raw = (0, node_fs_1.readFileSync)(filePath, "utf8");
69
- if (!raw.trim()) {
70
- console.error("testcase.md 内容为空");
71
- process.exit(1);
72
- }
73
- let items;
74
- try {
75
- items = (0, parse_testcase_md_1.parseTestcaseMarkdown)(raw);
76
- }
77
- catch (e) {
78
- const msg = e instanceof Error ? e.message : String(e);
79
- console.error(`解析 testcase.md 失败: ${msg}`);
80
- process.exit(1);
81
- }
82
- const api = (0, api_1.createApmClient)();
83
- const res = await api.cli.resourceRequirementTestCasesImport({
84
- requirementId: id,
85
- items,
86
- });
87
- console.log(`测试用例已导入 ${res.count} 条(requirementId=${id})`);
88
- });
89
- setCmd
90
- .command("branchName")
91
- .description("设置当前员工在本需求下对应开发者的分支名(branchName),并将状态置为开发中(DEVELOPING)")
92
- .argument("<id>", "需求 ID", parseRequirementId)
93
- .argument("<name>", "分支名称")
94
- .action(async (id, name) => {
95
- const api = (0, api_1.createApmClient)();
96
- const res = await api.cli.resourceRequirementDeveloperBranchNameSet({
97
- id,
98
- branchName: name,
99
- });
100
- console.log(`已设置分支「${res.branchName ?? name}」,开发者状态=${res.status}`);
101
- });
102
- }
103
- //# sourceMappingURL=set.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/cli/commands/set.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { Command } from "commander";
2
- export declare function registerStatusCommands(program: Command): void;
3
- //# sourceMappingURL=status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoBzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0B7D"}
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerStatusCommands = registerStatusCommands;
4
- const api_1 = require("../../api");
5
- function parseStatusEntity(value) {
6
- if (value === "defect" || value === "requirement") {
7
- return value;
8
- }
9
- throw new Error(`无效的实体类型: ${value},仅支持 defect / requirement`);
10
- }
11
- function parsePositiveInt(value, name) {
12
- const n = Number.parseInt(value, 10);
13
- if (!Number.isFinite(n) || n < 1) {
14
- throw new Error(`无效的${name}: ${value}`);
15
- }
16
- return n;
17
- }
18
- function registerStatusCommands(program) {
19
- program
20
- .command("status")
21
- .description("流转实体状态:defect 按当前状态自动推进(待处理→处理中→待验证);requirement:待开发→待测试")
22
- .argument("<entity>", "实体类型:defect | requirement", parseStatusEntity)
23
- .argument("<id>", "缺陷 ID(defect)或需求 ID(requirement)")
24
- .action(async (entity, id) => {
25
- const api = (0, api_1.createApmClient)();
26
- if (entity === "defect") {
27
- const res = await api.cli.statusSet({
28
- entity,
29
- defectId: id,
30
- });
31
- console.log(`缺陷状态已流转:${res.id} -> ${res.status}`);
32
- return;
33
- }
34
- const requirementId = parsePositiveInt(id, "需求 ID");
35
- const res = await api.cli.statusSet({
36
- entity,
37
- requirementId,
38
- });
39
- console.log(`需求状态已流转:${res.id} -> ${res.status}`);
40
- });
41
- }
42
- //# sourceMappingURL=status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":";;AAoBA,wDA0BC;AA7CD,mCAA4C;AAI5C,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,2BAA2B,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa,EAAE,IAAY;IACnD,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CACV,0DAA0D,CAC3D;SACA,QAAQ,CAAC,UAAU,EAAE,2BAA2B,EAAE,iBAAiB,CAAC;SACpE,QAAQ,CAAC,MAAM,EAAE,kCAAkC,CAAC;SACpD,MAAM,CAAC,KAAK,EAAE,MAAoB,EAAE,EAAU,EAAE,EAAE;QACjD,MAAM,GAAG,GAAG,IAAA,qBAAe,GAAE,CAAC;QAE9B,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;gBAClC,MAAM;gBACN,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAClD,OAAO;QACT,CAAC;QACD,MAAM,aAAa,GAAG,gBAAgB,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC;YAClC,MAAM;YACN,aAAa;SACd,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Command } from "commander";
2
- export declare function registerUpdateCommands(program: Command): void;
3
- //# sourceMappingURL=update.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4B7D"}
@@ -1,36 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerUpdateCommands = registerUpdateCommands;
4
- const node_child_process_1 = require("node:child_process");
5
- const constants_1 = require("../../core/constants");
6
- function npmExecutable() {
7
- return process.platform === "win32" ? "npm.cmd" : "npm";
8
- }
9
- function registerUpdateCommands(program) {
10
- program
11
- .command("update")
12
- .description(`通过 npm 全局安装本 CLI 的最新版本(npm install -g ${constants_1.PACKAGE_NAME}@latest)`)
13
- .action(async () => {
14
- const name = constants_1.PACKAGE_NAME;
15
- const args = ["install", "-g", `${name}@latest`];
16
- const child = (0, node_child_process_1.spawn)(npmExecutable(), args, {
17
- stdio: "inherit",
18
- shell: false,
19
- });
20
- await new Promise((resolve, reject) => {
21
- child.on("error", reject);
22
- child.on("close", (code, signal) => {
23
- if (signal) {
24
- reject(new Error(`npm 被信号终止: ${signal}`));
25
- return;
26
- }
27
- if (code === 0) {
28
- resolve();
29
- return;
30
- }
31
- reject(new Error(`npm 退出码 ${code ?? "unknown"}`));
32
- });
33
- });
34
- });
35
- }
36
- //# sourceMappingURL=update.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":";;AAQA,wDA4BC;AApCD,2DAA2C;AAE3C,oDAAoD;AAEpD,SAAS,aAAa;IACpB,OAAO,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CACV,yCAAyC,wBAAY,UAAU,CAChE;SACA,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,MAAM,IAAI,GAAG,wBAAY,CAAC;QAC1B,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,aAAa,EAAE,EAAE,IAAI,EAAE;YACzC,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBACjC,IAAI,MAAM,EAAE,CAAC;oBACX,MAAM,CAAC,IAAI,KAAK,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC,CAAC;oBAC1C,OAAO;gBACT,CAAC;gBACD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,EAAE,CAAC;oBACV,OAAO;gBACT,CAAC;gBACD,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { Command } from "commander";
2
- export declare function registerWsCommands(program: Command): void;
3
- //# sourceMappingURL=ws.d.ts.map
@@ -1 +0,0 @@
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;AAGzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmBzD"}
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.registerWsCommands = registerWsCommands;
4
- const ws_client_1 = require("../../core/ws-client");
5
- function registerWsCommands(program) {
6
- program
7
- .command("connect")
8
- .description("启动员工 WebSocket 客户端(Ctrl+C 退出)")
9
- .option("--debug", "启用调试日志输出")
10
- .action((opts) => {
11
- const ws = new ws_client_1.EmployeeWebSocketClient({ debug: Boolean(opts.debug) });
12
- const shutdown = () => {
13
- try {
14
- ws.close();
15
- }
16
- catch {
17
- /* ignore */
18
- }
19
- process.exit(0);
20
- };
21
- process.once("SIGINT", shutdown);
22
- process.once("SIGTERM", shutdown);
23
- });
24
- }
25
- //# sourceMappingURL=ws.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ws.js","sourceRoot":"","sources":["../../../src/cli/commands/ws.ts"],"names":[],"mappings":";;AAGA,gDAmBC;AArBD,oDAA+D;AAE/D,SAAgB,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC;SAC7B,MAAM,CAAC,CAAC,IAAyB,EAAE,EAAE;QACpC,MAAM,EAAE,GAAG,IAAI,mCAAuB,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEvE,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,IAAI,CAAC;gBACH,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,30 +0,0 @@
1
- export type CliCredentials = {
2
- baseUrl: string;
3
- token: string;
4
- employeeId: number;
5
- };
6
- /** 由根命令 preAction 在通过校验后调用;config / login / logout 不调用 */
7
- export declare function setActiveCliCredentials(credentials: CliCredentials | null): void;
8
- export declare function resolveEffectiveCredentials(): CliCredentials | {
9
- error: string;
10
- };
11
- export declare function getActiveCliCredentials(): CliCredentials;
12
- export declare function apiClient(): import("listpage-http").ApiClient<{
13
- readonly auth: {
14
- readonly loginByEmployee: import("listpage-http").EndpointConfig<import("..").ReqLoginByEmployee, import("..").ResLoginByEmployee>;
15
- };
16
- readonly requirement: {
17
- readonly commentsSubmitPending: import("listpage-http").EndpointConfig<import("..").ReqCommentSubmitPending, import("..").RequirementCommentRow>;
18
- readonly commentsProcessPendingAndVersion: import("listpage-http").EndpointConfig<import("..").ReqCommentProcessPendingAndVersion, import("..").ResCommentProcessPendingAndVersion>;
19
- readonly testCasesCreateBatch: import("listpage-http").EndpointConfig<import("..").ReqTestCaseCreate[], import("..").RequirementTestCaseRow[]>;
20
- readonly branchesList: import("listpage-http").EndpointConfig<import("..").ReqBranchList, import("..").RequirementBranchRow[]>;
21
- readonly branchesUpdate: import("listpage-http").EndpointConfig<import("..").ReqBranchUpdate, import("..").RequirementBranchRow>;
22
- readonly defectsUpdate: import("listpage-http").EndpointConfig<import("..").ReqDefectUpdate, import("..").RequirementDefectRow>;
23
- readonly versionsList: import("listpage-http").EndpointConfig<import("..").ReqVersionList, import("..").RequirementVersionRow[]>;
24
- };
25
- readonly instructionLog: {
26
- readonly create: import("listpage-http").EndpointConfig<import("../api/requirement").ReqInstructionLogCreate, import("../api/requirement").ResInstructionLogCreate>;
27
- readonly update: import("listpage-http").EndpointConfig<import("../api/requirement").ReqInstructionLogUpdate, import("../api/requirement").ResInstructionLogUpdate>;
28
- };
29
- }>;
30
- //# sourceMappingURL=credentials.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/cli/credentials.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAIF,0DAA0D;AAC1D,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,cAAc,GAAG,IAAI,GACjC,IAAI,CAEN;AAED,wBAAgB,2BAA2B,IACvC,cAAc,GACd;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAmBpB;AAED,wBAAgB,uBAAuB,IAAI,cAAc,CAMxD;AAED,wBAAgB,SAAS;;;;;;;;;;;;;;;;;GAOxB"}
@@ -1,52 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setActiveCliCredentials = setActiveCliCredentials;
4
- exports.resolveEffectiveCredentials = resolveEffectiveCredentials;
5
- exports.getActiveCliCredentials = getActiveCliCredentials;
6
- exports.apiClient = apiClient;
7
- /**
8
- * 单次 `apm <子命令>` 进程内:preAction 从配置文件解析出凭证后写入 `activeCliCredentials`,
9
- * 供本进程内后续多次 HTTP 复用(避免同一条命令里重复读配置)。不是服务端 Session,进程退出即失效。
10
- */
11
- const client_1 = require("../api/client");
12
- const config_store_1 = require("../config-store");
13
- let activeCliCredentials = null;
14
- /** 由根命令 preAction 在通过校验后调用;config / login / logout 不调用 */
15
- function setActiveCliCredentials(credentials) {
16
- activeCliCredentials = credentials;
17
- }
18
- function resolveEffectiveCredentials() {
19
- const cfg = (0, config_store_1.readApmConfigSync)();
20
- const baseUrlRaw = cfg.baseUrl?.trim() || "";
21
- const baseUrl = baseUrlRaw ? (0, config_store_1.normalizeBaseUrl)(baseUrlRaw) : "";
22
- const token = cfg.token?.trim() || "";
23
- const empRaw = cfg.employeeId != null ? String(cfg.employeeId) : "";
24
- const employeeId = Number.parseInt(empRaw, 10);
25
- if (!baseUrl) {
26
- return {
27
- error: "请配置服务地址:apm config set base-url <url>",
28
- };
29
- }
30
- if (!token || !Number.isFinite(employeeId) || employeeId < 1) {
31
- return {
32
- error: "请执行 apm login,将 token 与 employeeId 写入配置文件",
33
- };
34
- }
35
- return { baseUrl, token, employeeId };
36
- }
37
- function getActiveCliCredentials() {
38
- if (!activeCliCredentials) {
39
- console.error("内部错误:本命令未在 preAction 中注入凭证");
40
- process.exit(1);
41
- }
42
- return activeCliCredentials;
43
- }
44
- function apiClient() {
45
- const c = getActiveCliCredentials();
46
- return (0, client_1.createApmClient)({
47
- baseUrl: c.baseUrl,
48
- token: c.token,
49
- employeeId: c.employeeId,
50
- });
51
- }
52
- //# sourceMappingURL=credentials.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/cli/credentials.ts"],"names":[],"mappings":";;AAmBA,0DAIC;AAED,kEAqBC;AAED,0DAMC;AAED,8BAOC;AA/DD;;;GAGG;AACH,0CAAgD;AAChD,kDAGyB;AAQzB,IAAI,oBAAoB,GAA0B,IAAI,CAAC;AAEvD,0DAA0D;AAC1D,SAAgB,uBAAuB,CACrC,WAAkC;IAElC,oBAAoB,GAAG,WAAW,CAAC;AACrC,CAAC;AAED,SAAgB,2BAA2B;IAGzC,MAAM,GAAG,GAAG,IAAA,gCAAiB,GAAE,CAAC;IAChC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAA,+BAAgB,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACtC,MAAM,MAAM,GACV,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE,uCAAuC;SAC/C,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QAC7D,OAAO;YACL,KAAK,EAAE,2CAA2C;SACnD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACxC,CAAC;AAED,SAAgB,uBAAuB;IACrC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAED,SAAgB,SAAS;IACvB,MAAM,CAAC,GAAG,uBAAuB,EAAE,CAAC;IACpC,OAAO,IAAA,wBAAe,EAAC;QACrB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,KAAK,EAAE,CAAC,CAAC,KAAK;QACd,UAAU,EAAE,CAAC,CAAC,UAAU;KACzB,CAAC,CAAC;AACL,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function exitApiError(err: unknown): never;
2
- //# sourceMappingURL=exit-api-error.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exit-api-error.d.ts","sourceRoot":"","sources":["../../src/cli/exit-api-error.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAchD"}
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.exitApiError = exitApiError;
4
- const listpage_http_1 = require("listpage-http");
5
- function exitApiError(err) {
6
- if (err instanceof listpage_http_1.ApiError) {
7
- console.error(`接口错误 [${err.code}]: ${err.message}`);
8
- if (err.code === -1) {
9
- if (err.url) {
10
- console.error(`请求: ${err.method ?? "GET"} ${err.url}`);
11
- }
12
- console.error("网络层失败(未收到 HTTP 响应)。请检查:1) 后端是否已启动;2) `apm config get base-url` 是否为可访问的根地址(含协议与端口,与浏览器能打开的地址一致);3) 本机代理/VPN/防火墙是否拦截。可执行 `apm login --url <正确根地址>` 后重试。");
13
- }
14
- process.exit(1);
15
- }
16
- throw err;
17
- }
18
- //# sourceMappingURL=exit-api-error.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exit-api-error.js","sourceRoot":"","sources":["../../src/cli/exit-api-error.ts"],"names":[],"mappings":";;AAEA,oCAcC;AAhBD,iDAAyC;AAEzC,SAAgB,YAAY,CAAC,GAAY;IACvC,IAAI,GAAG,YAAY,wBAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;gBACZ,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,MAAM,IAAI,KAAK,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,CAAC,KAAK,CACX,uJAAuJ,CACxJ,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,GAAG,CAAC;AACZ,CAAC"}
@@ -1,31 +0,0 @@
1
- import type { AgentAggregatedLog } from "./agent-stream-log";
2
- export type InstructionLogStreamSink = {
3
- openSegment: (payload: AgentAggregatedLog) => Promise<number | null>;
4
- patchSegment: (id: number, payload: AgentAggregatedLog) => void;
5
- closeSegment: (id: number, payload: AgentAggregatedLog) => Promise<void>;
6
- /** 非聚合 JSON(如 parseError、stderr)仅创建一条 */
7
- pushRaw: (payload: unknown) => void;
8
- };
9
- /**
10
- * 创建指令日志 sink:首次 open 走 create(返回 id),增量 patch 节流调用 update,close 立即 update 并清空节流队列。
11
- */
12
- export declare function createThrottledInstructionLogSink(params: {
13
- requirementId: number;
14
- sessionId: string;
15
- instructionName: string;
16
- logTypeFor: (payload: unknown) => "INFO" | "WARN" | "ERROR" | "DEBUG";
17
- create: (input: {
18
- requirementId: number;
19
- sessionId: string;
20
- logType: "INFO" | "WARN" | "ERROR" | "DEBUG";
21
- instructionName: string;
22
- payload: unknown;
23
- }) => Promise<number | null>;
24
- update: (input: {
25
- id: number;
26
- payload: unknown;
27
- }) => Promise<void>;
28
- /** 默认 400ms */
29
- throttleMs?: number;
30
- }): InstructionLogStreamSink;
31
- //# sourceMappingURL=instruction-log-stream-sink.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"instruction-log-stream-sink.d.ts","sourceRoot":"","sources":["../../src/cli/instruction-log-stream-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACrE,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAChE,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,yCAAyC;IACzC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE;IACxD,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACtE,MAAM,EAAE,CAAC,KAAK,EAAE;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;QAC7C,eAAe,EAAE,MAAM,CAAC;QACxB,OAAO,EAAE,OAAO,CAAC;KAClB,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7B,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,eAAe;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,wBAAwB,CAwD3B"}