dsh-better-display 0.2.1 → 0.3.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.
- package/CHANGELOG.md +24 -0
- package/README.en.md +5 -3
- package/README.md +5 -3
- package/compat/harness-rc2.json +97 -0
- package/docs/official-rendering-bridge.md +65 -0
- package/lib/client.js +6476 -5977
- package/lib/client.js.map +1 -1
- package/lib/dsh-better-display.js +4 -2
- package/lib/types/client/Blocks.d.ts +2 -1
- package/lib/types/client/Blocks.d.ts.map +1 -1
- package/lib/types/client/Blocks.js +2 -2
- package/lib/types/client/Blocks.js.map +1 -1
- package/lib/types/client/OfficialContent.d.ts +25 -0
- package/lib/types/client/OfficialContent.d.ts.map +1 -0
- package/lib/types/client/OfficialContent.js +53 -0
- package/lib/types/client/OfficialContent.js.map +1 -0
- package/lib/types/client/Reader.d.ts.map +1 -1
- package/lib/types/client/Reader.js +42 -11
- package/lib/types/client/Reader.js.map +1 -1
- package/lib/types/client/ToolActivity.d.ts.map +1 -1
- package/lib/types/client/ToolActivity.js +23 -19
- package/lib/types/client/ToolActivity.js.map +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/index.js +23 -33
- package/lib/types/client/index.js.map +1 -1
- package/lib/types/client/markdown/MarkdownText.d.ts +3 -1
- package/lib/types/client/markdown/MarkdownText.d.ts.map +1 -1
- package/lib/types/client/markdown/MarkdownText.js +14 -7
- package/lib/types/client/markdown/MarkdownText.js.map +1 -1
- package/lib/types/client/markdown/render.d.ts +2 -0
- package/lib/types/client/markdown/render.d.ts.map +1 -1
- package/lib/types/client/markdown/render.js +22 -6
- package/lib/types/client/markdown/render.js.map +1 -1
- package/lib/types/client/motion.d.ts.map +1 -1
- package/lib/types/client/motion.js +22 -13
- package/lib/types/client/motion.js.map +1 -1
- package/lib/types/client/native/ContextInjectionRow.d.ts +12 -3
- package/lib/types/client/native/ContextInjectionRow.d.ts.map +1 -1
- package/lib/types/client/native/ContextInjectionRow.js +7 -4
- package/lib/types/client/native/ContextInjectionRow.js.map +1 -1
- package/lib/types/client/native/ReferenceIcon.js +3 -3
- package/lib/types/client/native/ReferenceIcon.js.map +1 -1
- package/lib/types/client/native/tool-call-model.js +1 -1
- package/lib/types/client/native/tool-call-model.js.map +1 -1
- package/lib/types/client/official-slots.d.ts +71 -0
- package/lib/types/client/official-slots.d.ts.map +1 -0
- package/lib/types/client/official-slots.js +183 -0
- package/lib/types/client/official-slots.js.map +1 -0
- package/lib/types/client/platform-media.d.ts +6 -0
- package/lib/types/client/platform-media.d.ts.map +1 -0
- package/lib/types/client/platform-media.js +13 -0
- package/lib/types/client/platform-media.js.map +1 -0
- package/lib/types/client/primitive-labels.d.ts.map +1 -1
- package/lib/types/client/primitive-labels.js +3 -2
- package/lib/types/client/primitive-labels.js.map +1 -1
- package/lib/types/client/settings.js.map +1 -1
- package/lib/types/client/store.d.ts +1 -0
- package/lib/types/client/store.d.ts.map +1 -1
- package/lib/types/client/store.js +1 -0
- package/lib/types/client/store.js.map +1 -1
- package/lib/types/client/tool-activity.d.ts +1 -1
- package/lib/types/client/tool-activity.d.ts.map +1 -1
- package/lib/types/client/tool-activity.js +11 -4
- package/lib/types/client/tool-activity.js.map +1 -1
- package/lib/types/client/types.d.ts +18 -8
- package/lib/types/client/types.d.ts.map +1 -1
- package/lib/types/client/word-motion.d.ts.map +1 -1
- package/lib/types/client/word-motion.js +2 -1
- package/lib/types/client/word-motion.js.map +1 -1
- package/package.json +23 -17
- package/scripts/check-harness-compat.mjs +71 -0
- package/scripts/link-harness-dependencies.mjs +1 -0
- package/scripts/verify-auto-fold.mjs +114 -0
- package/scripts/verify-official-bridge.mjs +121 -0
- package/src/client/Blocks.tsx +2 -1
- package/src/client/OfficialContent.tsx +69 -0
- package/src/client/Reader.module.css +35 -8
- package/src/client/Reader.tsx +44 -17
- package/src/client/ToolActivity.tsx +24 -29
- package/src/client/index.tsx +27 -31
- package/src/client/markdown/MarkdownText.tsx +14 -6
- package/src/client/markdown/render.tsx +23 -7
- package/src/client/motion.tsx +18 -11
- package/src/client/native/ContextInjectionRow.tsx +21 -9
- package/src/client/native/ReferenceIcon.tsx +3 -3
- package/src/client/native/tool-call-model.ts +1 -1
- package/src/client/official-slots.tsx +211 -0
- package/src/client/platform-media.ts +11 -0
- package/src/client/primitive-labels.ts +3 -2
- package/src/client/settings.tsx +1 -1
- package/src/client/store.ts +2 -0
- package/src/client/tool-activity.ts +11 -4
- package/src/client/types.ts +14 -8
- package/src/client/word-motion.tsx +2 -1
- package/tests/browser-auto-fold.tsx +64 -0
- package/tests/browser-official-bridge.tsx +152 -0
- package/tests/official-slots.test.ts +112 -0
- package/tests/platform-media.test.ts +17 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.3.2 — 2026-09-24
|
|
4
|
+
|
|
5
|
+
- 补齐 0.1.7-rc.1 官方桥接的运行时契约:工具视图传入 `phase`/`useDisclosure`/`hookContext{callId}`,聊天节点改用 `{turnData, disclosureReset}` 快照 store;修复真实宿主里官方工具视图静默落到 fallback 的问题。
|
|
6
|
+
- 折叠区吸顶车道的绘制缝隙:车道只给自己的框刷实心底色,`.turn` 14px gap、前一 cell 16px padding、status 车道右侧 `--reader-control-width` 保留区三条缝滚动时透出内容;改用同色 `box-shadow` 向上/向右补漆连成连续色带。
|
|
7
|
+
|
|
8
|
+
## 0.3.1 — 2026-09-24
|
|
9
|
+
|
|
10
|
+
- Accept Harness `0.1.7-rc.1`. Peer range is `>=0.1.7-rc.1 <0.1.8`.
|
|
11
|
+
- `conversation.chat.turnTail` is a list slot. The old chain expectation threw during client boot and left the page on “Failed to load plugins”.
|
|
12
|
+
- Icon imports use the rc.1 weight names (`IconBrowseOutlineRegular` and the rest). Size stays a prop.
|
|
13
|
+
- Pending confirmation now reads `useSessionStatus` (`pendingInteraction`). The removed `useSessionPendingInteraction` hook threw as soon as the reader painted.
|
|
14
|
+
- Code and terminal labels include the rc.1 toolbar fields (`codeLabel`, wrap, and `noExitCode`).
|
|
15
|
+
|
|
16
|
+
## 0.3.0 — 2026-09-21
|
|
17
|
+
|
|
18
|
+
- 修复关闭自动折叠、查看过程详情后,再开启仍无法折叠的问题;重新开启会恢复自动折叠规则,仍保留文本选择保护和之后的手动展开。
|
|
19
|
+
- 在现有阅读布局中接入官方反馈、工具详情、显式产物卡片、命令和未知节点渲染;官方渲染器负责注入、翻译、store 和子插槽。
|
|
20
|
+
- 移除直接调用工具组件及模拟点击展开的逻辑,保留现有摘要、折叠、动效和文件快捷操作。
|
|
21
|
+
- 接入官方文件链接服务,传递工具文件行号,补齐 RC2 本地 Markdown 图片及加载失败降级。
|
|
22
|
+
- 修复滚动跟随拉回底部的问题,统一阅读列轨道和吸顶区域的位置。
|
|
23
|
+
- 代码解释器结果按终端输出展示,上下文行兼容 `provenance` 和 `producer`。
|
|
24
|
+
- 增加可重放的官方组件集成测试、自动折叠交互回归和 Harness 升级兼容检查,依赖对齐 Harness `0.1.5-rc.2`。
|
|
25
|
+
- 设计范围、接口边界和待收敛模块见 `docs/official-rendering-bridge.md`。
|
|
26
|
+
|
|
3
27
|
## 0.2.1 — 2026-09-20
|
|
4
28
|
|
|
5
29
|
### Fixed
|
package/README.en.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
Prefer npm (version-pinable):
|
|
6
6
|
|
|
7
7
|
```sh
|
|
8
|
-
dsh plugin --profile web add dsh-better-display@0.
|
|
8
|
+
dsh plugin --profile web add dsh-better-display@0.3.1
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
Or latest:
|
|
@@ -28,13 +28,15 @@ Adds a **阅读** tab to DeepSeek Harness. While a turn runs you see steps, thin
|
|
|
28
28
|
|
|
29
29
|
A ````mcp-app` fence in the final answer mounts as an interactive card in the reading view, inside `<iframe sandbox="allow-scripts allow-forms">` without `allow-same-origin`. The card can fill the next prompt via JSON-RPC. The skill pack is [`skills/generative-mcpapps/`](skills/generative-mcpapps/). Settings → **Better Display** can preview deliverables in the right Sidebar (system app remains the default), turn on translucent frosted glass (off by default), toggle process auto-folding (On is the default), and reports whether that skill is installed in a harness skill root.
|
|
30
30
|
|
|
31
|
-
Targets DeepSeek Harness **0.1.
|
|
31
|
+
Targets DeepSeek Harness **0.1.7-rc.1**. Display only. It does not change Agent execution, the SDK, or credentials. Node.js `^22.19.0 || >=24`. New sessions default to reading.
|
|
32
|
+
|
|
33
|
+
**0.3.0** keeps the existing reading layout, folding, and motion while using official feedback, tool details, file cards, and file links. It also fixes process content staying expanded after auto-folding is re-enabled. See the [official integration notes](docs/official-rendering-bridge.md) for coverage and upgrade checks.
|
|
32
34
|
|
|
33
35
|
From a local checkout or tarball:
|
|
34
36
|
|
|
35
37
|
```sh
|
|
36
38
|
dsh plugin --profile web add ./dsh-better-display
|
|
37
|
-
dsh plugin --profile web add ./dsh-better-display-0.
|
|
39
|
+
dsh plugin --profile web add ./dsh-better-display-0.3.1.tgz
|
|
38
40
|
```
|
|
39
41
|
|
|
40
42
|
`dsh.bundle` is captured at Host boot. Do not also insert the same row by hand in the profile `cordis.patch.yml`, or it will mount twice.
|
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
推荐用 npm(可钉版本):
|
|
6
6
|
|
|
7
7
|
```sh
|
|
8
|
-
dsh plugin --profile web add dsh-better-display@0.
|
|
8
|
+
dsh plugin --profile web add dsh-better-display@0.3.1
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
也可以装 latest:
|
|
@@ -28,13 +28,15 @@ PATH 上要有官方 `dsh`(没有就用 `npx @deepseek-ai/dsh`)和 **pnpm**
|
|
|
28
28
|
|
|
29
29
|
最终回答里的 ````mcp-app` 代码块会在阅读视图里挂成交互卡片,跑在 `<iframe sandbox="allow-scripts allow-forms">` 里,没有 `allow-same-origin`。卡片可以通过 JSON-RPC 把下一轮 prompt 填进输入框。技能包在 [`skills/generative-mcpapps/`](skills/generative-mcpapps/)。设置里的 **Better Display** 可把产物改为右侧栏预览(默认仍用系统应用),打开半透明毛玻璃(默认关),设置过程自动折叠开关(默认开),并检测该技能是否已装进宿主技能目录。
|
|
30
30
|
|
|
31
|
-
面向 DeepSeek Harness **0.1.
|
|
31
|
+
面向 DeepSeek Harness **0.1.7-rc.1**。只改展示,不改 Agent 执行、SDK 或模型凭据。Node.js `^22.19.0 || >=24`。新会话默认进阅读。
|
|
32
|
+
|
|
33
|
+
**0.3.0** 保留现有阅读布局、折叠和动效,接入官方反馈、工具详情、文件卡片及文件链接;并修复重新开启自动折叠后仍保持展开的问题。接入范围和升级检查见 [官方能力接入说明](docs/official-rendering-bridge.md)。
|
|
32
34
|
|
|
33
35
|
本地目录或 tarball:
|
|
34
36
|
|
|
35
37
|
```sh
|
|
36
38
|
dsh plugin --profile web add ./dsh-better-display
|
|
37
|
-
dsh plugin --profile web add ./dsh-better-display-0.
|
|
39
|
+
dsh plugin --profile web add ./dsh-better-display-0.3.1.tgz
|
|
38
40
|
```
|
|
39
41
|
|
|
40
42
|
`dsh.bundle` 是开机捕获的。不要再往 profile 的 `cordis.patch.yml` 手写同一条 insert,会重复挂载。
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"harnessVersion": "0.1.7-rc.1",
|
|
3
|
+
"hashes": {
|
|
4
|
+
"packages/client/ui-slots/src/index.ts": "27a453937cdcc28923c37ad90cd01489e458e205dc03032629183087b5b585d0",
|
|
5
|
+
"packages/client/ui-slots/src/renderer.ts": "ee834aafc19367922c139d41f677233fbdfcc042b4deff9f616aa43220ee09ee",
|
|
6
|
+
"packages/client/ui-renderer/src/client/registry.ts": "6b8b6b969d8bcf0314ea20438a223f3a90e1bd516571faecae5c3c01008ecf21",
|
|
7
|
+
"packages/client/ui-renderer/src/client/scoped-slots.tsx": "082ebd62a6d287704d116fa1b233f12ab62a91bc6ccccf99d8137b1f33b8d02b",
|
|
8
|
+
"packages/client/ui-chat/src/client/contract/slots.ts": "4bfe6f2b3d33d0ba4dc82f7ed93255ad4a2df16c6540937a07a658bd66d4d664",
|
|
9
|
+
"packages/client/ui-tool/src/client/contract/slots.ts": "4ae6334ebb0c6a267c13e8b6b504a614d302e77b4080a63408b97f4d25b22a3f",
|
|
10
|
+
"packages/client/ui-deliverables/src/client/Deliverables.tsx": "b8d0a19dc208af7f8f44459adba9afe648cd3c398d75917ccfaf2f8c730cfe74",
|
|
11
|
+
"packages/client/ui-chat/src/client/chat/AssistantMarkdown.tsx": "d0a60ef4c8620e7916579f1e7f959fa2c81e8dcdbc1dea1d7ea16b5b667adb62",
|
|
12
|
+
"packages/client/ui-chat/src/client/chat/MessageItem.tsx": "181844e9c1809607458dfdfbbffa50cbc16357d0696ae78a8ee13f86b5fd6354",
|
|
13
|
+
"packages/client/ui-chat/src/client/chat/AssistantNodeView.tsx": "239c8fe1305ede17d3786bfdd61e7e52f3cab30ae548befe172867c52deef388",
|
|
14
|
+
"packages/client/ui-chat/src/client/chat/TurnTailNodeView.tsx": "4b493845e7d28b93a2db2198e70deffcf4b290c31218923fc7c945af737b56d1",
|
|
15
|
+
"packages/client/ui-chat/src/client/chat/TurnProcessNodeView.tsx": "731a879e517c9ff28c7d833863e774745666cffe3a2fd2f9aa3fff1adcbc4a17",
|
|
16
|
+
"packages/client/ui-tool/src/client/tool/models/tool-call-model.ts": "d3373fbb23ae4fb158ed009d0c0d7aaa5a22609946adb52e48a30cb02323c16f",
|
|
17
|
+
"packages/client/ui-primitives/src/markdown/MarkdownText.tsx": "ff500ab71ac6a55df416f84cc1f5900327b9908c5180c4e2b3888377bd417a97",
|
|
18
|
+
"packages/client/ui-primitives/src/markdown/render.tsx": "6bcd477f6830587e5258aed48df81b0c7c0c0e661ea74ba8828fc4be653875de",
|
|
19
|
+
"packages/client/ui-primitives/src/markdown/parse.ts": "e281b4120306987cce9cf6d8bccfeddec2fe0c7b7b1cc190966f6dcbfd320b1b",
|
|
20
|
+
"packages/client/ui-primitives/src/markdown/incremental.ts": "eaa266bb77dfb646738d0fdd79be4f1c4bc5490f7bf3f4127f9ffb72ef741ff8",
|
|
21
|
+
"packages/client/ui-primitives/src/markdown/katex.tsx": "8227e04d29333d2568021ed012143237b457852bce25d82cf394d72b941e74a5"
|
|
22
|
+
},
|
|
23
|
+
"registrations": [
|
|
24
|
+
"conversation.chat.assistant-actions | feedback | packages/client/ui-message-feedback/src/client/index.ts",
|
|
25
|
+
"conversation.chat.node | assistant-step | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
26
|
+
"conversation.chat.node | command | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
27
|
+
"conversation.chat.node | command-input | packages/client/ui-goal/src/client/index.ts",
|
|
28
|
+
"conversation.chat.node | compaction | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
29
|
+
"conversation.chat.node | context | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
30
|
+
"conversation.chat.node | manual-compaction | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
31
|
+
"conversation.chat.node | model-retry | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
32
|
+
"conversation.chat.node | steering | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
33
|
+
"conversation.chat.node | system-prompt | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
34
|
+
"conversation.chat.node | tool-call | packages/client/ui-tool/src/client/apply.ts",
|
|
35
|
+
"conversation.chat.node | turn-error | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
36
|
+
"conversation.chat.node | turn-max-tokens | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
37
|
+
"conversation.chat.node | turn-process | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
38
|
+
"conversation.chat.node | turn-tail | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
39
|
+
"conversation.chat.node | turn-trigger | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
40
|
+
"conversation.chat.node | unknown | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
41
|
+
"conversation.chat.node | user | packages/client/ui-chat/src/client/chat/register-node-renderers.ts",
|
|
42
|
+
"conversation.chat.node | workflow-run | packages/client/ui-workflow-run/src/client/index.ts",
|
|
43
|
+
"conversation.chat.turnTail | (chain/single) | packages/client/ui-plan/src/client/index.ts",
|
|
44
|
+
"conversation.chat.turnTail | @deepseek-ai/dsh-client-ui-deliverables | packages/client/ui-deliverables/src/client/index.ts",
|
|
45
|
+
"conversation.message.images | (chain/single) | packages/client/ui-attachment/src/client/index.ts",
|
|
46
|
+
"tool.call.images | (chain/single) | packages/client/ui-attachment/src/client/index.ts",
|
|
47
|
+
"tool.call.toolview | ask_user_question | packages/client/ui-tool/src/client/tool/toolviews/ask-question-row.tsx",
|
|
48
|
+
"tool.call.toolview | bash | packages/client/ui-tool/src/client/tool/toolviews/bash-sample.tsx",
|
|
49
|
+
"tool.call.toolview | cordis_inspect_list | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
50
|
+
"tool.call.toolview | cordis_inspect_query | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
51
|
+
"tool.call.toolview | cordis_inspect_self | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
52
|
+
"tool.call.toolview | create_goal | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
53
|
+
"tool.call.toolview | edit | packages/client/ui-tool/src/client/tool/toolviews/file-mutation-row.tsx",
|
|
54
|
+
"tool.call.toolview | get_goal | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
55
|
+
"tool.call.toolview | glob | packages/client/ui-tool/src/client/tool/toolviews/search-row.tsx",
|
|
56
|
+
"tool.call.toolview | grep | packages/client/ui-tool/src/client/tool/toolviews/search-row.tsx",
|
|
57
|
+
"tool.call.toolview | interrupt_agent | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
58
|
+
"tool.call.toolview | job_kill | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
59
|
+
"tool.call.toolview | job_list | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
60
|
+
"tool.call.toolview | job_output | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
61
|
+
"tool.call.toolview | list_agents | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
62
|
+
"tool.call.toolview | list_subagent_models | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
63
|
+
"tool.call.toolview | lsp | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
64
|
+
"tool.call.toolview | present | packages/client/ui-deliverables/src/client/index.ts",
|
|
65
|
+
"tool.call.toolview | ralph | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
66
|
+
"tool.call.toolview | read | packages/client/ui-tool/src/client/tool/toolviews/read-row.tsx",
|
|
67
|
+
"tool.call.toolview | read_image | packages/client/ui-tool/src/client/tool/toolviews/read-image-row.tsx",
|
|
68
|
+
"tool.call.toolview | schedule_create | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
69
|
+
"tool.call.toolview | schedule_delete | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
70
|
+
"tool.call.toolview | schedule_list | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
71
|
+
"tool.call.toolview | send_message | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
72
|
+
"tool.call.toolview | session_event_read | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
73
|
+
"tool.call.toolview | session_event_search | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
74
|
+
"tool.call.toolview | session_event_trace | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
75
|
+
"tool.call.toolview | session_search | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
76
|
+
"tool.call.toolview | session_trace | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
77
|
+
"tool.call.toolview | skill | packages/client/ui-skill/src/client/index.ts",
|
|
78
|
+
"tool.call.toolview | spawn_teammate | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
79
|
+
"tool.call.toolview | subagent | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
80
|
+
"tool.call.toolview | team_task_create | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
81
|
+
"tool.call.toolview | team_task_get | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
82
|
+
"tool.call.toolview | team_task_list | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
83
|
+
"tool.call.toolview | team_task_update | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
84
|
+
"tool.call.toolview | terminal_close | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
85
|
+
"tool.call.toolview | terminal_list | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
86
|
+
"tool.call.toolview | terminal_open | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
87
|
+
"tool.call.toolview | terminal_read | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
88
|
+
"tool.call.toolview | terminal_signal | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
89
|
+
"tool.call.toolview | todo_write | packages/client/ui-tool/src/client/tool/toolviews/todo-row.tsx",
|
|
90
|
+
"tool.call.toolview | update_goal | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
91
|
+
"tool.call.toolview | wait_agent | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
92
|
+
"tool.call.toolview | web_fetch | packages/client/ui-tool/src/client/tool/toolviews/web-row.tsx",
|
|
93
|
+
"tool.call.toolview | web_search | packages/client/ui-tool/src/client/tool/toolviews/web-row.tsx",
|
|
94
|
+
"tool.call.toolview | workflow | packages/client/ui-tool/src/client/tool/toolviews/details-row.tsx",
|
|
95
|
+
"tool.call.toolview | write | packages/client/ui-tool/src/client/tool/toolviews/file-mutation-row.tsx"
|
|
96
|
+
]
|
|
97
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# 官方能力接入说明
|
|
2
|
+
|
|
3
|
+
`0.3.0` 在 `v0.2.1` 的阅读布局上接入官方内容和控件,经过试用验收后发布。当前验收目标是 Harness `0.1.7-rc.1`。`conversation.chat.turnTail` 在这一版是 `list`,不再是 `chain`。后续仍需维护的自有展示逻辑和升级边界见下文。
|
|
4
|
+
|
|
5
|
+
## 一个具体例子
|
|
6
|
+
|
|
7
|
+
一条回答的持久化 `messageId` 进入 `OfficialActions`,随后进入 Reader 自己的回答操作插槽。里面的反馈组件、状态注入和弹窗控制器来自当前已加载的官方反馈插件。点击按钮后,由官方控制器打开原来的官方弹窗;Reader 不实现反馈请求、类别或状态管理。
|
|
8
|
+
|
|
9
|
+
工具详情同理:传递 `callId`、原始 `block`、工作目录、Host home、图片加载器、带行号的文件打开操作和轨迹入口,再由官方工具组件呈现。原来只取函数组件、手工传四个参数并模拟点击展开的路径已经移除。
|
|
10
|
+
|
|
11
|
+
## 代码归属
|
|
12
|
+
|
|
13
|
+
| 模块 | 负责什么 |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| `official-slots.tsx` | 用公开注册表 API 将官方注册信息映射到 Reader 的独立插槽;保留注入、locale、store、selector 和子插槽。监听贡献增删,逐条挂载和释放。 |
|
|
16
|
+
| `OfficialContent.tsx` | 将回答身份、工具、节点和产物上下文传给官方控件。这里只组合,不处理业务请求。 |
|
|
17
|
+
| `Reader.tsx`、`ToolActivity.tsx` | 原有阅读布局、过程组织、摘要和交互。工具详情里的控件采用官方形式。 |
|
|
18
|
+
| `platform-media.ts` | RC2 的本地媒体 URL 约定;读取授权仍由 Host 文件 API 负责。 |
|
|
19
|
+
| `compat/harness-rc2.json` | 已验收的官方接口、被自有展示覆盖的实现和注册清单基线。 |
|
|
20
|
+
|
|
21
|
+
## 为什么有插槽映射
|
|
22
|
+
|
|
23
|
+
RC2 的一个子插槽只能有一个声明者,只有声明它的组件能获得相应 `renderSlot` 权限。Reader 不能把官方插槽再声明一次,也不能从 `ctx.slots` 任意渲染子插槽。
|
|
24
|
+
|
|
25
|
+
本适配用 `spec`、`entriesOfSlot`、`register`、`inject`、`subscribe` 建立 Reader 自己的名字空间,交给同一个官方渲染器运行。组件声明的子插槽名称在一层薄包装中转换,其余属性原样传递。没有私有源码导入,没有修改官方注册对象或官方 DOM,没有复制官方渲染器。现有控件保持组件和注入身份;增加别的控件不会重挂它们。
|
|
26
|
+
|
|
27
|
+
这仍是 RC2 的受限适配方案。若官方将来提供可直接组合的共享渲染入口,应优先替换这层映射。
|
|
28
|
+
|
|
29
|
+
## 这版覆盖的能力
|
|
30
|
+
|
|
31
|
+
| 能力 | 处理方式 |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| 回答操作、反馈 | 官方 `conversation.chat.assistant-actions`,使用持久化 messageId;中断的临时片段不伪造身份。 |
|
|
34
|
+
| 工具详情 | 官方 `tool.call.toolview`,包括 memo、注入状态、翻译和递归子插槽;未注册的工具保留原有结果预览。 |
|
|
35
|
+
| 显式 `present` 产物 | 官方 turnTail 中的文件卡片和菜单,保留官方状态和打开操作。 |
|
|
36
|
+
| 已修改文件快捷操作 | 保持原 Reader 的复制、定位和打开模式;仅从 Reader 的官方 tail 展示参数中排除重复的 produced chips,不改变官方源数据。未知匹配结构原样呈现。 |
|
|
37
|
+
| 文件行号和正文文件链接 | 保留工具传来的行号;正文优先采用官方 file-mention 服务,现有路径匹配作为补充。 |
|
|
38
|
+
| 本地 Markdown 图片 | 和 RC2 相同的同源文件 API,加载失败保留替代文本,危险协议不直接渲染。 |
|
|
39
|
+
| 命令、新节点类型 | 接入官方节点渲染及其子插槽;无可用渲染器时保留记录并提供“在对话中查看”。 |
|
|
40
|
+
|
|
41
|
+
阅读布局、折叠、逐字动效、阅读速度、默认设置保持现版。移除了未被使用的全局 `body.dataset.readerFolding` 写入。
|
|
42
|
+
|
|
43
|
+
## 验证与升级
|
|
44
|
+
|
|
45
|
+
在选定 Harness 运行时上执行:
|
|
46
|
+
|
|
47
|
+
```sh
|
|
48
|
+
node scripts/link-harness-dependencies.mjs "$DSHX_HARNESS"
|
|
49
|
+
npm run build
|
|
50
|
+
npm test
|
|
51
|
+
npm run test:official
|
|
52
|
+
npm run test:auto-fold
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
`test:official` 使用测试目标里的真实官方 SlotRegistry、React renderer、反馈插件、ReadRow 和 Deliverables,只有远程业务服务使用内存替身。测试私有源码仅用于验证,不进入交付 bundle。浏览器验证使用本机固定的 Codex Playwright runtime,不附着用户会话。
|
|
56
|
+
|
|
57
|
+
`test:auto-fold` 使用真实 Reader 和独立的全局、会话 store,验证关闭后阅读再开启、此前步骤、设置同步、文本选择及连续切换;分别覆盖普通动画和减少动态效果。
|
|
58
|
+
|
|
59
|
+
`build` 先检查兼容基线。Harness 版本、敏感接口、尚未收敛的官方实现或相关注册清单改变时,构建明确要求审查。审查差异并通过功能与视觉测试后,才可运行 `check-harness-compat.mjs --record` 记录新基线。记录本身不构成兼容证明。
|
|
60
|
+
|
|
61
|
+
## 后续仍需完成
|
|
62
|
+
|
|
63
|
+
Markdown 定制仍保留逐字动效和 MCP 展示钩子,官方公共组件还没有对应的注入接口。上下文行、部分过程展示和工具摘要也仍有自有实现。本分支先建立官方能力的完整运行路径,后续按视觉基线逐模块收敛这些副本,并拆分 Reader 的阅读策略与动画执行。不能据此承诺所有未来版本零维护,也不承诺任意第三方插件兼容。
|
|
64
|
+
|
|
65
|
+
已有客户端通过 HMR 更新时,无需新增 Host 或改写会话数据;应先核对实际安装来源、构建产物和同页行为。正式版本保留 Git 标签及发布包,便于按版本安装和回退。
|