@deepseek-ai/dsh-client-ui-user-questions 0.1.6-alpha.2 → 0.1.7-alpha.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 +18 -13
- package/package.json +20 -20
package/README.i18n.yaml
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
|
3
3
|
# after editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write packages/client/ui-user-questions/README.md
|
|
5
|
-
README.md:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: 929494485b5ca1c0afb6fa3d24f59627136cc915
|
|
6
|
+
README.zh.md: 0269998b744e020bd9d58b8f919626297cd94f7f
|
package/README.md
CHANGED
|
@@ -33,7 +33,7 @@ A multi-select draft keeps its selected labels while the user opens or edits the
|
|
|
33
33
|
|
|
34
34
|
### The plan-review card
|
|
35
35
|
|
|
36
|
-
A `plan-review` intent — set by `dsh-plan-mode` on the `exit_plan_mode` review — renders a compact approval card: a `Plan review` strip with a `View full plan` link, the plan title and a two-line plain-text summary, and `Request changes` / `Approve` actions. The complete plan opens in the sidebar through the link or its permanent Chat card. Approve answers with the asker's approval label; `Request changes` rejects the wait as `ASK_CANCELLED`, returning the composer for the user's feedback without submitting an approval. The card has no separate refusal button.
|
|
36
|
+
A `plan-review` intent — set by `dsh-plan-mode` on the `exit_plan_mode` review — renders a compact approval card: a `Plan review` strip with a `View full plan` link, the plan title and a two-line plain-text summary, and `Request changes` / `Approve` actions. The strip uses the shared warning dot and changes it to the ongoing loader while either action settles. The complete plan opens in the sidebar through the link or its permanent Chat card. Approve answers with the asker's approval label; `Request changes` rejects the wait as `ASK_CANCELLED`, returning the composer for the user's feedback without submitting an approval. The card has no separate refusal button.
|
|
37
37
|
|
|
38
38
|
### Failure and recovery
|
|
39
39
|
|
package/README.zh.md
CHANGED
|
@@ -33,7 +33,7 @@ kind: "package-reference"
|
|
|
33
33
|
|
|
34
34
|
### plan-review 卡片
|
|
35
35
|
|
|
36
|
-
`plan-review` 意图——由 `dsh-plan-mode` 在 `exit_plan_mode`
|
|
36
|
+
`plan-review` 意图——由 `dsh-plan-mode` 在 `exit_plan_mode` 审阅上设置——渲染紧凑审批卡片:顶部为带“查看全文”链接的“计划待审”条带,正文显示计划标题和两行纯文本摘要,底部提供“要求修改”和“同意执行”。条带使用共享 warning 状态点,并在任一操作结算期间切换为 ongoing loading。通过链接或聊天历史中的常驻卡片可在侧边栏阅读完整计划。“同意执行”用提问方的批准标签回答;“要求修改”以 `ASK_CANCELLED` 拒绝等待,让编辑器归位供用户输入反馈,不会提交批准。卡片不单列拒绝按钮。
|
|
37
37
|
|
|
38
38
|
### 失败与恢复
|
|
39
39
|
|
package/lib/client.js
CHANGED
|
@@ -200,7 +200,7 @@ window.__ModuleLoader__.load({
|
|
|
200
200
|
}
|
|
201
201
|
//#endregion
|
|
202
202
|
//#region \0dsh-css:/home/runner/work/deepseek-harness/deepseek-harness/packages/client/ui-user-questions/src/client/PlanReviewPanel.module.css.mjs
|
|
203
|
-
const css$1 = ".LVzXQa_frame{padding:6px calc(var(--dsh-composer-side-clearance) + 16px) 10px;justify-content:center;display:flex}.LVzXQa_card{width:100%;max-width:var(--dsh-chat-content-width);--dsw-elevation-stroke-color:var(--dsw-alias-border-l2);background:var(--dsw-specific-input-major);box-shadow:var(--dsw-elevation-panel);color:var(--dsw-alias-label-primary);border:0;border-radius:20px;flex-direction:column;display:flex;overflow:hidden}.LVzXQa_card,.LVzXQa_card *{box-sizing:border-box}.LVzXQa_strip{background:var(--dsw-alias-state-warn-tertiary);color:var(--dsw-alias-state-warn-primary);flex-shrink:0;align-items:center;gap:8px;padding:12px 16px;font-size:14px;line-height:20px;display:flex}.
|
|
203
|
+
const css$1 = ".LVzXQa_frame{padding:6px calc(var(--dsh-composer-side-clearance) + 16px) 10px;justify-content:center;display:flex}.LVzXQa_card{width:100%;max-width:var(--dsh-chat-content-width);--dsw-elevation-stroke-color:var(--dsw-alias-border-l2);background:var(--dsw-specific-input-major);box-shadow:var(--dsw-elevation-panel);color:var(--dsw-alias-label-primary);border:0;border-radius:20px;flex-direction:column;display:flex;overflow:hidden}.LVzXQa_card,.LVzXQa_card *{box-sizing:border-box}.LVzXQa_strip{background:var(--dsw-alias-state-warn-tertiary);color:var(--dsw-alias-state-warn-primary);flex-shrink:0;align-items:center;gap:8px;padding:12px 16px;font-size:14px;line-height:20px;display:flex}.LVzXQa_footer{flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:8px 16px 12px;display:flex}.LVzXQa_feedback{min-height:16px;color:var(--dsw-alias-state-error-primary);font-size:11px;line-height:16px}.LVzXQa_actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.LVzXQa_summary{min-width:0;padding:14px 16px 12px}.LVzXQa_title{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:15px;font-weight:500;line-height:22px;overflow:hidden}.LVzXQa_description{-webkit-line-clamp:2;color:var(--dsw-alias-label-secondary);-webkit-box-orient:vertical;margin:8px 0 0;font-size:14px;line-height:24px;display:-webkit-box;overflow:hidden}.LVzXQa_discuss{gap:6px}@media (width<=720px){.LVzXQa_card{border-radius:16px}.LVzXQa_footer{align-items:flex-end;padding:8px 12px 10px}}.LVzXQa_previewActions{align-items:center;margin-left:auto;display:flex}";
|
|
204
204
|
const tagId$1 = "@deepseek-ai/dsh-client-ui-user-questions/PlanReviewPanel.module.css";
|
|
205
205
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
206
206
|
const tag = document.createElement("style");
|
|
@@ -214,7 +214,6 @@ window.__ModuleLoader__.load({
|
|
|
214
214
|
"card": "LVzXQa_card",
|
|
215
215
|
"description": "LVzXQa_description",
|
|
216
216
|
"discuss": "LVzXQa_discuss",
|
|
217
|
-
"dot": "LVzXQa_dot",
|
|
218
217
|
"feedback": "LVzXQa_feedback",
|
|
219
218
|
"footer": "LVzXQa_footer",
|
|
220
219
|
"frame": "LVzXQa_frame",
|
|
@@ -272,11 +271,12 @@ window.__ModuleLoader__.load({
|
|
|
272
271
|
children: (0, react_jsx_runtime.jsxs)("section", {
|
|
273
272
|
className: PlanReviewPanel_module_css_default.card,
|
|
274
273
|
"aria-label": review.question,
|
|
274
|
+
"aria-busy": busy,
|
|
275
275
|
children: [
|
|
276
276
|
(0, react_jsx_runtime.jsxs)("div", {
|
|
277
277
|
className: PlanReviewPanel_module_css_default.strip,
|
|
278
278
|
children: [
|
|
279
|
-
(0, react_jsx_runtime.jsx)(
|
|
279
|
+
(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.StateDot, { state: busy ? "ongoing" : "warning" }),
|
|
280
280
|
t("plan.header"),
|
|
281
281
|
(0, react_jsx_runtime.jsx)("div", {
|
|
282
282
|
className: PlanReviewPanel_module_css_default.previewActions,
|
|
@@ -308,7 +308,7 @@ window.__ModuleLoader__.load({
|
|
|
308
308
|
children: [(0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Button, {
|
|
309
309
|
variant: "outline",
|
|
310
310
|
className: PlanReviewPanel_module_css_default.discuss,
|
|
311
|
-
icon: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
311
|
+
icon: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconEditOutlineRegular, { size: 14 }),
|
|
312
312
|
disabled: busy,
|
|
313
313
|
onClick: () => {
|
|
314
314
|
settle(() => pending.cancel());
|
|
@@ -395,7 +395,7 @@ window.__ModuleLoader__.load({
|
|
|
395
395
|
}
|
|
396
396
|
/** Return whether a text-field key event belongs to an active IME composition. */
|
|
397
397
|
function isComposing(event) {
|
|
398
|
-
return event.nativeEvent.isComposing || event.nativeEvent
|
|
398
|
+
return event.nativeEvent.isComposing || Reflect.get(event.nativeEvent, "keyCode") === 229;
|
|
399
399
|
}
|
|
400
400
|
/**
|
|
401
401
|
* Auto-growing free-text answer: a textarea, so a long answer soft-wraps and
|
|
@@ -467,7 +467,12 @@ window.__ModuleLoader__.load({
|
|
|
467
467
|
const markdownLabels = (0, react.useMemo)(() => ({
|
|
468
468
|
code: {
|
|
469
469
|
copyLabel: t("copy"),
|
|
470
|
-
copiedLabel: t("copied")
|
|
470
|
+
copiedLabel: t("copied"),
|
|
471
|
+
toolbarLabels: {
|
|
472
|
+
codeLabel: t("codeBlock.title"),
|
|
473
|
+
wrapLabel: t("codeBlock.wrap"),
|
|
474
|
+
unwrapLabel: t("codeBlock.unwrap")
|
|
475
|
+
}
|
|
471
476
|
},
|
|
472
477
|
footnotes: t("markdown.footnotes")
|
|
473
478
|
}), [t]);
|
|
@@ -622,7 +627,7 @@ window.__ModuleLoader__.load({
|
|
|
622
627
|
onClick: () => {
|
|
623
628
|
setMinimized((current) => !current);
|
|
624
629
|
},
|
|
625
|
-
children: minimized ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
630
|
+
children: minimized ? (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronUpOutlineRegular, {}) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutlineRegular, {})
|
|
626
631
|
}), (0, react_jsx_runtime.jsx)("button", {
|
|
627
632
|
type: "button",
|
|
628
633
|
className: QuestionComposer_module_css_default.iconButton,
|
|
@@ -630,7 +635,7 @@ window.__ModuleLoader__.load({
|
|
|
630
635
|
title: t("nav.cancel"),
|
|
631
636
|
disabled: busy !== null,
|
|
632
637
|
onClick: cancelFlow,
|
|
633
|
-
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
638
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconCloseOutlineRegular, {})
|
|
634
639
|
})]
|
|
635
640
|
})]
|
|
636
641
|
}), !minimized && (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [(0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -666,7 +671,7 @@ window.__ModuleLoader__.load({
|
|
|
666
671
|
children: [question.multiSelect === true ? (0, react_jsx_runtime.jsx)("span", {
|
|
667
672
|
className: clsx(QuestionComposer_module_css_default.checkbox, selected && QuestionComposer_module_css_default.checkboxChecked),
|
|
668
673
|
"aria-hidden": "true",
|
|
669
|
-
children: selected && (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
674
|
+
children: selected && (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 12 })
|
|
670
675
|
}) : (0, react_jsx_runtime.jsx)("span", {
|
|
671
676
|
className: QuestionComposer_module_css_default.number,
|
|
672
677
|
children: optionIndex + 1
|
|
@@ -696,11 +701,11 @@ window.__ModuleLoader__.load({
|
|
|
696
701
|
children: [question.multiSelect === true ? (0, react_jsx_runtime.jsx)("span", {
|
|
697
702
|
className: clsx(QuestionComposer_module_css_default.checkbox, draft.custom !== "" && QuestionComposer_module_css_default.checkboxChecked),
|
|
698
703
|
"aria-hidden": "true",
|
|
699
|
-
children: draft.custom !== "" && (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
704
|
+
children: draft.custom !== "" && (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconCheckOutlineRegular, { size: 12 })
|
|
700
705
|
}) : (0, react_jsx_runtime.jsx)("span", {
|
|
701
706
|
className: QuestionComposer_module_css_default.number,
|
|
702
707
|
"aria-hidden": "true",
|
|
703
|
-
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
708
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconEditOutlineRegular, { size: 12 })
|
|
704
709
|
}), (0, react_jsx_runtime.jsx)(AnswerField, {
|
|
705
710
|
variant: "inline",
|
|
706
711
|
value: draft.custom,
|
|
@@ -737,7 +742,7 @@ window.__ModuleLoader__.load({
|
|
|
737
742
|
replaceProgress(index - 1, drafts);
|
|
738
743
|
setError(null);
|
|
739
744
|
},
|
|
740
|
-
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
745
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronLeftOutlineRegular, {})
|
|
741
746
|
}),
|
|
742
747
|
(0, react_jsx_runtime.jsxs)("span", {
|
|
743
748
|
className: QuestionComposer_module_css_default.progress,
|
|
@@ -756,7 +761,7 @@ window.__ModuleLoader__.load({
|
|
|
756
761
|
replaceProgress(index + 1, drafts);
|
|
757
762
|
setError(null);
|
|
758
763
|
},
|
|
759
|
-
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
764
|
+
children: (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronRightOutlineRegular, {})
|
|
760
765
|
})
|
|
761
766
|
]
|
|
762
767
|
}),
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-client-ui-user-questions",
|
|
3
3
|
"description": "Web ask_user_question composer takeover and plan-review presentation UI",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.7-alpha.2",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -40,30 +40,30 @@
|
|
|
40
40
|
},
|
|
41
41
|
"license": "MIT",
|
|
42
42
|
"peerDependencies": {
|
|
43
|
-
"@deepseek-ai/cordis": "
|
|
43
|
+
"@deepseek-ai/cordis": "~4.0.4"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/react": "~18.3.1",
|
|
47
47
|
"react": "^18.2.0",
|
|
48
48
|
"clsx": "^2.0.0",
|
|
49
|
-
"@deepseek-ai/
|
|
50
|
-
"@deepseek-ai/
|
|
51
|
-
"@deepseek-ai/dsh-api-remotes": "
|
|
52
|
-
"@deepseek-ai/dsh-api-session-controller": "
|
|
53
|
-
"@deepseek-ai/dsh-client-locale": "
|
|
54
|
-
"@deepseek-ai/dsh-client-store": "
|
|
55
|
-
"@deepseek-ai/dsh-system-prompt": "
|
|
56
|
-
"@deepseek-ai/dsh-tools": "
|
|
57
|
-
"@deepseek-ai/dsh-
|
|
58
|
-
"@deepseek-ai/dsh-
|
|
59
|
-
"@deepseek-ai/dsh-client-ui-
|
|
60
|
-
"@deepseek-ai/dsh-client-ui-renderer": "
|
|
61
|
-
"@deepseek-ai/dsh-client-ui-
|
|
62
|
-
"@deepseek-ai/dsh-
|
|
63
|
-
"@deepseek-ai/dsh-client-ui-
|
|
64
|
-
"@deepseek-ai/dsh-
|
|
65
|
-
"@deepseek-ai/dsh-
|
|
66
|
-
"@deepseek-ai/dsh-
|
|
49
|
+
"@deepseek-ai/cordis": "~4.0.4",
|
|
50
|
+
"@deepseek-ai/dsh-agent": "0.1.7-alpha.2",
|
|
51
|
+
"@deepseek-ai/dsh-api-remotes": "0.1.7-alpha.2",
|
|
52
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.7-alpha.2",
|
|
53
|
+
"@deepseek-ai/dsh-client-locale": "0.1.7-alpha.2",
|
|
54
|
+
"@deepseek-ai/dsh-client-store": "0.1.7-alpha.2",
|
|
55
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.7-alpha.2",
|
|
56
|
+
"@deepseek-ai/dsh-tools": "0.1.7-alpha.2",
|
|
57
|
+
"@deepseek-ai/dsh-user-questions": "0.1.7-alpha.2",
|
|
58
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.7-alpha.2",
|
|
59
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.7-alpha.2",
|
|
60
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.7-alpha.2",
|
|
61
|
+
"@deepseek-ai/dsh-client-ui-session": "0.1.7-alpha.2",
|
|
62
|
+
"@deepseek-ai/dsh-typert-protocol": "0.1.7-alpha.2",
|
|
63
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.7-alpha.2",
|
|
64
|
+
"@deepseek-ai/dsh-client-connection": "0.1.7-alpha.2",
|
|
65
|
+
"@deepseek-ai/dsh-session": "0.1.7-alpha.2",
|
|
66
|
+
"@deepseek-ai/dsh-llm": "0.1.7-alpha.2"
|
|
67
67
|
},
|
|
68
68
|
"files": [
|
|
69
69
|
"lib/index.js",
|