tianshu-mcp 0.7.1 → 0.7.3

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/CHANGELOG.en.md CHANGED
@@ -8,6 +8,54 @@ Chinese version: [CHANGELOG.md](CHANGELOG.md)
8
8
 
9
9
  ---
10
10
 
11
+ ## [0.7.3] - 2026-09-28
12
+
13
+ ### Fixed
14
+
15
+ - **Skill docs had drifted from the implementation** (`skills/tianshu-mcp/`):
16
+ - `usage-examples.md` carried a **duplicate `### 2.9`** (codex-cli and the shared-conventions section
17
+ collided) → the latter is now `### 2.10`;
18
+ - `SKILL.md` §9 did not state that its error-code table is a subset — `endReason` is typed as an optional
19
+ `string` (`src/agents/adapter.ts:93`) with **no enum constraint**, so an adapter can add a value without a
20
+ type change. The doc now says so, and points readers at the adapter's `run.ts` for unknown values;
21
+ - added three high-frequency `endReason` values that were missing from the table: `input_mismatch`
22
+ (a leftover draft makes the task land inside stale text), `send_unknown` (delivery unconfirmable —
23
+ **never resends**), and `reply_stable` (normal completion, not an error).
24
+
25
+ ### Docs
26
+
27
+ - **Documented Open Design artifact retrieval** (a `v0.7.1` capability, previously absent from the skill):
28
+ designs live in the product's artifact store `<dataRoot>/projects/<projectId>/<entry>`, **not** in the
29
+ task directory; once terminal the adapter copies it into `projectPath`.
30
+ - **Documented the daemon-readiness precondition**: the product completes an auth handshake with its daemon
31
+ before opening the folder picker (measured ~30s after launch); when unready the product **opens no dialog
32
+ at all**.
33
+ - **Marked the `zip` export as a known limitation** (the product's main process takes over downloads,
34
+ overriding CDP's handling; the `html` path is fully working).
35
+
36
+ > This release contains **no runtime code changes** (only `skills/` docs and the version bump), so upgrading
37
+ > from `0.7.2` changes no behaviour; it syncs docs with implementation and aligns tag / Release / npm on a
38
+ > single commit.
39
+
40
+ ## [0.7.2] - 2026-09-28
41
+
42
+ ### Fixed
43
+
44
+ - **Cross-platform CI failure (every ubuntu / macOS leg)** (`test/unit/opendesign-discovery.test.ts`):
45
+ the new `DevToolsActivePort` candidate-path case injected only `APPDATA`, while production's
46
+ `devToolsActivePortPaths` **keys the base directory off the host platform** (win32 uses `APPDATA`,
47
+ other platforms use `HOME/Library/Application Support`) — so on ubuntu/macOS the base went down the
48
+ `HOME` branch and the assertion could never match. This is the **third** occurrence of the same
49
+ family (the earlier two were `discoverOpenDesign`'s candidate paths and the version read-back):
50
+ assertions coupled to the host platform, passing on only one class of machine.
51
+ Fix: the case now injects the platform-appropriate env and derives the matching expectation, sharing
52
+ the production source of truth.
53
+ Measured impact: CI #295/#296 and Release #44 all failed on this, so the **GitHub Release was never
54
+ created** (the npm package itself is unaffected).
55
+
56
+ > Note: the `0.7.1` npm package is published and its `dist` is correct; this release only fixes the
57
+ > test's cross-platform coupling so tag / Release / npm can converge on a single commit.
58
+
11
59
  ## [0.7.1] - 2026-09-28
12
60
 
13
61
  > This change moves the built-in agent `opendesign` (the Open Design desktop app, `driver=gui` /
package/CHANGELOG.md CHANGED
@@ -7,6 +7,45 @@
7
7
 
8
8
  ---
9
9
 
10
+ ## [0.7.3] - 2026-09-28
11
+
12
+ ### 修复
13
+
14
+ - **skill 文档与实现脱节**(`skills/tianshu-mcp/`):
15
+ - `usage-examples.md` 存在**两个 `### 2.9`**(codex-cli 与通用约定撞号)→ 后者改为 `### 2.10`;
16
+ - `SKILL.md` §9 的错误码表未声明「这是子集而非闭集」—— `endReason` 在类型层面只是可选
17
+ `string`(`src/agents/adapter.ts:93`),**没有枚举约束**,适配器新增分支无需改类型即可引入新取值。
18
+ 现已显式声明,并提示读者遇到表外取值时去读对应适配器的 `run.ts`;
19
+ - 补入三个真机高频但表中缺失的 `endReason`:`input_mismatch`(输入框残留导致任务被插进残文)、
20
+ `send_unknown`(无法确认落地,**绝不重发**)、`reply_stable`(正常完成,非错误)。
21
+
22
+ ### 文档
23
+
24
+ - **补写 Open Design 产物取回**(`v0.7.1` 起的能力,此前未进 skill 正文):设计稿存在产品的产物存储
25
+ `<dataRoot>/projects/<projectId>/<entry>` 而**不在任务目录**,终态后由适配器复制到 `projectPath`。
26
+ - **补写 daemon 就绪前置**:产品打开文件夹选择器前需与 daemon 完成鉴权握手(实测启动后约 30s 才驻留),
27
+ 未就绪时产品**根本不弹对话框**。
28
+ - **标注 `zip` 导出为已知限制**(产品主进程接管下载,CDP 接管被覆盖;`html` 路径完全可用)。
29
+
30
+ > 本版**不含运行时代码变更**(仅 `skills/` 文档 + 版本号),从 `0.7.2` 升级无功能差异;
31
+ > 发布目的是让文档与实现同步、并让 tag / Release / npm 收敛到同一 commit。
32
+
33
+ ## [0.7.2] - 2026-09-28
34
+
35
+ ### 修复
36
+
37
+ - **CI 跨平台红(ubuntu / macOS 全腿)**(`test/unit/opendesign-discovery.test.ts`):新增的
38
+ `DevToolsActivePort` 候选路径用例只注入了 `APPDATA`,而生产里 `devToolsActivePortPaths`
39
+ **按宿主平台取基址**(win32 用 `APPDATA`,其他平台用 `HOME/Library/Application Support`)——
40
+ 于是 ubuntu/macos 腿上路径基址走了 `HOME` 分支,断言必然不匹配。
41
+ 这是**同一族**缺陷的第三次出现(前两次在 `discoverOpenDesign` 的候选路径与版本回读上),
42
+ 均属「断言与宿主平台耦合,只在某一类机器上通过」。
43
+ 修法:用例按宿主平台注入对应 env 并算出对应期望值,与生产同源。
44
+ 实测影响:CI #295/#296 与 Release #44 均因此失败,**GitHub Release 未能创建**(npm 包本身不受影响)。
45
+
46
+ > 说明:`0.7.1` 的 npm 包已发布且 `dist` 内容正确,本版仅修测试的跨平台耦合,
47
+ > 使 tag / Release 与 npm 三者可在同一 commit 上收敛。
48
+
10
49
  ## [0.7.1] - 2026-09-28
11
50
 
12
51
  > 本次变更把内置 agent `opendesign`(Open Design 桌面端,`driver=gui` / `adapter=opendesign-gui`)
@@ -4,4 +4,4 @@
4
4
  * 本文件由 scripts/sync-version.mjs 在每次 build 前重新生成。
5
5
  */
6
6
  // generated: 勿手改 —— 运行 `npm run build` 自动同步
7
- export const MCP_SERVER_VERSION = "0.7.1";
7
+ export const MCP_SERVER_VERSION = "0.7.3";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tianshu-mcp",
3
- "version": "0.7.1",
3
+ "version": "0.7.3",
4
4
  "description": "天枢 × AI-Agent 编排 MCP server —— 驱动 Codex、TraeWork、ZCode、Kimi Code、Qoder CN 与 Open Design 完成项目开发、验收、失败返修与再验收闭环。",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -264,6 +264,11 @@ meta 的 `needsUserKind` 给出等待类型,`pendingQuestion` 给出问题原
264
264
 
265
265
  `agentEndReason` 与终态映射(先记住这张表,再看错误码表):
266
266
 
267
+ > **下面的错误码表是「常见子集」而非闭集**:`endReason` 在类型层面只是一个可选 `string`
268
+ > (`src/agents/adapter.ts:93`),没有枚举约束,某个适配器新增分支时无需改类型就能引入新取值。
269
+ > 因此看到表里没有的取值时,**按名字猜语义不如去读该适配器的 `run.ts`**,或看 `query_task` 的
270
+ > 日志尾部与 `progressSummary`。
271
+
267
272
  | `agentEndReason` | 任务终态 |
268
273
  |---|---|
269
274
  | `task_timeout` | `needs_attention` + `errorType=timeout`(GUI:codex/zcode);qoder 落 `failed(timeout)` |
@@ -273,6 +278,9 @@ meta 的 `needsUserKind` 给出等待类型,`pendingQuestion` 给出问题原
273
278
  | `agentEndReason` | 含义 | 处置 |
274
279
  |---|---|---|
275
280
  | `setup_failed` | 找不到安装 / 实例未就绪 / 点不到「新对话」 | 让用户确认已安装且能手动打开;重试一次 |
281
+ | `input_mismatch` | 任务输入框回读与本次标记不符(真机常见成因:输入框残留模板/草稿,任务被插进残文里) | 适配器已先清空再输入;若仍失败,让用户手动清空输入框后重派 |
282
+ | `send_unknown` | 点了发送但**无法确认消息落地** | 适配器**绝不重发**(避免重复派活);请用户在界面确认是否已发出,再决定重派或 `continue_task` |
283
+ | `reply_stable` | **正常完成**:对话与产物均已静止 | 不是错误;去读验收报告 |
276
284
  | `project_ambiguous` | 项目同名或路径重复,无法消歧 | 已转 `needs_user(setup_recovery)`:请用户确认目标项目后 `continue_task` |
277
285
  | `project_mismatch` | 项目绑定或回读不一致,幂等重试仍失败 | 同上:请用户在 GUI 里确认/手工绑定 |
278
286
  | `project_create_failed` | 在 GUI 内新建项目失败 | 让用户手动把项目加进 agent,或换 `projectPath` |
@@ -193,7 +193,16 @@ run_task(projectPath=D:/repo/design, agentId=opendesign,
193
193
  - `designSystem` 传**设计系统名**(如 `Claude`、`Neutral Modern`),不是目录路径——与 codex 的 `designSystem` 语义不同(那边是目录)。
194
194
  - `mode` 不支持(那是 traework 的面板模式);`model` 必填,按名字**精确匹配**菜单项,未命中会报错并**回显当前可见候选**,不会退化成模糊匹配。
195
195
  - 目录绑定按「展开工作目录 → 选择目录 → 原生『选择文件夹』填绝对路径 → **回读显示值校验**」;已是目标目录则跳过。
196
- - 视觉验收要求项目里有可截图的页面来源;适配器只**推导建议**(静态入口优先),**不会自动修改** `.tianshu-mcp/acceptance.json`。
196
+ (绑目录前适配器会先等 **daemon sidecar 就绪** —— 产品打开文件夹选择器前要与 daemon 完成鉴权握手,
197
+ 实测启动后约 30s 才驻留;未就绪时产品只会显示自己的提示、**根本不弹对话框**。)
198
+ - **产物会自动取回任务目录**(`v0.7.1` 起):Open Design 的设计稿存在它自己的产物存储
199
+ `<dataRoot>/projects/<projectId>/<entry>`,**不在任务目录里**。终态后适配器把它复制到
200
+ `projectPath`,视觉验收随后可推导静态入口(`onboarding-guide.html` → 路由 `/onboarding-guide.html`)。
201
+ 取回是**增值步骤**:失败只写进 `progressSummary`,**不改变任务终态**。
202
+ - **`zip` 导出方式尚未打通**(已知限制):产品的下载由主进程接管,CDP 的下载接管被覆盖;
203
+ `html` 路径完全可用,zip 待后续优化。
204
+ - 视觉验收要求项目里有可截图的页面来源;适配器只**推导建议**(静态入口优先,白名单未命中时
205
+ 若项目根下 html **恰好唯一**也认它),**不会自动修改** `.tianshu-mcp/acceptance.json`。
197
206
  - 修复/优化计划落项目根 `.opendesign/plans/`(Open Design 只能读它工作目录白名单内的文件)。
198
207
  - 可正常派活(Windows 真机取证;macOS 为 `research` 且禁止派发)。仍 **fail-closed**:选择器漂移时硬失败 `selector_drift` 并列出缺失键,模型未命中报 `model_unavailable` 并回显可见候选,设计方向非法在**入口**即拒绝。
199
208
  详见 [docs/opendesign-cdp.md](../../docs/opendesign-cdp.md) 与 `.dsh/plans/opendesign-gui-adapter-plan.md`。
@@ -212,7 +221,7 @@ run_task(projectPath=/path/to/项目, agentId=codex-cli,
212
221
  - 写入被 `workspace-write` 沙箱限制在项目目录内;POSIX 下取消/超时对进程组 `SIGTERM`→`SIGKILL`。
213
222
  - **无头路径没有 GUI 交互**:不存在 `user_confirmation` 这类等待,`continue_task` 不适用;失败直接看 `agentEndReason` 与日志。
214
223
 
215
- ### 2.9 通用约定
224
+ ### 2.10 通用约定
216
225
 
217
226
  - `run_task` 是**异步契约**:立即返回 `taskId` + 队列位置,不要当同步调用等结果。
218
227
  - 轮询间隔 5–10 秒(`query_task` 缺省返回 agent 日志末 40 行);同项目串行 + 全局并发默认 2,重复派单只会排队。