@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 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: abbf855706b478857540b12712c5999082b0ab22
6
- README.zh.md: 995035cbb08ff6c64e2b91b61ab49b2bd473b9b7
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` 审阅上设置——渲染紧凑审批卡片:顶部为带“查看全文”链接的“计划待审”条带,正文显示计划标题和两行纯文本摘要,底部提供“要求修改”和“同意执行”。通过链接或聊天历史中的常驻卡片可在侧边栏阅读完整计划。“同意执行”用提问方的批准标签回答;“要求修改”以 `ASK_CANCELLED` 拒绝等待,让编辑器归位供用户输入反馈,不会提交批准。卡片不再单列拒绝按钮。
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}.LVzXQa_dot{corner-shape:round;background:var(--dsw-alias-state-warn-primary);border-radius:50%;width:8px;height:8px}.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}";
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)("span", { className: PlanReviewPanel_module_css_default.dot }),
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.IconEditOutline16, { size: 14 }),
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.keyCode === 229;
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.IconChevronUpOutline14, {}) : (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconChevronDownOutline14, {})
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.IconCloseOutline16, {})
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.IconCheckOutline14, { size: 12 })
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.IconCheckOutline14, { size: 12 })
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.IconEditOutline16, { size: 12 })
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.IconChevronLeftOutline14, {})
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.IconChevronRightOutline14, {})
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.6-alpha.2",
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": "^4.0.2"
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/dsh-agent": "^0.1.6-alpha.2",
50
- "@deepseek-ai/cordis": "^4.0.2",
51
- "@deepseek-ai/dsh-api-remotes": "^0.1.6-alpha.2",
52
- "@deepseek-ai/dsh-api-session-controller": "^0.1.6-alpha.2",
53
- "@deepseek-ai/dsh-client-locale": "^0.1.6-alpha.2",
54
- "@deepseek-ai/dsh-client-store": "^0.1.6-alpha.2",
55
- "@deepseek-ai/dsh-system-prompt": "^0.1.6-alpha.2",
56
- "@deepseek-ai/dsh-tools": "^0.1.6-alpha.2",
57
- "@deepseek-ai/dsh-client-ui-primitives": "^0.1.6-alpha.2",
58
- "@deepseek-ai/dsh-user-questions": "^0.1.6-alpha.2",
59
- "@deepseek-ai/dsh-client-ui-slots": "^0.1.6-alpha.2",
60
- "@deepseek-ai/dsh-client-ui-renderer": "^0.1.6-alpha.2",
61
- "@deepseek-ai/dsh-client-ui-conversation": "^0.1.6-alpha.2",
62
- "@deepseek-ai/dsh-llm": "^0.1.6-alpha.2",
63
- "@deepseek-ai/dsh-client-ui-session": "^0.1.6-alpha.2",
64
- "@deepseek-ai/dsh-session": "^0.1.6-alpha.2",
65
- "@deepseek-ai/dsh-typert-protocol": "^0.1.6-alpha.2",
66
- "@deepseek-ai/dsh-client-connection": "^0.1.6-alpha.2"
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",