@deepseek-ai/dsh-client-ui-tool 0.1.7-rc.1 → 0.1.7-rc.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/README.i18n.yaml +48 -5
- package/README.md +2 -1
- package/README.zh.md +2 -1
- package/lib/client.js +103 -12
- package/lib/types/client/tool/components/ToolRow.d.ts +3 -1
- package/lib/types/client/tool/models/web-card-model.d.ts +6 -0
- package/package.json +26 -26
package/README.i18n.yaml
CHANGED
|
@@ -1,6 +1,49 @@
|
|
|
1
|
-
# Bilingual-pair consistency record (docs/i18n/README.md):
|
|
2
|
-
#
|
|
3
|
-
#
|
|
1
|
+
# Bilingual-pair consistency record for README.md (docs/i18n/README.md): per heading
|
|
2
|
+
# section, a hash of its English and Chinese blocks outside code blocks and generated regions.
|
|
3
|
+
# After editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write packages/client/ui-tool/README.md
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
/:
|
|
6
|
+
en: d5ef8fa5a5ebfbc2
|
|
7
|
+
zh: 9870b3f207a248cc
|
|
8
|
+
/deepseek-ai-dsh-client-ui-tool:
|
|
9
|
+
en: 03bfcfbf7f1cea76
|
|
10
|
+
zh: 142abbf07affee63
|
|
11
|
+
/deepseek-ai-dsh-client-ui-tool/summary:
|
|
12
|
+
en: e7ef510d1764f9b2
|
|
13
|
+
zh: 236bc66607211f0f
|
|
14
|
+
/deepseek-ai-dsh-client-ui-tool/table-of-contents:
|
|
15
|
+
en: d152484eb41ac6b4
|
|
16
|
+
zh: 09388d293f9be9cb
|
|
17
|
+
/deepseek-ai-dsh-client-ui-tool/use-this-package:
|
|
18
|
+
en: be2bc859e0d64fe5
|
|
19
|
+
zh: d51a35fb36675dd3
|
|
20
|
+
/deepseek-ai-dsh-client-ui-tool/use-this-package/registering-a-business-tool-view:
|
|
21
|
+
en: 5332d87e76037f07
|
|
22
|
+
zh: db5d06e7e46b8429
|
|
23
|
+
/deepseek-ai-dsh-client-ui-tool/use-this-package/built-in-views:
|
|
24
|
+
en: 4b69e36952574494
|
|
25
|
+
zh: 1f9842b40931adb6
|
|
26
|
+
/deepseek-ai-dsh-client-ui-tool/understand-the-implementation:
|
|
27
|
+
en: 00bc7b0c84edc603
|
|
28
|
+
zh: 1cfcf5b435248a91
|
|
29
|
+
/deepseek-ai-dsh-client-ui-tool/understand-the-implementation/rendering-contract:
|
|
30
|
+
en: 2959b10b01e08a7b
|
|
31
|
+
zh: 7084ca22650cbb5b
|
|
32
|
+
/deepseek-ai-dsh-client-ui-tool/understand-the-implementation/cards:
|
|
33
|
+
en: 401a0118de2dba33
|
|
34
|
+
zh: 9efe590dd485c336
|
|
35
|
+
/deepseek-ai-dsh-client-ui-tool/further-exploration:
|
|
36
|
+
en: 886059e6bd594ebf
|
|
37
|
+
zh: 94cfe8d0a789f413
|
|
38
|
+
/deepseek-ai-dsh-client-ui-tool/model-experience:
|
|
39
|
+
en: 1e5e72dd269855d5
|
|
40
|
+
zh: 81a4756d460e3af9
|
|
41
|
+
/deepseek-ai-dsh-client-ui-tool/model-experience/kv-cache-effect:
|
|
42
|
+
en: ca75c51c89c2c9b0
|
|
43
|
+
zh: de54f3467ef3b9be
|
|
44
|
+
/deepseek-ai-dsh-client-ui-tool/known-limitations-and-deferred-work:
|
|
45
|
+
en: 7475317a656f1d11
|
|
46
|
+
zh: 787f10cc0f2c586e
|
|
47
|
+
/deepseek-ai-dsh-client-ui-tool/known-limitations-and-deferred-work/dev-note:
|
|
48
|
+
en: 0fdeab2e4db0261f
|
|
49
|
+
zh: 156d2b2952cf112e
|
package/README.md
CHANGED
|
@@ -25,7 +25,7 @@ English | [中文](README.zh.md)
|
|
|
25
25
|
<a id="use-this-package"></a>
|
|
26
26
|
## Use this package
|
|
27
27
|
|
|
28
|
-
Tool calls appear in the conversation as cards: a root call tree with its nested subcalls, each atomic call rendered by its owning view. Every lifecycle state retains the tool's ordinary business glyph; failure and interruption remain explicit through the frozen call/result state, accessible status text, and failure summary. Users can open files or inspect calls through the Host callbacks.
|
|
28
|
+
Tool calls appear in the conversation as cards: a root call tree with its nested subcalls, each atomic call rendered by its owning view. Every lifecycle state retains the tool's ordinary business glyph; failure and interruption remain explicit through the frozen call/result state, accessible status text, and failure summary. Users can open files or inspect calls through the Host callbacks. A collapsed `web_fetch` row links its http(s) URL, which opens in a new browser tab.
|
|
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
|
|
|
@@ -120,6 +120,7 @@ These limits define the dispatch depth and the view ownership; they are current
|
|
|
120
120
|
|
|
121
121
|
- **The Host excludes `run_code` from PTC mode program bindings** — production events produce one dispatch level; the recursive Runtime/UI contract supports nesting.
|
|
122
122
|
- **First-party Tool views are colocated here** — they can move to their owning business packages independently through the keyed slot.
|
|
123
|
+
- **Web tool links always open a new tab** — the collapsed `web_fetch` URL and the expanded web card links ignore the `ui-chat` link-opening setting because Tool views receive no external-link callback.
|
|
123
124
|
- **Tool copy reuses the `ui-conversation` locale namespace** — tool titles, row chrome, and Cordis-free primitive labels use that dictionary; presenter models retain locale keys or data rather than rendered wording.
|
|
124
125
|
|
|
125
126
|
<a id="dev-note"></a>
|
package/README.zh.md
CHANGED
|
@@ -25,7 +25,7 @@ kind: "package-reference"
|
|
|
25
25
|
<a id="use-this-package"></a>
|
|
26
26
|
## 使用本包
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
工具调用在对话中显示为卡片:一个根调用树带其嵌套子调用,每个原子调用由所属视图渲染。所有生命周期状态都保留工具的普通业务图标;失败与中断仍通过冻结调用/结果状态、无障碍状态文本和失败摘要明确表达。用户可通过宿主回调打开文件或检查调用。折叠的 `web_fetch` 行把其 http(s) URL 显示为链接,在新浏览器标签页中打开。
|
|
29
29
|
|
|
30
30
|
共享工具行和 Bash 行的失败、停止摘要在悬停时仍保留错误色和警告色;只有不处于这两种状态的摘要会在悬停时加深。
|
|
31
31
|
|
|
@@ -120,6 +120,7 @@ terminal model 使用浏览器安全入口 `@deepseek-ai/dsh-spill-policy/notice
|
|
|
120
120
|
|
|
121
121
|
- **Host 不把 `run_code` 暴露为 PTC mode 程序 binding**:生产事件只产生一层分发;递归的运行时/UI 约定支持嵌套。
|
|
122
122
|
- **第一方工具视图集中在本包**:它们可以通过 keyed slot 独立迁移到各自所属的业务包。
|
|
123
|
+
- **Web 工具链接总是打开新标签页**:折叠的 `web_fetch` URL 与展开的 web 卡片链接不遵循 `ui-chat` 的链接打开方式设置,因为工具视图没有外部链接回调。
|
|
123
124
|
- **工具文案复用 `ui-conversation` locale namespace**:工具标题、行 chrome 与无 Cordis 的 primitive label 使用该字典;展示转换器模型保留 locale key 或数据,而不是已渲染文案。
|
|
124
125
|
|
|
125
126
|
<a id="dev-note"></a>
|
package/lib/client.js
CHANGED
|
@@ -115,6 +115,7 @@ window.__ModuleLoader__.load({
|
|
|
115
115
|
schedule_create: "tool.title.createSchedule",
|
|
116
116
|
schedule_list: "tool.title.listSchedules",
|
|
117
117
|
schedule_delete: "tool.title.deleteSchedule",
|
|
118
|
+
schedule_update: "tool.title.updateSchedule",
|
|
118
119
|
cordis_inspect_list: "tool.title.inspectProviders",
|
|
119
120
|
cordis_inspect_query: "tool.title.queryRuntime",
|
|
120
121
|
cordis_inspect_self: "tool.title.inspectPlugins",
|
|
@@ -1030,6 +1031,22 @@ window.__ModuleLoader__.load({
|
|
|
1030
1031
|
truncated: meta.truncated
|
|
1031
1032
|
};
|
|
1032
1033
|
}
|
|
1034
|
+
/**
|
|
1035
|
+
* Read the openable URL of a web_fetch call from its arguments.
|
|
1036
|
+
* @param block - running or settled Tool block.
|
|
1037
|
+
* @returns the http(s) URL, or undefined for another tool, protocol, or unparsable argument.
|
|
1038
|
+
*/
|
|
1039
|
+
function webFetchHref(block) {
|
|
1040
|
+
const call = parsedToolCall(block);
|
|
1041
|
+
if (call?.name !== "web_fetch" || typeof call.args.url !== "string") return void 0;
|
|
1042
|
+
const { url } = call.args;
|
|
1043
|
+
try {
|
|
1044
|
+
const { protocol } = new URL(url);
|
|
1045
|
+
return protocol === "http:" || protocol === "https:" ? url : void 0;
|
|
1046
|
+
} catch {
|
|
1047
|
+
return;
|
|
1048
|
+
}
|
|
1049
|
+
}
|
|
1033
1050
|
//#endregion
|
|
1034
1051
|
//#region lib/types/client/tool/models/auto-review-denial.js
|
|
1035
1052
|
/**
|
|
@@ -1177,7 +1194,7 @@ window.__ModuleLoader__.load({
|
|
|
1177
1194
|
}
|
|
1178
1195
|
//#endregion
|
|
1179
1196
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-tool/src/client/tool/components/AskQuestionCard.module.css.mjs
|
|
1180
|
-
const css$4 = ".fsXYAq_card{border:.5px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-base);
|
|
1197
|
+
const css$4 = ".fsXYAq_card{border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-bg-base);flex-direction:column;gap:16px;max-height:360px;margin:4px 0 4px 4px;padding:16px 20px;display:flex;overflow-y:auto}.fsXYAq_item{flex-direction:column;gap:2px;min-width:0;display:flex}.fsXYAq_question,.fsXYAq_answer{white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--dsh-content-font-size,14px);line-height:calc(24px + var(--dsh-content-font-delta,0px));margin:0}.fsXYAq_question{color:var(--dsw-alias-label-tertiary)}.fsXYAq_answer{color:var(--dsw-alias-label-primary)}.fsXYAq_answerLine{display:block}.fsXYAq_skipped{color:var(--dsw-alias-label-tertiary)}.fsXYAq_verdict{color:var(--dsw-alias-label-primary);font-size:var(--dsh-content-font-size,14px);line-height:calc(24px + var(--dsh-content-font-delta,0px));margin:0}.fsXYAq_questionList{flex-direction:column;gap:8px;margin:0;padding-left:20px;display:flex}.fsXYAq_unansweredQuestion{color:var(--dsw-alias-label-tertiary);white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--dsh-content-font-size,14px);line-height:calc(24px + var(--dsh-content-font-delta,0px))}";
|
|
1181
1198
|
const tagId$4 = "@deepseek-ai/dsh-client-ui-tool/AskQuestionCard.module.css";
|
|
1182
1199
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
|
|
1183
1200
|
const tag = document.createElement("style");
|
|
@@ -1240,7 +1257,7 @@ window.__ModuleLoader__.load({
|
|
|
1240
1257
|
}
|
|
1241
1258
|
//#endregion
|
|
1242
1259
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-tool/src/client/tool/components/ToolDetails.module.css.mjs
|
|
1243
|
-
const css$3 = ".DXqwVW_root{border:.5px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-markdown-code-block);color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-13);
|
|
1260
|
+
const css$3 = ".DXqwVW_root{border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-markdown-code-block);color:var(--dsw-alias-label-secondary);font:var(--dsw-font-xs-13);margin:4px 0 4px 4px;overflow:hidden}.DXqwVW_list{max-height:320px;margin:0;padding:0;list-style:none;overflow-y:auto}.DXqwVW_item,.DXqwVW_empty{margin:0;padding:10px 14px}.DXqwVW_item+.DXqwVW_item{border-top:.5px solid var(--dsw-alias-border-l2)}.DXqwVW_root[data-inspect]:not([data-caption])>.DXqwVW_list>.DXqwVW_item,.DXqwVW_root[data-inspect]:not([data-caption]) .DXqwVW_empty,.DXqwVW_root[data-inspect] .DXqwVW_caption{padding-inline-end:88px}.DXqwVW_caption{color:var(--dsw-alias-label-caption);padding:10px 14px 6px;font-size:12px}.DXqwVW_heading{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.DXqwVW_text{white-space:pre-wrap;overflow-wrap:anywhere;flex:1;min-width:0}.DXqwVW_status{flex:none;justify-content:center;align-self:flex-start;align-items:center;width:14px;height:18px;font-size:16px;line-height:18px;display:inline-flex}.DXqwVW_pending{box-sizing:border-box;border:1px solid var(--dsw-alias-label-tertiary);border-radius:2px;width:10px;height:10px}.DXqwVW_heading:has(.DXqwVW_statusText) .DXqwVW_text{flex-basis:12em}.DXqwVW_statusText{color:var(--dsw-alias-label-caption);white-space:nowrap;margin-inline-start:auto;font-size:12px}.DXqwVW_previous,.DXqwVW_unchanged{color:var(--dsw-alias-label-tertiary)}.DXqwVW_item[data-change=added] .DXqwVW_status{color:var(--dsw-alias-state-success-primary)}.DXqwVW_item[data-change=removed] .DXqwVW_status{color:var(--dsw-alias-state-error-primary)}.DXqwVW_item[data-change=removed] .DXqwVW_text{color:var(--dsw-alias-label-tertiary);text-decoration:line-through}.DXqwVW_unchanged{border-top:.5px solid var(--dsw-alias-border-l2)}.DXqwVW_unchanged summary{cursor:pointer;align-items:center;gap:6px;padding:9px 14px;list-style:none;display:flex}.DXqwVW_unchanged summary::-webkit-details-marker{display:none}.DXqwVW_unchanged[open] summary svg{transform:rotate(90deg)}.DXqwVW_fields{margin:0}.DXqwVW_heading+.DXqwVW_fields{margin-top:6px}.DXqwVW_field{grid-template-columns:5.5em minmax(0,1fr);gap:12px;display:grid}.DXqwVW_field+.DXqwVW_field{margin-top:4px}.DXqwVW_field dt{color:var(--dsw-alias-label-caption)}.DXqwVW_field dd{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.DXqwVW_badge{color:var(--dsw-alias-label-caption);flex:none;align-items:center;gap:5px;font-size:12px;display:inline-flex}.DXqwVW_badge:before{content:\"\";corner-shape:round;background:currentColor;border-radius:50%;width:5px;height:5px}.DXqwVW_badge[data-tone=info]{color:var(--dsw-alias-state-business-primary)}.DXqwVW_badge[data-tone=success]{color:var(--dsw-alias-state-success-primary)}.DXqwVW_badge[data-tone=warning]{color:var(--dsw-alias-state-warn-primary)}.DXqwVW_badge[data-tone=error]{color:var(--dsw-alias-state-error-primary)}.DXqwVW_subtitle{color:var(--dsw-alias-label-tertiary);overflow-wrap:anywhere;margin-top:3px;font-size:12px}.DXqwVW_description{color:var(--dsw-alias-label-caption);white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0}.DXqwVW_lines{white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0 0;padding-inline-start:18px}.DXqwVW_lines li+li{margin-top:4px}.DXqwVW_group{border-top:.5px solid var(--dsw-alias-border-l2);margin-top:8px}.DXqwVW_group>summary{color:var(--dsw-alias-label-caption);cursor:pointer;overflow-wrap:anywhere;align-items:center;gap:6px;padding:8px 0 0;list-style:none;display:flex}.DXqwVW_group>summary::-webkit-details-marker{display:none}.DXqwVW_group[open]>summary svg{transform:rotate(90deg)}.DXqwVW_group>summary svg{flex:none}.DXqwVW_group .DXqwVW_list{max-height:none;overflow:visible}.DXqwVW_group .DXqwVW_item{padding:9px 0 2px 20px}.DXqwVW_prose,.DXqwVW_code{max-width:100%;font-size:13px}.DXqwVW_prose{margin-top:8px}.DXqwVW_root .DXqwVW_item>.DXqwVW_code{max-height:240px;margin:8px 0 0;overflow:auto}.DXqwVW_root .DXqwVW_item:has(>.DXqwVW_code:only-child){padding:0}.DXqwVW_root .DXqwVW_item>.DXqwVW_code:only-child{margin:0}.DXqwVW_root .DXqwVW_group .DXqwVW_item:has(>.DXqwVW_code:only-child){padding:4px 0 0 20px}.DXqwVW_path{min-width:0;color:inherit;font:inherit;text-align:start;overflow-wrap:anywhere;cursor:pointer;background:0 0;border:none;flex:1;padding:0}.DXqwVW_path:hover{text-decoration:underline}.DXqwVW_path:focus-visible{outline:var(--dsw-focus-ring-width) solid var(--dsw-focus-ring-color,var(--dsw-alias-state-business-primary));outline-offset:3px}";
|
|
1244
1261
|
const tagId$3 = "@deepseek-ai/dsh-client-ui-tool/ToolDetails.module.css";
|
|
1245
1262
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
|
|
1246
1263
|
const tag = document.createElement("style");
|
|
@@ -1414,7 +1431,7 @@ window.__ModuleLoader__.load({
|
|
|
1414
1431
|
}
|
|
1415
1432
|
//#endregion
|
|
1416
1433
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-tool/src/client/tool/components/ToolRow.module.css.mjs
|
|
1417
|
-
const css$2 = ".o3BgMG_root{flex-direction:column;display:flex}.o3BgMG_leading{flex-shrink:0}.o3BgMG_root[data-tool^=cordis_] .o3BgMG_leading,.o3BgMG_root[data-tool^=cordis_] .o3BgMG_title{color:var(--dsw-alias-state-business-primary)}.o3BgMG_root[data-tool^=cordis_] .o3BgMG_title{font-weight:500}.o3BgMG_root[data-tool^=cordis_] .o3BgMG_sep{background:var(--dsw-alias-state-business-primary)}.o3BgMG_chevron{color:var(--dsw-alias-label-secondary)}.o3BgMG_title{font-weight:400;transition:color .1s}.o3BgMG_sep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.o3BgMG_summary{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:auto;transition:color .1s;overflow:hidden}.o3BgMG_summarySuffix{white-space:nowrap;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:none;margin-left:4px;transition:color .1s}.o3BgMG_row:hover .o3BgMG_title,.o3BgMG_row:hover .o3BgMG_summary:not(.o3BgMG_errorSummary):not(.o3BgMG_stoppedSummary),.o3BgMG_row:hover .o3BgMG_summarySuffix{color:var(--dsw-alias-label-primary)}.o3BgMG_diffStat{font-family:var(--ds-font-family-code);font-size:calc(var(--dsh-content-font-size-secondary,13px) - 2px);color:var(--dsw-alias-label-caption);margin-left:10px;transform:translateY(.5px)}.o3BgMG_fileLink{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:inherit;text-align:left;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-secondary);text-decoration:underline dotted;text-decoration-color:var(--dsw-alias-label-tertiary);text-underline-offset:3px;cursor:pointer;background:0 0;border:none;flex:0 auto;margin:0;padding:0;text-decoration-thickness:1px;transition:color .1s;overflow:hidden}.o3BgMG_row:hover .o3BgMG_fileLink,.o3BgMG_fileLink:hover{color:var(--dsw-alias-label-primary);text-decoration-color:currentColor}.o3BgMG_errorSummary{color:var(--dsw-alias-state-error-primary)}.o3BgMG_stoppedSummary{color:var(--dsw-alias-state-warn-label)}.o3BgMG_bodyWrap{flex-direction:column;display:flex}.o3BgMG_inspectButton{border:.5px solid var(--dsw-alias-border-l3);corner-shape:round;background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-secondary);cursor:pointer;opacity:0;border-radius:999px;align-self:flex-start;align-items:center;gap:4px;margin:4px 0 2px 4px;padding:2px 8px;font-size:11px;line-height:16px;transition:opacity .1s;display:inline-flex}.o3BgMG_root:hover .o3BgMG_inspectButton,.o3BgMG_inspectButton:focus-visible{opacity:1}.o3BgMG_detailsBodyWrap{position:relative}.o3BgMG_detailsBodyWrap .o3BgMG_inspectButton{margin:0;position:absolute;top:12px;right:12px}.o3BgMG_inspectButton:hover{background:var(--dsw-alias-interactive-bg-hover-solid);color:var(--dsw-alias-label-primary)}.o3BgMG_bodyScroll{max-height:260px;overflow-y:auto}.o3BgMG_ioCard{border:.5px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-markdown-code-block);font:var(--dsw-font-markdown-code-block-small);
|
|
1434
|
+
const css$2 = ".o3BgMG_root{flex-direction:column;display:flex}.o3BgMG_leading{flex-shrink:0}.o3BgMG_root[data-tool^=cordis_] .o3BgMG_leading,.o3BgMG_root[data-tool^=cordis_] .o3BgMG_title{color:var(--dsw-alias-state-business-primary)}.o3BgMG_root[data-tool^=cordis_] .o3BgMG_title{font-weight:500}.o3BgMG_root[data-tool^=cordis_] .o3BgMG_sep{background:var(--dsw-alias-state-business-primary)}.o3BgMG_chevron{color:var(--dsw-alias-label-secondary)}.o3BgMG_title{font-weight:400;transition:color .1s}.o3BgMG_sep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.o3BgMG_summary{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:auto;transition:color .1s;overflow:hidden}.o3BgMG_summarySuffix{white-space:nowrap;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:none;margin-left:4px;transition:color .1s}.o3BgMG_row:hover .o3BgMG_title,.o3BgMG_row:hover .o3BgMG_summary:not(.o3BgMG_errorSummary):not(.o3BgMG_stoppedSummary),.o3BgMG_row:hover .o3BgMG_summarySuffix{color:var(--dsw-alias-label-primary)}.o3BgMG_diffStat{font-family:var(--ds-font-family-code);font-size:calc(var(--dsh-content-font-size-secondary,13px) - 2px);color:var(--dsw-alias-label-caption);margin-left:10px;transform:translateY(.5px)}.o3BgMG_fileLink{text-overflow:ellipsis;white-space:nowrap;min-width:0;font:inherit;text-align:left;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-secondary);text-decoration:underline dotted;text-decoration-color:var(--dsw-alias-label-tertiary);text-underline-offset:3px;cursor:pointer;background:0 0;border:none;flex:0 auto;margin:0;padding:0;text-decoration-thickness:1px;transition:color .1s;overflow:hidden}.o3BgMG_row:hover .o3BgMG_fileLink,.o3BgMG_fileLink:hover{color:var(--dsw-alias-label-primary);text-decoration-color:currentColor}.o3BgMG_errorSummary{color:var(--dsw-alias-state-error-primary)}.o3BgMG_stoppedSummary{color:var(--dsw-alias-state-warn-label)}.o3BgMG_bodyWrap{flex-direction:column;display:flex}.o3BgMG_inspectButton{border:.5px solid var(--dsw-alias-border-l3);corner-shape:round;background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-secondary);cursor:pointer;opacity:0;border-radius:999px;align-self:flex-start;align-items:center;gap:4px;margin:4px 0 2px 4px;padding:2px 8px;font-size:11px;line-height:16px;transition:opacity .1s;display:inline-flex}.o3BgMG_root:hover .o3BgMG_inspectButton,.o3BgMG_inspectButton:focus-visible{opacity:1}.o3BgMG_detailsBodyWrap{position:relative}.o3BgMG_detailsBodyWrap .o3BgMG_inspectButton{margin:0;position:absolute;top:12px;right:12px}.o3BgMG_inspectButton:hover{background:var(--dsw-alias-interactive-bg-hover-solid);color:var(--dsw-alias-label-primary)}.o3BgMG_bodyScroll{max-height:260px;overflow-y:auto}.o3BgMG_ioCard{border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-markdown-code-block);font:var(--dsw-font-markdown-code-block-small);flex-direction:column;margin:4px 0 4px 4px;display:flex}.o3BgMG_ioSection{grid-template-columns:max-content 1fr;align-items:baseline;column-gap:14px;max-height:150px;padding:12px 16px;display:grid;overflow-y:auto}.o3BgMG_ioSection::-webkit-scrollbar-thumb{border-radius:var(--dsw-radius-sm);background-clip:padding-box;border:2px solid #0000}.o3BgMG_ioSection::-webkit-scrollbar-track{margin:6px 0}.o3BgMG_ioLabel{color:var(--dsw-alias-label-caption);align-self:start;position:sticky;top:0}.o3BgMG_ioDivider{background:var(--dsw-alias-border-l2);flex:none;height:.5px}.o3BgMG_ioText{white-space:pre-wrap;word-break:break-word;min-width:0;color:var(--dsw-alias-label-secondary)}.o3BgMG_ioText[data-error]{color:var(--dsw-alias-state-error-primary)}.o3BgMG_codeBody,.o3BgMG_terminalBody,.o3BgMG_diffBody,.o3BgMG_readBody,.o3BgMG_imageBody,.o3BgMG_searchBody,.o3BgMG_webBody{margin:4px 0 4px 4px}.o3BgMG_searchRecovery{white-space:pre-wrap;overflow-wrap:anywhere;font:var(--dsw-font-xs-13);color:var(--dsw-alias-label-tertiary);margin:4px 0 4px 4px}.o3BgMG_imageLabel{overflow-wrap:anywhere;font:var(--dsw-font-sm-13);color:var(--dsw-alias-label-secondary);margin-bottom:4px}.o3BgMG_imageMeta{white-space:pre-wrap;overflow-wrap:anywhere;font:var(--dsw-font-xs-13);color:var(--dsw-alias-label-tertiary)}.o3BgMG_terminalBody{--dsl-terminal-font:var(--dsw-font-markdown-code-block-small);--dsl-terminal-line-height:18px;--dsl-terminal-output-max-height:224px;border:.5px solid var(--dsw-alias-border-l1)}.o3BgMG_visuallyHidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}";
|
|
1418
1435
|
const tagId$2 = "@deepseek-ai/dsh-client-ui-tool/ToolRow.module.css";
|
|
1419
1436
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
1420
1437
|
const tag = document.createElement("style");
|
|
@@ -1459,6 +1476,10 @@ window.__ModuleLoader__.load({
|
|
|
1459
1476
|
};
|
|
1460
1477
|
//#endregion
|
|
1461
1478
|
//#region lib/types/client/tool/components/ToolRow.js
|
|
1479
|
+
/** Keep a summary link click from toggling the row; the browser still follows the link. */
|
|
1480
|
+
function stopLinkClick(event) {
|
|
1481
|
+
event.stopPropagation();
|
|
1482
|
+
}
|
|
1462
1483
|
/** Visually hidden run-state label for color-only running and settlement cues. */
|
|
1463
1484
|
function stateStatus$1(state, t) {
|
|
1464
1485
|
switch (state) {
|
|
@@ -1475,7 +1496,7 @@ window.__ModuleLoader__.load({
|
|
|
1475
1496
|
* @param props - tool state, summary, output, and navigation callbacks.
|
|
1476
1497
|
* @returns the tool disclosure.
|
|
1477
1498
|
*/
|
|
1478
|
-
const ToolRow = (0, react.memo)(function ToolRow({ t, variant, toolName, icon, title, summary, summarySuffix, bodyRaw, output, askQuestion, errorSummary, terminal, diff, read, image, renderSlot, loadImage, search, web, details, state, filePath, filePathLine, onOpenFile, inspect, useDisclosure }) {
|
|
1499
|
+
const ToolRow = (0, react.memo)(function ToolRow({ t, variant, toolName, icon, title, summary, summarySuffix, bodyRaw, output, askQuestion, errorSummary, terminal, diff, read, image, renderSlot, loadImage, search, web, details, state, filePath, filePathLine, onOpenFile, href, inspect, useDisclosure }) {
|
|
1479
1500
|
const { expanded, toggle: toggleExpand } = useDisclosure();
|
|
1480
1501
|
const terminalLabels = (0, react.useMemo)(() => terminalBlockLabels(t), [t]);
|
|
1481
1502
|
const diffLabels = (0, react.useMemo)(() => diffBlockLabels(t), [t]);
|
|
@@ -1522,7 +1543,8 @@ window.__ModuleLoader__.load({
|
|
|
1522
1543
|
onOpenFile,
|
|
1523
1544
|
settledWithCue
|
|
1524
1545
|
]);
|
|
1525
|
-
const
|
|
1546
|
+
const linkHref = settledWithCue ? void 0 : href;
|
|
1547
|
+
const summaryLinkKeyDown = (0, react.useCallback)((event) => {
|
|
1526
1548
|
if (event.key === "Enter" || event.key === " ") event.stopPropagation();
|
|
1527
1549
|
}, []);
|
|
1528
1550
|
const cardBody = variant === "code" ? null : bodyText;
|
|
@@ -1535,7 +1557,18 @@ window.__ModuleLoader__.load({
|
|
|
1535
1557
|
type: "button",
|
|
1536
1558
|
className: ToolRow_module_css_default.fileLink,
|
|
1537
1559
|
onClick: openFile,
|
|
1538
|
-
onKeyDown:
|
|
1560
|
+
onKeyDown: summaryLinkKeyDown,
|
|
1561
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, {
|
|
1562
|
+
active: running,
|
|
1563
|
+
children: summaryText
|
|
1564
|
+
})
|
|
1565
|
+
}) : linkHref !== void 0 ? (0, react_jsx_runtime.jsx)("a", {
|
|
1566
|
+
className: ToolRow_module_css_default.fileLink,
|
|
1567
|
+
href: linkHref,
|
|
1568
|
+
target: "_blank",
|
|
1569
|
+
rel: "noopener noreferrer",
|
|
1570
|
+
onClick: stopLinkClick,
|
|
1571
|
+
onKeyDown: summaryLinkKeyDown,
|
|
1539
1572
|
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, {
|
|
1540
1573
|
active: running,
|
|
1541
1574
|
children: summaryText
|
|
@@ -1554,7 +1587,8 @@ window.__ModuleLoader__.load({
|
|
|
1554
1587
|
})
|
|
1555
1588
|
] }), [
|
|
1556
1589
|
diffStat,
|
|
1557
|
-
|
|
1590
|
+
summaryLinkKeyDown,
|
|
1591
|
+
linkHref,
|
|
1558
1592
|
openFile,
|
|
1559
1593
|
running,
|
|
1560
1594
|
state,
|
|
@@ -1756,7 +1790,7 @@ window.__ModuleLoader__.load({
|
|
|
1756
1790
|
}
|
|
1757
1791
|
//#endregion
|
|
1758
1792
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-tool/src/client/tool/ToolCallTree.module.css.mjs
|
|
1759
|
-
const css$1 = ".ztWv_q_callRow{border-radius:
|
|
1793
|
+
const css$1 = ".ztWv_q_callRow{border-radius:var(--dsw-radius-sm)}.ztWv_q_subCalls{border-left:.5px solid var(--dsw-alias-border-l2);flex-direction:column;gap:4px;margin:4px 0 2px 22px;padding-left:8px;display:flex}";
|
|
1760
1794
|
const tagId$1 = "@deepseek-ai/dsh-client-ui-tool/ToolCallTree.module.css";
|
|
1761
1795
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
1762
1796
|
const tag = document.createElement("style");
|
|
@@ -2098,7 +2132,7 @@ window.__ModuleLoader__.load({
|
|
|
2098
2132
|
}
|
|
2099
2133
|
//#endregion
|
|
2100
2134
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-tool/src/client/tool/toolviews/bash-sample.module.css.mjs
|
|
2101
|
-
const css = ".CY-8Ka_card{flex-direction:column;display:flex}.CY-8Ka_terminal{--dsl-terminal-font:var(--dsw-font-markdown-code-block-small);--dsl-terminal-line-height:18px;--dsl-terminal-output-max-height:224px;border:.5px solid var(--dsw-alias-border-l1);margin:4px 0 4px 4px}.CY-8Ka_ioCard{border:.5px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-markdown-code-block);font:var(--dsw-font-markdown-code-block-small);
|
|
2135
|
+
const css = ".CY-8Ka_card{flex-direction:column;display:flex}.CY-8Ka_terminal{--dsl-terminal-font:var(--dsw-font-markdown-code-block-small);--dsl-terminal-line-height:18px;--dsl-terminal-output-max-height:224px;border:.5px solid var(--dsw-alias-border-l1);margin:4px 0 4px 4px}.CY-8Ka_ioCard{border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-markdown-code-block);font:var(--dsw-font-markdown-code-block-small);flex-direction:column;margin:4px 0 4px 4px;display:flex}.CY-8Ka_ioSection{grid-template-columns:max-content 1fr;align-items:baseline;column-gap:14px;max-height:150px;padding:12px 16px;display:grid;overflow-y:auto}.CY-8Ka_ioSection::-webkit-scrollbar-thumb{border-radius:var(--dsw-radius-sm);background-clip:padding-box;border:2px solid #0000}.CY-8Ka_ioSection::-webkit-scrollbar-track{margin:6px 0}.CY-8Ka_ioLabel{color:var(--dsw-alias-label-caption);align-self:start;position:sticky;top:0}.CY-8Ka_ioDivider{background:var(--dsw-alias-border-l2);flex:none;height:.5px}.CY-8Ka_ioText{white-space:pre-wrap;word-break:break-word;min-width:0;color:var(--dsw-alias-label-secondary)}.CY-8Ka_ioText[data-error]{color:var(--dsw-alias-state-error-primary)}.CY-8Ka_root[data-expandable]{cursor:pointer}.CY-8Ka_root{height:calc(24px + var(--dsh-content-font-delta,0px));align-items:center;min-width:0;display:flex}.CY-8Ka_leading{width:calc(16px + var(--dsh-content-font-delta,0px));height:calc(16px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:none;justify-content:center;align-items:center;margin-right:6px;display:inline-flex;position:relative}.CY-8Ka_leading svg:not([data-state]){width:calc(14px + var(--dsh-content-font-delta,0px));height:calc(14px + var(--dsh-content-font-delta,0px))}.CY-8Ka_chevron{color:var(--dsw-alias-label-secondary)}.CY-8Ka_iconIdle{opacity:1;transition:opacity .1s;display:inline-flex}.CY-8Ka_chevronHover{opacity:0;margin:auto;transition:opacity .1s;position:absolute;inset:0}.CY-8Ka_root:hover .CY-8Ka_iconIdle{opacity:0}.CY-8Ka_root:hover .CY-8Ka_chevronHover{opacity:1}.CY-8Ka_title{font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-secondary);flex:none;transition:color .1s}.CY-8Ka_sep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.CY-8Ka_summary{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);flex:auto;transition:color .1s;overflow:hidden}.CY-8Ka_root:hover .CY-8Ka_title,.CY-8Ka_root:hover .CY-8Ka_summary:not(.CY-8Ka_errorSummary):not(.CY-8Ka_stoppedSummary){color:var(--dsw-alias-label-primary)}.CY-8Ka_errorSummary{color:var(--dsw-alias-state-error-primary)}.CY-8Ka_stoppedSummary{color:var(--dsw-alias-state-warn-label)}.CY-8Ka_bodyWrap{flex-direction:column;display:flex}.CY-8Ka_inspectButton{border:.5px solid var(--dsw-alias-border-l4);corner-shape:round;background:var(--dsw-alias-bg-base);color:var(--dsw-alias-label-secondary);cursor:pointer;opacity:0;border-radius:999px;align-self:flex-start;align-items:center;gap:4px;margin:4px 0 2px 4px;padding:2px 8px;font-size:11px;line-height:16px;transition:opacity .1s;display:inline-flex}.CY-8Ka_card:hover .CY-8Ka_inspectButton,.CY-8Ka_inspectButton:focus-visible{opacity:1}.CY-8Ka_inspectButton:hover{background:var(--dsw-alias-interactive-bg-hover-solid);color:var(--dsw-alias-label-primary)}.CY-8Ka_visuallyHidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}";
|
|
2102
2136
|
const tagId = "@deepseek-ai/dsh-client-ui-tool/bash-sample.module.css";
|
|
2103
2137
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
2104
2138
|
const tag = document.createElement("style");
|
|
@@ -3548,14 +3582,40 @@ window.__ModuleLoader__.load({
|
|
|
3548
3582
|
fields
|
|
3549
3583
|
}] };
|
|
3550
3584
|
}
|
|
3585
|
+
/** ISO-weekday keys, Monday first: a stored weekly rule names days 1 through 7. */
|
|
3586
|
+
const WEEKDAY_KEYS = [
|
|
3587
|
+
"detail.weekday.1",
|
|
3588
|
+
"detail.weekday.2",
|
|
3589
|
+
"detail.weekday.3",
|
|
3590
|
+
"detail.weekday.4",
|
|
3591
|
+
"detail.weekday.5",
|
|
3592
|
+
"detail.weekday.6",
|
|
3593
|
+
"detail.weekday.7"
|
|
3594
|
+
];
|
|
3551
3595
|
function interval(seconds, t) {
|
|
3552
3596
|
if (seconds % 86400 === 0) return t("detail.days", { count: seconds / 86400 });
|
|
3553
3597
|
if (seconds % 3600 === 0) return t("detail.hours", { count: seconds / 3600 });
|
|
3554
3598
|
if (seconds % 60 === 0) return t("detail.minutes", { count: seconds / 60 });
|
|
3555
3599
|
return t("detail.seconds", { count: seconds });
|
|
3556
3600
|
}
|
|
3601
|
+
/** A stored wall clock without its zero seconds, the figure the schedule surfaces state. */
|
|
3602
|
+
function shortTime(time) {
|
|
3603
|
+
return time.replace(/:00\.000$/, "").replace(/\.000$/, "");
|
|
3604
|
+
}
|
|
3605
|
+
/** Localized weekday list of a stored weekly rule, or undefined when the set is empty or out of range. */
|
|
3606
|
+
function weekdayText(days, t) {
|
|
3607
|
+
if (!Array.isArray(days) || days.length === 0) return void 0;
|
|
3608
|
+
const labels = [];
|
|
3609
|
+
for (const day of days) {
|
|
3610
|
+
if (typeof day !== "number" || !Number.isInteger(day)) return void 0;
|
|
3611
|
+
const key = WEEKDAY_KEYS[day - 1];
|
|
3612
|
+
if (key === void 0) return void 0;
|
|
3613
|
+
labels.push(t(key));
|
|
3614
|
+
}
|
|
3615
|
+
return labels.join(t("detail.weekday.join"));
|
|
3616
|
+
}
|
|
3557
3617
|
function scheduleItem(value, t, locale) {
|
|
3558
|
-
if (!detailRecord(value) || !nonempty(value.id) || !nonempty(value.prompt) || typeof value.scheduledAt !== "string" || value.deliveryMode !== "session-local" || value.state !== "scheduled" && value.state !== "overdue") return null;
|
|
3618
|
+
if (!detailRecord(value) || !nonempty(value.id) || !nonempty(value.prompt) || typeof value.scheduledAt !== "string" || value.deliveryMode !== "host" && value.deliveryMode !== "session-local" || value.state !== "scheduled" && value.state !== "overdue") return null;
|
|
3559
3619
|
const date = new Date(value.scheduledAt);
|
|
3560
3620
|
if (!Number.isFinite(date.getTime()) || date.toISOString() !== value.scheduledAt) return null;
|
|
3561
3621
|
let frequency;
|
|
@@ -3571,11 +3631,35 @@ window.__ModuleLoader__.load({
|
|
|
3571
3631
|
if (!count(value.everySeconds) || value.everySeconds === 0) return null;
|
|
3572
3632
|
frequency = t("detail.schedule.every", { interval: interval(value.everySeconds, t) });
|
|
3573
3633
|
break;
|
|
3634
|
+
case "daily":
|
|
3635
|
+
if (!nonempty(value.time) || !nonempty(value.timeZone)) return null;
|
|
3636
|
+
frequency = t("detail.schedule.daily", {
|
|
3637
|
+
time: shortTime(value.time),
|
|
3638
|
+
zone: value.timeZone
|
|
3639
|
+
});
|
|
3640
|
+
break;
|
|
3641
|
+
case "weekly": {
|
|
3642
|
+
const days = weekdayText(value.weekdays, t);
|
|
3643
|
+
if (!nonempty(value.time) || !nonempty(value.timeZone) || days === void 0) return null;
|
|
3644
|
+
frequency = t("detail.schedule.weekly", {
|
|
3645
|
+
days,
|
|
3646
|
+
time: shortTime(value.time),
|
|
3647
|
+
zone: value.timeZone
|
|
3648
|
+
});
|
|
3649
|
+
break;
|
|
3650
|
+
}
|
|
3651
|
+
case "cron":
|
|
3652
|
+
if (!nonempty(value.expression) || !nonempty(value.timeZone)) return null;
|
|
3653
|
+
frequency = t("detail.schedule.cron", {
|
|
3654
|
+
expression: value.expression,
|
|
3655
|
+
zone: value.timeZone
|
|
3656
|
+
});
|
|
3657
|
+
break;
|
|
3574
3658
|
default: return null;
|
|
3575
3659
|
}
|
|
3576
3660
|
const dateText = formatDate(date, locale, value.scheduledAt);
|
|
3577
3661
|
return {
|
|
3578
|
-
title: value.prompt,
|
|
3662
|
+
title: nonempty(value.title) ? value.title : value.prompt,
|
|
3579
3663
|
fields: [
|
|
3580
3664
|
{
|
|
3581
3665
|
label: t("detail.schedule.when"),
|
|
@@ -3613,7 +3697,8 @@ window.__ModuleLoader__.load({
|
|
|
3613
3697
|
case "create_goal":
|
|
3614
3698
|
case "get_goal":
|
|
3615
3699
|
case "update_goal": return goalDetail(value, t);
|
|
3616
|
-
case "schedule_create":
|
|
3700
|
+
case "schedule_create":
|
|
3701
|
+
case "schedule_update": {
|
|
3617
3702
|
const item = scheduleItem(value, t, locale);
|
|
3618
3703
|
return item === null ? null : { items: [item] };
|
|
3619
3704
|
}
|
|
@@ -3739,6 +3824,11 @@ window.__ModuleLoader__.load({
|
|
|
3739
3824
|
key: "schedule_delete",
|
|
3740
3825
|
locale: CONVERSATION_NS
|
|
3741
3826
|
}, DetailsRow);
|
|
3827
|
+
yield ctx.slots.register({
|
|
3828
|
+
name: "tool.call.toolview",
|
|
3829
|
+
key: "schedule_update",
|
|
3830
|
+
locale: CONVERSATION_NS
|
|
3831
|
+
}, DetailsRow);
|
|
3742
3832
|
yield ctx.slots.register({
|
|
3743
3833
|
name: "tool.call.toolview",
|
|
3744
3834
|
key: "cordis_inspect_list",
|
|
@@ -4180,6 +4270,7 @@ window.__ModuleLoader__.load({
|
|
|
4180
4270
|
output: model.output,
|
|
4181
4271
|
errorSummary: model.errorSummary,
|
|
4182
4272
|
web,
|
|
4273
|
+
href: webFetchHref(block),
|
|
4183
4274
|
state: model.state,
|
|
4184
4275
|
inspect
|
|
4185
4276
|
});
|
|
@@ -70,6 +70,8 @@ export interface ToolRowProps {
|
|
|
70
70
|
filePathLine?: number | undefined;
|
|
71
71
|
/** Open the path (already cwd-resolved), landing on `filePathLine` when given. */
|
|
72
72
|
onOpenFile?: ((path: string, options?: OpenFileOptions) => void) | undefined;
|
|
73
|
+
/** Safe http(s) URL from tool args; when set, the summary renders as a link that opens it in a new tab. */
|
|
74
|
+
href?: string | undefined;
|
|
73
75
|
/**
|
|
74
76
|
* Jump to this call in the trajectory view: a hover-revealed Inspect pill
|
|
75
77
|
* over the expanded body. Absent = no affordance.
|
|
@@ -82,5 +84,5 @@ export interface ToolRowProps {
|
|
|
82
84
|
* @param props - tool state, summary, output, and navigation callbacks.
|
|
83
85
|
* @returns the tool disclosure.
|
|
84
86
|
*/
|
|
85
|
-
export declare const ToolRow: import("react").MemoExoticComponent<({ t, variant, toolName, icon, title, summary, summarySuffix, bodyRaw, output, askQuestion, errorSummary, terminal, diff, read, image, renderSlot, loadImage, search, web, details, state, filePath, filePathLine, onOpenFile, inspect, useDisclosure, }: ToolRowProps) => import("react").JSX.Element>;
|
|
87
|
+
export declare const ToolRow: import("react").MemoExoticComponent<({ t, variant, toolName, icon, title, summary, summarySuffix, bodyRaw, output, askQuestion, errorSummary, terminal, diff, read, image, renderSlot, loadImage, search, web, details, state, filePath, filePathLine, onOpenFile, href, inspect, useDisclosure, }: ToolRowProps) => import("react").JSX.Element>;
|
|
86
88
|
//# sourceMappingURL=ToolRow.d.ts.map
|
|
@@ -10,5 +10,11 @@ export type WebCardModelProps = DistributiveOmit<WebBlockProps, 'labels' | 'clas
|
|
|
10
10
|
* @returns web-card props, or null for the generic path.
|
|
11
11
|
*/
|
|
12
12
|
export declare function webCardModel(block: ToolCallBlock): WebCardModelProps | null;
|
|
13
|
+
/**
|
|
14
|
+
* Read the openable URL of a web_fetch call from its arguments.
|
|
15
|
+
* @param block - running or settled Tool block.
|
|
16
|
+
* @returns the http(s) URL, or undefined for another tool, protocol, or unparsable argument.
|
|
17
|
+
*/
|
|
18
|
+
export declare function webFetchHref(block: ToolCallBlock): string | undefined;
|
|
13
19
|
export {};
|
|
14
20
|
//# sourceMappingURL=web-card-model.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-client-ui-tool",
|
|
3
3
|
"description": "Client Tool call-tree renderer and keyed per-tool presentation slot",
|
|
4
|
-
"version": "0.1.7-rc.
|
|
4
|
+
"version": "0.1.7-rc.2",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -46,32 +46,32 @@
|
|
|
46
46
|
"react": "^18.2.0",
|
|
47
47
|
"react-dom": "^18.2.0",
|
|
48
48
|
"clsx": "^2.0.0",
|
|
49
|
-
"@deepseek-ai/dsh-
|
|
50
|
-
"@deepseek-ai/dsh-agent": "0.1.7-rc.
|
|
51
|
-
"@deepseek-ai/dsh-
|
|
52
|
-
"@deepseek-ai/dsh-
|
|
53
|
-
"@deepseek-ai/dsh-
|
|
54
|
-
"@deepseek-ai/dsh-
|
|
55
|
-
"@deepseek-ai/dsh-tool-
|
|
56
|
-
"@deepseek-ai/dsh-
|
|
49
|
+
"@deepseek-ai/dsh-spill-policy": "0.1.7-rc.2",
|
|
50
|
+
"@deepseek-ai/dsh-agent": "0.1.7-rc.2",
|
|
51
|
+
"@deepseek-ai/dsh-llm": "0.1.7-rc.2",
|
|
52
|
+
"@deepseek-ai/dsh-session": "0.1.7-rc.2",
|
|
53
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2",
|
|
54
|
+
"@deepseek-ai/dsh-tools": "0.1.7-rc.2",
|
|
55
|
+
"@deepseek-ai/dsh-tool-jobs": "0.1.7-rc.2",
|
|
56
|
+
"@deepseek-ai/dsh-tool-session-query": "0.1.7-rc.2",
|
|
57
|
+
"@deepseek-ai/dsh-tool-terminal": "0.1.7-rc.2",
|
|
58
|
+
"@deepseek-ai/dsh-spill": "0.1.7-rc.2",
|
|
57
59
|
"@deepseek-ai/cordis": "~4.0.4",
|
|
58
|
-
"@deepseek-ai/dsh-api-remotes": "0.1.7-rc.
|
|
59
|
-
"@deepseek-ai/dsh-client-connection": "0.1.7-rc.
|
|
60
|
-
"@deepseek-ai/dsh-client-locale": "0.1.7-rc.
|
|
61
|
-
"@deepseek-ai/dsh-client-test-runtime": "0.1.7-rc.
|
|
62
|
-
"@deepseek-ai/dsh-client-ui-primitives": "0.1.7-rc.
|
|
63
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.
|
|
64
|
-
"@deepseek-ai/dsh-api-workspace-controller": "0.1.7-rc.
|
|
65
|
-
"@deepseek-ai/dsh-
|
|
66
|
-
"@deepseek-ai/dsh-
|
|
67
|
-
"@deepseek-ai/dsh-client-ui-
|
|
68
|
-
"@deepseek-ai/dsh-
|
|
69
|
-
"@deepseek-ai/dsh-
|
|
70
|
-
"@deepseek-ai/dsh-
|
|
71
|
-
"@deepseek-ai/dsh-
|
|
72
|
-
"@deepseek-ai/dsh-
|
|
73
|
-
"@deepseek-ai/dsh-client-ui-chat": "0.1.7-rc.1",
|
|
74
|
-
"@deepseek-ai/dsh-token-meter": "0.1.7-rc.1"
|
|
60
|
+
"@deepseek-ai/dsh-api-remotes": "0.1.7-rc.2",
|
|
61
|
+
"@deepseek-ai/dsh-client-connection": "0.1.7-rc.2",
|
|
62
|
+
"@deepseek-ai/dsh-client-locale": "0.1.7-rc.2",
|
|
63
|
+
"@deepseek-ai/dsh-client-test-runtime": "0.1.7-rc.2",
|
|
64
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.7-rc.2",
|
|
65
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.2",
|
|
66
|
+
"@deepseek-ai/dsh-api-workspace-controller": "0.1.7-rc.2",
|
|
67
|
+
"@deepseek-ai/dsh-client-ui-chat": "0.1.7-rc.2",
|
|
68
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.2",
|
|
69
|
+
"@deepseek-ai/dsh-client-ui-session": "0.1.7-rc.2",
|
|
70
|
+
"@deepseek-ai/dsh-util-workspace-path": "0.1.7-rc.2",
|
|
71
|
+
"@deepseek-ai/dsh-attachment": "0.1.7-rc.2",
|
|
72
|
+
"@deepseek-ai/dsh-ptc-runtime": "0.1.7-rc.2",
|
|
73
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.7-rc.2",
|
|
74
|
+
"@deepseek-ai/dsh-token-meter": "0.1.7-rc.2"
|
|
75
75
|
},
|
|
76
76
|
"files": [
|
|
77
77
|
"lib/index.js",
|