@deepseek-ai/dsh-client-ui-tool 0.2.0-rc.1 → 0.2.1-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/README.i18n.yaml +17 -14
- package/README.md +19 -9
- package/README.zh.md +19 -9
- package/lib/client.js +365 -156
- package/lib/types/client/contract/slots.d.ts +50 -21
- package/lib/types/client/index.d.ts +1 -1
- package/lib/types/client/tool/components/QuestionToolRow.d.ts +13 -0
- package/lib/types/client/tool/components/ToolRow.d.ts +4 -4
- package/lib/types/client/tool/models/raw-tool-call.d.ts +0 -7
- package/lib/types/client/tool/models/tool-call-model.d.ts +3 -2
- package/lib/types/client/tool/toolviews/ask-question-row.d.ts +20 -4
- package/lib/types/client/tool/toolviews/bash-sample.d.ts +3 -2
- package/lib/types/client/tool/toolviews/file-mutation-row.d.ts +3 -2
- package/package.json +30 -28
- package/lib/types/client/tool/components/PreparingToolRow.d.ts +0 -19
- package/lib/types/client/tool/tool-call-arguments-partial.d.ts +0 -9
package/README.i18n.yaml
CHANGED
|
@@ -15,26 +15,29 @@
|
|
|
15
15
|
en: d152484eb41ac6b4
|
|
16
16
|
zh: 09388d293f9be9cb
|
|
17
17
|
/deepseek-ai-dsh-client-ui-tool/use-this-package:
|
|
18
|
-
en:
|
|
19
|
-
zh:
|
|
18
|
+
en: 3b9b719ca4e4cc62
|
|
19
|
+
zh: a14b63a16476d684
|
|
20
20
|
/deepseek-ai-dsh-client-ui-tool/use-this-package/registering-a-business-tool-view:
|
|
21
|
-
en:
|
|
22
|
-
zh:
|
|
21
|
+
en: f19e077425b8f312
|
|
22
|
+
zh: 24d88794be439302
|
|
23
23
|
/deepseek-ai-dsh-client-ui-tool/use-this-package/built-in-views:
|
|
24
|
-
en:
|
|
25
|
-
zh:
|
|
24
|
+
en: 2e06c7de0f7f0139
|
|
25
|
+
zh: 9ec0f94c2d7d60bf
|
|
26
26
|
/deepseek-ai-dsh-client-ui-tool/understand-the-implementation:
|
|
27
27
|
en: 00bc7b0c84edc603
|
|
28
28
|
zh: 1cfcf5b435248a91
|
|
29
29
|
/deepseek-ai-dsh-client-ui-tool/understand-the-implementation/rendering-contract:
|
|
30
|
-
en:
|
|
31
|
-
zh:
|
|
30
|
+
en: 672e63b2f92e689b
|
|
31
|
+
zh: ba950ecb480325a6
|
|
32
32
|
/deepseek-ai-dsh-client-ui-tool/understand-the-implementation/cards:
|
|
33
|
-
en:
|
|
34
|
-
zh:
|
|
33
|
+
en: d202f30c846543d2
|
|
34
|
+
zh: a84656956c66a574
|
|
35
|
+
/deepseek-ai-dsh-client-ui-tool/understand-the-implementation/declared-optional-capabilities:
|
|
36
|
+
en: c1926deb4e5f3734
|
|
37
|
+
zh: c5845f465b94a459
|
|
35
38
|
/deepseek-ai-dsh-client-ui-tool/further-exploration:
|
|
36
|
-
en:
|
|
37
|
-
zh:
|
|
39
|
+
en: b37600769951cbca
|
|
40
|
+
zh: 816589549d21d176
|
|
38
41
|
/deepseek-ai-dsh-client-ui-tool/model-experience:
|
|
39
42
|
en: 1e5e72dd269855d5
|
|
40
43
|
zh: 81a4756d460e3af9
|
|
@@ -45,5 +48,5 @@
|
|
|
45
48
|
en: 7475317a656f1d11
|
|
46
49
|
zh: 787f10cc0f2c586e
|
|
47
50
|
/deepseek-ai-dsh-client-ui-tool/known-limitations-and-deferred-work/dev-note:
|
|
48
|
-
en:
|
|
49
|
-
zh:
|
|
51
|
+
en: e67f633dc6fe7773
|
|
52
|
+
zh: 3bb0c20c93f16f98
|
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ Tool calls appear in the conversation as cards: a root call tree with its nested
|
|
|
29
29
|
|
|
30
30
|
Shared Tool rows and Bash rows retain error and warning colors for failed and stopped summaries, including on hover. Hover darkens only summaries without those states.
|
|
31
31
|
|
|
32
|
-
Before dispatch, a named model call appears as one non-expandable row with its tool-owned icon and title. A generic row shows `Tool call · <tool name>`.
|
|
32
|
+
Before dispatch, a named model call appears as one non-expandable row with its tool-owned icon and title. A generic row shows `Tool call · <tool name>`. Read/write/edit show an openable path once `file_path` closes and decodes without errors; write/edit show `NKB` after that path once content arrives, retaining it during execution and after success, before any diff totals. N rounds the decoded input's UTF-16 length up in units of 1024, summing old and new text for edit; it is not file bytes. Error and stopped rows omit the size and diff totals. Command rows show the streamed description. `tool/call` enables the existing call presentation; completing an argument block alone does not start execution.
|
|
33
33
|
|
|
34
34
|
### Registering a business tool view
|
|
35
35
|
|
|
@@ -43,13 +43,19 @@ ctx.slots.inject('tool.call.toolview', () =>
|
|
|
43
43
|
}, BusinessToolRow))
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
The owner payload is `ToolCallOwnerProps`: `callId`, `toolName`, the `phase` discriminant and its
|
|
46
|
+
The owner payload is `ToolCallOwnerProps`: `callId`, `toolName`, the `phase` discriminant and its stage-specific `block`, optional `cwd` and `home`, the session-authorized `loadImage` loader (for a view whose result carries durable images), and plain `openFile`/`inspect` callbacks. A PTC dispatch block retains its event's `parentCallId`; a root Session call has no such field, so descendants route through the same keyed dispatch — a registered view such as `read_image` renders its card there, and unregistered descendants keep the generic flattened form. Path summaries relativize to the Session cwd first, then replace a leftover POSIX Host home with `~`; `filePath` and Host open keep the authored filesystem path. The registration receives the normal Session slot runtime share but no React node or Runtime service.
|
|
47
47
|
|
|
48
48
|
### Built-in views
|
|
49
49
|
|
|
50
|
-
Every registered view receives the explicit `preparing`, `start`, and `result` props declared in [the Tool slot types](src/client/contract/slots.ts).
|
|
50
|
+
Every registered view receives the explicit `preparing`, `start`, and `result` props declared in [the Tool slot types](src/client/contract/slots.ts). All blocks expose `name` and a lazy `args` reader; legacy `argsRaw` and result `call` fields remain available. The row model selects the title and combines any generic tool-name prefix with the available argument summary independently of lifecycle state. Tool-owned titles omit the English name. Write/edit and Bash share their component across stages. Custom renderers may retain separate preparation branches; argument-dependent components accept `StartedToolCallViewProps`.
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
File-tool rows prefer a complete `file_path`; other generic rows, including search and unregistered tools, prefer a non-empty `description` before their variant-specific argument fallback. Read `args` during rendering or view construction: a preparing reader grows in place, and only previously observed answer changes trigger subsequent block publication.
|
|
53
|
+
|
|
54
|
+
This package owns the generic fallback and the built-in shell/pwsh, read, read_image, write/edit, running `str_replace_editor` `create`/`str_replace`, grep/glob, web, todo, question, and PTC dispatch presentations. Structured cards derive directly from first-party raw event fields; Host `presentCall` and `presentResult` values never enter the Client. Running atomic rows share one left-to-right highlight across their titles, separators, summaries, and suffixes, while settled rows stay static. Running and settled foreground standard `bash`/`pwsh` and `terminal_send` calls use terminal cards at the root and in PTC dispatch children, subject to the same argument, result, and error checks. Persistent `bash`/`pwsh` calls use terminal cards only while running. Shell output ending in a recognized spill-policy notice uses expandable generic output in shell rows and generic output in Details; a displaced or omitted exit marker cannot establish success. Settled persistent-shell results stay generic because reset and partial-output diagnostics do not always describe one process exit status; root persistent results are expandable, while background acknowledgements remain collapsed. A native or PTC dispatch failure carrying `AUTO_REVIEW_DENIED` shows the Auto review verdict in its collapsed row and one normalized not-executed reason when expanded; a missing or whitespace-only reason uses localized fallback text. `ui-skill` demonstrates a business-owned registration for `skill`.
|
|
55
|
+
|
|
56
|
+
Question rows pair answers with questions by id, using the tool result or the `userQuestions` projection for late replies. An answerable call has a button to reopen its panel. Once a late reply is in the agent Inbox, the row shows its submitted answers; “View answers” expands its read-only transcript while admission is pending. A settled call with answers opens the panel read-only. Closed calls without answers and invalid records offer no button. Cancelled and interrupted rows show their verdict without inventing answers. If no panel provider accepts the button action, it expands the row. Unsupported or ambiguous input falls back to flattened Tool text.
|
|
57
|
+
|
|
58
|
+
Answer-panel buttons belong to the question renderer. It composes `DisclosureRow` with its own action and transcript; generic `ToolRow` does not select or dispatch question actions.
|
|
53
59
|
|
|
54
60
|
-----
|
|
55
61
|
|
|
@@ -68,22 +74,27 @@ The package realizes one dispatch rule: atomic Tool views are keyed by wire Tool
|
|
|
68
74
|
Tool owner props forward Chat's stable `useDisclosure` Hook through root and nested calls. Rows invoke it where they own their expanded bodies; intermediate renderers do not subscribe. Each invocation has independent open state that resets when the enclosing Turn collapses, without replacing React identity. Presentation-mode switches preserve it.
|
|
69
75
|
|
|
70
76
|
|
|
71
|
-
|
|
77
|
+
Tool Definitions own the [lazy argument view](../../util/values/README.md). Rows choose their fields and update granularity through its readers, without a separate subscription or registration. Deltas append without scanning; frame-batched publication refreshes observed answers and replaces the block only when an answer changes. Card models that need dispatched arguments continue to read `argsRaw`.
|
|
72
78
|
|
|
73
79
|
### Cards
|
|
74
80
|
|
|
75
81
|
|
|
76
82
|
Every card is read in place in the call tree; there is no second, full-height presentation of a selected call. Row renderers share one pure card model for each terminal, read, diff, search, and web card, and the image card's gallery renders through the tool-owned `tool.call.images` slot. These models validate raw call arguments, result content, failure state, persisted metadata, PTC dispatch `parentCallId`, and Session path facts. Unsupported or malformed inputs use flattened Tool result text. A file-path summary opens the file through the owner's `openFile`, which the chat view routes to the right Sidebar's text preview; `inspect` opens the trajectory view and is absent when that View is unavailable; cards then omit Inspect. Card-specific limits and fallback rules for the terminal, diff, read, search, and web cards remain in [the ui-primitives README](../ui-primitives/README.md); the image card's model in this package carries its own fallback rules.
|
|
77
83
|
|
|
78
|
-
Chat diff cards keep nine rows before folding, enough for a file header, one removed/added pair, and three context lines on either side. The tool row shows the primitive's exact or coarse-replacement counts; the expanded card contains the diff body without a totals footer.
|
|
84
|
+
Chat diff cards keep nine rows before folding, enough for a file header, one removed/added pair, and three context lines on either side. The tool row shows the primitive's exact or coarse-replacement counts; the expanded card contains the diff body without a totals footer. Hovering the tool header colors its added count green and removed count red; both retain those colors while the card is expanded.
|
|
79
85
|
|
|
80
86
|
An Auto denial takes precedence over keyed specialized views. Its generic row preserves the call identity, omits raw arguments, and normalizes the stored reason only for display: trim surrounding whitespace and collapse line separators to spaces, with localized fallback for an empty result. Session and SDK error details keep the original reason.
|
|
81
87
|
|
|
82
|
-
Recorded tool details cover goal and schedule tools, Cordis inspection, workflow and Ralph reports, Session event/search/trace queries, agent and teammate controls, background jobs, persistent terminals, and LSP navigation. These expanded bodies read successful logged results, preserve generic input/output for failures or unsupported data, and keep Inspect available. Dates include the viewer's time zone, and statuses reflect the call result rather than current session state. Session traces preserve descendant indentation. LSP results open filesystem paths through the Host callback and display other URIs as text. The browser adapter consumes recorded producer text and JSON; Host service objects and presenter callbacks do not cross into the Client.
|
|
88
|
+
Recorded tool details cover goal and schedule tools, Cordis inspection, workflow and Ralph reports, Session event/search/trace queries, agent and teammate controls, background jobs, persistent terminals, and LSP navigation. These expanded bodies read successful logged results, preserve generic input/output for failures or unsupported data, and keep Inspect available. Dates include the viewer's time zone, and statuses reflect the call result rather than current session state. Session traces preserve descendant indentation. LSP results open filesystem paths through the Host callback and display other URIs as text. The browser adapter consumes recorded producer text and JSON; Host service objects and presenter callbacks do not cross into the Client.
|
|
83
89
|
|
|
84
90
|
Expanded status dots and labels use static semantic colors. Receipt and job-output headers keep neutral text and omit the status while expanded. An interruption receipt confirms only that interruption was requested.
|
|
85
91
|
|
|
86
92
|
The terminal model uses `hasSpillNotice` from the browser-safe `@deepseek-ai/dsh-spill-policy/notice` entry, not an independent UI pattern. The [spill-policy README](../../spill/spill-policy/README.md#shared-notice-ownership) owns notice formatting and recognition. This check conservatively selects generic output; matching text cannot authenticate its source, and replay leaves recorded result bytes untouched.
|
|
93
|
+
|
|
94
|
+
### Declared optional capabilities
|
|
95
|
+
|
|
96
|
+
This package declares the optional `UserQuestionPanels` capability; `ui-user-questions` provides it. `reveal(sessionId, callId)` opens an answerable panel, and `review(sessionId, callId, record)` opens recorded answers read-only. The row reads the capability through `ctx.get('userQuestionPanels')` and keeps its transcript when no question UI is composed.
|
|
97
|
+
|
|
87
98
|
</details>
|
|
88
99
|
|
|
89
100
|
-----
|
|
@@ -96,6 +107,7 @@ These pages cover the conversation host, the view slots, and the card models.
|
|
|
96
107
|
- [ui-conversation](../ui-conversation/README.md) — the chat surface dispatching `tool-call` nodes to this package.
|
|
97
108
|
- [ui-primitives](../ui-primitives/README.md) — the output card atoms the built-in views compose.
|
|
98
109
|
- [ui-skill](../ui-skill/README.md) — a business-owned registration for the `skill` tool.
|
|
110
|
+
- [ui-user-questions](../ui-user-questions/README.md) — the question panels the `ask_user_question` row reopens.
|
|
99
111
|
- [Auto review](../../experimental/auto-review/README.md) — the structured denial identity and user-visible reason owner.
|
|
100
112
|
- [Conversation subsystem](../../../docs/subsystems/conversation.md) — how a business-owned feature registers a Conversation node.
|
|
101
113
|
- [Slot system standard](../../../.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.md) — the composition model behind the keyed slot.
|
|
@@ -132,5 +144,3 @@ These limits define the dispatch depth and the view ownership; they are current
|
|
|
132
144
|
None.
|
|
133
145
|
|
|
134
146
|
</details>
|
|
135
|
-
|
|
136
|
-
**Runtime invariant:** No companion is published. Tool composition is browser-only and contributes no events or cross-plugin mutable state; slot ownership is checked by ui-slots.
|
package/README.zh.md
CHANGED
|
@@ -29,7 +29,7 @@ kind: "package-reference"
|
|
|
29
29
|
|
|
30
30
|
共享工具行和 Bash 行的失败、停止摘要在悬停时仍保留错误色和警告色;只有不处于这两种状态的摘要会在悬停时加深。
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
派发前,模型已给出名称的调用显示为不可展开的一行,使用工具自己的图标与标题。通用行显示为 `工具调用 · <工具名>`。read/write/edit 在 `file_path` 闭合且解码无误后显示可打开的路径;write/edit 从内容到达起在该路径后显示 `NKB`,执行中和成功后仍保留,位于差异统计之前。N 按解码后输入的 UTF-16 长度除以 1024 向上取整,edit 合计新旧文本长度;它不是文件字节数。失败和停止的行省略大小与差异统计。命令行显示流入中的描述。`tool/call` 才启用既有调用展示;参数块结束本身不代表开始执行。
|
|
33
33
|
|
|
34
34
|
### 注册业务工具视图
|
|
35
35
|
|
|
@@ -43,13 +43,19 @@ ctx.slots.inject('tool.call.toolview', () =>
|
|
|
43
43
|
}, BusinessToolRow))
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
owner 载荷为 `ToolCallOwnerProps`:`callId`、`toolName`、`phase`
|
|
46
|
+
owner 载荷为 `ToolCallOwnerProps`:`callId`、`toolName`、`phase` 判别字段及对应阶段的 `block`、可选 `cwd` 与 `home`、会话授权的 `loadImage` loader(供结果携带持久图像的视图使用),以及普通的 `openFile`/`inspect` 回调。PTC dispatch 块保留事件的 `parentCallId`;根会话调用没有该字段,因此后代调用都走同一条按 key 分发路径:已注册视图的调用(如 `read_image`)也会在嵌套处渲染对应卡片,未注册的后代调用则保持通用压平形式。路径摘要先相对会话 cwd 缩短,再把剩余的 POSIX Host home 写成 `~`;`filePath` 与 Host 打开仍使用作者给出的文件系统路径。注册项会收到常规的会话 slot 运行时共享数据,但不会收到 React 节点或运行时服务。
|
|
47
47
|
|
|
48
48
|
### 内置视图
|
|
49
49
|
|
|
50
|
-
每个注册视图都接收[工具 slot 类型](src/client/contract/slots.ts)声明的显式 `preparing`、`start` 和 `result` props
|
|
50
|
+
每个注册视图都接收[工具 slot 类型](src/client/contract/slots.ts)声明的显式 `preparing`、`start` 和 `result` props。所有块都提供 `name` 和懒计算的 `args` 读器,原有 `argsRaw` 和 result 的 `call` 字段仍可使用。行模型统一选择标题,并组合通用工具名前缀与已有参数摘要,不按生命周期阶段改变前缀;专用标题不附带英文名。write/edit 和 Bash 在各阶段共用组件。自定义 renderer 可保留独立准备态分支;依赖参数的组件接收 `StartedToolCallViewProps`。
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
文件工具行优先使用完整的 `file_path`;其他通用行(包括搜索和未注册的工具)优先使用非空 `description`,再回退到各自类别的参数摘要。应在渲染或构造视图时读取 `args`:准备态读器原地增长,后续仅在已观察答案变化时重新发布块。
|
|
53
|
+
|
|
54
|
+
本包拥有 generic fallback,以及 shell/pwsh、read、read_image、write/edit、运行中的 `str_replace_editor` `create`/`str_replace`、grep/glob、web、todo、question 与 PTC dispatch 的内置展示。结构化卡片直接从第一方原始 event 字段派生;Host `presentCall` 与 `presentResult` 值不会进入 Client。运行中的原子工具行以同一道高光从左到右扫过标题、分隔符、摘要与后缀;已完成行保持静态。运行中与已完成的前台标准 `bash`/`pwsh` 和 `terminal_send` 调用,无论位于根还是 PTC dispatch 子调用中,都在通过相同的参数、结果和错误检查后使用 terminal 卡片。持久 `bash`/`pwsh` 调用仅在运行中使用 terminal 卡片。以已识别的 spill 策略提示结尾的 shell 输出,在 shell 行中使用可展开的 generic 输出,在 Details 中使用 generic 输出;位置被改变或被省略的退出标记无法证明成功。已完成的持久 shell 结果保持 generic 展示,因为 reset 与部分输出诊断不一定描述单个进程的退出状态;根调用的持久 shell 结果可展开,后台启动回执则保持折叠。带有 `AUTO_REVIEW_DENIED` 的原生或 PTC dispatch 失败会在折叠行显示 Auto review 裁决,展开时显示一行归一化后的“未执行”原因;原因缺失或只有空白时使用本地化 fallback 文案。`ui-skill` 展示了业务包自行拥有的 `skill` 注册项。
|
|
55
|
+
|
|
56
|
+
问题行按 id 配对问题与答案;答案来自工具结果,迟到回答则来自 `userQuestions` 投影。可回答的调用提供按钮以重新打开面板。迟到回复进入 agent Inbox 后,问题行显示已提交的答案;等待准入期间,「查看回答」展开只读的行内记录。带有答案的已结算调用则以只读方式打开面板。没有答案的已关闭调用和无效记录不提供按钮。已取消和已中断的行显示裁决,不虚构答案。若面板提供方不接受按钮操作,点击会展开该行。不受支持或含糊的输入回退为压平的工具文本。
|
|
57
|
+
|
|
58
|
+
回答面板按钮归问题 renderer 所有。它使用 `DisclosureRow` 组合自己的操作与 transcript;通用 `ToolRow` 不选择或派发问题操作。
|
|
53
59
|
|
|
54
60
|
-----
|
|
55
61
|
|
|
@@ -68,22 +74,27 @@ owner 载荷为 `ToolCallOwnerProps`:`callId`、`toolName`、`phase` 判别字
|
|
|
68
74
|
Tool 所有者属性将 Chat 注入的稳定 `useDisclosure` 钩子传给根调用及嵌套调用。工具行在拥有展开正文的位置调用它,中间 renderer 不订阅。每次调用拥有独立展开状态,外层轮次收起时重置该状态,不替换 React 身份;展示模式切换保留该状态。
|
|
69
75
|
|
|
70
76
|
|
|
71
|
-
|
|
77
|
+
Tool Definition 拥有[懒计算参数视图](../../util/values/README.zh.md)。工具行通过读器选择字段和更新粒度,不另设订阅或注册。delta 追加时不扫描;按帧合批的发布会刷新已观察答案,仅在答案变化时替换块引用。需要完整派发参数的卡片模型继续读取 `argsRaw`。
|
|
72
78
|
|
|
73
79
|
### 卡片
|
|
74
80
|
|
|
75
81
|
|
|
76
82
|
每张卡片都直接在调用树中查看;选中调用后不会再显示第二个全高视图。行 renderer 为 terminal、read、diff、search 和 web 卡片各复用同一个纯 card model,image 卡片的图库经由工具自有 `tool.call.images` slot 渲染。这些 model 校验原始调用参数、结果内容、失败状态、持久 metadata、PTC dispatch 的 `parentCallId` 与会话路径信息。不受支持或格式错误的输入使用压平的工具结果文本。文件路径摘要经属主的 `openFile` 打开文件,chat 视图把它路由到右侧 Sidebar 的文本预览;`inspect` 打开轨迹视图;该视图不可用时不提供此回调,卡片随之隐藏 Inspect。terminal、diff、read、search 与 web 卡片的上限与 fallback 规则仍由 [ui-primitives README](../ui-primitives/README.zh.md) 负责;image 卡片的 fallback 规则由本包内的 card model 自行承载。
|
|
77
83
|
|
|
78
|
-
Chat diff
|
|
84
|
+
Chat diff 卡片在折叠前保留九行,足以容纳文件标题、一对删除与新增行及两侧各三行上下文。工具行显示原语提供的精确或粗粒度替换统计;展开卡片包含差异正文,不显示底部统计。悬停工具标题行时,新增数量显示绿色、删除数量显示红色;卡片展开期间保留这两种颜色。
|
|
79
85
|
|
|
80
86
|
Auto 拒绝优先于按工具名选择的专门视图。其通用行保留调用身份、省略原始参数,并且只在显示时归一化存储的理由:去除首尾空白,把行分隔符折叠为空格,结果为空时使用本地化通用理由。Session 与 SDK 错误详情保留原始理由。
|
|
81
87
|
|
|
82
|
-
记录结果的工具详情覆盖目标和定时任务工具、Cordis 检查、workflow 与 Ralph 报告、Session 事件/搜索/轨迹查询、Agent 与 teammate 控制、后台作业、持久终端以及 LSP 导航。展开内容读取成功的记录结果,为失败或不支持的数据保留通用输入/输出,并保留 Inspect。日期包含查看者的时区,状态反映调用结果而非当前会话状态。Session 轨迹保留后代的缩进。LSP 结果通过 Host 回调打开文件系统路径,其他 URI 则显示为文本。浏览器适配器消费已记录的 producer 文本与 JSON;Host service 对象和 presenter 回调不会进入 Client。
|
|
88
|
+
记录结果的工具详情覆盖目标和定时任务工具、Cordis 检查、workflow 与 Ralph 报告、Session 事件/搜索/轨迹查询、Agent 与 teammate 控制、后台作业、持久终端以及 LSP 导航。展开内容读取成功的记录结果,为失败或不支持的数据保留通用输入/输出,并保留 Inspect。日期包含查看者的时区,状态反映调用结果而非当前会话状态。Session 轨迹保留后代的缩进。LSP 结果通过 Host 回调打开文件系统路径,其他 URI 则显示为文本。浏览器适配器消费已记录的 producer 文本与 JSON;Host service 对象和 presenter 回调不会进入 Client。
|
|
83
89
|
|
|
84
90
|
展开后的状态圆点和文字使用静态语义色。操作回执和任务输出的标题保持中性色,展开时省略标题中的状态。中断回执仅确认已发出中断请求。
|
|
85
91
|
|
|
86
92
|
terminal model 使用浏览器安全入口 `@deepseek-ai/dsh-spill-policy/notice` 的 `hasSpillNotice`,而非独立的 UI 匹配规则。[spill-policy README](../../spill/spill-policy/README.zh.md#shared-notice-ownership) 负责提示文本的格式化与识别。该检查保守地选择通用输出;匹配的文本无法证明其来源,回放也不改变已记录的结果字节。
|
|
93
|
+
|
|
94
|
+
### 声明的可选能力
|
|
95
|
+
|
|
96
|
+
本包声明可选的 `UserQuestionPanels` 能力;`ui-user-questions` 提供它。`reveal(sessionId, callId)` 打开可回答的面板,`review(sessionId, callId, record)` 以只读方式打开已记录的答案。行通过 `ctx.get('userQuestionPanels')` 读取此能力;未组合问题 UI 时仍保留文本记录。
|
|
97
|
+
|
|
87
98
|
</details>
|
|
88
99
|
|
|
89
100
|
-----
|
|
@@ -96,6 +107,7 @@ terminal model 使用浏览器安全入口 `@deepseek-ai/dsh-spill-policy/notice
|
|
|
96
107
|
- [ui-conversation](../ui-conversation/README.zh.md)——把 `tool-call` 节点分派给本包的聊天界面。
|
|
97
108
|
- [ui-primitives](../ui-primitives/README.zh.md)——内置视图所拼装的输出卡片原子组件。
|
|
98
109
|
- [ui-skill](../ui-skill/README.zh.md)——`skill` 工具的业务自有注册。
|
|
110
|
+
- [ui-user-questions](../ui-user-questions/README.zh.md)——`ask_user_question` 行重新打开的提问面板。
|
|
99
111
|
- [Auto review](../../experimental/auto-review/README.zh.md)——结构化拒绝身份与用户可见原因的 owner。
|
|
100
112
|
- [Conversation 子系统](../../../docs/subsystems/conversation.zh.md)——业务自有功能如何注册 Conversation node。
|
|
101
113
|
- [slot 系统标准](../../../.agents/notes/implemented/architecture/2026-07-22-slot-type-chain-implementation.zh.md)——keyed slot 背后的组合模型。
|
|
@@ -132,5 +144,3 @@ terminal model 使用浏览器安全入口 `@deepseek-ai/dsh-spill-policy/notice
|
|
|
132
144
|
无。
|
|
133
145
|
|
|
134
146
|
</details>
|
|
135
|
-
|
|
136
|
-
**运行时不变式:** 不发布伴生入口。工具组合只存在于浏览器,不贡献事件或跨插件可变状态;slot 所有权由 ui-slots 校验。
|