ai-project-manage-cli 2.0.26 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/dist/index.js +500 -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/skills/apm-review/SKILL.md +38 -0
  6. package/template/skills/apm-review/apm-review-reference.md +89 -0
  7. package/template/workitems/README.md +19 -0
  8. package/README.md +0 -171
  9. package/dist/api/cli.d.ts +0 -228
  10. package/dist/api/cli.d.ts.map +0 -1
  11. package/dist/api/cli.js +0 -3
  12. package/dist/api/cli.js.map +0 -1
  13. package/dist/api/client.d.ts +0 -5
  14. package/dist/api/client.d.ts.map +0 -1
  15. package/dist/api/client.js +0 -30
  16. package/dist/api/client.js.map +0 -1
  17. package/dist/api/http.d.ts +0 -21
  18. package/dist/api/http.d.ts.map +0 -1
  19. package/dist/api/http.js +0 -108
  20. package/dist/api/http.js.map +0 -1
  21. package/dist/api/index.d.ts +0 -6
  22. package/dist/api/index.d.ts.map +0 -1
  23. package/dist/api/index.js +0 -13
  24. package/dist/api/index.js.map +0 -1
  25. package/dist/api/request-config.d.ts +0 -25
  26. package/dist/api/request-config.d.ts.map +0 -1
  27. package/dist/api/request-config.js +0 -73
  28. package/dist/api/request-config.js.map +0 -1
  29. package/dist/api/requirement.d.ts +0 -1
  30. package/dist/api/requirement.d.ts.map +0 -1
  31. package/dist/api/requirement.js +0 -2
  32. package/dist/api/requirement.js.map +0 -1
  33. package/dist/apm-dotenv.d.ts +0 -8
  34. package/dist/apm-dotenv.d.ts.map +0 -1
  35. package/dist/apm-dotenv.js +0 -73
  36. package/dist/apm-dotenv.js.map +0 -1
  37. package/dist/cli/agent-stream-log.d.ts +0 -41
  38. package/dist/cli/agent-stream-log.d.ts.map +0 -1
  39. package/dist/cli/agent-stream-log.js +0 -364
  40. package/dist/cli/agent-stream-log.js.map +0 -1
  41. package/dist/cli/commands/auth.d.ts +0 -3
  42. package/dist/cli/commands/auth.d.ts.map +0 -1
  43. package/dist/cli/commands/auth.js +0 -51
  44. package/dist/cli/commands/auth.js.map +0 -1
  45. package/dist/cli/commands/chat.d.ts +0 -3
  46. package/dist/cli/commands/chat.d.ts.map +0 -1
  47. package/dist/cli/commands/chat.js +0 -32
  48. package/dist/cli/commands/chat.js.map +0 -1
  49. package/dist/cli/commands/comment.d.ts +0 -3
  50. package/dist/cli/commands/comment.d.ts.map +0 -1
  51. package/dist/cli/commands/comment.js +0 -66
  52. package/dist/cli/commands/comment.js.map +0 -1
  53. package/dist/cli/commands/config.d.ts +0 -3
  54. package/dist/cli/commands/config.d.ts.map +0 -1
  55. package/dist/cli/commands/config.js +0 -39
  56. package/dist/cli/commands/config.js.map +0 -1
  57. package/dist/cli/commands/deploy-backend.d.ts +0 -7
  58. package/dist/cli/commands/deploy-backend.d.ts.map +0 -1
  59. package/dist/cli/commands/deploy-backend.js +0 -77
  60. package/dist/cli/commands/deploy-backend.js.map +0 -1
  61. package/dist/cli/commands/deploy-frontend.d.ts +0 -3
  62. package/dist/cli/commands/deploy-frontend.d.ts.map +0 -1
  63. package/dist/cli/commands/deploy-frontend.js +0 -167
  64. package/dist/cli/commands/deploy-frontend.js.map +0 -1
  65. package/dist/cli/commands/get.d.ts +0 -3
  66. package/dist/cli/commands/get.d.ts.map +0 -1
  67. package/dist/cli/commands/get.js +0 -145
  68. package/dist/cli/commands/get.js.map +0 -1
  69. package/dist/cli/commands/init.d.ts +0 -3
  70. package/dist/cli/commands/init.d.ts.map +0 -1
  71. package/dist/cli/commands/init.js +0 -179
  72. package/dist/cli/commands/init.js.map +0 -1
  73. package/dist/cli/commands/minio.d.ts +0 -3
  74. package/dist/cli/commands/minio.d.ts.map +0 -1
  75. package/dist/cli/commands/minio.js +0 -65
  76. package/dist/cli/commands/minio.js.map +0 -1
  77. package/dist/cli/commands/publish.d.ts +0 -3
  78. package/dist/cli/commands/publish.d.ts.map +0 -1
  79. package/dist/cli/commands/publish.js +0 -130
  80. package/dist/cli/commands/publish.js.map +0 -1
  81. package/dist/cli/commands/release.d.ts +0 -3
  82. package/dist/cli/commands/release.d.ts.map +0 -1
  83. package/dist/cli/commands/release.js +0 -37
  84. package/dist/cli/commands/release.js.map +0 -1
  85. package/dist/cli/commands/requirement.d.ts +0 -3
  86. package/dist/cli/commands/requirement.d.ts.map +0 -1
  87. package/dist/cli/commands/requirement.js +0 -169
  88. package/dist/cli/commands/requirement.js.map +0 -1
  89. package/dist/cli/commands/set.d.ts +0 -3
  90. package/dist/cli/commands/set.d.ts.map +0 -1
  91. package/dist/cli/commands/set.js +0 -103
  92. package/dist/cli/commands/set.js.map +0 -1
  93. package/dist/cli/commands/status.d.ts +0 -3
  94. package/dist/cli/commands/status.d.ts.map +0 -1
  95. package/dist/cli/commands/status.js +0 -42
  96. package/dist/cli/commands/status.js.map +0 -1
  97. package/dist/cli/commands/update.d.ts +0 -3
  98. package/dist/cli/commands/update.d.ts.map +0 -1
  99. package/dist/cli/commands/update.js +0 -36
  100. package/dist/cli/commands/update.js.map +0 -1
  101. package/dist/cli/commands/ws.d.ts +0 -3
  102. package/dist/cli/commands/ws.d.ts.map +0 -1
  103. package/dist/cli/commands/ws.js +0 -25
  104. package/dist/cli/commands/ws.js.map +0 -1
  105. package/dist/cli/credentials.d.ts +0 -30
  106. package/dist/cli/credentials.d.ts.map +0 -1
  107. package/dist/cli/credentials.js +0 -52
  108. package/dist/cli/credentials.js.map +0 -1
  109. package/dist/cli/exit-api-error.d.ts +0 -2
  110. package/dist/cli/exit-api-error.d.ts.map +0 -1
  111. package/dist/cli/exit-api-error.js +0 -18
  112. package/dist/cli/exit-api-error.js.map +0 -1
  113. package/dist/cli/instruction-log-stream-sink.d.ts +0 -31
  114. package/dist/cli/instruction-log-stream-sink.d.ts.map +0 -1
  115. package/dist/cli/instruction-log-stream-sink.js +0 -59
  116. package/dist/cli/instruction-log-stream-sink.js.map +0 -1
  117. package/dist/cli/session.d.ts +0 -26
  118. package/dist/cli/session.d.ts.map +0 -1
  119. package/dist/cli/session.js +0 -41
  120. package/dist/cli/session.js.map +0 -1
  121. package/dist/cli/utils/parse.d.ts +0 -2
  122. package/dist/cli/utils/parse.d.ts.map +0 -1
  123. package/dist/cli/utils/parse.js +0 -12
  124. package/dist/cli/utils/parse.js.map +0 -1
  125. package/dist/cli/ws-run-command.d.ts +0 -13
  126. package/dist/cli/ws-run-command.d.ts.map +0 -1
  127. package/dist/cli/ws-run-command.js +0 -330
  128. package/dist/cli/ws-run-command.js.map +0 -1
  129. package/dist/cli-version.d.ts +0 -9
  130. package/dist/cli-version.d.ts.map +0 -1
  131. package/dist/cli-version.js +0 -61
  132. package/dist/cli-version.js.map +0 -1
  133. package/dist/cli.d.ts +0 -3
  134. package/dist/cli.d.ts.map +0 -1
  135. package/dist/cli.js +0 -36
  136. package/dist/cli.js.map +0 -1
  137. package/dist/config-store.d.ts +0 -38
  138. package/dist/config-store.d.ts.map +0 -1
  139. package/dist/config-store.js +0 -131
  140. package/dist/config-store.js.map +0 -1
  141. package/dist/core/apm-config.d.ts +0 -81
  142. package/dist/core/apm-config.d.ts.map +0 -1
  143. package/dist/core/apm-config.js +0 -147
  144. package/dist/core/apm-config.js.map +0 -1
  145. package/dist/core/backend-deploy/backend-deploy-workflow.d.ts +0 -20
  146. package/dist/core/backend-deploy/backend-deploy-workflow.d.ts.map +0 -1
  147. package/dist/core/backend-deploy/backend-deploy-workflow.js +0 -86
  148. package/dist/core/backend-deploy/backend-deploy-workflow.js.map +0 -1
  149. package/dist/core/backend-deploy/command-runner.d.ts +0 -11
  150. package/dist/core/backend-deploy/command-runner.d.ts.map +0 -1
  151. package/dist/core/backend-deploy/command-runner.js +0 -47
  152. package/dist/core/backend-deploy/command-runner.js.map +0 -1
  153. package/dist/core/backend-deploy/dockerode-client/client.d.ts +0 -18
  154. package/dist/core/backend-deploy/dockerode-client/client.d.ts.map +0 -1
  155. package/dist/core/backend-deploy/dockerode-client/client.js +0 -114
  156. package/dist/core/backend-deploy/dockerode-client/client.js.map +0 -1
  157. package/dist/core/backend-deploy/dockerode-client/connection-options.d.ts +0 -6
  158. package/dist/core/backend-deploy/dockerode-client/connection-options.d.ts.map +0 -1
  159. package/dist/core/backend-deploy/dockerode-client/connection-options.js +0 -62
  160. package/dist/core/backend-deploy/dockerode-client/connection-options.js.map +0 -1
  161. package/dist/core/backend-deploy/dockerode-client/container-inspect-format.d.ts +0 -3
  162. package/dist/core/backend-deploy/dockerode-client/container-inspect-format.d.ts.map +0 -1
  163. package/dist/core/backend-deploy/dockerode-client/container-inspect-format.js +0 -23
  164. package/dist/core/backend-deploy/dockerode-client/container-inspect-format.js.map +0 -1
  165. package/dist/core/backend-deploy/dockerode-client/container-options.d.ts +0 -4
  166. package/dist/core/backend-deploy/dockerode-client/container-options.d.ts.map +0 -1
  167. package/dist/core/backend-deploy/dockerode-client/container-options.js +0 -44
  168. package/dist/core/backend-deploy/dockerode-client/container-options.js.map +0 -1
  169. package/dist/core/backend-deploy/dockerode-client/env.d.ts +0 -3
  170. package/dist/core/backend-deploy/dockerode-client/env.d.ts.map +0 -1
  171. package/dist/core/backend-deploy/dockerode-client/env.js +0 -40
  172. package/dist/core/backend-deploy/dockerode-client/env.js.map +0 -1
  173. package/dist/core/backend-deploy/dockerode-client/index.d.ts +0 -8
  174. package/dist/core/backend-deploy/dockerode-client/index.d.ts.map +0 -1
  175. package/dist/core/backend-deploy/dockerode-client/index.js +0 -17
  176. package/dist/core/backend-deploy/dockerode-client/index.js.map +0 -1
  177. package/dist/core/backend-deploy/dockerode-client/ports.d.ts +0 -9
  178. package/dist/core/backend-deploy/dockerode-client/ports.d.ts.map +0 -1
  179. package/dist/core/backend-deploy/dockerode-client/ports.js +0 -35
  180. package/dist/core/backend-deploy/dockerode-client/ports.js.map +0 -1
  181. package/dist/core/backend-deploy/dockerode-client/runtime.d.ts +0 -7
  182. package/dist/core/backend-deploy/dockerode-client/runtime.d.ts.map +0 -1
  183. package/dist/core/backend-deploy/dockerode-client/runtime.js +0 -26
  184. package/dist/core/backend-deploy/dockerode-client/runtime.js.map +0 -1
  185. package/dist/core/backend-deploy/dockerode-client/types.d.ts +0 -64
  186. package/dist/core/backend-deploy/dockerode-client/types.d.ts.map +0 -1
  187. package/dist/core/backend-deploy/dockerode-client/types.js +0 -3
  188. package/dist/core/backend-deploy/dockerode-client/types.js.map +0 -1
  189. package/dist/core/backend-deploy/image-tag.d.ts +0 -2
  190. package/dist/core/backend-deploy/image-tag.d.ts.map +0 -1
  191. package/dist/core/backend-deploy/image-tag.js +0 -15
  192. package/dist/core/backend-deploy/image-tag.js.map +0 -1
  193. package/dist/core/backend-deploy/index.d.ts +0 -3
  194. package/dist/core/backend-deploy/index.d.ts.map +0 -1
  195. package/dist/core/backend-deploy/index.js +0 -6
  196. package/dist/core/backend-deploy/index.js.map +0 -1
  197. package/dist/core/backend-deploy/local-docker-build.d.ts +0 -8
  198. package/dist/core/backend-deploy/local-docker-build.d.ts.map +0 -1
  199. package/dist/core/backend-deploy/local-docker-build.js +0 -25
  200. package/dist/core/backend-deploy/local-docker-build.js.map +0 -1
  201. package/dist/core/backend-deploy/logger.d.ts +0 -10
  202. package/dist/core/backend-deploy/logger.d.ts.map +0 -1
  203. package/dist/core/backend-deploy/logger.js +0 -22
  204. package/dist/core/backend-deploy/logger.js.map +0 -1
  205. package/dist/core/backend-deploy/registry-login-push.d.ts +0 -24
  206. package/dist/core/backend-deploy/registry-login-push.d.ts.map +0 -1
  207. package/dist/core/backend-deploy/registry-login-push.js +0 -37
  208. package/dist/core/backend-deploy/registry-login-push.js.map +0 -1
  209. package/dist/core/backend-deploy/remote-docker-client.d.ts +0 -11
  210. package/dist/core/backend-deploy/remote-docker-client.d.ts.map +0 -1
  211. package/dist/core/backend-deploy/remote-docker-client.js +0 -34
  212. package/dist/core/backend-deploy/remote-docker-client.js.map +0 -1
  213. package/dist/core/backend-deploy/remote-pull-image.d.ts +0 -9
  214. package/dist/core/backend-deploy/remote-pull-image.d.ts.map +0 -1
  215. package/dist/core/backend-deploy/remote-pull-image.js +0 -39
  216. package/dist/core/backend-deploy/remote-pull-image.js.map +0 -1
  217. package/dist/core/backend-deploy/resolve-dockerfile.d.ts +0 -7
  218. package/dist/core/backend-deploy/resolve-dockerfile.d.ts.map +0 -1
  219. package/dist/core/backend-deploy/resolve-dockerfile.js +0 -24
  220. package/dist/core/backend-deploy/resolve-dockerfile.js.map +0 -1
  221. package/dist/core/backend-deploy/run-docker-cli.d.ts +0 -9
  222. package/dist/core/backend-deploy/run-docker-cli.d.ts.map +0 -1
  223. package/dist/core/backend-deploy/run-docker-cli.js +0 -14
  224. package/dist/core/backend-deploy/run-docker-cli.js.map +0 -1
  225. package/dist/core/backend-deploy/types.d.ts +0 -23
  226. package/dist/core/backend-deploy/types.d.ts.map +0 -1
  227. package/dist/core/backend-deploy/types.js +0 -3
  228. package/dist/core/backend-deploy/types.js.map +0 -1
  229. package/dist/core/branch-name.d.ts +0 -8
  230. package/dist/core/branch-name.d.ts.map +0 -1
  231. package/dist/core/branch-name.js +0 -37
  232. package/dist/core/branch-name.js.map +0 -1
  233. package/dist/core/constants.d.ts +0 -4
  234. package/dist/core/constants.d.ts.map +0 -1
  235. package/dist/core/constants.js +0 -16
  236. package/dist/core/constants.js.map +0 -1
  237. package/dist/core/cursor-cmd.d.ts +0 -30
  238. package/dist/core/cursor-cmd.d.ts.map +0 -1
  239. package/dist/core/cursor-cmd.js +0 -193
  240. package/dist/core/cursor-cmd.js.map +0 -1
  241. package/dist/core/minio.d.ts +0 -37
  242. package/dist/core/minio.d.ts.map +0 -1
  243. package/dist/core/minio.js +0 -159
  244. package/dist/core/minio.js.map +0 -1
  245. package/dist/core/parse-testcase-md.d.ts +0 -17
  246. package/dist/core/parse-testcase-md.d.ts.map +0 -1
  247. package/dist/core/parse-testcase-md.js +0 -79
  248. package/dist/core/parse-testcase-md.js.map +0 -1
  249. package/dist/core/std-event-handler.d.ts +0 -25
  250. package/dist/core/std-event-handler.d.ts.map +0 -1
  251. package/dist/core/std-event-handler.js +0 -90
  252. package/dist/core/std-event-handler.js.map +0 -1
  253. package/dist/core/utils.d.ts +0 -19
  254. package/dist/core/utils.d.ts.map +0 -1
  255. package/dist/core/utils.js +0 -71
  256. package/dist/core/utils.js.map +0 -1
  257. package/dist/core/ws-client.d.ts +0 -29
  258. package/dist/core/ws-client.d.ts.map +0 -1
  259. package/dist/core/ws-client.js +0 -81
  260. package/dist/core/ws-client.js.map +0 -1
  261. package/dist/employee-ws-client.d.ts +0 -42
  262. package/dist/employee-ws-client.d.ts.map +0 -1
  263. package/dist/employee-ws-client.js +0 -99
  264. package/dist/employee-ws-client.js.map +0 -1
  265. package/dist/index.d.ts +0 -6
  266. package/dist/index.d.ts.map +0 -1
  267. package/dist/index.js.map +0 -1
  268. package/templates/commands/apm-auto-dev.md +0 -6
  269. package/templates/commands/apm-fixbug.md +0 -6
  270. package/templates/commands/apm-prd-review.md +0 -6
  271. package/templates/commands/apm-prd-sync.md +0 -6
  272. package/templates/skills/apm-apply-change/SKILL.md +0 -191
  273. package/templates/skills/apm-auto-dev/SKILL.md +0 -170
  274. package/templates/skills/apm-fixbug/SKILL.md +0 -97
  275. package/templates/skills/apm-propose/SKILL.md +0 -123
  276. package/templates/skills/apm-propose/design-instruction.md +0 -94
  277. package/templates/skills/apm-propose/propose-instruction.md +0 -81
  278. package/templates/skills/apm-propose/specs-instruction.md +0 -114
  279. package/templates/skills/apm-propose/tasks-instruction.md +0 -90
  280. package/templates/skills/apm-release/SKILL.md +0 -87
  281. package/templates/skills/code-change-summary/SKILL.md +0 -84
  282. package/templates/skills/code-change-summary/summary-template.md +0 -55
  283. package/templates/skills/code-deploy/SKILL.md +0 -39
  284. package/templates/skills/prd-review/SKILL.md +0 -48
  285. package/templates/skills/prd-review/output-template.md +0 -47
  286. package/templates/skills/prd-sync/SKILL.md +0 -74
  287. package/templates/skills/prd-sync/updated-requirement-template.md +0 -39
  288. package/templates/skills/prd-testcase/SKILL.md +0 -82
  289. package/templates/skills/prd-testcase/reference.md +0 -44
  290. package/templates/skills/product-capability-inventory/SKILL.md +0 -131
  291. package/templates/skills/product-capability-inventory/template.md +0 -80
  292. package/templates/skills/product-capability-inventory//344/275/277/347/224/250/350/257/264/346/230/216/344/271/246.md +0 -36
  293. package/templates/skills/product-capability-inventory//347/233/256/345/275/225/350/247/204/350/214/203.md +0 -58
@@ -1,34 +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.createRemoteDockerClient = createRemoteDockerClient;
7
- const node_fs_1 = require("node:fs");
8
- const dockerode_1 = __importDefault(require("dockerode"));
9
- /**
10
- * 根据 TLS 选项创建连接**远程** Docker 守护进程的 dockerode 客户端。
11
- *
12
- * - 若提供 ca/cert/key 路径,则读取为 Buffer 传入 Modem(与 `docker --host` 使用证书场景一致)。
13
- * - 仅内网 HTTP 且无需证书时,可只设置 protocol: 'http',不传 ca/cert/key。
14
- */
15
- function createRemoteDockerClient(options) {
16
- const protocol = options.protocol ?? "https";
17
- const modemOpts = {
18
- host: options.host,
19
- port: options.port,
20
- protocol,
21
- socketPath: options.socketPath || "/var/run/docker.sock",
22
- };
23
- if (options.caPath) {
24
- modemOpts.ca = (0, node_fs_1.readFileSync)(options.caPath);
25
- }
26
- if (options.certPath) {
27
- modemOpts.cert = (0, node_fs_1.readFileSync)(options.certPath);
28
- }
29
- if (options.keyPath) {
30
- modemOpts.key = (0, node_fs_1.readFileSync)(options.keyPath);
31
- }
32
- return new dockerode_1.default(modemOpts);
33
- }
34
- //# sourceMappingURL=remote-docker-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-docker-client.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/remote-docker-client.ts"],"names":[],"mappings":";;;;;AAcA,4DAuBC;AArCD,qCAAuC;AAEvC,0DAA+B;AAM/B;;;;;GAKG;AACH,SAAgB,wBAAwB,CACtC,OAA+B;IAE/B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC;IAE7C,MAAM,SAAS,GAAyB;QACtC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ;QACR,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,sBAAsB;KACzD,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,SAAS,CAAC,EAAE,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,SAAS,CAAC,IAAI,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,SAAS,CAAC,GAAG,GAAG,IAAA,sBAAY,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,mBAAM,CAAC,SAAS,CAAC,CAAC;AAC/B,CAAC"}
@@ -1,9 +0,0 @@
1
- import Docker from "dockerode";
2
- import type { RemotePullRegistryAuth } from "./types";
3
- /**
4
- * 在远程 Docker 上拉取镜像(`docker pull` 的 API 等价物),并等待拉取流结束。
5
- *
6
- * 私有仓库拉取需在远程引擎侧提供 authconfig(与本地 `docker login` 写入的认证类似)。
7
- */
8
- export declare function pullImageOnRemote(docker: Docker, imageRef: string, auth?: RemotePullRegistryAuth): Promise<void>;
9
- //# sourceMappingURL=remote-pull-image.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-pull-image.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/remote-pull-image.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAStD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,sBAAsB,GAC5B,OAAO,CAAC,IAAI,CAAC,CAiCf"}
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.pullImageOnRemote = pullImageOnRemote;
4
- /**
5
- * 在远程 Docker 上拉取镜像(`docker pull` 的 API 等价物),并等待拉取流结束。
6
- *
7
- * 私有仓库拉取需在远程引擎侧提供 authconfig(与本地 `docker login` 写入的认证类似)。
8
- */
9
- function pullImageOnRemote(docker, imageRef, auth) {
10
- return new Promise((resolve, reject) => {
11
- const authConfig = auth
12
- ? {
13
- username: auth.username,
14
- password: auth.password,
15
- serveraddress: auth.serveraddress,
16
- }
17
- : undefined;
18
- const cb = (err, stream) => {
19
- if (err) {
20
- reject(err);
21
- return;
22
- }
23
- if (!stream) {
24
- reject(new Error("docker pull 未返回流"));
25
- return;
26
- }
27
- docker.modem.followProgress(stream, (progressErr) => {
28
- if (progressErr) {
29
- reject(progressErr);
30
- }
31
- else {
32
- resolve();
33
- }
34
- });
35
- };
36
- docker.pull(imageRef, {}, cb, authConfig);
37
- });
38
- }
39
- //# sourceMappingURL=remote-pull-image.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remote-pull-image.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/remote-pull-image.ts"],"names":[],"mappings":";;AAgBA,8CAqCC;AA1CD;;;;GAIG;AACH,SAAgB,iBAAiB,CAC/B,MAAc,EACd,QAAgB,EAChB,IAA6B;IAE7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,UAAU,GAA2B,IAAI;YAC7C,CAAC,CAAC;gBACE,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,aAAa,EAAE,IAAI,CAAC,aAAa;aAClC;YACH,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,EAAE,GAAG,CACT,GAAiB,EACjB,MAAyC,EACzC,EAAE;YACF,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,CAAC,CAAC;gBACZ,OAAO;YACT,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACtC,OAAO;YACT,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,WAAyB,EAAE,EAAE;gBAChE,IAAI,WAAW,EAAE,CAAC;oBAChB,MAAM,CAAC,WAAW,CAAC,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACN,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * 校验 Dockerfile 与构建上下文路径,并解析为绝对路径。
3
- *
4
- * @param cwd - 解析相对路径时的基准目录`
5
- */
6
- export declare function resolveDockerBuildPaths(cwd: string): string;
7
- //# sourceMappingURL=resolve-dockerfile.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-dockerfile.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/resolve-dockerfile.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,UAQlD"}
@@ -1,24 +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.resolveDockerBuildPaths = resolveDockerBuildPaths;
7
- const node_fs_1 = require("node:fs");
8
- const node_path_1 = __importDefault(require("node:path"));
9
- const logger_1 = require("./logger");
10
- /**
11
- * 校验 Dockerfile 与构建上下文路径,并解析为绝对路径。
12
- *
13
- * @param cwd - 解析相对路径时的基准目录`
14
- */
15
- function resolveDockerBuildPaths(cwd) {
16
- const dockerfilePath = node_path_1.default.join(cwd, "Dockerfile");
17
- logger_1.Logger.info(`查找Dockerfile文件,路径: ${dockerfilePath}`);
18
- if (!(0, node_fs_1.existsSync)(dockerfilePath)) {
19
- throw new Error(`Dockerfile 不存在:${dockerfilePath}`);
20
- }
21
- logger_1.Logger.info("✓ Dockerfile 存在");
22
- return dockerfilePath;
23
- }
24
- //# sourceMappingURL=resolve-dockerfile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-dockerfile.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/resolve-dockerfile.ts"],"names":[],"mappings":";;;;;AASA,0DAQC;AAjBD,qCAAqC;AACrC,0DAA6B;AAC7B,qCAAkC;AAElC;;;;GAIG;AACH,SAAgB,uBAAuB,CAAC,GAAW;IACjD,MAAM,cAAc,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACpD,eAAM,CAAC,IAAI,CAAC,sBAAsB,cAAc,EAAE,CAAC,CAAC;IACpD,IAAI,CAAC,IAAA,oBAAU,EAAC,cAAc,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,kBAAkB,cAAc,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,eAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC/B,OAAO,cAAc,CAAC;AACxB,CAAC"}
@@ -1,9 +0,0 @@
1
- export type RunDockerCliOptions = {
2
- cwd?: string;
3
- };
4
- /**
5
- * 执行本地 `docker` CLI(需已安装 Docker Desktop / Engine 且 `docker` 在 PATH 中)。
6
- * 经 {@link CommandRunner.execFileWithOutput} 调用,参数不经 shell。
7
- */
8
- export declare function runDockerCli(args: string[], options?: RunDockerCliOptions): void;
9
- //# sourceMappingURL=run-docker-cli.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-docker-cli.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/run-docker-cli.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,mBAAmB,GAC5B,IAAI,CAIN"}
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.runDockerCli = runDockerCli;
4
- const command_runner_1 = require("./command-runner");
5
- /**
6
- * 执行本地 `docker` CLI(需已安装 Docker Desktop / Engine 且 `docker` 在 PATH 中)。
7
- * 经 {@link CommandRunner.execFileWithOutput} 调用,参数不经 shell。
8
- */
9
- function runDockerCli(args, options) {
10
- command_runner_1.CommandRunner.execFileWithOutput("docker", args, {
11
- cwd: options?.cwd,
12
- });
13
- }
14
- //# sourceMappingURL=run-docker-cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-docker-cli.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/run-docker-cli.ts"],"names":[],"mappings":";;AAUA,oCAOC;AAjBD,qDAAiD;AAMjD;;;GAGG;AACH,SAAgB,YAAY,CAC1B,IAAc,EACd,OAA6B;IAE7B,8BAAa,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,EAAE;QAC/C,GAAG,EAAE,OAAO,EAAE,GAAG;KAClB,CAAC,CAAC;AACL,CAAC"}
@@ -1,23 +0,0 @@
1
- /**
2
- * 单次后端部署流程的输入:路径、镜像名、仓库与远程连接均由调用方组装(例如来自 CLI 或配置文件)。
3
- */
4
- export type BackendDeployParams = {
5
- image: string;
6
- tag: string;
7
- registryHost: string;
8
- registryNamespace: string;
9
- registryUser: string;
10
- registryPassword: string;
11
- remoteHost: string;
12
- remotePort?: number;
13
- remoteProtocol?: "https" | "http";
14
- remoteSocketPath?: string;
15
- remoteCaPath: string;
16
- remoteCertPath: string;
17
- remoteKeyPath: string;
18
- envFilePath?: string;
19
- containerPortsMappings?: string[];
20
- /** 远程宿主机上已存在的 Docker 网络名;设置后容器创建时加入该网络 */
21
- dockerNetwork?: string;
22
- };
23
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/backend-deploy/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,0CAA0C;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC"}
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/backend-deploy/types.ts"],"names":[],"mappings":""}
@@ -1,8 +0,0 @@
1
- /**
2
- * 与 `deploy-frontend` / `deploy-backend` 共享:从位置参数解析「分支名片段」及 `--env` 环境标签。
3
- */
4
- export declare function sanitizeBranchName(raw: string): string;
5
- export declare function normalizeBranchName(raw: string): string;
6
- /** `--env` 默认含逗号时取第一段作为标签(如「测试环境」) */
7
- export declare function resolveEnvTag(raw: string): string;
8
- //# sourceMappingURL=branch-name.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"branch-name.d.ts","sourceRoot":"","sources":["../../src/core/branch-name.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUtD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED,sCAAsC;AACtC,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMjD"}
@@ -1,37 +0,0 @@
1
- "use strict";
2
- /**
3
- * 与 `deploy-frontend` / `deploy-backend` 共享:从位置参数解析「分支名片段」及 `--env` 环境标签。
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.sanitizeBranchName = sanitizeBranchName;
7
- exports.normalizeBranchName = normalizeBranchName;
8
- exports.resolveEnvTag = resolveEnvTag;
9
- function sanitizeBranchName(raw) {
10
- const normalized = raw.replace(/\\/g, "/").replace(/^\/+/, "").trim();
11
- if (!normalized) {
12
- throw new Error("branchName 不能为空");
13
- }
14
- const segs = normalized.split("/");
15
- if (segs.some((s) => s === "" || s === "." || s === "..")) {
16
- throw new Error("branchName 非法");
17
- }
18
- return segs[segs.length - 1] ?? "";
19
- }
20
- function normalizeBranchName(raw) {
21
- const normalized = raw.trim().replace(/\\/g, "/").replace(/^\/+/, "");
22
- if (!normalized)
23
- return "";
24
- const segs = normalized.split("/");
25
- if (segs.some((s) => s === "" || s === "." || s === ".."))
26
- return "";
27
- return segs[segs.length - 1] ?? "";
28
- }
29
- /** `--env` 默认含逗号时取第一段作为标签(如「测试环境」) */
30
- function resolveEnvTag(raw) {
31
- const parts = raw
32
- .split(",")
33
- .map((s) => s.trim())
34
- .filter((s) => s.length > 0);
35
- return parts[0] ?? "测试环境";
36
- }
37
- //# sourceMappingURL=branch-name.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"branch-name.js","sourceRoot":"","sources":["../../src/core/branch-name.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,gDAUC;AAED,kDAMC;AAGD,sCAMC;AA3BD,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtE,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,SAAgB,mBAAmB,CAAC,GAAW;IAC7C,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACrE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,sCAAsC;AACtC,SAAgB,aAAa,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,GAAG;SACd,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;AAC5B,CAAC"}
@@ -1,4 +0,0 @@
1
- declare const PACKAGE_NAME: any, PACKAGE_VERSION: any, PACKAGE_DESCRIPTION: any;
2
- declare const APM_RUNTIME_CONFIG_PATH: string;
3
- export { PACKAGE_NAME, PACKAGE_VERSION, PACKAGE_DESCRIPTION, APM_RUNTIME_CONFIG_PATH };
4
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":"AAGA,QAAA,MACQ,YAAY,OACT,eAAe,OACX,mBAAmB,KACb,CAAC;AAEtB,QAAA,MAAM,uBAAuB,QAAkD,CAAC;AAEhF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,CAAC"}
@@ -1,16 +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.APM_RUNTIME_CONFIG_PATH = exports.PACKAGE_DESCRIPTION = exports.PACKAGE_VERSION = exports.PACKAGE_NAME = void 0;
7
- const node_path_1 = __importDefault(require("node:path"));
8
- const node_os_1 = require("node:os");
9
- const utils_1 = require("./utils");
10
- const { name: PACKAGE_NAME, version: PACKAGE_VERSION, description: PACKAGE_DESCRIPTION, } = (0, utils_1.readPackageJson)();
11
- exports.PACKAGE_NAME = PACKAGE_NAME;
12
- exports.PACKAGE_VERSION = PACKAGE_VERSION;
13
- exports.PACKAGE_DESCRIPTION = PACKAGE_DESCRIPTION;
14
- const APM_RUNTIME_CONFIG_PATH = node_path_1.default.join((0, node_os_1.homedir)(), ".config/apm/config.json");
15
- exports.APM_RUNTIME_CONFIG_PATH = APM_RUNTIME_CONFIG_PATH;
16
- //# sourceMappingURL=constants.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/core/constants.ts"],"names":[],"mappings":";;;;;;AAAA,0DAA6B;AAC7B,qCAAkC;AAClC,mCAA0C;AAC1C,MAAM,EACJ,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,mBAAmB,GACjC,GAAG,IAAA,uBAAe,GAAE,CAAC;AAIb,oCAAY;AAAE,0CAAe;AAAE,kDAAmB;AAF3D,MAAM,uBAAuB,GAAG,mBAAI,CAAC,IAAI,CAAC,IAAA,iBAAO,GAAE,EAAE,yBAAyB,CAAC,CAAC;AAEnB,0DAAuB"}
@@ -1,30 +0,0 @@
1
- export type CursorCmdPayload = {
2
- prompt: string;
3
- model?: string;
4
- workdir: string;
5
- logId: string;
6
- chatId?: string;
7
- debug?: boolean;
8
- };
9
- export declare class CursorCmd {
10
- private workdir;
11
- private prompt;
12
- private model?;
13
- private chatId?;
14
- private name;
15
- private logId;
16
- private api;
17
- private debug;
18
- constructor(payload: CursorCmdPayload);
19
- execute(): Promise<void>;
20
- private buildArgs;
21
- private runPrompt;
22
- private createChat;
23
- private execCommand;
24
- private execCommandCapture;
25
- private debugLog;
26
- private report;
27
- private beforeAction;
28
- private afterAction;
29
- }
30
- //# sourceMappingURL=cursor-cmd.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor-cmd.d.ts","sourceRoot":"","sources":["../../src/core/cursor-cmd.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAC,CAAS;IACvB,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,KAAK,CAAU;gBAEX,OAAO,EAAE,gBAAgB;IAc/B,OAAO;IAYb,OAAO,CAAC,SAAS;YAwBH,SAAS;YA4BT,UAAU;IAkCxB,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,kBAAkB;IAuB1B,OAAO,CAAC,QAAQ;YAWF,MAAM;YAUN,YAAY;YAmBZ,WAAW;CAM1B"}
@@ -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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"}
@@ -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
@@ -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"}