ai-project-manage-cli 3.0.22 → 3.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -146,7 +146,7 @@ var requestConfig = {
146
146
 
147
147
  // src/api/client.ts
148
148
  function createApmApiClient(cfg) {
149
- const baseURL = `${cfg.baseUrl.trim().replace(/\/+$/, "")}/api`;
149
+ const baseURL = `${cfg.baseUrl.trim().replace(/\/+$/, "")}/api/v1`;
150
150
  return createApiClient(requestConfig, {
151
151
  baseURL,
152
152
  getToken: () => cfg.token || void 0,
@@ -724,8 +724,12 @@ function runConnect(opts) {
724
724
  console.error("[apm] apm upload-artifact \u5931\u8D25:", pullErr);
725
725
  throw pullErr;
726
726
  }
727
- } catch {
728
- console.error("[apm] \u65E0\u6CD5\u89E3\u6790 WebSocket \u6D88\u606F:", text);
727
+ } catch (e) {
728
+ console.error(
729
+ "[apm] \u65E0\u6CD5\u89E3\u6790 WebSocket \u6D88\u606F:",
730
+ text,
731
+ e.message
732
+ );
729
733
  }
730
734
  });
731
735
  ws.on("error", (err) => {
@@ -1310,6 +1314,16 @@ var createDockerodeClient = (config) => new DockerodeClient(config);
1310
1314
  // src/commands/deploy/lib/backend-deploy/dockerode-client/env.ts
1311
1315
  import { existsSync as existsSync5, readFileSync as readFileSync8, statSync as statSync3 } from "node:fs";
1312
1316
  import path2 from "node:path";
1317
+ function stripSurroundingQuotes(value) {
1318
+ const t = value.trim();
1319
+ if (t.length >= 2) {
1320
+ const q = t[0];
1321
+ if ((q === '"' || q === "'") && t[t.length - 1] === q) {
1322
+ return t.slice(1, -1);
1323
+ }
1324
+ }
1325
+ return t;
1326
+ }
1313
1327
  function loadEnvFromFile(envFilePath) {
1314
1328
  if (!envFilePath) {
1315
1329
  return {};
@@ -1330,7 +1344,7 @@ function loadEnvFromFile(envFilePath) {
1330
1344
  continue;
1331
1345
  }
1332
1346
  const key = normalized.slice(0, eqIndex).trim();
1333
- const value = normalized.slice(eqIndex + 1);
1347
+ const value = stripSurroundingQuotes(normalized.slice(eqIndex + 1));
1334
1348
  if (key !== "") {
1335
1349
  result[key] = value;
1336
1350
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-project-manage-cli",
3
- "version": "3.0.22",
3
+ "version": "3.0.24",
4
4
  "description": "命令行工具:后续用于调用平台后端 API 完成运维与自动化操作",
5
5
  "type": "module",
6
6
  "private": false,
@@ -22,7 +22,8 @@ description: 根据需求 ID 读取工作项 prd.md 与 reviews.xml,按「修
22
22
  ### 步骤 1:读取 `prd.md` 与 `reviews.xml`
23
23
 
24
24
  1. 使用 **Read** 读取 **`.apm/workitems/<需求ID>/prd.md`**。
25
- 2. 使用 **Read** 读取 **`.apm/workitems/<需求ID>/reviews.xml`**。
25
+ 2. 当PRD涉及到图片链接时,自动下载对应的图片,存放在 `.apm/workitems/<需求ID>/images/<对应图片名称>.png`,并理解图片内容
26
+ 3. 使用 **Read** 读取 **`.apm/workitems/<需求ID>/reviews.xml`**。
26
27
 
27
28
  **失败与缺省:**
28
29
 
@@ -18,18 +18,20 @@ description: 结合本仓库上下文对需求做结构化评审,只有当用
18
18
  5. **澄清优先但不泛问**:不阻塞落地则不提问;不问可推断的琐碎问题。
19
19
  6. **隐性知识沉淀可执行**:对用户单独输出的每条沉淀建议应能回答「在仓库里补什么、能消除哪类隐性歧义」;若本次未发现值得沉淀的差异点,仍须给出一句结论(例如「未发现与通用假设显著偏离、需单独成文的隐性规则」)。
20
20
 
21
-
22
21
  ## 执行步骤
23
22
 
24
23
  ### 步骤 1:读取 `prd.md`
25
24
 
26
25
  1. 使用 **Read** 读取 `.apm/workitems/<需求ID>/prd.md`。
27
- 2. Read **失败**(文件不存在或无法读取):本步骤记为失败,**终止**,不执行步骤 2、3。
26
+ 2. PRD 涉及到图片链接时,自动下载对应的图片,存放在 `.apm/workitems/<需求ID>/images/<对应图片名称>.png`,并理解图片内容
27
+ 3. 若 Read **失败**(文件不存在或无法读取):本步骤记为失败,**终止**,不执行步骤 2、3。
28
28
 
29
29
  ### 步骤 2:读代码
30
+
30
31
  阅读仓库源码以及 `.apm/product-capability-inventory` 中与需求相关的条目;不展开无关模块代码。
31
32
 
32
33
  ### 步骤 3:评审
34
+
33
35
  1. **拆条**:多条诉求时拆成 `### 需求点 1..N`,每条独立走完「业务合理性(可选)→ 问题 或 可行性(+风险)」逻辑。
34
36
 
35
37
  2. **成文(仅评审模板)**:按 `output-template.md` 拼出写入 comment 的 Markdown(顶格可加 `### 评审人` + 当前模型名);**不含**「隐性知识沉淀」段落;
@@ -48,8 +50,8 @@ description: 结合本仓库上下文对需求做结构化评审,只有当用
48
50
 
49
51
  建议表头:
50
52
 
51
- | 步骤 | 结果 | 说明 |
52
- |------|------|------|
53
- | 1. 读取 prd.md | 成功 / 失败 | 例如实际读取路径;失败时写错误原因 |
53
+ | 步骤 | 结果 | 说明 |
54
+ | ----------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------- |
55
+ | 1. 读取 prd.md | 成功 / 失败 | 例如实际读取路径;失败时写错误原因 |
54
56
  | 2. 评审与 comment | 成功 / 失败 | 临时文件路径(已删可写「已清理」);`apm comment` 退出情况或 API 返回摘要;**建议**注明本轮评审立场(仅前台 / 仅后台 / 全栈) |
55
- | 3. 清理临时文件 | 成功 / 失败 | — |
57
+ | 3. 清理临时文件 | 成功 / 失败 | — |