@deepseek-ai/dsh-client-ui-skill 0.1.7-rc.2 → 0.2.0-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 +2 -2
- package/README.md +1 -1
- package/README.zh.md +1 -1
- package/lib/client.js +21 -14
- package/package.json +14 -14
package/README.i18n.yaml
CHANGED
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
en: 2ba1a6158c85b46e
|
|
22
22
|
zh: 9ab58ceef8743849
|
|
23
23
|
/deepseek-ai-dsh-client-ui-skill/use-this-package/the-skill-tool-row:
|
|
24
|
-
en:
|
|
25
|
-
zh:
|
|
24
|
+
en: 975c6cd80af3684a
|
|
25
|
+
zh: 395c10e51c6a15f6
|
|
26
26
|
/deepseek-ai-dsh-client-ui-skill/understand-the-implementation:
|
|
27
27
|
en: df2a0ee9d2638f41
|
|
28
28
|
zh: 3b4af7e505e990ca
|
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ Ordinary-session candidates come from the `skills/list` Remote; the host serves
|
|
|
35
35
|
|
|
36
36
|
The `preparing` stage shows only the skill icon and title, with no requested skill name or expansion. The `start` and `result` stages use the recorded arguments and output described below; preparation does not consult the installed catalog.
|
|
37
37
|
|
|
38
|
-
A collapsed row renders the skill glyph, `Skill` title, and requested skill name on the same secondary font-size axis, line height, row height, and glyph scaling as ordinary Tool rows. Every lifecycle state retains the ordinary skill glyph; running calls carry the
|
|
38
|
+
A collapsed row renders the skill glyph, `Skill` title, and requested skill name on the same secondary font-size axis, line height, row height, and glyph scaling as ordinary Tool rows. Every lifecycle state retains the ordinary skill glyph; running calls carry one left-to-right highlight across the title, separator, and skill name, while failures replace the name with the first error line and interruptions retain their explicit status text. A settled row expands into a bounded `Instructions` card containing the exact durable tool output, with the standard trajectory `Inspect` affordance when available; this expanded card keeps its own typography. The row derives its name, lifecycle, and body only from the frozen call/result slice supplied by ui-tool, never from the current catalog, so replay stays stable when installed skills or their descriptions change. Text and icons are tertiary at rest and secondary on hover; error and interruption text retains its semantic color.
|
|
39
39
|
|
|
40
40
|
Hovering over `/name` highlights the entire reference. Clicking a known skill opens its provider-supplied `SKILL.md` path in the right Sidebar while keeping the token editable. An uncached click shares the per-Session catalog fetch and opens when it completes, retaining the clicked Session address. Preset changes, connection resets, and plugin disposal cancel pending previews; a later click fetches the current catalog again. Skills without a file path remain invocable but have no file preview.
|
|
41
41
|
|
package/README.zh.md
CHANGED
|
@@ -35,7 +35,7 @@ kind: "package-reference"
|
|
|
35
35
|
|
|
36
36
|
`preparing` 阶段只显示技能图标与标题,不显示请求加载的技能名称,也不能展开。`start` 和 `result` 阶段使用下述记录参数与输出;准备阶段不查询已安装目录。
|
|
37
37
|
|
|
38
|
-
收起的行显示 skill 图标、`Skill` 标题与请求加载的 skill 名称,并与普通工具行使用相同的 secondary 字号轴、行高、行高度和图标缩放。所有生命周期状态都保留普通 skill
|
|
38
|
+
收起的行显示 skill 图标、`Skill` 标题与请求加载的 skill 名称,并与普通工具行使用相同的 secondary 字号轴、行高、行高度和图标缩放。所有生命周期状态都保留普通 skill 图标;运行中的调用以同一道高光从左到右扫过标题、分隔符与 skill 名称,失败时以错误首行替换名称,中断则保留明确状态文本。已结算的行展开为一个尺寸受限的 `Instructions` 卡片,其中原样呈现持久化的工具输出;可用时还会提供标准轨迹的 `Inspect` 入口,展开卡片保留自身排版。该行的名称、生命周期与正文只派生自 ui-tool 提供的冻结调用/结果切片,绝不读取当前目录,因此即使已安装的 skill 或其描述发生变化,回放仍保持稳定。 文字和图标默认使用 tertiary 色,悬停使用 secondary 色;错误和中断文字保留各自的语义色。
|
|
39
39
|
|
|
40
40
|
鼠标移入 `/name` 时,背景覆盖整个引用。点击已知 skill 会在右侧栏打开提供方给出的 `SKILL.md` 路径,同时保留文本的可编辑性。缓存未就绪时,点击复用该 Session 的目录请求,在完成后按点击时的 Session 地址打开预览。切换预设、重置连接和插件释放会取消待处理的预览;后续点击重新获取当前目录。没有文件路径的 skill 仍可调用,但没有文件预览。
|
|
41
41
|
|
package/lib/client.js
CHANGED
|
@@ -66,7 +66,7 @@ window.__ModuleLoader__.load({
|
|
|
66
66
|
}
|
|
67
67
|
//#endregion
|
|
68
68
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-skill/src/client/SkillRow.module.css.mjs
|
|
69
|
-
const css = ".iWrAna_card{flex-direction:column;display:flex}.iWrAna_row{height:calc(24px + var(--dsh-content-font-delta,0px));align-items:center;
|
|
69
|
+
const css = ".iWrAna_card{flex-direction:column;display:flex}.iWrAna_row{height:calc(24px + var(--dsh-content-font-delta,0px));min-width:0;color:var(--dsw-alias-label-tertiary);align-items:center;transition:color .1s;display:flex;position:relative;overflow:hidden}.iWrAna_row:hover{color:var(--dsw-alias-label-secondary)}.iWrAna_row[data-expandable]{cursor:pointer}.iWrAna_leading{width:calc(16px + var(--dsh-content-font-delta,0px));height:calc(16px + var(--dsh-content-font-delta,0px));color:inherit;flex:none;justify-content:center;align-items:center;margin-right:6px;display:inline-flex;position:relative}.iWrAna_leading svg{width:calc(14px + var(--dsh-content-font-delta,0px));height:calc(14px + var(--dsh-content-font-delta,0px))}.iWrAna_chevron{color:inherit}.iWrAna_iconIdle{opacity:1;transition:opacity .1s;display:inline-flex}.iWrAna_chevronHover{opacity:0;margin:auto;transition:opacity .1s;position:absolute;inset:0}.iWrAna_row:hover .iWrAna_iconIdle{opacity:0}.iWrAna_row:hover .iWrAna_chevronHover{opacity:1}.iWrAna_title{font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));flex:none}.iWrAna_separator{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.iWrAna_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));flex:auto;overflow:hidden}.iWrAna_errorSummary{color:var(--dsw-alias-state-error-primary)}.iWrAna_stoppedSummary{color:var(--dsw-alias-state-warn-label)}.iWrAna_bodyWrap{flex-direction:column;display:flex}.iWrAna_instructionsCard{border:.5px solid var(--dsw-alias-border-l1);border-radius:var(--dsw-radius-lg);background:var(--dsw-alias-markdown-code-block);flex-direction:column;max-height:260px;margin:4px 0 4px 4px;display:flex;overflow:hidden}.iWrAna_instructionsHeader{border-bottom:.5px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-markdown-code-block-banner);color:var(--dsw-alias-label-caption);text-transform:uppercase;letter-spacing:.04em;flex:none;padding:8px 12px;font-size:11px;font-weight:500;line-height:16px}.iWrAna_instructions{white-space:pre-wrap;overflow-wrap:anywhere;min-height:0;font:var(--dsw-font-markdown-code-block-small);color:var(--dsw-alias-label-secondary);margin:0;padding:10px 12px 12px;overflow:auto}.iWrAna_instructions[data-error]{color:var(--dsw-alias-state-error-primary)}.iWrAna_instructions::-webkit-scrollbar-thumb{border-radius:var(--dsw-radius-sm);background-clip:padding-box;border:2px solid #0000}.iWrAna_instructions::-webkit-scrollbar-track{margin:6px 0}.iWrAna_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}.iWrAna_card:hover .iWrAna_inspectButton,.iWrAna_inspectButton:focus-visible{opacity:1}.iWrAna_inspectButton:hover{background:var(--dsw-alias-interactive-bg-hover-solid);color:var(--dsw-alias-label-primary)}.iWrAna_visuallyHidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.iWrAna_row,.iWrAna_iconIdle,.iWrAna_chevronHover,.iWrAna_inspectButton{transition:none}}";
|
|
70
70
|
const tagId = "@deepseek-ai/dsh-client-ui-skill/SkillRow.module.css";
|
|
71
71
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
72
72
|
const tag = document.createElement("style");
|
|
@@ -80,7 +80,6 @@ window.__ModuleLoader__.load({
|
|
|
80
80
|
"card": "iWrAna_card",
|
|
81
81
|
"chevron": "iWrAna_chevron",
|
|
82
82
|
"chevronHover": "iWrAna_chevronHover",
|
|
83
|
-
"dsh-skill-row-sweep": "iWrAna_dsh-skill-row-sweep",
|
|
84
83
|
"errorSummary": "iWrAna_errorSummary",
|
|
85
84
|
"iconIdle": "iWrAna_iconIdle",
|
|
86
85
|
"inspectButton": "iWrAna_inspectButton",
|
|
@@ -174,7 +173,8 @@ window.__ModuleLoader__.load({
|
|
|
174
173
|
className: SkillRow_module_css_default.visuallyHidden,
|
|
175
174
|
children: props.t("row.preparing")
|
|
176
175
|
}),
|
|
177
|
-
(0, react_jsx_runtime.jsx)(
|
|
176
|
+
(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, {
|
|
177
|
+
active: true,
|
|
178
178
|
className: SkillRow_module_css_default.title,
|
|
179
179
|
children: props.t("row.title")
|
|
180
180
|
})
|
|
@@ -189,6 +189,7 @@ window.__ModuleLoader__.load({
|
|
|
189
189
|
const expandable = model.output !== null;
|
|
190
190
|
const open = expanded && expandable;
|
|
191
191
|
const status = stateStatus(model.state, t);
|
|
192
|
+
const running = model.state === "running";
|
|
192
193
|
const summary = model.state === "stopped" ? t("row.stopped") : model.errorSummary ?? model.name;
|
|
193
194
|
const toggleExpand = () => {
|
|
194
195
|
setExpanded((value) => !value);
|
|
@@ -223,17 +224,23 @@ window.__ModuleLoader__.load({
|
|
|
223
224
|
className: SkillRow_module_css_default.visuallyHidden,
|
|
224
225
|
children: status
|
|
225
226
|
}) : null,
|
|
226
|
-
(0, react_jsx_runtime.
|
|
227
|
-
|
|
228
|
-
children:
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
227
|
+
(0, react_jsx_runtime.jsxs)(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, {
|
|
228
|
+
active: running,
|
|
229
|
+
children: [
|
|
230
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
231
|
+
className: SkillRow_module_css_default.title,
|
|
232
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { children: t("row.title") })
|
|
233
|
+
}),
|
|
234
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
235
|
+
className: SkillRow_module_css_default.separator,
|
|
236
|
+
"data-shimmer-decoration": true,
|
|
237
|
+
"aria-hidden": true
|
|
238
|
+
}),
|
|
239
|
+
(0, react_jsx_runtime.jsx)("span", {
|
|
240
|
+
className: `${SkillRow_module_css_default.summary}${model.state === "error" ? ` ${SkillRow_module_css_default.errorSummary}` : model.state === "stopped" ? ` ${SkillRow_module_css_default.stoppedSummary}` : ""}`,
|
|
241
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.TextShimmer, { children: summary })
|
|
242
|
+
})
|
|
243
|
+
]
|
|
237
244
|
})
|
|
238
245
|
]
|
|
239
246
|
}), open ? (0, react_jsx_runtime.jsxs)("div", {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-client-ui-skill",
|
|
3
3
|
"description": "Web skill references and the dedicated skill tool row",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0-rc.2",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -48,20 +48,20 @@
|
|
|
48
48
|
"@types/react": "~18.3.1",
|
|
49
49
|
"react": "^18.2.0",
|
|
50
50
|
"react-dom": "^18.2.0",
|
|
51
|
-
"@deepseek-ai/dsh-api-
|
|
52
|
-
"@deepseek-ai/dsh-api-
|
|
53
|
-
"@deepseek-ai/dsh-client-connection": "0.
|
|
54
|
-
"@deepseek-ai/dsh-client-locale": "0.
|
|
55
|
-
"@deepseek-ai/dsh-client-test-runtime": "0.
|
|
56
|
-
"@deepseek-ai/dsh-client-ui-primitives": "0.
|
|
57
|
-
"@deepseek-ai/dsh-client-ui-input-trigger": "0.
|
|
58
|
-
"@deepseek-ai/dsh-client-ui-renderer": "0.
|
|
59
|
-
"@deepseek-ai/dsh-client-ui-
|
|
60
|
-
"@deepseek-ai/dsh-client-ui-
|
|
61
|
-
"@deepseek-ai/dsh-session": "0.
|
|
51
|
+
"@deepseek-ai/dsh-api-remotes": "0.2.0-rc.2",
|
|
52
|
+
"@deepseek-ai/dsh-api-session-controller": "0.2.0-rc.2",
|
|
53
|
+
"@deepseek-ai/dsh-client-connection": "0.2.0-rc.2",
|
|
54
|
+
"@deepseek-ai/dsh-client-locale": "0.2.0-rc.2",
|
|
55
|
+
"@deepseek-ai/dsh-client-test-runtime": "0.2.0-rc.2",
|
|
56
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.2.0-rc.2",
|
|
57
|
+
"@deepseek-ai/dsh-client-ui-input-trigger": "0.2.0-rc.2",
|
|
58
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.2",
|
|
59
|
+
"@deepseek-ai/dsh-client-ui-tool": "0.2.0-rc.2",
|
|
60
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.2",
|
|
61
|
+
"@deepseek-ai/dsh-session": "0.2.0-rc.2",
|
|
62
62
|
"@deepseek-ai/cordis": "~4.0.4",
|
|
63
|
-
"@deepseek-ai/dsh-client-ui-sidebar-right": "0.
|
|
64
|
-
"@deepseek-ai/dsh-util-workspace-path": "0.
|
|
63
|
+
"@deepseek-ai/dsh-client-ui-sidebar-right": "0.2.0-rc.2",
|
|
64
|
+
"@deepseek-ai/dsh-util-workspace-path": "0.2.0-rc.2"
|
|
65
65
|
},
|
|
66
66
|
"files": [
|
|
67
67
|
"lib/index.js",
|