ai-project-manage-cli 6.0.43 → 6.0.44-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -1756,6 +1756,16 @@ function createAppendMessageCustomTools(cfg, messageId) {
|
|
|
1756
1756
|
};
|
|
1757
1757
|
}
|
|
1758
1758
|
|
|
1759
|
+
// src/commands/connect/playwright-mcp.ts
|
|
1760
|
+
function createPlaywrightMcpServers() {
|
|
1761
|
+
return {
|
|
1762
|
+
playwright: {
|
|
1763
|
+
command: "npx",
|
|
1764
|
+
args: ["@playwright/mcp@latest", "--browser", "chrome", "--vision"]
|
|
1765
|
+
}
|
|
1766
|
+
};
|
|
1767
|
+
}
|
|
1768
|
+
|
|
1759
1769
|
// src/commands/connect/cursor-agent.ts
|
|
1760
1770
|
setMaxListeners2(50);
|
|
1761
1771
|
installAbortSignalDebug();
|
|
@@ -1783,7 +1793,8 @@ async function obtainAgent(ctx) {
|
|
|
1783
1793
|
model: { id: ctx.model || "default" },
|
|
1784
1794
|
local: {
|
|
1785
1795
|
cwd: ctx.cwd
|
|
1786
|
-
}
|
|
1796
|
+
},
|
|
1797
|
+
mcpServers: createPlaywrightMcpServers()
|
|
1787
1798
|
};
|
|
1788
1799
|
const savedAgentId = ctx.user ? loadSessionAgentId(ctx.workdir, ctx.sessionId, ctx.user) : void 0;
|
|
1789
1800
|
if (savedAgentId) {
|
|
@@ -1851,6 +1862,7 @@ async function runCursorAgent(cfg, ctx, options) {
|
|
|
1851
1862
|
logAbortSignalStats(signal, "runCursorAgent:after-addListener");
|
|
1852
1863
|
try {
|
|
1853
1864
|
const run = await agent.send(prompt, {
|
|
1865
|
+
mcpServers: createPlaywrightMcpServers(),
|
|
1854
1866
|
local: {
|
|
1855
1867
|
customTools: createAppendMessageCustomTools(cfg, ctx.messageId)
|
|
1856
1868
|
}
|
package/package.json
CHANGED
|
@@ -6,7 +6,11 @@
|
|
|
6
6
|
|
|
7
7
|
1. 用 **Read** 工具阅读本端计划:前端读 `.apm/sessions/<会话ID>/docs/FRONTEND-PLAN.md`,后端读 `docs/BACKEND-PLAN.md`;计划不存在则退出流程并回复说明(兼容旧流程:若存在 `PRD.md` + `FRONTEND.md` / `BACKEND.md` + `API.md`,按旧文档执行)。
|
|
8
8
|
2. 前端涉及接口对接时,以后端计划中的「API 契约」章节为准,**不等后端部署完成**;契约没写清的字段 `@后端` 确认,禁止自行猜测。
|
|
9
|
-
3.
|
|
9
|
+
3. **假设门禁(开发前必须检查)**:查看计划「依据与假设」章节——
|
|
10
|
+
- 「假设」仍有未确认项:**Read** `.apm/sessions/<会话ID>/messages.xml`,查找项目经理是否已回复确认;
|
|
11
|
+
- 项目经理已回复:先按 `.apm/skills/apm-write-plan/SKILL.md` 步骤 5 把确认结果**回填进计划文档并同步**(确认的假设移入「依据」,否定的修订实现步骤与白名单),然后再开发;
|
|
12
|
+
- 项目经理未回复:`@项目经理` 列出待确认假设,**停止本次开发**。
|
|
13
|
+
严禁带着未回填的澄清直接开发——项目经理在聊天里给过的口径若没落进计划,开发与 diff 评审都不会认。
|
|
10
14
|
|
|
11
15
|
### 步骤 2: 明确开发模式
|
|
12
16
|
|
|
@@ -44,6 +44,20 @@
|
|
|
44
44
|
- **无假设**:回复计划已就绪,可进入测试要点编写。
|
|
45
45
|
- 前端计划依赖的接口后端契约还没出:在计划「期望接口」小节写出前端期望的接口形态,回复时 `@后端` 对齐,不要空等。
|
|
46
46
|
|
|
47
|
+
### 步骤 5:假设回填(项目经理确认后必须执行)
|
|
48
|
+
|
|
49
|
+
当你被安排「根据项目经理的确认更新计划」,或发现项目经理已回复假设确认时:
|
|
50
|
+
|
|
51
|
+
1. **Read** `.apm/sessions/<会话ID>/messages.xml`,找到项目经理针对假设的最新回复,**逐条对照你列出的假设**,不要只看 speakContext 的转述。
|
|
52
|
+
2. 更新计划文档:
|
|
53
|
+
- 被确认的假设 → **移入「依据」表格**,来源写「项目经理确认(第 N 轮)」;
|
|
54
|
+
- 被否定或修正的假设 → 按项目经理给出的口径**修订「实现步骤」与「改动文件白名单」**;
|
|
55
|
+
- 项目经理没有回应的假设 → 保留在「假设」中,再次 `@项目经理` 追问。
|
|
56
|
+
3. 重新执行 `apm sync-document` 同步计划。
|
|
57
|
+
4. 回复消息:逐条说明每个假设的处理结果(确认采纳 / 按口径修订了什么),全部解决则声明「假设已清零,可进入测试要点编写」。
|
|
58
|
+
|
|
59
|
+
**禁止**跳过回填直接开发:澄清结论必须落进计划文档,后续开发与 diff 评审都只认计划文档,不认聊天记录。
|
|
60
|
+
|
|
47
61
|
---
|
|
48
62
|
|
|
49
63
|
## 写作要求
|