@huanlin/dsh-plugin-merge-tool-calls 0.2.2 → 0.3.0

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/README.md CHANGED
@@ -21,7 +21,7 @@
21
21
  ## 工作原理
22
22
 
23
23
  - 通过 keyed slot `tool.call.toolview` 的 shadow 机制(`priority: -1`,最低者渲染)接管工具的卡片;`tools: []` 时接管全部内置通用行工具(见 `src/client/tool-names.ts`),非空列表为显式白名单(任意 wire 名均可)。
24
- - 组件经 `useSession` 读取聊天快照,用 `conversationContextKey('tool-call', callId)` 定位自身节点,在 `chat.order` 上前后扫描连续调用,按 `maxGroupSize` 分组。一组只合并**同名或同家族**调用:同名必合;已知家族(`grep`+`glob`、`bash`+`pwsh`、`read`+`web_fetch`)跨名合;未知工具名(variant `others`)仅与自身合,不相关的工具不会混进同一张卡。
24
+ - 组件经 `useChat` 读取聊天快照,在 order + node store 中按 call id 定位自身节点,前后扫描连续调用,按 `maxGroupSize` 分组。一组只合并**同名或同家族**调用:同名必合;已知家族(`grep`+`glob`、`bash`+`pwsh`、`read`+`web_fetch`)跨名合;未知工具名(variant `others`)仅与自身合,不相关的工具不会混进同一张卡。
25
25
  - 组首座位渲染合并卡片;组内其余座位渲染 `null`,由注入的样式规则
26
26
  `[data-chat-flow-kind="tool-call"]:has([data-slot="tool.call.toolview"]:empty) { display: none; }`
27
27
  将其从流中收起(与内置 `.flowItem:empty` 语义一致;渲染器为每个 toolview 包一层
@@ -45,15 +45,16 @@
45
45
  前置:本机有 DSH checkout(`../dsh`,只读,仅类型引用)。
46
46
 
47
47
  ```sh
48
- pnpm install # 安装 registry 依赖(react/vitest/tsdown/cordis/schemastery…)
49
- pnpm run typecheck # tsc --noEmit;@deepseek-ai/* 类型来自已发布的 0.1.0-rc.6 devDeps
48
+ pnpm install # 安装 registry 依赖(react/vitest/tsdown/schemastery…)
49
+ pnpm run typecheck # tsc --noEmit;@deepseek-ai/* 类型来自本机 DSH checkout 的 node_modules junction
50
50
  pnpm test # vitest:纯逻辑 + jsdom 组件 + 注册形态
51
- pnpm run build # tsdown + tsc → lib/index.js、lib/invariant.js、lib/client.js、lib/types/
51
+ pnpm run build # tsdown + tsc → lib/index.js、lib/client.js、lib/types/
52
52
  ```
53
53
 
54
- 注意:`@deepseek-ai/*` 是宿主提供的 peer,开发期以 devDependencies 安装**已发布**的
55
- `0.1.0-rc.6` 类型(其完整依赖图已发布,可直接安装);测试期经
56
- `vitest.config.ts` alias dsh 包指向 `tests/stubs/` 测试替身,组件测试无需宿主包。
54
+ 注意:alpha 版 DSH 未发 npm,`@deepseek-ai/*` peer 类型在开发期经 `node_modules/@deepseek-ai/*`
55
+ junction 指向本机 DSH checkout(`../dsh``vendor/cordis` 与 `packages/**`);`@deepseek-ai/*`
56
+ client half 全部为 type-only import,测试期仅 `dsh-client-ui-primitives`
57
+ `vitest.config.ts` 的 alias 指向 `tests/stubs/` 测试替身,组件测试无需宿主包。
57
58
  Config 的 schemastery schema 使用 `@deepseek-ai/schemastery`(与 DSH 仓库同款,支持
58
59
  `z.infer`);host bundle 内联 schemastery(与范本 yet-another-subagent 一致),
59
60
  profile 无需额外解析。
@@ -92,3 +93,5 @@ dsh plugin --profile web add "@huanlin/dsh-plugin-merge-tool-calls" # npm re
92
93
  - 非聊天节点场景(如被 dispatch 为子调用)回退为普通单行,绝不空白。
93
94
  - 带自定义行卡片的工具(`skill`、`cordis_define`、`cordis_run`/`cordis_stop`/`cordis_undefine`,以及摘要格式特殊的 `todo_write`/`ask_user_question`)**不**默认接管,保持内置行;如需合并,用 `tools` 白名单显式加入(合并行按通用行面渲染)。
94
95
  - 需要浏览器支持 `:has()`(Chrome 105+ / Safari 15.4+ / Firefox 121+);不支持时仅退化为空行间距。
96
+
97
+ > v0.3.1(适配 DSH v0.1.2-rc.1):按新版 invariant 规则不再发布空样板 `./invariant` 导出(本插件无独立可分歧观察,故不发布 invariant,见 AGENTS.md 新规则)。